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