diff options
Diffstat (limited to 'java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context')
7 files changed, 0 insertions, 1267 deletions
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultComponentContextFactory.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultComponentContextFactory.java deleted file mode 100644 index 2de52bebb2..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultComponentContextFactory.java +++ /dev/null @@ -1,43 +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.core.context; - -import org.apache.tuscany.sca.context.ComponentContextFactory; -import org.apache.tuscany.sca.context.CompositeContext; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.context.impl.ComponentContextImpl; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.oasisopen.sca.ComponentContext; - -/** - * @version $Rev$ $Date$ - */ -public class DefaultComponentContextFactory implements ComponentContextFactory { - private final ExtensionPointRegistry registry; - - public DefaultComponentContextFactory(ExtensionPointRegistry registry) { - this.registry = registry; - } - - public ComponentContext createComponentContext(CompositeContext compositeContext, RuntimeComponent component) { - return new ComponentContextImpl(registry, compositeContext, component); - } - -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultRequestContextFactory.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultRequestContextFactory.java deleted file mode 100644 index ace4dc48e1..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/DefaultRequestContextFactory.java +++ /dev/null @@ -1,40 +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.core.context; - -import org.apache.tuscany.sca.context.RequestContextFactory; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.context.impl.RequestContextImpl; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.oasisopen.sca.RequestContext; - -/** - * Default implementation of RequestContextFactory - */ -public class DefaultRequestContextFactory implements RequestContextFactory { - - public DefaultRequestContextFactory(ExtensionPointRegistry registry) { - } - - public RequestContext createRequestContext(RuntimeComponent component) { - return new RequestContextImpl(component); - } - -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceExt.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceExt.java deleted file mode 100644 index 5206f0945e..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceExt.java +++ /dev/null @@ -1,41 +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.core.context; - -import java.io.Externalizable; - -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.oasisopen.sca.ServiceReference; - -/** - * Extended ServiceReference - */ -public interface ServiceReferenceExt<B> extends ServiceReference<B>, Externalizable { - - /** - * Return the EndpointReference that sits behind this service reference - * @return endpoint reference - */ - RuntimeEndpointReference getEndpointReference(); - - B getProxy(); - void setProxy(B proxy); - -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java deleted file mode 100644 index 542a80f926..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java +++ /dev/null @@ -1,124 +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.core.context.impl; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.context.CompositeContext; -import org.apache.tuscany.sca.context.ThreadMessageContext; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.oasisopen.sca.ServiceRuntimeException; - -public class CallbackServiceReferenceImpl<B> extends ServiceReferenceImpl<B> { - private RuntimeEndpointReference callbackEPR; - private List<? extends EndpointReference> callbackEPRs; - private Endpoint resolvedEndpoint; - - /* - * Public constructor for Externalizable serialization/deserialization - */ - public CallbackServiceReferenceImpl() { - super(); - } - - public CallbackServiceReferenceImpl(Class<B> interfaze, - List<? extends EndpointReference> callbackEPRs) { - super(interfaze, null, getCompositeContext(callbackEPRs)); - this.callbackEPRs = callbackEPRs; - init(); - } - - private static CompositeContext getCompositeContext(List<? extends EndpointReference> callbackEPRs) { - if(!callbackEPRs.isEmpty()) { - RuntimeEndpointReference epr = (RuntimeEndpointReference) callbackEPRs.get(0); - return epr.getCompositeContext(); - } - return null; - } - - public void init() { - Message msgContext = ThreadMessageContext.getMessageContext(); - callbackEPR = selectCallbackEPR(msgContext); - if (callbackEPR == null) { - throw new ServiceRuntimeException("No callback binding found for " + msgContext.getTo().toString()); - } - resolvedEndpoint = msgContext.getFrom().getCallbackEndpoint(); - } - - @Override - protected B createProxy() throws Exception { - return proxyFactory.createCallbackProxy(this); - } - - public RuntimeEndpointReference getCallbackEPR() { - if (resolvedEndpoint == null) { - return null; - } else { - return cloneAndBind(callbackEPR); - } - } - - public Endpoint getResolvedEndpoint() { - return resolvedEndpoint; - } - - private RuntimeEndpointReference selectCallbackEPR(Message msgContext) { - // look for callback binding with same name as service binding - Endpoint to = msgContext.getTo(); - if (to == null) { - //FIXME: need better exception - throw new ServiceRuntimeException("Destination for forward call is not available"); - } - for (EndpointReference epr : callbackEPRs) { - if (epr.getBinding().getName().equals(to.getBinding().getName())) { - return (RuntimeEndpointReference) epr; - } - } - - // if no match, look for callback binding with same type as service binding - for (EndpointReference epr : callbackEPRs) { - if (epr.getBinding().getType().equals(to.getBinding().getType())) { - return (RuntimeEndpointReference) epr; - } - } - - // no suitable callback wire was found - return null; - } - - private RuntimeEndpointReference cloneAndBind(RuntimeEndpointReference endpointReference) { - if (resolvedEndpoint != null) { - - try { - RuntimeEndpointReference epr = (RuntimeEndpointReference)endpointReference.clone(); - epr.setTargetEndpoint(resolvedEndpoint); - return epr; - } catch (CloneNotSupportedException e) { - // will not happen - throw new ServiceRuntimeException(e); - } - } else { - return null; - } - } - -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java deleted file mode 100644 index 3a4ff89357..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java +++ /dev/null @@ -1,487 +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.core.context.impl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.assembly.Component; -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.assembly.ComponentService; -import org.apache.tuscany.sca.assembly.CompositeService; -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.assembly.Multiplicity; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.SCABinding; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.context.CompositeContext; -import org.apache.tuscany.sca.context.ContextFactoryExtensionPoint; -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.context.RequestContextFactory; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; -import org.apache.tuscany.sca.runtime.CompositeActivator; -import org.apache.tuscany.sca.runtime.EndpointReferenceBinder; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentContext; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.oasisopen.sca.RequestContext; -import org.oasisopen.sca.ServiceReference; -import org.oasisopen.sca.ServiceRuntimeException; - -/** - * Implementation of ComponentContext that delegates to a ComponentContextProvider. - * - * @version $Rev$ $Date$ - */ -public class ComponentContextImpl implements RuntimeComponentContext { - private final RuntimeComponent component; - - private final CompositeContext compositeContext; - private final CompositeActivator compositeActivator; - private final RequestContextFactory requestContextFactory; - private final ProxyFactory proxyFactory; - private final AssemblyFactory assemblyFactory; - private final JavaInterfaceFactory javaInterfaceFactory; - private final PropertyValueFactory propertyFactory; - private final EndpointReferenceBinder eprBinder; - - public ComponentContextImpl(ExtensionPointRegistry registry, - CompositeContext compositeContext, - RuntimeComponent component) { - this.component = component; - FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class); - this.assemblyFactory = factories.getFactory(AssemblyFactory.class); - this.javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class); - - UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class); - this.compositeContext = compositeContext; - - this.compositeActivator = utilities.getUtility(CompositeActivator.class); - - this.requestContextFactory = - registry.getExtensionPoint(ContextFactoryExtensionPoint.class).getFactory(RequestContextFactory.class); - this.proxyFactory = new ExtensibleProxyFactory(registry.getExtensionPoint(ProxyFactoryExtensionPoint.class)); - this.propertyFactory = factories.getFactory(PropertyValueFactory.class); - - this.eprBinder = utilities.getUtility(EndpointReferenceBinder.class); - - } - - public String getURI() { - return component.getURI(); - } - - public <B, R extends ServiceReference<B>> R cast(B target) throws IllegalArgumentException { - return (R)proxyFactory.cast(target); - } - - public <B> B getService(Class<B> businessInterface, String referenceName) { - ServiceReference<B> serviceRef = getServiceReference(businessInterface, referenceName); - return serviceRef.getService(); - } - - public <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String referenceName) { - - for (ComponentReference ref : component.getReferences()) { - if (referenceName.equals(ref.getName())) { - Multiplicity multiplicity = ref.getMultiplicity(); - if (multiplicity == Multiplicity.ZERO_N || multiplicity == Multiplicity.ONE_N) { - throw new ServiceRuntimeException("Reference " + referenceName - + " has multiplicity " - + multiplicity); - } - return getServiceReference(businessInterface, (RuntimeEndpointReference)getEndpointReference(ref)); - } - } - throw new ServiceRuntimeException("Reference not found: " + referenceName); - - } - - /** - * Select an endpoint reference from the component reference - * @param ref - * @return - */ - private EndpointReference getEndpointReference(ComponentReference ref) { - List<EndpointReference> eprs = ref.getEndpointReferences(); - if (eprs.size() == 1) { - // Return 1st one - return eprs.get(0); - } else { - for (EndpointReference epr : eprs) { - // Try to see if there is an EPR using binding.sca - if (epr.getBinding().getType().equals(SCABinding.TYPE)) { - return epr; - } - } - return eprs.get(0); - } - } - - /** - * Select an endpoint reference from the component reference - * @param ref - * @return - */ - private Endpoint getEndpoint(ComponentService service, String bindingName) { - if (bindingName == null) { - // The default binding name is the name of the promoted service - bindingName = getPromotedService(service).getName(); - } - List<Endpoint> eps = service.getEndpoints(); - for (Endpoint ep : eps) { - Binding binding = ep.getBinding(); - if (bindingName.equals(binding.getName()) || binding.getName() == null) { - return ep; - } - } - return null; - } - - private ComponentService getPromotedService(ComponentService componentService) { - Service service = componentService.getService(); - if (service instanceof CompositeService) { - return getPromotedService(((CompositeService)service).getPromotedService()); - } else { - return componentService; - } - - } - - /** - * Gets the value for the specified property with the specified type. - * - * @param type The type of the property value we are getting - * @param propertyName The name of the property we are getting - * @param B The class of the property value we are getting - * - * @throws ServiceRuntimeException If a Property for the specified propertyName - * is not found - * - * @see #setPropertyValueFactory(PropertyValueFactory) - */ - public <B> B getProperty(Class<B> type, String propertyName) { - for (ComponentProperty p : component.getProperties()) { - if (propertyName.equals(p.getName())) { - return propertyFactory.createPropertyValue(p, type); - } - } - throw new ServiceRuntimeException("Property not found: " + propertyName); - } - - /** - * @param component - */ - public static ComponentService getSingleService(Component component) { - ComponentService targetService; - List<ComponentService> services = component.getServices(); - List<ComponentService> regularServices = new ArrayList<ComponentService>(); - for (ComponentService service : services) { - if (service.isForCallback()) { - continue; - } - String name = service.getName(); - if (!name.startsWith("$") || name.startsWith("$dynamic$")) { - regularServices.add(service); - } - } - if (regularServices.size() == 0) { - throw new ServiceRuntimeException("No service is declared on component " + component.getURI()); - } - if (regularServices.size() != 1) { - throw new ServiceRuntimeException("More than one service is declared on component " + component.getURI() - + ". Service name is required to get the service."); - } - targetService = regularServices.get(0); - return targetService; - } - - public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface) { - ComponentService service = getSingleService(component); - try { - return createSelfReference(businessInterface, service); - } catch (Exception e) { - throw new ServiceRuntimeException(e.getMessage(), e); - } - } - - public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface, String serviceName) { - if (serviceName == null) { - return createSelfReference(businessInterface); - } - try { - String bindingName = null; - int index = serviceName.indexOf('/'); - if (index != -1) { - serviceName = serviceName.substring(0, index); - bindingName = serviceName.substring(index + 1); - } - for (ComponentService service : component.getServices()) { - if (serviceName.equals(service.getName())) { - Endpoint endpoint = getEndpoint(service, bindingName); - if (endpoint == null) { - break; - } - return getServiceReference(businessInterface, (RuntimeEndpoint)endpoint); - } - } - throw new ServiceRuntimeException("Service not found: " + serviceName); - } catch (ServiceRuntimeException e) { - throw e; - } catch (Exception e) { - throw new ServiceRuntimeException(e.getMessage(), e); - } - } - - /** - * @param <B> - * @param businessInterface - * @param service - * @return - */ - public <B> ServiceReference<B> createSelfReference(Class<B> businessInterface, ComponentService service) { - try { - RuntimeEndpointReference ref = - (RuntimeEndpointReference)createEndpointReference(component, service, null, businessInterface); - ref.setComponent(component); - return getServiceReference(businessInterface, ref); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - } - - public RequestContext getRequestContext() { - if (requestContextFactory != null) { - return requestContextFactory.createRequestContext(component); - } else { - return new RequestContextImpl(component); - } - } - - /** - * @param businessInterface - * @param reference - * @return - * @throws CloneNotSupportedException - * @throws InvalidInterfaceException - */ - public <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, - RuntimeEndpointReference endpointReference) { - try { - RuntimeComponentReference ref = (RuntimeComponentReference)endpointReference.getReference(); - InterfaceContract interfaceContract = ref.getInterfaceContract(); - Reference componentTypeReference = ref.getReference(); - if (componentTypeReference != null && componentTypeReference.getInterfaceContract() != null) { - interfaceContract = componentTypeReference.getInterfaceContract(); - } - InterfaceContract refInterfaceContract = getInterfaceContract(interfaceContract, businessInterface); - if (refInterfaceContract != interfaceContract) { - ref = (RuntimeComponentReference)ref.clone(); - if (interfaceContract != null) { - ref.setInterfaceContract(interfaceContract); - } else { - ref.setInterfaceContract(refInterfaceContract); - } - } - ref.setComponent(component); - return new ServiceReferenceImpl<B>(businessInterface, endpointReference, component.getComponentContext() - .getCompositeContext()); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - } - - public <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, RuntimeEndpoint endpoint) { - try { - if (businessInterface == null) { - InterfaceContract contract = endpoint.getComponentTypeServiceInterfaceContract(); - businessInterface = (Class<B>)((JavaInterface)contract.getInterface()).getJavaClass(); - } - RuntimeEndpointReference ref = - (RuntimeEndpointReference)createEndpointReference(endpoint, businessInterface); - ref.setComponent(component); - return new ServiceReferenceImpl<B>(businessInterface, ref, compositeContext); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - } - - /** - * Create a self-reference for a component service - * @param component - * @param service - * @throws CloneNotSupportedException - * @throws InvalidInterfaceException - */ - private EndpointReference createEndpointReference(Component component, - ComponentService service, - String bindingName, - Class<?> businessInterface) throws CloneNotSupportedException, - InvalidInterfaceException { - - Endpoint endpoint = getEndpoint(service, bindingName); - return createEndpointReference(endpoint, businessInterface); - } - - private EndpointReference createEndpointReference(Endpoint endpoint, Class<?> businessInterface) - throws CloneNotSupportedException, InvalidInterfaceException { - Component component = endpoint.getComponent(); - ComponentService service = endpoint.getService(); - ComponentReference componentReference = assemblyFactory.createComponentReference(); - componentReference.setName("$self$." + service.getName()); - - componentReference.setCallback(service.getCallback()); - componentReference.getTargets().add(service); - componentReference.getPolicySets().addAll(service.getPolicySets()); - componentReference.getRequiredIntents().addAll(service.getRequiredIntents()); - componentReference.getBindings().add(endpoint.getBinding()); - - InterfaceContract interfaceContract = service.getInterfaceContract(); - Service componentTypeService = service.getService(); - if (componentTypeService != null && componentTypeService.getInterfaceContract() != null) { - interfaceContract = componentTypeService.getInterfaceContract(); - } - interfaceContract = getInterfaceContract(interfaceContract, businessInterface); - componentReference.setInterfaceContract(interfaceContract); - componentReference.setMultiplicity(Multiplicity.ONE_ONE); - // component.getReferences().add(componentReference); - - // create endpoint reference - EndpointReference endpointReference = assemblyFactory.createEndpointReference(); - endpointReference.setComponent(component); - endpointReference.setReference(componentReference); - endpointReference.setBinding(endpoint.getBinding()); - endpointReference.setUnresolved(false); - endpointReference.setStatus(EndpointReference.WIRED_TARGET_FOUND_READY_FOR_MATCHING); - - endpointReference.setTargetEndpoint(endpoint); - - componentReference.getEndpointReferences().add(endpointReference); - ((RuntimeComponentReference)componentReference).setComponent((RuntimeComponent)component); - ((RuntimeEndpointReference)endpointReference).bind(compositeContext); - - return endpointReference; - } - - /** - * @param interfaceContract - * @param businessInterface - * @return - * @throws CloneNotSupportedException - * @throws InvalidInterfaceException - */ - private InterfaceContract getInterfaceContract(InterfaceContract interfaceContract, Class<?> businessInterface) - throws CloneNotSupportedException, InvalidInterfaceException { - boolean compatible = false; - if (interfaceContract != null && interfaceContract.getInterface() != null) { - Interface interfaze = interfaceContract.getInterface(); - if (interfaze instanceof JavaInterface) { - Class<?> cls = ((JavaInterface)interfaze).getJavaClass(); - if (businessInterface.isAssignableFrom(cls)) { - compatible = true; - } - } - } - - if (!compatible) { - // The interface is not assignable from the interface contract - interfaceContract = javaInterfaceFactory.createJavaInterfaceContract(); - JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(businessInterface); - interfaceContract.setInterface(callInterface); - if (callInterface.getCallbackClass() != null) { - interfaceContract.setCallbackInterface(javaInterfaceFactory.createJavaInterface(callInterface - .getCallbackClass())); - } - } - - return interfaceContract; - } - - /** - * @see org.apache.tuscany.sca.runtime.RuntimeComponentContext#start(org.apache.tuscany.sca.runtime.RuntimeComponentReference) - */ - public void start(RuntimeComponentReference reference) { - compositeActivator.start(compositeContext, component, reference); - } - - /* ******************** Contribution for issue TUSCANY-2281 ******************** */ - - /** - * @see ComponentContext#getServices(Class<B>, String) - */ - public <B> Collection<B> getServices(Class<B> businessInterface, String referenceName) { - ArrayList<B> services = new ArrayList<B>(); - Collection<ServiceReference<B>> serviceRefs = getServiceReferences(businessInterface, referenceName); - for (ServiceReference<B> serviceRef : serviceRefs) { - services.add(serviceRef.getService()); - } - return services; - } - - /** - * @see ComponentContext#getServiceReferences(Class<B>, String) - */ - public <B> Collection<ServiceReference<B>> getServiceReferences(Class<B> businessInterface, String referenceName) { - try { - for (ComponentReference ref : component.getReferences()) { - if (referenceName.equals(ref.getName())) { - ArrayList<ServiceReference<B>> serviceRefs = new ArrayList<ServiceReference<B>>(); - for (EndpointReference endpointReference : ref.getEndpointReferences()) { - RuntimeEndpointReference epr = (RuntimeEndpointReference)endpointReference; - serviceRefs.add(getServiceReference(businessInterface, epr)); - } - return serviceRefs; - } - } - throw new ServiceRuntimeException("Reference not found: " + referenceName); - } catch (ServiceRuntimeException e) { - throw e; - } catch (Exception e) { - throw new ServiceRuntimeException(e.getMessage(), e); - } - } - - /* ******************** Contribution for issue TUSCANY-2281 ******************** */ - - public CompositeContext getCompositeContext() { - return compositeContext; - } - - public ExtensionPointRegistry getExtensionPointRegistry() { - return getCompositeContext().getExtensionPointRegistry(); - } - -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/RequestContextImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/RequestContextImpl.java deleted file mode 100644 index c6a6ecd9c0..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/RequestContextImpl.java +++ /dev/null @@ -1,105 +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.core.context.impl; - -import java.util.List; - -import javax.security.auth.Subject; - -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.context.ThreadMessageContext; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; -import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.oasisopen.sca.RequestContext; -import org.oasisopen.sca.ServiceReference; - -/** - * @version $Rev$ $Date$ - */ -public class RequestContextImpl implements RequestContext { - - private ProxyFactoryExtensionPoint proxyFactoryExtensionPoint; - - public RequestContextImpl(RuntimeComponent component) { - ExtensionPointRegistry registry = component.getComponentContext().getExtensionPointRegistry(); - proxyFactoryExtensionPoint = registry.getExtensionPoint(ProxyFactoryExtensionPoint.class); - } - - public Subject getSecuritySubject() { - Subject subject = null; - - for (Object header : ThreadMessageContext.getMessageContext().getHeaders()){ - if (header instanceof Subject){ - subject = (Subject)header; - break; - } - } - return subject; - } - - public String getServiceName() { - return ThreadMessageContext.getMessageContext().getTo().getService().getName(); - } - - public <B> ServiceReference<B> getServiceReference() { - Message msgContext = ThreadMessageContext.getMessageContext(); - // FIXME: [rfeng] Is this the service reference matching the caller side? - RuntimeEndpoint to = (RuntimeEndpoint) msgContext.getTo(); - RuntimeComponent component = (RuntimeComponent) to.getComponent(); - - ServiceReference<B> callableReference = component.getComponentContext().getServiceReference(null, to); - - return callableReference; - } - - public <CB> CB getCallback() { - ServiceReference<CB> cb = getCallbackReference(); - if (cb == null) { - return null; - } - return cb.getService(); - } - - @SuppressWarnings("unchecked") - public <CB> ServiceReference<CB> getCallbackReference() { - Message msgContext = ThreadMessageContext.getMessageContext(); - Endpoint to = msgContext.getTo(); - RuntimeComponentService service = (RuntimeComponentService) to.getService(); - RuntimeComponentReference callbackReference = (RuntimeComponentReference)service.getCallbackReference(); - if (callbackReference == null) { - return null; - } - JavaInterface javaInterface = (JavaInterface) callbackReference.getInterfaceContract().getInterface(); - Class<CB> javaClass = (Class<CB>)javaInterface.getJavaClass(); - List<EndpointReference> wires = callbackReference.getEndpointReferences(); - ProxyFactory proxyFactory = new ExtensibleProxyFactory(proxyFactoryExtensionPoint); - ServiceReferenceImpl ref = new CallbackServiceReferenceImpl(javaClass, wires); - - return ref; - } -} diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java deleted file mode 100644 index 5edf357e60..0000000000 --- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ServiceReferenceImpl.java +++ /dev/null @@ -1,427 +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.core.context.impl; - -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.io.StringWriter; -import java.security.AccessController; -import java.security.PrivilegedAction; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.assembly.ComponentService; -import org.apache.tuscany.sca.assembly.CompositeService; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.assembly.builder.BindingBuilder; -import org.apache.tuscany.sca.assembly.builder.BuilderContext; -import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint; -import org.apache.tuscany.sca.context.CompositeContext; -import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory; -import org.apache.tuscany.sca.core.context.ServiceReferenceExt; -import org.apache.tuscany.sca.core.factory.ObjectCreationException; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; -import org.apache.tuscany.sca.runtime.Invocable; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.oasisopen.sca.ServiceRuntimeException; - -/** - * Default implementation of a ServiceReference. - * - * @version $Rev$ $Date$ - * @param <B> the type of the business interface - */ -public class ServiceReferenceImpl<B> implements ServiceReferenceExt<B> { - private static final long serialVersionUID = 6763709434194361540L; - - protected transient ProxyFactory proxyFactory; - protected transient Class<B> businessInterface; - protected transient B proxy; - - protected Object callbackID; // The callbackID should be serializable - - protected transient RuntimeEndpointReference endpointReference; - -// protected String scdl; -// -// private transient XMLStreamReader xmlReader; - - protected transient CompositeContext compositeContext; - protected ExtensionPointRegistry registry; - protected FactoryExtensionPoint modelFactories; - protected RuntimeAssemblyFactory assemblyFactory; - protected StAXArtifactProcessorExtensionPoint staxProcessors; - protected StAXArtifactProcessor<EndpointReference> staxProcessor; - protected XMLInputFactory xmlInputFactory; - protected XMLOutputFactory xmlOutputFactory; - protected BuilderExtensionPoint builders; - - /* - * Public constructor for Externalizable serialization/deserialization - */ - public ServiceReferenceImpl() { - super(); - } - - public ServiceReferenceImpl(Class<B> businessInterface, - Invocable endpointReference, - CompositeContext compositeContext) { - this.businessInterface = businessInterface; - this.endpointReference = (RuntimeEndpointReference) endpointReference; - if (compositeContext == null) { - compositeContext = endpointReference.getCompositeContext(); - } - bind(compositeContext); - } - - public ServiceReferenceImpl(Class<B> businessInterface, - Invocable endpointReference) { - this(businessInterface, endpointReference, null); - } - - protected void bind(CompositeContext context) { - this.compositeContext = context; - this.registry = compositeContext.getExtensionPointRegistry(); - this.modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class); - this.assemblyFactory = (RuntimeAssemblyFactory)modelFactories.getFactory(AssemblyFactory.class); - this.xmlInputFactory = modelFactories.getFactory(XMLInputFactory.class); - this.xmlOutputFactory = modelFactories.getFactory(XMLOutputFactory.class); - this.staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - this.staxProcessor = staxProcessors.getProcessor(EndpointReference.class); - this.builders = registry.getExtensionPoint(BuilderExtensionPoint.class); - this.proxyFactory = new ExtensibleProxyFactory(registry.getExtensionPoint(ProxyFactoryExtensionPoint.class)); - } - - public RuntimeEndpointReference getEndpointReference() { - return endpointReference; - } - - public B getProxy() throws ObjectCreationException { - try { - if (proxy == null) { - proxy = createProxy(); - } - return proxy; - } catch (Exception e) { - throw new ObjectCreationException(e); - } - } - - public void setProxy(B proxy) { - this.proxy = proxy; - } - - protected B createProxy() throws Exception { - return proxyFactory.createProxy(this); - } - - public B getService() { - try { - resolve(); - return getProxy(); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - } - - public Class<B> getBusinessInterface() { - try { - resolve(); - return businessInterface; - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - } - - /** - * Follow a service promotion chain down to the inner most (non composite) - * component service. - * - * @param topCompositeService - * @return - */ - private ComponentService getPromotedComponentService(CompositeService compositeService) { - ComponentService componentService = compositeService.getPromotedService(); - if (componentService != null) { - Service service = componentService.getService(); - if (componentService.getName() != null && service instanceof CompositeService) { - - // Continue to follow the service promotion chain - return getPromotedComponentService((CompositeService)service); - - } else { - - // Found a non-composite service - return componentService; - } - } else { - - // No promoted service - return null; - } - } - - // ============ WRITE AND READ THE REFERENCE TO EXTERNAL XML ======================== - - /** - * write the reference to a stream - * - * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput) - */ - public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(endpointReference); - /* - try { - String xml = null; - if (scdl == null) { - xml = toXMLString(); - } else { - xml = scdl; - } - - if (xml == null) { - out.writeBoolean(false); - } else { - out.writeBoolean(true); - out.writeUTF(xml); - } - } catch (Exception e) { - // e.printStackTrace(); - throw new IOException(e.toString()); - } - */ - } - - /** - * write the endpoint reference into an xml string - */ - public String toXMLString() throws IOException, XMLStreamException, ContributionWriteException { - StringWriter writer = new StringWriter(); - XMLStreamWriter streamWriter = xmlOutputFactory.createXMLStreamWriter(writer); - staxProcessor.write(endpointReference, streamWriter, new ProcessorContext(registry)); - return writer.toString(); - } - - /** - * Read the reference from a stream - * - * @see java.io.Externalizable#readExternal(java.io.ObjectInput) - */ - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - this.endpointReference = (RuntimeEndpointReference) in.readObject(); - // Force resolve - endpointReference.getComponent(); - bind(endpointReference.getCompositeContext()); - - RuntimeComponentReference reference = (RuntimeComponentReference)endpointReference.getReference(); - reference.setComponent((RuntimeComponent)endpointReference.getComponent()); - - Interface i = reference.getInterfaceContract().getInterface(); - if (i instanceof JavaInterface) { - JavaInterface javaInterface = (JavaInterface)i; - if (javaInterface.isUnresolved()) { - // Allow privileged access to get ClassLoader. Requires RuntimePermission in - // security policy. - ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() { - public ClassLoader run() { - return Thread.currentThread().getContextClassLoader(); - } - }); - - javaInterface.setJavaClass(classLoader.loadClass(javaInterface.getName())); - JavaInterfaceFactory javaInterfaceFactory = getJavaInterfaceFactory(compositeContext); - - try { - javaInterfaceFactory.createJavaInterface(javaInterface, javaInterface.getJavaClass()); - } catch (InvalidInterfaceException e) { - throw new ServiceRuntimeException(e); - } - //FIXME: If the interface needs XSDs to be loaded (e.g., for static SDO), - // this needs to be done here. We usually search for XSDs in the current - // contribution at resolve time. Is it possible to locate the current - // contribution at runtime? - } - this.businessInterface = (Class<B>)javaInterface.getJavaClass(); - } - - Binding binding = endpointReference.getBinding(); - if (binding != null) { - BindingBuilder bindingBuilder = builders.getBindingBuilder(binding.getType()); - if (bindingBuilder != null) { - org.apache.tuscany.sca.assembly.builder.BuilderContext context = new BuilderContext(registry); - bindingBuilder.build(endpointReference.getComponent(), reference, endpointReference.getBinding(), context); - } - } - - this.proxyFactory = getProxyFactory(this.compositeContext); - - /* - endpointReference.bind(CompositeContext.getCurrentCompositeContext()); - endpointReference.rebuild(); - */ - /* - final boolean hasSCDL = in.readBoolean(); - if (hasSCDL) { - this.scdl = in.readUTF(); - } else { - this.scdl = null; - } - */ - } - - /** - * Read xml string into the endpoint reference - */ - /* - public void fromXMLString() throws IOException, XMLStreamException, ContributionReadException { - - XMLStreamReader streamReader = xmlReader; - - if (scdl != null) { - Reader reader = new StringReader(scdl); - - if (xmlInputFactory == null) { - // this is a reference being read from a external stream - // so set up enough of the reference in order to resolved the - // xml being read - bind(CompositeContext.getCurrentCompositeContext()); - } - - streamReader = xmlInputFactory.createXMLStreamReader(reader); - } - - endpointReference = (RuntimeEndpointReference) staxProcessor.read(streamReader, new ProcessorContext(registry)); - - // ok to GC - xmlReader = null; - scdl = null; - } - */ - - /** - * @throws IOException - */ - private synchronized void resolve() throws Exception { - /* - if ((scdl != null || xmlReader != null) && endpointReference == null) { - fromXMLString(); - - compositeContext.bindComponent((RuntimeComponent) endpointReference.getComponent()); - - RuntimeComponentReference reference = (RuntimeComponentReference)endpointReference.getReference(); - reference.setComponent((RuntimeComponent)endpointReference.getComponent()); - - ReferenceParameters parameters = null; - for (Object ext : reference.getExtensions()) { - if (ext instanceof ReferenceParameters) { - parameters = (ReferenceParameters)ext; - break; - } - } - - if (parameters != null) { - this.callbackID = parameters.getCallbackID(); - } - - Interface i = reference.getInterfaceContract().getInterface(); - if (i instanceof JavaInterface) { - JavaInterface javaInterface = (JavaInterface)i; - if (javaInterface.isUnresolved()) { - // Allow privileged access to get ClassLoader. Requires RuntimePermission in - // security policy. - ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() { - public ClassLoader run() { - return Thread.currentThread().getContextClassLoader(); - } - }); - - javaInterface.setJavaClass(classLoader.loadClass(javaInterface.getName())); - JavaInterfaceFactory javaInterfaceFactory = getJavaInterfaceFactory(compositeContext); - - javaInterfaceFactory.createJavaInterface(javaInterface, javaInterface.getJavaClass()); - //FIXME: If the interface needs XSDs to be loaded (e.g., for static SDO), - // this needs to be done here. We usually search for XSDs in the current - // contribution at resolve time. Is it possible to locate the current - // contribution at runtime? - } - this.businessInterface = (Class<B>)javaInterface.getJavaClass(); - } - - Binding binding = endpointReference.getBinding(); - if (binding != null) { - BindingBuilder bindingBuilder = builders.getBindingBuilder(binding.getType()); - if (bindingBuilder != null) { - BuilderContext context = new BuilderContext(registry); - bindingBuilder.build(endpointReference.getComponent(), reference, endpointReference.getBinding(), context); - } - } - - this.proxyFactory = getProxyFactory(this.compositeContext); - } else if (compositeContext == null) { - this.compositeContext = CompositeContext.getCurrentCompositeContext(); - if (this.compositeContext != null) { - this.proxyFactory = getProxyFactory(this.compositeContext); - } - } - */ - } - - private JavaInterfaceFactory getJavaInterfaceFactory(CompositeContext compositeContext) { - ExtensionPointRegistry extensionPointRegistry = compositeContext.getExtensionPointRegistry(); - FactoryExtensionPoint factories = extensionPointRegistry.getExtensionPoint(FactoryExtensionPoint.class); - JavaInterfaceFactory javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class); - return javaInterfaceFactory; - } - - private ProxyFactory getProxyFactory(CompositeContext compositeContext) { - ExtensionPointRegistry extensionPointRegistry = compositeContext.getExtensionPointRegistry(); - ProxyFactoryExtensionPoint proxyFactories = - extensionPointRegistry.getExtensionPoint(ProxyFactoryExtensionPoint.class); - return new ExtensibleProxyFactory(proxyFactories); - } - - // ================================================================================== - - /* - public XMLStreamReader getXMLReader() { - return xmlReader; - } - */ -} |