You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by it...@apache.org on 2011/03/31 19:04:24 UTC

svn commit: r1087373 - /incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletManagerImpl.java

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