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;
+       }
 }


Reply via email to