Improvement to [HER-1603?focusedCommentId=22557] fix

* BaseResource.java
    getPreferredVariant(): always prefer HTML if anything in the header
    indicates it's acceptable (even "*/*" with low q-preference)
This commit is contained in:
nlevitt committed 2009-12-04 23:09:24 +00:00
1 parent c3539d3fdc
commit 29e8b05308
1 file changed
+14
@@ -19,6 +19,8 @@
package org.archive.crawler.restlet;
import java.util.List;
import org.restlet.Context;
import org.restlet.data.MediaType;
import org.restlet.data.Preference;
@@ -44,13 +46,25 @@ public abstract class BaseResource extends Resource {
* {@link https://webarchive.jira.com/browse/HER-1603}
*/
public Variant getPreferredVariant() {
boolean addExplicitTextHtmlPreference = false;
for (Preference<MediaType> mediaTypePreference: getRequest().getClientInfo().getAcceptedMediaTypes()) {
if (mediaTypePreference.getMetadata().equals(MediaType.TEXT_HTML)) {
mediaTypePreference.setQuality(Float.MAX_VALUE);
addExplicitTextHtmlPreference = false;
break;
} else if (mediaTypePreference.getMetadata().includes(MediaType.TEXT_HTML)) {
addExplicitTextHtmlPreference = true;
}
}
if (addExplicitTextHtmlPreference) {
List<Preference<MediaType>> acceptedMediaTypes = getRequest().getClientInfo().getAcceptedMediaTypes();
acceptedMediaTypes.add(new Preference<MediaType>(MediaType.TEXT_HTML, Float.MAX_VALUE));
getRequest().getClientInfo().setAcceptedMediaTypes(acceptedMediaTypes);
}
return super.getPreferredVariant();
}
}