Author: mir
Date: Tue Sep 14 16:29:24 2010
New Revision: 996975
URL: http://svn.apache.org/viewvc?rev=996975&view=rev
Log:
CLEREZZA-301: now passing the most concrete media type to the renderer
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java?rev=996975&r1=996974&r2=996975&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
Tue Sep 14 16:29:24 2010
@@ -128,9 +128,10 @@ public class RenderletRendererFactoryImp
for (RenderletDefinition renderletDef : renderletDefs) {
MediaType mediaTypeInGraph =
renderletDef.getMediaType();
int prio = -1;
+ MediaType mediaTypeRequested = null;
for (int i = 0; i <
acceptableMediaTypes.size(); i++) {
- MediaType acceptableMediaType =
acceptableMediaTypes.get(i);
- if
(acceptableMediaType.isCompatible(mediaTypeInGraph)) {
+ mediaTypeRequested =
acceptableMediaTypes.get(i);
+ if
(mediaTypeRequested.isCompatible(mediaTypeInGraph)) {
prio = i;
break;
}
@@ -151,7 +152,7 @@ public class RenderletRendererFactoryImp
renderletDef.getRenderingSpecification(),
renderlet,
mode,
- mediaTypeInGraph,
+
getMostConcreteMediaType(mediaTypeRequested, mediaTypeInGraph),
prio,
RenderletRendererFactoryImpl.this,
renderletDef.isBuiltIn()));
}
@@ -163,6 +164,25 @@ public class RenderletRendererFactoryImp
return null;
}
+ private MediaType getMostConcreteMediaType(MediaType a, MediaType b) {
+ if (a == null) {
+ return b;
+ }
+ if (b == null) {
+ return a;
+ }
+ if (!a.isWildcardType()) {
+ return a;
+ }
+ if (!b.isWildcardType()) {
+ return b;
+ }
+ if (!a.isWildcardSubtype()) {
+ return a;
+ }
+ return b;
+ }
+
@Override
public void registerRenderlet(String renderlet,
UriRef renderingSpecification,