From a34859a1b377dfebaa5c249219b99a8c18030309 Mon Sep 17 00:00:00 2001 From: antelder Date: Thu, 8 Apr 2010 11:18:44 +0000 Subject: Latest OASIS API code for componentcontext, Ileagalarg exception added to methods and cast generics simplified, formating and javadoc git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@931881 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/oasisopen/sca/ComponentContext.java | 217 ++++++++++++++------- 1 file changed, 146 insertions(+), 71 deletions(-) (limited to 'sca-java-2.x/trunk/modules/sca-api/src/main/java/org/oasisopen/sca/ComponentContext.java') diff --git a/sca-java-2.x/trunk/modules/sca-api/src/main/java/org/oasisopen/sca/ComponentContext.java b/sca-java-2.x/trunk/modules/sca-api/src/main/java/org/oasisopen/sca/ComponentContext.java index 740003fc12..09faf1b15e 100644 --- a/sca-java-2.x/trunk/modules/sca-api/src/main/java/org/oasisopen/sca/ComponentContext.java +++ b/sca-java-2.x/trunk/modules/sca-api/src/main/java/org/oasisopen/sca/ComponentContext.java @@ -1,5 +1,5 @@ /* - * Copyright(C) OASIS(R) 2005,2009. All Rights Reserved. + * Copyright(C) OASIS(R) 2005,2010. All Rights Reserved. * OASIS trademark, IPR and other policies apply. */ package org.oasisopen.sca; @@ -7,113 +7,188 @@ package org.oasisopen.sca; import java.util.Collection; /** - * Interface providing programmatic access to a component's SCA context as an alternative to injection. - * It provides access to reference and property values for the component and provides a mechanism for - * obtaining a reference to a service that can be passed to other components. - *

- * SCA components obtain an instance of this interface through injection. Non-SCA client code may also - * obtain an instance through runtime-specific mechanisms. + * The ComponentContext interface is used to obtain contextual information + * about the SCA component which is executing at the time the API is + * invoked. * - * @version $Rev$ $Date$ + *

Note: An SCA component can obtain a service reference either through + * injection or programmatically through the ComponentContext API. Using + * reference injection is the recommended way to access a service, since it + * results in code with minimal use of middleware APIs. The ComponentContext + * API is provided for use in cases where reference injection is not possible. */ public interface ComponentContext { + /** - * Returns the absolute URI of the component within the SCA Domain. - * - * @return the absolute URI of the component + * Returns the absolute URI of the component within the SCA domain. + * + * @return the absolute URI of the component within the SCA domain. */ String getURI(); /** - * Cast a type-safe reference to a CallableReference. - * Converts a type-safe reference to an equivalent CallableReference; if the target refers to a service - * then a ServiceReference will be returned, if the target refers to a callback then a CallableReference - * will be returned. + * Returns a typed service proxy object for a reference defined by the + * current component, where the reference has multiplicity 0..1 or 1..1. * - * @param target a reference proxy provided by the SCA runtime - * @param the Java type of the business interface for the reference - * @param the type of reference to be returned - * @return a CallableReference equivalent for the proxy - * @throws IllegalArgumentException if the supplied instance is not a reference supplied by the SCA runtime + * @param the Java type that is implemented by the returned proxy + * object. + * @param businessInterface the Class object for the Java type that + * is implemented by the returned proxy object. + * @param referenceName the name of the service reference. + * @return a proxy for the reference defined by the current component. + * Returns null if the named reference has no target service + * configured. + * @exception IllegalArgumentException if the reference has multiplicity + * greater than one, or the component does not have the reference + * named by referenceName, or the interface of the named + * reference is not compatible with the interface supplied in + * the businessInterface parameter. */ - > R cast(B target) throws IllegalArgumentException; + B getService(Class businessInterface, String referenceName) + throws IllegalArgumentException; /** - * Returns a proxy for a reference defined by this component. - * - * @param businessInterface the interface that will be used to invoke the service - * @param referenceName the name of the reference - * @param the Java type of the business interface for the reference - * @return an object that implements the business interface + * Returns a ServiceReference object for a reference defined by the current + * component, where the reference has multiplicity 0..1 or 1..1. + * + * @param the Java type of the reference that is associated with + * the returned object. + * @param businessInterface the Class object for the Java type that + * is associated with the returned object. + * @param referenceName the name of the service reference. + * @return a ServiceReference object for a reference defined by the current + * component, where the reference has multiplicity 0..1 or 1..1. + * Returns null if the named reference has no target service + * configured. + * @exception IllegalArgumentException if the reference has multiplicity + * greater than one, or the component does not have the reference + * named by referenceName, or the interface of the named + * reference is not compatible with the interface supplied in + * the businessInterface parameter. */ - B getService(Class businessInterface, String referenceName); + ServiceReference getServiceReference(Class businessInterface, + String referenceName) + throws IllegalArgumentException; /** - * Returns a ServiceReference for a reference defined by this component. + * Returns a list of typed service proxies for a reference defined by the current + * component, where the reference has multiplicity 0..n or 1..n. * - * @param businessInterface the interface that will be used to invoke the service - * @param referenceName the name of the reference - * @param the Java type of the business interface for the reference - * @return a ServiceReference for the designated reference + * @param the Java type that is implemented by the returned proxy + * objects. + * @param businessInterface the Class object for the Java type that + * is implemented by the returned proxy objects. + * @param referenceName the name of the service reference. + * @return a collection of proxy objects for the reference, one for each target + * service to which the reference is wired, where each proxy object + * implements the interface B contained in the + * businessInterface parameter. The collection is empty if the + * reference is not wired to any target services. + * @exception IllegalArgumentException if the reference has multiplicity + * greater other than 0..1 or 1..1, or the component does not have the reference + * named by referenceName, or the interface of the named + * reference is not compatible with the interface supplied in + * the businessInterface parameter. */ - ServiceReference getServiceReference(Class businessInterface, String referenceName); + Collection getServices(Class businessInterface, + String referenceName) + throws IllegalArgumentException; /** - * Returns the value of an SCA property defined by this component. + * Returns a list of typed ServiceReference objects for a reference defined by the current + * component, where the reference has multiplicity 0..n or 1..n. * - * @param type the Java type to be returned for the property - * @param propertyName the name of the property whose value should be returned - * @param the Java type of the property - * @return the property value + * @param the Java type that is associated with returned proxy + * objects. + * @param the Java type of the reference that is associated with + * the returned object. + * @param referenceName the name of the service reference. + * @return a collection of ServiceReference objects for the reference, one for each target + * service to which the reference is wired, where each proxy object implements + * the interface B contained in the businessInterface parameter. + * The collection is empty if the reference is not wired to any target services. + * @exception IllegalArgumentException if the reference has multiplicity + * greater other than 0..1 or 1..1, or the component does not have the reference + * named by referenceName, or the interface of the named + * reference is not compatible with the interface supplied in + * the businessInterface parameter. */ - B getProperty(Class type, String propertyName); + Collection> getServiceReferences( + Class businessInterface, String referenceName) + throws IllegalArgumentException; /** - * Returns a ServiceReference that can be used to invoke this component over the default service. + * Returns a ServiceReference that can be used to invoke this component + * over the designated service. * - * @param businessInterface the interface that will be used to invoke the service - * @param the Java type of the business interface for the reference - * @return a ServiceReference that will invoke this component + * @param the Java type of the reference that is associated with + * the returned object. + * @param businessInterface the Class object for the Java type that + * is associated with the returned object. + * @return a ServiceReference that can be used to invoke this + * component over the designated service. + * @exception IllegalArgumentException if the component does not have a service + * which implements the interface identified by the + * businessinterface parameter. */ - ServiceReference createSelfReference(Class businessInterface); + ServiceReference createSelfReference(Class businessInterface) + throws IllegalArgumentException; /** - * Returns a ServiceReference that can be used to invoke this component over the designated service. + * Returns a ServiceReference that can be used to invoke this component + * over the designated service. The serviceName parameter explicitly names + * the service with which the returned ServiceReference is associated. * - * @param businessInterface the interface that will be used to invoke the service - * @param serviceName the name of the service to invoke - * @param the Java type of the business interface for the reference - * @return a ServiceReference that will invoke this component + * @param the Java type of the reference that is associated with + * the returned object. + * @param businessInterface the Class object for the Java type that + * is associated with the returned object. + * @param serviceName the service name with which the returned ServiceReference + * is associated. + * @return a ServiceReference that can be used to invoke this component + * over the designated service. + * @exception IllegalArgumentException if the component does not have a service + * with the name identified by the serviceName parameter, or + * if the named service does not implement the interface identified by the + * businessinterface parameter. */ - ServiceReference createSelfReference(Class businessInterface, String serviceName); + ServiceReference createSelfReference(Class businessInterface, + String serviceName) + throws IllegalArgumentException; /** - * Returns the context for the current SCA service request, or null if there is no current request - * or if the context is unavailable. + * Returns the value of an SCA property defined by this component. * - * @return the SCA request context; may be null + * @param the property type. + * @param type the Class object for the property type. + * @param propertyName the property name. + * @return The value of an SCA property defined by this component, or null if + * the property is not configured. + * @exception IllegalArgumentException if the component does not have a property + * with the name identified by the propertyName parameter, or + * if the named property type is not compatible with the type + * parameter. */ - RequestContext getRequestContext(); - - - /* ******************** Contribution for issue TUSCANY-2281 ******************** */ + B getProperty(Class type, String propertyName) + throws IllegalArgumentException; /** - * Returns a Collection of typed service proxies for a business interface type and a reference name. - * @param businessInterface the interface that will be used to invoke the service - * @param referenceName the name of the reference - * @param the Java type of the business interface for the reference - * @return a Collection of objects that implements the business interface + * Casts a type-safe reference to a ServiceReference. + * + * @param the Java type of the reference that is associated with + * the returned object. + * @param target the type-safe reference proxy that implements interface . + * @return a type-safe reference to a ServiceReference. */ - Collection getServices(Class businessInterface, String referenceName); - + ServiceReference cast(B target) + throws IllegalArgumentException; /** - * Returns a Collection of typed service reference for a business interface type and a reference name. - * @param businessInterface the interface that will be used to invoke the service - * @param referenceName the name of the reference - * @param the Java type of the business interface for the reference - * @return a Collection of objects that implements the business interface + * Returns the RequestContext for the current SCA service request. + * + * @return the RequestContext for the current SCA service request when + * invoked during the execution of a component service method or + * callback method. Returns null in all other cases. */ - Collection> getServiceReferences(Class businessInterface, String referenceName); + RequestContext getRequestContext(); } -- cgit v1.2.3