You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by me...@apache.org on 2007/01/21 00:40:10 UTC

svn commit: r498212 - in /incubator/tuscany/java/sca: kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ kernel/spi/src/main/java/org/apache/tuscany/spi/services/domain/ services/discovery/bonjour/src/main/java/org/apache/tuscany/servi...

Author: meerajk
Date: Sat Jan 20 15:40:09 2007
New Revision: 498212

URL: http://svn.apache.org/viewvc?view=rev&rev=498212
Log:
Refined discovery service interface

Added:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java   (with props)
Removed:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/domain/DomainModelService.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/MessageListener.java
Modified:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/AbstractDiscoveryService.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/DiscoveryService.java
    incubator/tuscany/java/sca/services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/BonjourDiscoveryService.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryService.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/AbstractDiscoveryService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/AbstractDiscoveryService.java?view=diff&rev=498212&r1=498211&r2=498212
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/AbstractDiscoveryService.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/AbstractDiscoveryService.java Sat Jan 20 15:40:09 2007
@@ -18,9 +18,13 @@
  */
 package org.apache.tuscany.spi.services.discovery;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.host.RuntimeInfo;
 import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.services.domain.DomainModelService;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.Init;
 
@@ -31,23 +35,21 @@
  *
  */
 public abstract class AbstractDiscoveryService implements DiscoveryService {
-
-    /** Domain model service. */
-    private DomainModelService domainModelService;
     
     /** Runtime info. */
     private RuntimeInfo runtimeInfo;
     
+    /** Listeners. */
+    private Map<QName, MessageListener> listenerMap = new ConcurrentHashMap<QName, MessageListener>();
+    
     /**
-     * Makes a reference to the domain model service available to the discovery service. 
-     * This is required by the dicovery service to propogate any changes in the domain 
-     * topology back to the admin server.
+     * Registers a listener for async messages.
      * 
-     * @param domainModelService Domain model service used for callbacks.
+     * @param meesageType Message type that can be handled by the listener.
+     * @param listener Recipient of the async message.
      */
-    @Autowire
-    public final void setDomainModelService(DomainModelService domainModelService) {
-        this.domainModelService = domainModelService;
+    public void registerListener(QName messageType, MessageListener listener) {
+        listenerMap.put(messageType, listener);
     }
     
     /**
@@ -62,7 +64,6 @@
     
     /**
      * Starts the discovery service.
-     * @throws Any unexpected JXTA exception to bubble up the call stack.
      */
     @Init
     public final void start() {
@@ -76,7 +77,6 @@
     
     /**
      * Stops the discovery service.
-     * @throws Any unexpected JXTA exception to bubble up the call stack.
      */
     @Destroy
     public final void stop() {
@@ -84,21 +84,22 @@
     }
     
     /**
-     * Gets the domain model service used by this discovery service.
+     * Gets the runtime info for the runtime using the discovery service.
      * 
-     * @return Domain model service used for callbacks.
+     * @return Runtime info for the runtime using the discovery service.
      */
-    protected final DomainModelService getDomainModelService() {
-        return domainModelService;
+    protected final RuntimeInfo getRuntimeInfo() {
+        return runtimeInfo;
     }
     
     /**
-     * Gets the runtime info for the runtime using the discovery service.
+     * Returns the listener for the specified message type.
      * 
-     * @return Runtime info for the runtime using the discovery service.
+     * @param messageType Message type for the incoming message.
+     * @return Listeners inteersted in the message type.
      */
-    protected final RuntimeInfo getRuntimeInfo() {
-        return runtimeInfo;
+    public final MessageListener getListener(QName messageType) {
+        return listenerMap.get(messageType);
     }
     
     /**

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/DiscoveryService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/DiscoveryService.java?view=diff&rev=498212&r1=498211&r2=498212
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/DiscoveryService.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/DiscoveryService.java Sat Jan 20 15:40:09 2007
@@ -18,8 +18,8 @@
  */
 package org.apache.tuscany.spi.services.discovery;
 
-import org.apache.tuscany.host.RuntimeInfo;
-import org.apache.tuscany.spi.services.domain.DomainModelService;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
 
 /**
  * Defines the abstraction that allows runtimes participating 
@@ -33,29 +33,19 @@
 public interface DiscoveryService {
     
     /**
-     * Makes a reference to the domain model service available to the discovery service. 
-     * This is required by the dicovery service to propogate any changes in the domain 
-     * topology back to the admin server.
+     * Sends a message to the specified runtime.
      * 
-     * @param domainModelService Domain model service used for callbacks.
+     * @param runtimeId Runtime id of recipient.
+     * @param content Message content.
      */
-    void setDomainModelService(DomainModelService domainModelService);
+    void sendMessage(String runtimeId, XMLStreamReader content);
     
     /**
-     * Sets the runtime info for the runtime using the discovery service.
+     * Registers a listener for async messages.
      * 
-     * @param runtimeInfo Runtime info for the runtime using the discovery service.
+     * @param messageType Message type that can be handled by the listener.
+     * @param listener Recipient of the async message.
      */
-    void setRuntimeInfo(RuntimeInfo runtimeInfo);
-    
-    /**
-     * Starts the discovery service.
-     */
-    void start();
-    
-    /**
-     * Stops the discovery service.
-     */
-    void stop();
+    void registerListener(QName messageType, MessageListener listener);
 
 }

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java?view=auto&rev=498212
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java Sat Jan 20 15:40:09 2007
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.spi.services.discovery;
+
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * Message listener for propogating callbacks.
+ * 
+ * @version $Revision$ $Date$
+ *
+ */
+public interface MessageListener {
+    
+    /**
+     * Callback for propogating async messages.
+     * @param content Message content.
+     */
+    void onMessage(XMLStreamReader content);
+
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/BonjourDiscoveryService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/BonjourDiscoveryService.java?view=diff&rev=498212&r1=498211&r2=498212
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/BonjourDiscoveryService.java (original)
+++ incubator/tuscany/java/sca/services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/BonjourDiscoveryService.java Sat Jan 20 15:40:09 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.service.discovery.bonjour;
 
+import javax.xml.stream.XMLStreamReader;
+
 import org.apache.tuscany.spi.services.discovery.AbstractDiscoveryService;
 
 /**
@@ -41,6 +43,16 @@
      */
     @Override
     public void onStop() {
+        throw new UnsupportedOperationException();
+    }
+    
+    /**
+     * Sends a message to the specified runtime.
+     * 
+     * @param runtimeId Runtime id of recipient.
+     * @param content Message content.
+     */
+    public void sendMessage(String runtimeId, XMLStreamReader content) {
         throw new UnsupportedOperationException();
     }
 

Modified: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryService.java?view=diff&rev=498212&r1=498211&r2=498212
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryService.java (original)
+++ incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryService.java Sat Jan 20 15:40:09 2007
@@ -21,7 +21,8 @@
 import java.io.IOException;
 import java.net.URI;
 
-import net.jxta.endpoint.Message;
+import javax.xml.stream.XMLStreamReader;
+
 import net.jxta.exception.PeerGroupException;
 
 import org.apache.tuscany.host.RuntimeInfo;
@@ -33,20 +34,10 @@
  * @version $Revision$ $Date$
  *
  */
-public class JxtaDiscoveryService extends AbstractDiscoveryService implements MessageListener {
+public class JxtaDiscoveryService extends AbstractDiscoveryService {
     
     /** Pipe receiver. */
     private PipeReceiver pipeReceiver;
-
-    /**
-     * Callback method for message reception.
-     * @param message Message that is received.
-     */
-    public void onMessage(Message message) {  
-        
-        // TODO Notify the domain model service
-        // DomainModelService domainModelService = getDomainModelService();  
-    }
     
     /**
      * Starts the discovery service.
@@ -65,8 +56,6 @@
             
             pipeReceiver.start(domain, runtimeId);
             
-            // TODO Use pipe sender to notify coming alive
-            
         } catch (PeerGroupException ex) {
             throw new JxtaException(ex);
         } catch (IOException ex) {
@@ -76,12 +65,20 @@
     }
     
     /**
+     * Sends a message to the specified runtime.
+     * 
+     * @param runtimeId Runtime id of recipient.
+     * @param content Message content.
+     */
+    public void sendMessage(String runtimeId, XMLStreamReader content) {
+        throw new UnsupportedOperationException();
+    }
+    
+    /**
      * Stops the discovery service.
      */
     @Override
     protected void onStop() {
-        
-        // TODO Use pipe sender to notify shutdown
         pipeReceiver.stop();
     }
 

Modified: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java?view=diff&rev=498212&r1=498211&r2=498212
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java (original)
+++ incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java Sat Jan 20 15:40:09 2007
@@ -21,7 +21,9 @@
 import java.io.IOException;
 import java.net.URI;
 
-import net.jxta.endpoint.Message;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
 import net.jxta.exception.PeerGroupException;
 import net.jxta.peergroup.PeerGroup;
 import net.jxta.peergroup.PeerGroupFactory;
@@ -31,6 +33,8 @@
 import net.jxta.pipe.PipeService;
 import net.jxta.protocol.PipeAdvertisement;
 
+import org.apache.tuscany.spi.services.discovery.MessageListener;
+
 /**
  * Class for receiving information on a JXTA pipe.
  * 
@@ -39,8 +43,8 @@
  */
 public final class PipeReceiver implements PipeMsgListener {
     
-    /** Message listener. */
-    private MessageListener messageListener;
+    /** Discovery service. */
+    private JxtaDiscoveryService discoveryService;
     
     /** Net peer group. */
     private PeerGroup peerGroup;
@@ -53,12 +57,13 @@
     
     /**
      * Initializes the message listener.
-     * @param messageListener Message listener.
+     * 
+     * @param discoveryService JXTA discovery service.
      * @throws PeerGroupException If unable to create Peer group.
      */
-    private PipeReceiver(MessageListener messageListener) throws PeerGroupException {
+    private PipeReceiver(JxtaDiscoveryService discoveryService) throws PeerGroupException {
         
-        this.messageListener = messageListener;
+        this.discoveryService = discoveryService;
 
         peerGroup = PeerGroupFactory.newNetPeerGroup();
         pipeService = peerGroup.getPipeService();
@@ -67,16 +72,17 @@
     
     /**
      * Creates a new instance of the pipe receiver.
-     * @param messageListener Message lsitener.
+     * 
+     * @param discoveryService JXTA discovery service.
      * @throws PeerGroupException If unable to create Peer group.
      */
-    public static PipeReceiver newInstance(MessageListener messageListener) throws PeerGroupException {
+    public static PipeReceiver newInstance(JxtaDiscoveryService discoveryService) throws PeerGroupException {
         
-        if(messageListener == null) {
-            throw new IllegalArgumentException("Message listener is null");
+        if(discoveryService == null) {
+            throw new IllegalArgumentException("Discovery service is null");
         }
         
-        return new PipeReceiver(messageListener);
+        return new PipeReceiver(discoveryService);
         
     }
     
@@ -109,9 +115,17 @@
     /**
      * Callback when messages are received.
      */
-    public void pipeMsgEvent(PipeMsgEvent event) {        
-        Message message = event.getMessage();
-        messageListener.onMessage(message);
+    public void pipeMsgEvent(PipeMsgEvent event) {
+        
+        QName messageType = null;
+        XMLStreamReader content = null;
+        // TODO get message type from event and extract content.
+        
+        MessageListener listener = discoveryService.getListener(messageType);
+        if(listener != null) {
+            listener.onMessage(content);
+        }
+        
     }
 
 }



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