summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointHelper.java6
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java7
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ExportRegistrationImpl.java17
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ImportRegistrationImpl.java2
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceExporter.java4
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/RemoteServiceAdminImpl.java20
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java19
-rw-r--r--sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java16
8 files changed, 59 insertions, 32 deletions
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointHelper.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointHelper.java
index 3a21674139..949d2d8af7 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointHelper.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointHelper.java
@@ -67,11 +67,11 @@ public class EndpointHelper {
String serviceID = (String)props.get(Constants.SERVICE_ID);
if (serviceID != null) {
- props.put(RemoteConstants.ENDPOINT_ID, Long.parseLong(serviceID));
+ props.put(RemoteConstants.ENDPOINT_SERVICE_ID, Long.parseLong(serviceID));
}
- props.put(RemoteConstants.ENDPOINT_URI, endpoint.getURI());
+ props.put(RemoteConstants.ENDPOINT_ID, endpoint.getURI());
// FIXME: [rfeng] How to pass in the remote service id from the endpoint XML
- props.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS, new String[] {"org.osgi.sca"});
+ props.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, new String[] {"org.osgi.sca"});
props.put(Endpoint.class.getName(), endpoint);
List<String> interfaces = getInterfaces(endpoint);
props.put(Constants.OBJECTCLASS, interfaces.toArray(new String[interfaces.size()]));
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java
index bfc5b97ee8..916761f129 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java
@@ -425,10 +425,13 @@ public class EndpointIntrospector {
JavaInterfaceContract interfaceContract = javaInterfaceFactory.createJavaInterfaceContract();
Class<?> interfaceClass = bundle.loadClass(intf);
JavaInterface javaInterface = javaInterfaceFactory.createJavaInterface(interfaceClass);
+ // [rfeng] For OSGi, the interfaces should be marked as remote
+ javaInterface.setRemotable(true);
interfaceContract.setInterface(javaInterface);
if (javaInterface.getCallbackClass() != null) {
- interfaceContract.setCallbackInterface(javaInterfaceFactory.createJavaInterface(javaInterface
- .getCallbackClass()));
+ JavaInterface callbackInterface = javaInterfaceFactory.createJavaInterface(javaInterface.getCallbackClass());
+ callbackInterface.setRemotable(true);
+ interfaceContract.setCallbackInterface(callbackInterface);
}
return interfaceContract;
}
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ExportRegistrationImpl.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ExportRegistrationImpl.java
index 9b31931b6c..2335d31020 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ExportRegistrationImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ExportRegistrationImpl.java
@@ -30,10 +30,8 @@ import org.osgi.service.remoteserviceadmin.ExportRegistration;
*/
public class ExportRegistrationImpl implements ExportRegistration {
private Node node;
- private ServiceReference exportedService;
- private EndpointDescription endpointDescription;
- private Throwable exception;
private ExportReference exportReference;
+ private Throwable exception;
/**
* @param exportedService
@@ -46,8 +44,7 @@ public class ExportRegistrationImpl implements ExportRegistration {
Throwable exception) {
super();
this.node = node;
- this.exportedService = exportedService;
- this.endpointDescription = endpointDescription;
+ this.exportReference = new ExportReferenceImpl(exportedService, endpointDescription);
this.exception = exception;
}
@@ -68,16 +65,15 @@ public class ExportRegistrationImpl implements ExportRegistration {
node = null;
}
exception = null;
- endpointDescription = null;
- exportedService = null;
+ exportReference = new ExportReferenceImpl(null, null);
}
public ServiceReference getExportedService() {
- return exportedService;
+ return exportReference.getExportedService();
}
public EndpointDescription getEndpointDescription() {
- return endpointDescription;
+ return exportReference.getExportedEndpoint();
}
public Throwable getException() {
@@ -89,8 +85,7 @@ public class ExportRegistrationImpl implements ExportRegistration {
}
public ExportReference getExportReference() throws IllegalStateException {
- // TODO Auto-generated method stub
- return null;
+ return exportReference;
}
}
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ImportRegistrationImpl.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ImportRegistrationImpl.java
index 2526f70a6b..8961d031cc 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ImportRegistrationImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/ImportRegistrationImpl.java
@@ -67,7 +67,7 @@ public class ImportRegistrationImpl implements ImportRegistration {
node = null;
}
exception = null;
- importReference = null;
+ importReference = new ImportReferenceImpl(null, null);
}
public Throwable getException() {
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceExporter.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceExporter.java
index 49dc8c7461..b644ca14c9 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceExporter.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceExporter.java
@@ -25,7 +25,7 @@ import static org.apache.tuscany.sca.osgi.remoteserviceadmin.impl.OSGiHelper.get
import static org.apache.tuscany.sca.osgi.remoteserviceadmin.impl.OSGiHelper.getOSGiProperties;
import static org.osgi.framework.Constants.SERVICE_ID;
import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID;
-import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID;
import java.util.ArrayList;
import java.util.Collections;
@@ -88,7 +88,7 @@ public class OSGiServiceExporter extends AbstractOSGiServiceHandler implements S
ENDPOINT_FRAMEWORK_UUID,
getFrameworkUUID(reference.getBundle()
.getBundleContext())));
- service.getExtensions().add(createOSGiProperty(registry, ENDPOINT_ID, reference
+ service.getExtensions().add(createOSGiProperty(registry, ENDPOINT_SERVICE_ID, reference
.getProperty(SERVICE_ID)));
// FIXME: Configure the domain and node URI
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/RemoteServiceAdminImpl.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/RemoteServiceAdminImpl.java
index 994fb29e9b..608c74bcfc 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/RemoteServiceAdminImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/RemoteServiceAdminImpl.java
@@ -41,6 +41,7 @@ import org.osgi.service.remoteserviceadmin.ExportReference;
import org.osgi.service.remoteserviceadmin.ExportRegistration;
import org.osgi.service.remoteserviceadmin.ImportReference;
import org.osgi.service.remoteserviceadmin.ImportRegistration;
+import org.osgi.service.remoteserviceadmin.RemoteConstants;
import org.osgi.service.remoteserviceadmin.RemoteServiceAdmin;
import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent;
import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;
@@ -70,8 +71,15 @@ public class RemoteServiceAdminImpl implements RemoteServiceAdmin, ManagedServic
this.importer = new OSGiServiceImporter(context);
exporter.start();
importer.start();
- registration = context.registerService(RemoteServiceAdmin.class.getName(), this, null);
Hashtable<String, Object> props = new Hashtable<String, Object>();
+ props.put(RemoteConstants.REMOTE_CONFIGS_SUPPORTED, new String[] {"org.osgi.sca"});
+ // FIXME: We should ask SCA domain for the supported intents
+ props.put(RemoteConstants.REMOTE_INTENTS_SUPPORTED, new String[] {});
+ // FIXME: We should ask SCA domain for the supported binding types
+ props.put("org.osgi.sca.binding.types", new String[] {});
+ registration = context.registerService(RemoteServiceAdmin.class.getName(), this, props);
+
+ props = new Hashtable<String, Object>();
props.put(Constants.SERVICE_PID, RemoteServiceAdminImpl.class.getName());
managedService = context.registerService(ManagedService.class.getName(), this, props);
listeners = new ServiceTracker(this.context, RemoteServiceAdminListener.class.getName(), null);
@@ -213,17 +221,17 @@ public class RemoteServiceAdminImpl implements RemoteServiceAdmin, ManagedServic
props.put("bundle-symbolicname", rsaBundle.getSymbolicName());
props.put("bundle-version", rsaBundle.getHeaders().get(Constants.BUNDLE_VERSION));
props.put("cause", rsaEvent.getException());
- props.put("import.reference", rsaEvent.getImportReference());
- props.put("export.reference", rsaEvent.getExportReference());
+ props.put("import.registration", rsaEvent.getImportReference());
+ props.put("export.registration", rsaEvent.getExportReference());
EndpointDescription ep = null;
if (rsaEvent.getImportReference() != null) {
ep = rsaEvent.getImportReference().getImportedEndpoint();
} else {
ep = rsaEvent.getExportReference().getExportedEndpoint();
}
- props.put("service.remote.id", ep.getRemoteServiceID());
- props.put("service.remote.uuid", ep.getRemoteFrameworkUUID());
- props.put("service.remote.uri", ep.getRemoteURI());
+ props.put("endpoint.service.id", ep.getRemoteServiceID());
+ props.put("endpoint.framework.uuid", ep.getRemoteFrameworkUUID());
+ props.put("endpoint.id", ep.getRemoteID());
props.put("objectClass", ep.getInterfaces());
props.put("service.imported.configs", ep.getConfigurationTypes());
props.put("timestamp", new Long(System.currentTimeMillis()));
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java
index 0efa0cd20b..f6e9855556 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java
@@ -25,10 +25,13 @@ import java.util.Dictionary;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.core.LifeCycleListener;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
import org.apache.tuscany.sca.implementation.osgi.OSGiImplementation;
+import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
import org.apache.tuscany.sca.runtime.DomainRegistryFactory;
import org.apache.tuscany.sca.runtime.EndpointListener;
+import org.apache.tuscany.sca.runtime.EndpointRegistry;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
@@ -38,6 +41,7 @@ import org.osgi.service.remoteserviceadmin.EndpointDescription;
*/
public class DomainDiscoveryService extends AbstractDiscoveryService implements EndpointListener {
private DomainRegistryFactory domainRegistryFactory;
+ private EndpointRegistry endpointRegistry;
public DomainDiscoveryService(BundleContext context) {
super(context);
@@ -49,6 +53,18 @@ public class DomainDiscoveryService extends AbstractDiscoveryService implements
this.domainRegistryFactory =
registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(DomainRegistryFactory.class);
domainRegistryFactory.addListener(this);
+ // The following code forced the start() of the domain registry in absense of services
+ String domainRegistry = context.getProperty("org.osgi.sca.domain.registry");
+ if (domainRegistry == null) {
+ domainRegistry = NodeConfiguration.DEFAULT_DOMAIN_REGISTRY_URI;
+ }
+ String domainURI = context.getProperty("org.osgi.sca.domain.uri");
+ if (domainURI == null) {
+ domainURI = NodeConfiguration.DEFAULT_DOMAIN_URI;
+ }
+ if (domainRegistry != null) {
+ endpointRegistry = domainRegistryFactory.getEndpointRegistry(domainRegistry, domainURI);
+ }
}
public void endpointAdded(Endpoint endpoint) {
@@ -111,6 +127,9 @@ public class DomainDiscoveryService extends AbstractDiscoveryService implements
public void stop() {
domainRegistryFactory.removeListener(this);
+ if (endpointRegistry instanceof LifeCycleListener) {
+ ((LifeCycleListener)endpointRegistry).stop();
+ }
super.stop();
}
diff --git a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java
index 45c563dc21..a4c9414b92 100644
--- a/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java
+++ b/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java
@@ -19,6 +19,9 @@
package org.apache.tuscany.sca.osgi.service.discovery.impl;
import static org.apache.tuscany.sca.osgi.remoteserviceadmin.impl.OSGiHelper.getConfiguration;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID;
import java.net.URL;
import java.util.ArrayList;
@@ -45,7 +48,6 @@ import org.osgi.framework.Constants;
import org.osgi.framework.Filter;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.remoteserviceadmin.EndpointDescription;
-import org.osgi.service.remoteserviceadmin.RemoteConstants;
import org.osgi.util.tracker.BundleTracker;
import org.osgi.util.tracker.BundleTrackerCustomizer;
import org.osgi.util.tracker.ServiceTracker;
@@ -88,14 +90,14 @@ public class LocalDiscoveryService extends AbstractDiscoveryService implements B
private EndpointDescription createEndpointDescription(ServiceDescription sd) {
Map<String, Object> props = new HashMap<String, Object>(sd.getProperties());
props.put(Constants.OBJECTCLASS, sd.getInterfaces().toArray(new String[sd.getInterfaces().size()]));
- if (!props.containsKey(RemoteConstants.ENDPOINT_ID)) {
- props.put(RemoteConstants.ENDPOINT_ID, new Long(System.currentTimeMillis()));
+ if (!props.containsKey(ENDPOINT_SERVICE_ID)) {
+ props.put(ENDPOINT_SERVICE_ID, new Long(System.currentTimeMillis()));
}
- if (!props.containsKey(RemoteConstants.ENDPOINT_FRAMEWORK_UUID)) {
- props.put(RemoteConstants.ENDPOINT_FRAMEWORK_UUID, OSGiHelper.getFrameworkUUID(context));
+ if (!props.containsKey(ENDPOINT_FRAMEWORK_UUID)) {
+ props.put(ENDPOINT_FRAMEWORK_UUID, OSGiHelper.getFrameworkUUID(context));
}
- if (!props.containsKey(RemoteConstants.ENDPOINT_URI)) {
- props.put(RemoteConstants.ENDPOINT_URI, UUID.randomUUID().toString());
+ if (!props.containsKey(ENDPOINT_ID)) {
+ props.put(ENDPOINT_ID, UUID.randomUUID().toString());
}
EndpointDescription sed = new EndpointDescription(props);