juddi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ks...@apache.org
Subject svn commit: r1130596 - in /juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping: ServiceLocator.java UDDIClientSubscriptionListenerImpl.java UDDIServiceCache.java
Date Thu, 02 Jun 2011 15:07:45 GMT
Author: kstam
Date: Thu Jun  2 15:07:45 2011
New Revision: 1130596

URL: http://svn.apache.org/viewvc?rev=1130596&view=rev
Log:
JUDDI-479 some fixes to the servicelocator code; use of a static Map so we can get to the
ServiceCache

Modified:
    juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
    juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java
    juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java

Modified: juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java?rev=1130596&r1=1130595&r2=1130596&view=diff
==============================================================================
--- juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
(original)
+++ juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
Thu Jun  2 15:07:45 2011
@@ -18,7 +18,6 @@ import java.lang.reflect.InvocationTarge
 import java.net.MalformedURLException;
 import java.rmi.RemoteException;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.Properties;
 
 import javax.wsdl.WSDLException;
@@ -93,7 +92,7 @@ public class ServiceLocator {
 		if (topology==null) {
 			topology = lookupEndpointInUDDI(serviceKey);
 		}
-	    if (topology.getEprs().size() > 0) {
+	    if (topology!=null && topology.getEprs().size() > 0) {
 	    	epr = selectionPolicy.select(topology);
 	    }
 		return epr;

Modified: juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java?rev=1130596&r1=1130595&r2=1130596&view=diff
==============================================================================
--- juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java
(original)
+++ juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java
Thu Jun  2 15:07:45 2011
@@ -18,6 +18,8 @@
 package org.apache.juddi.v3.client.mapping;
 
 import java.io.StringWriter;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.jws.WebService;
 import javax.xml.bind.JAXBContext;
@@ -44,15 +46,26 @@ import org.uddi.v3_service.UDDISubscript
 			targetNamespace = "urn:uddi-org:v3_service")
 public class UDDIClientSubscriptionListenerImpl implements UDDISubscriptionListenerPortType
{
 	
+	
+
 	private static final long serialVersionUID = 100157393329807903L;
 	private static Log logger = LogFactory.getLog(UDDIClientSubscriptionListenerImpl.class);
-	private UDDIServiceCache serviceCache;
+	private static Map<String,UDDIServiceCache> serviceCacheMap = new ConcurrentHashMap<String,UDDIServiceCache>();
+	
+	public UDDIClientSubscriptionListenerImpl(String bindingKey, UDDIServiceCache serviceCache)
{
+		super();
+		serviceCacheMap.put(bindingKey, serviceCache);
+	}
 	
-	public UDDIClientSubscriptionListenerImpl(UDDIServiceCache serviceCache) {
+	public UDDIClientSubscriptionListenerImpl() {
 		super();
-		this.serviceCache = serviceCache;
+		// TODO Auto-generated constructor stub
 	}
 	
+	public static Map<String, UDDIServiceCache> getServiceCacheMap() {
+		return serviceCacheMap;
+	}
+
 	public DispositionReport notifySubscriptionListener(
 			NotifySubscriptionListener body)
 			throws DispositionReportFaultMessage 
@@ -63,12 +76,13 @@ public class UDDIClientSubscriptionListe
 			StringWriter sw = new StringWriter();
 			marshaller.marshal(body, sw);
 			logger.info("Notification received by UDDISubscriptionListenerService : " + sw.toString());
-			
-			//Update the current subscription
-			serviceCache.registerSubscription();
-			//reset the cache
-			serviceCache.removeAll();
-			
+			String bindingKey = body.getSubscriptionResultsList().getSubscription().getBindingKey();
+			if (serviceCacheMap.containsKey(bindingKey)) {
+				UDDIServiceCache serviceCache = serviceCacheMap.get(bindingKey);
+				// reset the cache, big hammer for now, we could figure out changed from the
+				// subscriptionResults, and be more selective.
+				serviceCache.removeAll();
+			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

Modified: juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java?rev=1130596&r1=1130595&r2=1130596&view=diff
==============================================================================
--- juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
(original)
+++ juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
Thu Jun  2 15:07:45 2011
@@ -17,7 +17,6 @@ package org.apache.juddi.v3.client.mappi
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.rmi.RemoteException;
-import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -71,25 +70,25 @@ public class UDDIServiceCache {
 		this.clerk = clerk;
 		this.urlLocalizer = urlLocalizer;
 		this.properties = properties;
-		this.port = Integer.valueOf(properties.getProperty("serverPort", "8080")) + 7;
-		this.serverName = properties.getProperty("serverName","localhost");
 		this.subscriptionKey = Property.getSubscriptionKey(properties);
 		
 		init();
 	}
 
 	private void init() throws DatatypeConfigurationException, MalformedURLException, WSDLException,
RemoteException, ConfigurationException, TransportException {
-		//TODO make the URL more configurable (https)
-		serviceUrl = new URL("http://localhost:" + port + "/uddiclientsubscriptionlistener");
-		endpoint = Endpoint.publish(serviceUrl.toExternalForm(), new UDDIClientSubscriptionListenerImpl(this));
 		
 		QName serviceQName = new QName("urn:uddi-org:v3_service", "UDDISubscriptionListenerService");
 		String portName = "UDDISubscriptionListenerImplPort";
+		String url = urlLocalizer.rewrite(new URL("http://localhost:8080/subscriptionlistener_"
+ clerk.getManagerName()));
+		serviceUrl = new URL(url);
 		
 		WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
 		Definition wsdlDefinition = new ReadWSDL().readWSDL("uddi_v3_service.wsdl");
 		bindingKey = wsdl2UDDI.register(serviceQName, portName, serviceUrl, wsdlDefinition).getBindingKey();
 		
+		endpoint = Endpoint.create(new UDDIClientSubscriptionListenerImpl(bindingKey,this));
+		endpoint.publish(serviceUrl.toExternalForm());
+		
 		registerSubscription();
 	}
 	
@@ -100,6 +99,7 @@ public class UDDIServiceCache {
 		WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
 		wsdl2UDDI.unRegister(serviceQName, portName, serviceUrl);
 		endpoint.stop();
+		UDDIClientSubscriptionListenerImpl.getServiceCacheMap().remove(bindingKey);
 	}
 	
 	public void removeAll() {
@@ -127,17 +127,18 @@ public class UDDIServiceCache {
 	public void registerSubscription() throws DatatypeConfigurationException {
 		
 		//Create a subscription for changes in any Service in the Registry
+		FindService findAllServices = new FindService();
 		FindQualifiers qualifiers = new FindQualifiers();
-		qualifiers.getFindQualifier().add("approxateMatch");
+		qualifiers.getFindQualifier().add("approximateMatch");
+		
+		findAllServices.setFindQualifiers(qualifiers);
 		
-		FindService findAllServices = new FindService();
 		Name name = new Name();
 		name.setValue("%");
 		findAllServices.getName().add(name);
 		
 		SubscriptionFilter filter = new SubscriptionFilter();
-		filter.getFindService().setFindQualifiers(qualifiers);
-		filter.getFindService().getName().add(name);
+		filter.setFindService(findAllServices);
 		
 		Subscription subscription = new Subscription();
 		subscription.setSubscriptionFilter(filter);
@@ -145,7 +146,7 @@ public class UDDIServiceCache {
 		subscription.setBrief(true);
 		Duration oneMinute = DatatypeFactory.newInstance().newDuration("PT1M");
 		subscription.setNotificationInterval(oneMinute);
-		subscription.setSubscriptionKey("create the key");
+		subscription.setSubscriptionKey(subscriptionKey);
 		clerk.register(subscription);
 	}
 	



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org


Mime
View raw message