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/27 01:40:51 UTC

svn commit: r500434 - in /incubator/tuscany/java/sca: kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ services/discovery/bonjour/src/main/java/org/apache/tuscany/service/discovery/bonjour/ services/discovery/jxta/src/main/java/org/a...

Author: meerajk
Date: Fri Jan 26 16:40:50 2007
New Revision: 500434

URL: http://svn.apache.org/viewvc?view=rev&rev=500434
Log:
implemented send message and message listener

Added:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/RequestListener.java
      - copied, changed from r498821, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.java   (with props)
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java   (with props)
Removed:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeReceiver.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PipeSender.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/PeerListener.java
    incubator/tuscany/java/sca/services/discovery/jxta/src/test/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryServiceTestCase.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=500434&r1=500433&r2=500434
==============================================================================
--- 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 Fri Jan 26 16:40:50 2007
@@ -39,17 +39,30 @@
     /** Runtime info. */
     private RuntimeInfo runtimeInfo;
     
-    /** Listeners. */
-    private Map<QName, MessageListener> listenerMap = new ConcurrentHashMap<QName, MessageListener>();
+    /** Request listeners. */
+    private Map<QName, RequestListener> requestListenerMap = new ConcurrentHashMap<QName, RequestListener>();
     
+    /** Response listeners. */
+    private Map<QName, ResponseListener> responseListenerMap = new ConcurrentHashMap<QName, ResponseListener>();
+    
+    /**
+     * Registers a request listener for async messages.
+     * 
+     * @param messageType Message type that can be handled by the listener.
+     * @param listener Recipient of the async message.
+     */
+    public void registerRequestListener(QName messageType, RequestListener listener) {
+        requestListenerMap.put(messageType, listener);
+    }
+
     /**
-     * Registers a listener for async messages.
+     * Registers a response listener for async messages.
      * 
-     * @param meesageType Message type that can be handled by the listener.
+     * @param messageType Message type that can be handled by the listener.
      * @param listener Recipient of the async message.
      */
