Author: ito
Date: Thu Mar 31 17:04:24 2011
New Revision: 1087373
URL: http://svn.apache.org/viewvc?rev=1087373&view=rev
Log:
CLEREZZA-460: Applied Daniel's Patch: Deprecated renderletmanager checks if a
renderlet is already registered with the same rendering specification
Modified:
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java
Modified:
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java?rev=1087373&r1=1087372&r2=1087373&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java
(original)
+++
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java
Thu Mar 31 17:04:24 2011
@@ -290,9 +290,39 @@ public class RenderletManagerImpl implem
};
+
+ ServiceRegistration oldServiceRegistration =
+ getAlreadyRegisteredServiceReg(rdfType,
mediaType, modePattern);
+ if(oldServiceRegistration != null) {
+ oldServiceRegistration.unregister();
+ registeredTypeRenderlets.remove(oldServiceRegistration);
+ }
+
ServiceRegistration registration =
bundleContext.registerService(TypeRenderlet.class.getName(), typeRenderlet,
new Hashtable());
registeredTypeRenderlets.add(registration);
return true;
}
+
+ private ServiceRegistration getAlreadyRegisteredServiceReg(UriRef
rdfType,
+ MediaType mediaType, String modePattern) {
+
+ for (ServiceRegistration serviceRegistration :
registeredTypeRenderlets) {
+ TypeRenderlet registeredRenderlet = (TypeRenderlet)
+
bundleContext.getService(serviceRegistration.getReference());
+ if (registeredRenderlet != null
+ &&
registeredRenderlet.getRdfType().equals(rdfType)
+ &&
registeredRenderlet.getMediaType().equals(mediaType)) {
+
+ if(modePattern == null &&
registeredRenderlet.getModePattern() == null) {
+ return serviceRegistration;
+ } else if(modePattern != null &&
registeredRenderlet.getModePattern() != null) {
+
if(registeredRenderlet.getModePattern().equals(modePattern)) {
+ return serviceRegistration;
+ }
+ }
+ }
+ }
+ return null;
+ }
}