diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-09-02 22:09:41 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-09-02 22:09:41 +0000 |
commit | 8f89f16ccc43b38cdb42f64efc7396aa64b9a1f7 (patch) | |
tree | 625624c1f553a4b56e77d0ac8649825992a159c7 | |
parent | 27fcfdf32ae017dd7759f78dceb4638ac8fa01a5 (diff) |
Remove the need to extend EndpointDescription
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@810712 13f79535-47bb-0310-9956-ffa450edef68
10 files changed, 82 insertions, 167 deletions
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java index a2a10a21f5..f83ca90331 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java @@ -423,7 +423,7 @@ public class ComponentReferenceEndpointReferenceBuilderImpl extends BaseBuilderI break; } } - if (!promoted && !componentReference.isForCallback()) { + if (!promoted && !componentReference.isForCallback() && !componentReference.isWiredByImpl()) { Monitor.error(monitor, this, "assembly-validation-messages", @@ -475,7 +475,7 @@ public class ComponentReferenceEndpointReferenceBuilderImpl extends BaseBuilderI // then this reference is unwired, which is an error - the existing endpoint references // will have been attached to a nested reference when a promoting reference has its endpoint // references computed - if (endpoints.size() == 0 && !reference.isPromoted()) { + if (endpoints.size() == 0 && !reference.isPromoted() && !reference.isWiredByImpl()) { warning(monitor, "ReferenceWithoutTargets", reference, composite.getName().toString(), reference .getName()); } // end if diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java index cd091f3258..d9c88d3071 100644 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/DomainDiscoveryService.java @@ -19,12 +19,13 @@ package org.apache.tuscany.sca.osgi.service.discovery.impl; +import static org.apache.tuscany.sca.osgi.service.remoteadmin.impl.EndpointHelper.createEndpointDescription; + import org.apache.tuscany.sca.assembly.Endpoint; import org.apache.tuscany.sca.assembly.Implementation; import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.implementation.osgi.OSGiImplementation; import org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription; -import org.apache.tuscany.sca.osgi.service.remoteadmin.impl.EndpointDescriptionImpl; import org.apache.tuscany.sca.runtime.EndpointListener; import org.apache.tuscany.sca.runtime.EndpointRegistry; import org.osgi.framework.BundleContext; @@ -82,11 +83,6 @@ public class DomainDiscoveryService extends AbstractDiscoveryService implements } } - private EndpointDescription createEndpointDescription(Endpoint endpoint) { - EndpointDescription description = new EndpointDescriptionImpl(endpoint); - return description; - } - public void endpointRemoved(Endpoint endpoint) { /* if (!endpoint.isRemote()) { diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java index 6d4a60de6f..69ac7b4776 100644 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/discovery/impl/LocalDiscoveryService.java @@ -51,7 +51,6 @@ import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.MonitorFactory; import org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription; import org.apache.tuscany.sca.osgi.service.remoteadmin.RemoteConstants; -import org.apache.tuscany.sca.osgi.service.remoteadmin.impl.EndpointDescriptionImpl; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -162,7 +161,7 @@ public class LocalDiscoveryService extends AbstractDiscoveryService implements B props.put(RemoteConstants.ENDPOINT_URI, UUID.randomUUID().toString()); } - EndpointDescription sed = new EndpointDescriptionImpl(props); + EndpointDescription sed = new EndpointDescription(props); return sed; } diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointDescriptionImpl.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointDescriptionImpl.java deleted file mode 100644 index d294bcfadf..0000000000 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointDescriptionImpl.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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.sca.osgi.service.remoteadmin.impl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.logging.Logger; - -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription; -import org.apache.tuscany.sca.osgi.service.remoteadmin.RemoteConstants; -import org.apache.tuscany.sca.policy.Intent; -import org.osgi.framework.Constants; -import org.osgi.framework.ServiceReference; -import org.osgi.framework.Version; - -/** - * Implementation of {@link EndpointDescription} - */ -public class EndpointDescriptionImpl extends EndpointDescription { - private static final Logger logger = Logger.getLogger(EndpointDescriptionImpl.class.getName()); - private Endpoint endpoint; - - /** - * @param properties - * @throws IllegalArgumentException - */ - public EndpointDescriptionImpl(Map properties) throws IllegalArgumentException { - super(properties); - this.endpoint = (Endpoint)getProperties().get(Endpoint.class.getName()); - } - - /** - * @param ref - * @throws IllegalArgumentException - */ - public EndpointDescriptionImpl(ServiceReference ref) throws IllegalArgumentException { - super(ref); - this.endpoint = (Endpoint)getProperties().get(Endpoint.class.getName()); - } - - public EndpointDescriptionImpl(Collection<String> interfaces, String remoteServiceId, String uri) { - super(getProperties(interfaces, remoteServiceId, uri)); - this.endpoint = (Endpoint)getProperties().get(Endpoint.class.getName()); - } - - private static Map<String, Object> getProperties(Collection<String> interfaces, String remoteServiceId, String uri) { - Map<String, Object> props = new HashMap<String, Object>(); - props.put(Constants.OBJECTCLASS, interfaces.toArray(new String[interfaces.size()])); - props.put(RemoteConstants.ENDPOINT_REMOTE_SERVICE_ID, remoteServiceId); - props.put(RemoteConstants.ENDPOINT_URI, uri); - return props; - } - - public EndpointDescriptionImpl(Endpoint endpoint) { - this(getProperties(endpoint)); - this.endpoint = endpoint; - } - - /** - * @see org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription#getConfigurationTypes() - */ - public List<String> getConfigurationTypes() { - return Collections.singletonList("sca"); - } - - /** - * @see org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription#getIntents() - */ - public List<String> getIntents() { - List<String> intents = new ArrayList<String>(); - for (Intent intent : endpoint.getRequiredIntents()) { - intents.add(intent.getName().toString()); - } - return intents; - } - - /** - * @see org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription#getInterfaceVersion(java.lang.String) - */ - public Version getInterfaceVersion(String name) { - return Version.emptyVersion; - } - - private static List<String> getInterfaces(Endpoint endpoint) { - Interface intf = endpoint.getInterfaceContract().getInterface(); - JavaInterface javaInterface = (JavaInterface)intf; - return Collections.singletonList(javaInterface.getName()); - } - - private static Map<String, Object> getProperties(Endpoint endpoint) { - Map<String, Object> props = new HashMap<String, Object>(); - props.put(RemoteConstants.ENDPOINT_URI, endpoint.getURI()); - props.put(RemoteConstants.ENDPOINT_REMOTE_SERVICE_ID, UUID.randomUUID().toString()); - props.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS, new String[] {"sca"}); - props.put(Endpoint.class.getName(), endpoint); - List<String> interfaces = getInterfaces(endpoint); - props.put(Constants.OBJECTCLASS, interfaces.toArray(new String[interfaces.size()])); - return props; - } - - /** - * @see org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription#getRemoteServiceID() - */ - public String getRemoteServiceID() { - return null; // endpoint.getService().getExtensions(); - } - - /** - * @see org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription#getURI() - */ - public String getURI() { - if (endpoint != null) { - return endpoint.getURI(); - } else { - return super.getURI(); - } - } - - public Endpoint getEndpoint() { - return endpoint; - } - -} diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointHelper.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointHelper.java new file mode 100644 index 0000000000..e847680fda --- /dev/null +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointHelper.java @@ -0,0 +1,67 @@ +/* + * 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.sca.osgi.service.remoteadmin.impl; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.interfacedef.Interface; +import org.apache.tuscany.sca.interfacedef.java.JavaInterface; +import org.apache.tuscany.sca.osgi.service.remoteadmin.EndpointDescription; +import org.apache.tuscany.sca.osgi.service.remoteadmin.RemoteConstants; +import org.osgi.framework.Constants; + +/** + * Implementation of {@link EndpointDescription} + */ +public class EndpointHelper { + private EndpointHelper() { + } + + public static EndpointDescription createEndpointDescription(Endpoint endpoint) { + return new EndpointDescription(getProperties(endpoint)); + } + + private static List<String> getInterfaces(Endpoint endpoint) { + Interface intf = endpoint.getInterfaceContract().getInterface(); + JavaInterface javaInterface = (JavaInterface)intf; + return Collections.singletonList(javaInterface.getName()); + } + + private static Map<String, Object> getProperties(Endpoint endpoint) { + Map<String, Object> props = new HashMap<String, Object>(); + props.put(RemoteConstants.ENDPOINT_URI, endpoint.getURI()); + props.put(RemoteConstants.ENDPOINT_REMOTE_SERVICE_ID, UUID.randomUUID().toString()); + props.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS, new String[] {"sca"}); + props.put(Endpoint.class.getName(), endpoint); + List<String> interfaces = getInterfaces(endpoint); + props.put(Constants.OBJECTCLASS, interfaces.toArray(new String[interfaces.size()])); + return props; + } + + public static Endpoint getEndpoint(EndpointDescription endpointDescription) { + return (Endpoint)endpointDescription.getProperties().get(Endpoint.class.getName()); + } + +} diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointIntrospector.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointIntrospector.java index 39e7457e2e..289c0e22f2 100644 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointIntrospector.java +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/EndpointIntrospector.java @@ -292,12 +292,9 @@ public class EndpointIntrospector { } public Contribution introspect(Bundle bundle, EndpointDescription endpoint) throws Exception { - if (endpoint instanceof EndpointDescriptionImpl) { - EndpointDescriptionImpl impl = (EndpointDescriptionImpl)endpoint; - Endpoint ep = impl.getEndpoint(); - if (ep != null) { - return introspect(bundle, ep); - } + Endpoint ep = (Endpoint) endpoint.getProperties().get(Endpoint.class.getName()); + if (ep != null) { + return introspect(bundle, ep); } Map<String, Object> properties = endpoint.getProperties(); List<String> remoteInterfaces = endpoint.getInterfaces(); diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/OSGiServiceExporter.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/OSGiServiceExporter.java index 5a381f0b67..b2260de34d 100644 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/OSGiServiceExporter.java +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/OSGiServiceExporter.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.osgi.service.remoteadmin.impl; +import static org.apache.tuscany.sca.osgi.service.remoteadmin.impl.EndpointHelper.createEndpointDescription; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -93,7 +95,7 @@ public class OSGiServiceExporter implements ServiceTrackerCustomizer, LifeCycleL Component component = contribution.getDeployables().get(0).getComponents().get(0); ComponentService service = component.getServices().get(0); for (Endpoint endpoint : service.getEndpoints()) { - EndpointDescription endpointDescription = new EndpointDescriptionImpl(endpoint); + EndpointDescription endpointDescription = createEndpointDescription(endpoint); ExportRegistration exportRegistration = new ExportRegistrationImpl(node, reference, endpointDescription); exportedServices.add(exportRegistration); diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/RemoteControllerImpl.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/RemoteControllerImpl.java index 1c57c0ec1a..3c4e0747f9 100644 --- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/RemoteControllerImpl.java +++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/service/remoteadmin/impl/RemoteControllerImpl.java @@ -352,7 +352,7 @@ public class RemoteControllerImpl implements ListenerHook, RemoteAdminListener, Map<String, Object> props = new HashMap<String, Object>(endpoint.getProperties()); props.put(Bundle.class.getName(), bundle); props.put(Constants.OBJECTCLASS, new String[] {interfaceClass.getName()}); - EndpointDescription description = new EndpointDescriptionImpl(props); + EndpointDescription description = new EndpointDescription(props); if (admins != null) { for (Object ra : admins) { diff --git a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/META-INF/MANIFEST.MF b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/META-INF/MANIFEST.MF index 0153fc6997..60dc54014a 100644 --- a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/META-INF/MANIFEST.MF +++ b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/META-INF/MANIFEST.MF @@ -8,3 +8,5 @@ Eclipse-LazyStart: false Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-DocURL: http://www.apache.org/
Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 +Import-Package: calculator.dosgi;version="1.0.0",
+ calculator.dosgi.operations;version="1.0.0"
diff --git a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/OSGI-INF/sca/calculator.composite b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/OSGI-INF/sca/calculator.composite index f48262bdb4..43f101e799 100644 --- a/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/OSGI-INF/sca/calculator.composite +++ b/java/sca/modules/node-impl-osgi/src/test/resources/calculator/dosgi/sca/OSGI-INF/sca/calculator.composite @@ -48,6 +48,7 @@ <reference name="divideService" target="OperationsComponent/DivideService"> </reference> --> + </component> <component name="OperationsComponent"> <tuscany:implementation.osgi bundleSymbolicName="calculator.dosgi.operations" bundleVersion="1.0.0" /> @@ -64,7 +65,6 @@ <tuscany:binding.rmi uri="rmi://localhost:8085/DivideService"/> </service> - </component> </component> </composite> |