-    public void registerListener(QName messageType, MessageListener listener) {
-        listenerMap.put(messageType, listener);
+    public void registerResponseListener(QName messageType, ResponseListener listener) {
+        responseListenerMap.put(messageType, listener);
     }
     
     /**
@@ -93,13 +106,23 @@
     }
     
     /**
-     * Returns the listener for the specified message type.
+     * Returns the request listener for the specified message type.
+     * 
+     * @param messageType Message type for the incoming message.
+     * @return Listener interested in the message type.
+     */
+    public final RequestListener getRequestListener(QName messageType) {
+        return requestListenerMap.get(messageType);
+    }
+    
+    /**
+     * Returns the request listener for the specified message type.
      * 
      * @param messageType Message type for the incoming message.
-     * @return Listeners inteersted in the message type.
+     * @return Listener interested in the message type.
      */
-    public final MessageListener getListener(QName messageType) {
-        return listenerMap.get(messageType);
+    public final ResponseListener getResponseListener(QName messageType) {
+        return responseListenerMap.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=500434&r1=500433&r2=500434
==============================================================================
--- 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 Fri Jan 26 16:40:50 2007
@@ -33,19 +33,30 @@
 public interface DiscoveryService {
     
     /**
-     * Sends a message to the specified runtime.
+     * Sends a message to the specified runtime. The method returns a unique 
+     * message id for the sent message. The consumers can use the message id for
+     * correlating responses to sent messages.
      * 
      * @param runtimeId Runtime id of recipient.
      * @param content Message content.
+     * @return The message id. 
      */
-    void sendMessage(String runtimeId, XMLStreamReader content);
+    int sendMessage(String runtimeId, XMLStreamReader content);
     
     /**
-     * Registers a listener for async messages.
+     * Registers a request listener for async messages.
      * 
      * @param messageType Message type that can be handled by the listener.
      * @param listener Recipient of the async message.
      */
-    void registerListener(QName messageType, MessageListener listener);
+    void registerRequestListener(QName messageType, RequestListener listener);
+    
+    /**
+     * Registers a response listener for async messages.
+     * 
+     * @param messageType Message type that can be handled by the listener.
+     * @param listener Recipient of the async message.
+     */
+    void registerResponseListener(QName messageType, ResponseListener listener);
 
 }

Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/RequestListener.java (from r498821, 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/RequestListener.java?view=diff&rev=500434&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java&r1=498821&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/RequestListener.java&r2=500434
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/MessageListener.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/RequestListener.java Fri Jan 26 16:40:50 2007
@@ -26,12 +26,13 @@
  * @version $Revision$ $Date$
  *
  */
-public interface MessageListener {
+public interface RequestListener {
     
     /**
      * Callback for propogating async messages.
      * @param content Message content.
+     * @return Response to the request message.
      */
-    void onMessage(XMLStreamReader content);
+    XMLStreamReader onRequest(XMLStreamReader content);
 
 }

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.java?view=auto&rev=500434
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.java Fri Jan 26 16:40:50 2007
@@ -0,0 +1,38 @@
+/*
+ * 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 ResponseListener {
+    
+    /**
+     * Callback for propogating async messages.
+     * @param content Message content.
+     * @param An optional message id if this was in response to a message that was sent.
+     */
+    void onResponse(XMLStreamReader content, int messageId);
+
+}

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

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/discovery/ResponseListener.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=500434&r1=500433&r2=500434
==============================================================================
--- 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 Fri Jan 26 16:40:50 2007
@@ -51,8 +51,9 @@
      * 
      * @param runtimeId Runtime id of recipient.
      * @param content Message content.
+     * @return The message id. 
      */
-    public void sendMessage(String runtimeId, XMLStreamReader content) {
+    public int 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=500434&r1=500433&r2=500434
==============================================================================
--- 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 Fri Jan 26 16:40:50 2007
@@ -21,6 +21,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.security.cert.CertificateException;
 import javax.xml.stream.XMLStreamReader;
@@ -28,14 +29,19 @@
 import net.jxta.credential.AuthenticationCredential;
 import net.jxta.discovery.DiscoveryService;
 import net.jxta.exception.PeerGroupException;
+import net.jxta.impl.id.binaryID.DigestTool;
+import net.jxta.impl.protocol.ResolverQuery;
 import net.jxta.membership.Authenticator;
 import net.jxta.membership.MembershipService;
+import net.jxta.peer.PeerID;
 import net.jxta.peergroup.NetPeerGroupFactory;
 import net.jxta.peergroup.PeerGroup;
+import net.jxta.peergroup.PeerGroupID;
 import net.jxta.platform.NetworkConfigurator;
 import net.jxta.protocol.ModuleImplAdvertisement;
+import net.jxta.resolver.QueryHandler;
+import net.jxta.resolver.ResolverService;
 
-import org.apache.tuscany.host.RuntimeInfo;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.services.discovery.AbstractDiscoveryService;
 import org.apache.tuscany.spi.services.work.WorkScheduler;
@@ -55,6 +61,12 @@
 
     /** Peer listener. */
     private PeerListener peerListener;
+    
+    /** Resolver service. */
+    private ResolverService resolverService;
+    
+    /** Domain group. */
+    private PeerGroup domainGroup;
 
     /** Network platform configurator. */
     private NetworkConfigurator configurator;
@@ -65,11 +77,11 @@
     /** Interval for sending discivery messages .*/
     private long interval = DEFAULT_INTERVAL;
     
-    /** Domain peer group. */
-    private PeerGroup domainGroup;
-    
     /** Started flag. */
-    private AtomicBoolean started = new AtomicBoolean();
+    private final AtomicBoolean started = new AtomicBoolean();
+    
+    /** Message id generator. */
+    private final AtomicInteger messageIdGenerator = new AtomicInteger();
 
     /**
      * Adds a network configurator for this service.
@@ -112,9 +124,17 @@
      */
     public void run() {
 
-        try {            
+        try {  
+            
             configure();            
             createAndJoinDomainGroup();
+            
+            setupDiscovery();        
+            setupResolver();
+            
+            started.set(true);        
+            peerListener.start();
+            
         } catch (PeerGroupException ex) {
             throw new JxtaException(ex);
         } catch (IOException ex) {
@@ -130,8 +150,9 @@
      * 
      * @param runtimeId Runtime id of recipient.
      * @param content Message content.
+     * @return The message id. 
      */
-    public void sendMessage(final String runtimeId, final XMLStreamReader content) {
+    public int sendMessage(final String runtimeId, final XMLStreamReader content) {
         
         if(runtimeId == null) {
             throw new IllegalArgumentException("Runtime id is null");
@@ -140,10 +161,23 @@
             throw new IllegalArgumentException("Content id is null");
         }
         
-        if(peerListener.isRuntimeAlive(runtimeId)) {
-            // Send the message
+        PeerID peerID = peerListener.getPeerId(runtimeId);
+        if(peerID == null) {
+            throw new JxtaException("Unrecognized runtime " + runtimeId);
         }
         
+        // TODO get message from XML stream reader
+        final String message = null;
+        int messageId = messageIdGenerator.incrementAndGet();
+        
+        ResolverQuery query = new ResolverQuery();
+        query.setHandlerName(TuscanyQueryHandler.class.getSimpleName());
+        query.setQuery(message);
+        query.setSrc(domainGroup.getPeerID().toString());
+        resolverService.sendQuery(peerID.toString(), query);
+        
+        return messageId;
+        
     }
     
     /**
@@ -198,17 +232,12 @@
      */
     private void createAndJoinDomainGroup() throws Exception {
         
-        RuntimeInfo runtimeInfo = getRuntimeInfo();
-        String domain = runtimeInfo.getDomain().toString();
-        String runtimeId = runtimeInfo.getRuntimeId();
+        String domain = getRuntimeInfo().getDomain().toString();
         
         PeerGroup netGroup = new NetPeerGroupFactory().getInterface();
-            
+        PeerGroupID peerGroupId = createPeerGroupId(domain, netGroup);    
         ModuleImplAdvertisement implAdv = netGroup.getAllPurposePeerGroupImplAdvertisement();
-        domainGroup = netGroup.newGroup(null, implAdv, domain, "Tuscany domain group");
-        
-        final DiscoveryService discoveryService = netGroup.getDiscoveryService();
-        discoveryService.remotePublish(netGroup.getPeerAdvertisement());
+        domainGroup = netGroup.newGroup(peerGroupId, implAdv, domain, "Tuscany domain group");
             
         AuthenticationCredential authCred = new AuthenticationCredential(domainGroup, null, null);
         MembershipService membership = domainGroup.getMembershipService();
@@ -220,10 +249,39 @@
             throw new JxtaException("Unable to join domain group");
         }
         
-        peerListener = new PeerListener(discoveryService, interval, runtimeId);
-        started.set(true);
-        peerListener.start();
+    }
+
+    /**
+     * Sets up the resolver service.
+     */
+    private void setupResolver() {
+        
+        resolverService = domainGroup.getResolverService();
+        QueryHandler queryHandler = new TuscanyQueryHandler(resolverService, this);
+        resolverService.registerHandler(TuscanyQueryHandler.class.getSimpleName(), queryHandler);
         
+    }
+
+    /**
+     * Sets up peer discovery service.
+     */
+    private void setupDiscovery() {
+        
+        final DiscoveryService discoveryService = domainGroup.getDiscoveryService();
+        discoveryService.remotePublish(domainGroup.getPeerAdvertisement());
+        peerListener = new PeerListener(discoveryService, interval, getRuntimeInfo().getRuntimeId());
+        
+    }
+
+    /**
+     * Creates a well-known peer group id for the domain.
+     * 
+     * @param domain Name of the domain.
+     * @param netGroup Parent net peer group.
+     * @return Well-known peer group id.
+     */
+    private PeerGroupID createPeerGroupId(String domain, PeerGroup netGroup) {
+        return new DigestTool().createPeerGroupID(netGroup.getPeerGroupID(), domain, null);
     }
 
 }

Modified: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PeerListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PeerListener.java?view=diff&rev=500434&r1=500433&r2=500434
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PeerListener.java (original)
+++ incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/PeerListener.java Fri Jan 26 16:40:50 2007
@@ -19,13 +19,14 @@
 package org.apache.tuscany.service.discovery.jxta;
 
 import java.util.Enumeration;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import net.jxta.discovery.DiscoveryEvent;
 import net.jxta.discovery.DiscoveryListener;
 import net.jxta.discovery.DiscoveryService;
+import net.jxta.peer.PeerID;
 import net.jxta.protocol.DiscoveryResponseMsg;
 import net.jxta.protocol.PeerAdvertisement;
 
@@ -50,7 +51,7 @@
     private String runtimeId;
     
     /** Available peers. */
-    private List<String> availablePeers = new LinkedList<String>();
+    private Map<String, PeerID> availablePeers = new HashMap<String, PeerID>();
     
     /**
      * Initializes the JXTA discovery service.
@@ -83,18 +84,17 @@
     }
     
     /**
-     * Returns the available peers participating in the domain.
-     * @return True if the specified runtime is alive.
+     * returns the peer id for the runtime id.
+     * @param runtimeId Runtime id for which peer id is requested.
+     * @return Peer id.
      */
-    public synchronized boolean isRuntimeAlive(String runtimeId) {
-        return availablePeers.contains(runtimeId);
+    public synchronized PeerID getPeerId(String runtimeId) {
+        return availablePeers.get(runtimeId);
     }
 
     /**
-     * by implementing DiscoveryListener we must define this method
-     * to deal to discovery responses
+     * Listens for discovery event.
      */
-
     public synchronized void discoveryEvent(DiscoveryEvent event) {
 
         DiscoveryResponseMsg res = event.getResponse();
@@ -104,12 +104,14 @@
                 PeerAdvertisement adv = (PeerAdvertisement) en.nextElement();
                 String peerName = adv.getName();
                 if(!runtimeId.equals(peerName)) {
-                    availablePeers.add(adv.getName());
+                    availablePeers.put(adv.getName(), adv.getPeerID());
                     System.out.println (" Peer name = " + peerName);
+                    System.out.println (" Peer id = " + adv.getPeerID());
                     System.out.println (" Peer Group = " + adv.getPeerGroupID());
                 }
             }
         }
+        
     }
     
     /**

Added: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java?view=auto&rev=500434
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java (added)
+++ incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java Fri Jan 26 16:40:50 2007
@@ -0,0 +1,111 @@
+/*
+ * 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.service.discovery.jxta;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+import net.jxta.impl.protocol.ResolverResponse;
+import net.jxta.protocol.ResolverQueryMsg;
+import net.jxta.protocol.ResolverResponseMsg;
+import net.jxta.resolver.QueryHandler;
+import net.jxta.resolver.ResolverService;
+
+import org.apache.tuscany.spi.services.discovery.RequestListener;
+import org.apache.tuscany.spi.services.discovery.ResponseListener;
+
+/**
+ * Generic quety handler for tuscany PRP (Peer Resolver Protocol) messages. The 
+ * <code>processQuery</code> method is invoked on the receiver and the <code>
+ * processResponse</code> is invoked on the sender when the receiver responds.
+ * @version $Revision$ $Date$
+ *
+ */
+public class TuscanyQueryHandler implements QueryHandler {
+    
+    /** Resolver service for sending responses. */
+    private final ResolverService resolverService;
+    
+    /** Discovery service. */
+    private final JxtaDiscoveryService discoveryService;
+    
+    /**
+     * Initializes the JXTA resolver service and tuscany discovery service.
+     * 
+     * @param resolverService Resolver service.
+     * @param discoveryService Tuscany discovery service.
+     */
+    public TuscanyQueryHandler(final ResolverService resolverService, final JxtaDiscoveryService discoveryService) {
+        this.resolverService = resolverService;
+        this.discoveryService = discoveryService;
+    }
+
+    /**
+     * Processes a query message.
+     */
+    public int processQuery(ResolverQueryMsg queryMessage) {
+        
+        final String message = queryMessage.getQuery();
+        final int queryId = queryMessage.getQueryId();
+        final String source = queryMessage.getSrc();
+        final String handler = queryMessage.getHandlerName();
+        
+        XMLStreamReader requestReader = null;
+        
+        // TODO extract QName from the message
+        final QName messageType = null;
+        RequestListener messageListener = discoveryService.getRequestListener(messageType);
+        if(messageListener != null) {
+            
+            XMLStreamReader responseReader = messageListener.onRequest(requestReader);
+            String response = null;
+            
+            ResolverResponse responseMessage = new ResolverResponse();
+            responseMessage.setResponse(response);
+            responseMessage.setHandlerName(handler);
+            responseMessage.setQueryId(queryId);
+
+            resolverService.sendResponse(source, responseMessage);
+
+        }
+        return ResolverService.OK;
+        
+    }
+
+    /**
+     * Processes a response message.
+     */
+    public void processResponse(ResolverResponseMsg responseMessage) {
+        
+        final String message = responseMessage.getResponse();
+        final int queryId = responseMessage.getQueryId();
+        
+        XMLStreamReader responseReader = null;
+        
+        // TODO extract QName from the message
+        final QName messageType = null;
+        ResponseListener messageListener = discoveryService.getResponseListener(messageType);
+        if(messageListener != null) {            
+            messageListener.onResponse(responseReader, queryId);
+
+        }
+        
+    }
+
+}

Propchange: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/discovery/jxta/src/main/java/org/apache/tuscany/service/discovery/jxta/TuscanyQueryHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/services/discovery/jxta/src/test/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/discovery/jxta/src/test/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryServiceTestCase.java?view=diff&rev=500434&r1=500433&r2=500434
==============================================================================
--- incubator/tuscany/java/sca/services/discovery/jxta/src/test/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/services/discovery/jxta/src/test/java/org/apache/tuscany/service/discovery/jxta/JxtaDiscoveryServiceTestCase.java Fri Jan 26 16:40:50 2007
@@ -49,13 +49,11 @@
 
     public void testStartAndStop() throws Exception {
         
-        JxtaDiscoveryService discoveryService = getDiscoveryService("runtime-1", "domain");
+        JxtaDiscoveryService discoveryService = getDiscoveryService("runtime-2", "domain");
         
         discoveryService.start();
         while(!discoveryService.isStarted()) {
         }
-        //while(true) {
-        //}
         
     }
     



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