diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/implementation-spring/src/main')
20 files changed, 659 insertions, 587 deletions
diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java index f64c5f9476..fd6aed893c 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java @@ -37,7 +37,7 @@ public class SpringBeanElement { private boolean parentAttribute = false; private boolean factoryBeanAttribute = false; private boolean factoryMethodAttribute = false; - + private List<SpringPropertyElement> properties = new ArrayList<SpringPropertyElement>(); private List<SpringConstructorArgElement> constructorargs = new ArrayList<SpringConstructorArgElement>(); @@ -53,7 +53,7 @@ public class SpringBeanElement { public String getId() { return id; } - + public void setId(String id) { this.id = id; } @@ -65,7 +65,7 @@ public class SpringBeanElement { public void addProperty(SpringPropertyElement property) { properties.add(property); } - + public List<SpringConstructorArgElement> getCustructorArgs() { return constructorargs; } @@ -73,43 +73,43 @@ public class SpringBeanElement { public void addCustructorArgs(SpringConstructorArgElement args) { constructorargs.add(args); } - + public boolean isInnerBean() { return innerBean; } - + public void setInnerBean(boolean innerBean) { this.innerBean = innerBean; } - + public boolean isAbstractBean() { return abstractBean; } - + public void setAbstractBean(boolean abstractBean) { this.abstractBean = abstractBean; } - + public boolean hasParentAttribute() { return parentAttribute; } - + public void setParentAttribute(boolean parentAttribute) { this.parentAttribute = parentAttribute; } - + public boolean hasFactoryBeanAttribute() { return factoryBeanAttribute; } - + public void setFactoryBeanAttribute(boolean factoryBeanAttribute) { this.factoryBeanAttribute = factoryBeanAttribute; } - + public boolean hasFactoryMethodAttribute() { return factoryMethodAttribute; } - + public void setFactoryMethodAttribute(boolean factoryMethodAttribute) { this.factoryMethodAttribute = factoryMethodAttribute; } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java index 9ae1273592..5674c26ba3 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java @@ -28,8 +28,8 @@ import java.util.List; * @version $Rev$ $Date$ */ public class SpringConstructorArgElement { - - private String type; + + private String type; private int autoIndex = -1; private int index = -1; private List<String> refs = new ArrayList<String>(); @@ -38,35 +38,35 @@ public class SpringConstructorArgElement { public SpringConstructorArgElement(String type) { this.type = type; } - + public String getType() { return this.type; } - + public List<String> getRefs() { return this.refs; } - + public void addRef(String ref) { this.refs.add(ref); } - + public int getIndex() { return this.index; } - + public void setIndex(int index) { this.index = index; } - + public int getAutoIndex() { return this.autoIndex; } - + public void setAutoIndex(int index) { this.autoIndex = index; } - + public List<String> getValues() { return this.values; } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java index 7a73f79a45..6cefaae73f 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java @@ -35,7 +35,6 @@ import org.apache.tuscany.sca.assembly.impl.ImplementationImpl; import org.apache.tuscany.sca.interfacedef.InterfaceContract; import org.apache.tuscany.sca.runtime.RuntimeComponent; - /** * Represents a Spring implementation. * @@ -168,7 +167,6 @@ public class SpringImplementation extends ImplementationImpl implements Implemen return unresolvedBeanRef.get(refName); } // end method getUnresolvedBeanRef - /** * Use preProcess to validate and map the references and properties dynamically */ @@ -176,22 +174,21 @@ public class SpringImplementation extends ImplementationImpl implements Implemen if (!(component instanceof RuntimeComponent)) return; - RuntimeComponent rtc = (RuntimeComponent) component; + RuntimeComponent rtc = (RuntimeComponent)component; for (Reference reference : rtc.getReferences()) { if (unresolvedBeanRef.containsKey(reference.getName())) { - Reference ref = unresolvedBeanRef.get(reference.getName()); - componentType.getReferences().add( - createReference(reference, ref.getInterfaceContract())); - unresolvedBeanRef.remove(reference.getName()); + Reference ref = unresolvedBeanRef.get(reference.getName()); + componentType.getReferences().add(createReference(reference, ref.getInterfaceContract())); + unresolvedBeanRef.remove(reference.getName()); } } for (Property property : rtc.getProperties()) { - if (unresolvedBeanRef.containsKey(property.getName())) { - componentType.getProperties().add(createProperty(property)); - this.setPropertyClass(property.getName(), property.getClass()); - unresolvedBeanRef.remove(property.getName()); + if (unresolvedBeanRef.containsKey(property.getName())) { + componentType.getProperties().add(createProperty(property)); + this.setPropertyClass(property.getName(), property.getClass()); + unresolvedBeanRef.remove(property.getName()); } } } @@ -201,7 +198,7 @@ public class SpringImplementation extends ImplementationImpl implements Implemen try { newReference = (Reference)reference.clone(); if (newReference.getInterfaceContract() == null) - newReference.setInterfaceContract(interfaze); + newReference.setInterfaceContract(interfaze); } catch (CloneNotSupportedException e) { throw new AssertionError(e); // should not ever happen } @@ -217,13 +214,13 @@ public class SpringImplementation extends ImplementationImpl implements Implemen } return newProperty; } - + public ClassLoader getClassLoader() { - return classLoader; + return classLoader; } public void setClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader; + this.classLoader = classLoader; } @Override @@ -255,4 +252,4 @@ public class SpringImplementation extends ImplementationImpl implements Implemen } return true; } -}
\ No newline at end of file +} diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java index caae72fa90..27c09c1f18 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java @@ -25,47 +25,47 @@ import javax.xml.namespace.QName; * Constants used in Spring Application Context XML files. */ public interface SpringImplementationConstants { - + String SCA_NS = "http://www.springframework.org/schema/sca"; String SPRING_NS = "http://www.springframework.org/schema/beans"; - + String PROPERTY = "property"; QName SCA_PROPERTY_ELEMENT = new QName(SCA_NS, PROPERTY); QName PROPERTY_ELEMENT = new QName(SPRING_NS, PROPERTY); - + String SCASERVICE = "service"; QName SCA_SERVICE_ELEMENT = new QName(SCA_NS, SCASERVICE); - + String SCAREFERENCE = "reference"; QName SCA_REFERENCE_ELEMENT = new QName(SCA_NS, SCAREFERENCE); - + String BEANS = "beans"; QName BEANS_ELEMENT = new QName(SPRING_NS, BEANS); - + String IMPORT = "import"; QName IMPORT_ELEMENT = new QName(SPRING_NS, IMPORT); - + String BEAN = "bean"; QName BEAN_ELEMENT = new QName(SPRING_NS, BEAN); - + String CONSTRUCTORARG = "constructor-arg"; QName CONSTRUCTORARG_ELEMENT = new QName(SPRING_NS, CONSTRUCTORARG); - + String LIST = "list"; - QName LIST_ELEMENT = new QName(SPRING_NS, LIST); - + QName LIST_ELEMENT = new QName(SPRING_NS, LIST); + String SET = "set"; QName SET_ELEMENT = new QName(SPRING_NS, SET); - + String MAP = "map"; QName MAP_ELEMENT = new QName(SPRING_NS, MAP); - + String VALUE = "value"; QName VALUE_ELEMENT = new QName(SPRING_NS, VALUE); - + String REF = "ref"; QName REF_ELEMENT = new QName(SPRING_NS, REF); - + String ENTRY = "entry"; QName ENTRY_ELEMENT = new QName(SPRING_NS, ENTRY); diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java index 37b8ef37a6..030364d9a0 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java @@ -44,11 +44,11 @@ public class SpringPropertyElement { public List<String> getRefs() { return this.refs; } - + public void addRef(String ref) { this.refs.add(ref); } - + public List<String> getValues() { return this.values; } @@ -56,5 +56,5 @@ public class SpringPropertyElement { public void addValue(String value) { this.values.add(value); } - + } // end class SpringPropertyElement diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java index b192580a78..5b17d2f7d0 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java @@ -32,7 +32,7 @@ public class SpringSCAPropertyElement { this.name = name; this.type = type; } - + public void setName(String name) { this.name = name; } @@ -40,7 +40,7 @@ public class SpringSCAPropertyElement { public String getName() { return name; } - + public void setType(String type) { this.type = type; } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java index bc010229ad..a18758a1fa 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java @@ -20,6 +20,7 @@ package org.apache.tuscany.sca.implementation.spring; import java.util.ArrayList; import java.util.List; + import org.apache.tuscany.sca.policy.Intent; import org.apache.tuscany.sca.policy.PolicySet; @@ -42,7 +43,7 @@ public class SpringSCAReferenceElement { this.name = name; this.type = type; } - + public void setName(String name) { this.name = name; } @@ -50,7 +51,7 @@ public class SpringSCAReferenceElement { public String getName() { return name; } - + public void setType(String type) { this.type = type; } @@ -58,7 +59,7 @@ public class SpringSCAReferenceElement { public String getType() { return type; } - + public void setDefaultBean(String defaultBean) { this.defaultBean = defaultBean; } @@ -66,13 +67,13 @@ public class SpringSCAReferenceElement { public String getDefaultBean() { return defaultBean; } - + public List<Intent> getRequiredIntents() { return intents; } - - public List<PolicySet> getPolicySets() { - return policySets; + + public List<PolicySet> getPolicySets() { + return policySets; } } // end class SpringSCAReferenceElement diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java index dbddc00b33..ef4bd3bfdf 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java @@ -20,6 +20,7 @@ package org.apache.tuscany.sca.implementation.spring; import java.util.ArrayList; import java.util.List; + import org.apache.tuscany.sca.policy.Intent; import org.apache.tuscany.sca.policy.PolicySet; @@ -42,7 +43,7 @@ public class SpringSCAServiceElement { this.name = name; this.target = target; } - + public void setName(String name) { this.name = name; } @@ -50,7 +51,7 @@ public class SpringSCAServiceElement { public String getName() { return name; } - + public void setType(String type) { this.type = type; } @@ -58,7 +59,7 @@ public class SpringSCAServiceElement { public String getType() { return type; } - + public void setTarget(String target) { this.target = target; } @@ -66,13 +67,13 @@ public class SpringSCAServiceElement { public String getTarget() { return target; } - + public List<Intent> getRequiredIntents() { return intents; } - - public List<PolicySet> getPolicySets() { - return policySets; + + public List<PolicySet> getPolicySets() { + return policySets; } } // end class SpringSCAServiceElement diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java index 3aa257686d..0d446a9fa7 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java @@ -47,8 +47,7 @@ public class SpringBeanIntrospector { * @param javaFactory The Java Interface Factory to use * @param policyFactory The Policy Factory to use. */ - public SpringBeanIntrospector(ExtensionPointRegistry registry, - List<SpringConstructorArgElement> conArgs) { + public SpringBeanIntrospector(ExtensionPointRegistry registry, List<SpringConstructorArgElement> conArgs) { FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class); javaImplementationFactory = factories.getFactory(JavaImplementationFactory.class); @@ -64,8 +63,8 @@ public class SpringBeanIntrospector { * Spring Bean or its componentType * */ - public JavaImplementation introspectBean(Class<?> beanClass, ComponentType componentType) throws ContributionResolveException - { + public JavaImplementation introspectBean(Class<?> beanClass, ComponentType componentType) + throws ContributionResolveException { if (componentType == null) throw new ContributionResolveException("Introspect Spring bean: supplied componentType is null"); @@ -81,7 +80,7 @@ public class SpringBeanIntrospector { componentType.getServices().addAll(javaImplementation.getServices()); componentType.getReferences().addAll(javaImplementation.getReferences()); componentType.getProperties().addAll(javaImplementation.getProperties()); - + } catch (IntrospectionException e) { throw new ContributionResolveException(e); } // end try @@ -91,7 +90,7 @@ public class SpringBeanIntrospector { String name = service.getName(); System.out.println("Spring Bean: found service with name: " + name); } // end for */ - + return javaImplementation; } // end method introspectBean diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanPojoProcessor.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanPojoProcessor.java index 3a8eec99fa..985b127adf 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanPojoProcessor.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanPojoProcessor.java @@ -83,12 +83,14 @@ import org.oasisopen.sca.annotation.Remotable; public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { private List<SpringConstructorArgElement> conArgs; - public SpringBeanPojoProcessor(AssemblyFactory assemblyFactory, JavaInterfaceFactory javaFactory, List<SpringConstructorArgElement> conArgs) { + public SpringBeanPojoProcessor(AssemblyFactory assemblyFactory, + JavaInterfaceFactory javaFactory, + List<SpringConstructorArgElement> conArgs) { super(assemblyFactory); this.javaInterfaceFactory = javaFactory; this.conArgs = conArgs; } - + public SpringBeanPojoProcessor(ExtensionPointRegistry registry) { super(registry); } @@ -245,7 +247,7 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { } } } - + // Private fields unless there is a public or protected // setter method for the same name Set<Field> privateFields = getPrivateFields(clazz); @@ -287,7 +289,7 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { // determine constructor if one is not annotated JavaConstructorImpl<?> definition = type.getConstructor(); Map<String, JavaElementImpl> props = type.getPropertyMembers(); - Map<String, JavaElementImpl> refs = type.getReferenceMembers(); + Map<String, JavaElementImpl> refs = type.getReferenceMembers(); Constructor constructor; boolean explict = false; if (definition != null && definition.getConstructor() @@ -307,24 +309,24 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { constructor = constructors[0]; } else { // multiple constructors scenario - Constructor<T> selected = null; + Constructor<T> selected = null; for (Constructor<T> ctor : constructors) { if (ctor.getParameterTypes().length == 0) { selected = ctor; } else if (ctor.getParameterTypes().length == conArgs.size()) { // we will find a constructor which has atleast one - // reference or property as its parameter types. - Class<?>[] parametersTypes = ctor.getParameterTypes(); - for (Class<?> pType: parametersTypes) { - for (JavaElementImpl property : props.values()) { - if (pType.equals(property.getType())) - selected = ctor; - } - for (JavaElementImpl reference : refs.values()) { - if (pType.equals(reference.getType())) - selected = ctor; - } - } + // reference or property as its parameter types. + Class<?>[] parametersTypes = ctor.getParameterTypes(); + for (Class<?> pType : parametersTypes) { + for (JavaElementImpl property : props.values()) { + if (pType.equals(property.getType())) + selected = ctor; + } + for (JavaElementImpl reference : refs.values()) { + if (pType.equals(reference.getType())) + selected = ctor; + } + } } } if (selected == null) { @@ -335,12 +337,12 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { definition = type.getConstructors().get(constructor); type.setConstructor(definition); } - + JavaParameterImpl[] parameters = definition.getParameters(); if (parameters.length == 0) { return; } - + Annotation[][] annotations = constructor.getParameterAnnotations(); if (!explict) { // the constructor wasn't defined by an annotation, so check to see @@ -592,7 +594,8 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(paramType); reference.getInterfaceContract().setInterface(callInterface); if (callInterface.getCallbackClass() != null) { - JavaInterface callbackInterface = javaInterfaceFactory.createJavaInterface(callInterface.getCallbackClass()); + JavaInterface callbackInterface = + javaInterfaceFactory.createJavaInterface(callInterface.getCallbackClass()); reference.getInterfaceContract().setCallbackInterface(callbackInterface); } reference.setMultiplicity(Multiplicity.ZERO_ONE); @@ -619,7 +622,8 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { JavaInterface callInterface = javaInterfaceFactory.createJavaInterface(interfaze); service.getInterfaceContract().setInterface(callInterface); if (callInterface.getCallbackClass() != null) { - JavaInterface callbackInterface = javaInterfaceFactory.createJavaInterface(callInterface.getCallbackClass()); + JavaInterface callbackInterface = + javaInterfaceFactory.createJavaInterface(callInterface.getCallbackClass()); service.getInterfaceContract().setCallbackInterface(callbackInterface); } @@ -638,7 +642,7 @@ public class SpringBeanPojoProcessor extends BaseJavaClassVisitor { javaInterface = javaInterfaceFactory.createJavaInterface(callbackClass); contract.getInterfaceContract().setCallbackInterface(javaInterface); } catch (InvalidInterfaceException e) { - throw new InvalidServiceTypeException("Invalid callback interface "+callbackClass, interfaze); + throw new InvalidServiceTypeException("Invalid callback interface " + callbackClass, interfaze); } } else if (callback != null && Void.class.equals(callback.value())) { throw new InvalidServiceTypeException("No callback interface specified on annotation", interfaze); diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java index bd3134c5f2..28506a7141 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java @@ -100,8 +100,7 @@ public class SpringXMLComponentTypeLoader { private Monitor monitor; private SpringBeanIntrospector beanIntrospector; - public SpringXMLComponentTypeLoader(ExtensionPointRegistry registry, - Monitor monitor) { + public SpringXMLComponentTypeLoader(ExtensionPointRegistry registry, Monitor monitor) { super(); this.registry = registry; FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class); @@ -113,7 +112,7 @@ public class SpringXMLComponentTypeLoader { this.xmlInputFactory = factories.getFactory(XMLInputFactory.class); this.monitor = monitor; } - + /** * Report a exception. * @@ -122,10 +121,16 @@ public class SpringXMLComponentTypeLoader { * @param model */ private void error(String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "impl-spring-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "impl-spring-validation-messages", + Severity.ERROR, + model, + message, + ex); + monitor.problem(problem); + } } /** @@ -136,10 +141,16 @@ public class SpringXMLComponentTypeLoader { * @param model */ private void error(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "impl-spring-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "impl-spring-validation-messages", + Severity.ERROR, + model, + message, + (Object[])messageParameters); + monitor.problem(problem); + } } protected Class<SpringImplementation> getImplementationClass() { @@ -151,9 +162,10 @@ public class SpringXMLComponentTypeLoader { * Spring implementation * */ - public void load(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) throws ContributionReadException { + public void load(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) + throws ContributionReadException { //System.out.println("Spring TypeLoader - load method start"); - ComponentType componentType = implementation.getComponentType(); + ComponentType componentType = implementation.getComponentType(); /* Check that there is a component type object already set */ if (componentType == null) { throw new ContributionReadException("SpringXMLLoader load: implementation has no ComponentType object"); @@ -164,10 +176,11 @@ public class SpringXMLComponentTypeLoader { if (!componentType.isUnresolved()) implementation.setUnresolved(false); } // end if - //System.out.println("Spring TypeLoader - load method complete"); + //System.out.println("Spring TypeLoader - load method complete"); } // end method load - private Class<?> resolveClass(ModelResolver resolver, String className, ProcessorContext context) throws ClassNotFoundException { + private Class<?> resolveClass(ModelResolver resolver, String className, ProcessorContext context) + throws ClassNotFoundException { ClassReference classReference = new ClassReference(className); classReference = resolver.resolveModel(ClassReference.class, classReference, context); if (classReference.isUnresolved()) { @@ -184,7 +197,8 @@ public class SpringXMLComponentTypeLoader { * @param implementation SpringImplementation into which to load the component type information * @throws ContributionReadException Failed to read the contribution */ - private void loadFromXML(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) throws ContributionReadException { + private void loadFromXML(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) + throws ContributionReadException { XMLStreamReader reader; List<SpringBeanElement> beans = new ArrayList<SpringBeanElement>(); List<SpringSCAServiceElement> services = new ArrayList<SpringSCAServiceElement>(); @@ -195,31 +209,38 @@ public class SpringXMLComponentTypeLoader { List<URL> contextResources = new ArrayList<URL>(); String contextPath = implementation.getLocation(); - try { + try { resource = resolveLocation(resolver, contextPath, context); contextResources = getApplicationContextResource(resource); - + implementation.setClassLoader(new ContextClassLoader(resolver, context)); implementation.setResource(contextResources); // The URI is used to uniquely identify the Implementation implementation.setURI(resource.toString()); - - for (URL contextResource : contextResources) { - List<SpringBeanElement> appCxtBeans = new ArrayList<SpringBeanElement>(); + + for (URL contextResource : contextResources) { + List<SpringBeanElement> appCxtBeans = new ArrayList<SpringBeanElement>(); List<SpringSCAServiceElement> appCxtServices = new ArrayList<SpringSCAServiceElement>(); List<SpringSCAReferenceElement> appCxtReferences = new ArrayList<SpringSCAReferenceElement>(); List<SpringSCAPropertyElement> appCxtProperties = new ArrayList<SpringSCAPropertyElement>(); - reader = xmlInputFactory.createXMLStreamReader(contextResource.openStream()); - // Read the beans, services, references and properties for individual application context - readContextDefinition(resolver, reader, contextPath, appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties, context); - // Validate the beans from individual application context for uniqueness - validateBeans(appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties); - // Add all the validated beans to the generic list - beans.addAll(appCxtBeans); - services.addAll(appCxtServices); - references.addAll(appCxtReferences); - scaproperties.addAll(appCxtProperties); - reader.close(); + reader = xmlInputFactory.createXMLStreamReader(contextResource.openStream()); + // Read the beans, services, references and properties for individual application context + readContextDefinition(resolver, + reader, + contextPath, + appCxtBeans, + appCxtServices, + appCxtReferences, + appCxtProperties, + context); + // Validate the beans from individual application context for uniqueness + validateBeans(appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties); + // Add all the validated beans to the generic list + beans.addAll(appCxtBeans); + services.addAll(appCxtServices); + references.addAll(appCxtReferences); + scaproperties.addAll(appCxtProperties); + reader.close(); } } catch (IOException e) { throw new ContributionReadException(e); @@ -235,8 +256,8 @@ public class SpringXMLComponentTypeLoader { return; } // end method loadFromXML - private URL resolveLocation(ModelResolver resolver, String contextPath, ProcessorContext context) throws MalformedURLException, - ContributionReadException { + private URL resolveLocation(ModelResolver resolver, String contextPath, ProcessorContext context) + throws MalformedURLException, ContributionReadException { URL resource = null; URI uri = URI.create(contextPath); if (!uri.isAbsolute()) { @@ -259,12 +280,13 @@ public class SpringXMLComponentTypeLoader { * Method which returns the XMLStreamReader for the Spring application-context.xml file * specified in the location attribute */ - private XMLStreamReader getApplicationContextReader(ModelResolver resolver, String location, ProcessorContext context) throws ContributionReadException { + private XMLStreamReader getApplicationContextReader(ModelResolver resolver, + String location, + ProcessorContext context) throws ContributionReadException { try { URL resource = getApplicationContextResource(resolveLocation(resolver, location, context)).get(0); - XMLStreamReader reader = - xmlInputFactory.createXMLStreamReader(resource.openStream()); + XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(resource.openStream()); return reader; } catch (IOException e) { throw new ContributionReadException(e); @@ -284,7 +306,8 @@ public class SpringXMLComponentTypeLoader { List<SpringBeanElement> beans, List<SpringSCAServiceElement> services, List<SpringSCAReferenceElement> references, - List<SpringSCAPropertyElement> scaproperties, ProcessorContext context) throws ContributionReadException { + List<SpringSCAPropertyElement> scaproperties, + ProcessorContext context) throws ContributionReadException { SpringBeanElement bean = null; @@ -296,74 +319,84 @@ public class SpringXMLComponentTypeLoader { QName qname = reader.getName(); //System.out.println("Spring TypeLoader - found element with name: " + qname.toString()); if (SpringImplementationConstants.IMPORT_ELEMENT.equals(qname)) { - //FIXME - put the sequence of code below which gets the ireader into a subsidiary method + //FIXME - put the sequence of code below which gets the ireader into a subsidiary method String location = reader.getAttributeValue(null, "resource"); if (location != null) { - // FIXME - need to find a right way of generating this path - String resourcePath = contextPath.substring(0, contextPath.lastIndexOf("/")+1) + location; + // FIXME - need to find a right way of generating this path + String resourcePath = + contextPath.substring(0, contextPath.lastIndexOf("/") + 1) + location; XMLStreamReader ireader = getApplicationContextReader(resolver, resourcePath, context); // Read the context definition for the identified imported resource - readContextDefinition(resolver, ireader, contextPath, beans, services, references, scaproperties, context); + readContextDefinition(resolver, + ireader, + contextPath, + beans, + services, + references, + scaproperties, + context); } } else if (SpringImplementationConstants.SCA_SERVICE_ELEMENT.equals(qname)) { - // The value of the @name attribute of an <sca:service/> subelement of a <beans/> - // element MUST be unique amongst the <sca:service/> subelements of the <beans/> element. - if (!services.isEmpty() && (services.contains(reader.getAttributeValue(null, "name")))) - error("ScaServiceNameNotUnique", resolver); - - SpringSCAServiceElement service = - new SpringSCAServiceElement(reader.getAttributeValue(null, "name"), - reader.getAttributeValue(null, "target")); + // The value of the @name attribute of an <sca:service/> subelement of a <beans/> + // element MUST be unique amongst the <sca:service/> subelements of the <beans/> element. + if (!services.isEmpty() && (services.contains(reader.getAttributeValue(null, "name")))) + error("ScaServiceNameNotUnique", resolver); + + SpringSCAServiceElement service = + new SpringSCAServiceElement(reader.getAttributeValue(null, "name"), + reader.getAttributeValue(null, "target")); if (reader.getAttributeValue(null, "type") != null) - service.setType(reader.getAttributeValue(null, "type")); + service.setType(reader.getAttributeValue(null, "type")); policyProcessor.readPolicies(service, reader); services.add(service); } else if (SpringImplementationConstants.SCA_REFERENCE_ELEMENT.equals(qname)) { - // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:reference/> subelements, - // of the <beans/> element. - if (!references.isEmpty() && (references.contains(reader.getAttributeValue(null, "name")))) - error("ScaReferenceNameNotUnique", resolver); - - SpringSCAReferenceElement reference = - new SpringSCAReferenceElement(reader.getAttributeValue(null, "name"), - reader.getAttributeValue(null, "type")); + // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> + // element MUST be unique amongst the @name attributes of the <sca:reference/> subelements, + // of the <beans/> element. + if (!references.isEmpty() && (references.contains(reader.getAttributeValue(null, "name")))) + error("ScaReferenceNameNotUnique", resolver); + + SpringSCAReferenceElement reference = + new SpringSCAReferenceElement(reader.getAttributeValue(null, "name"), + reader.getAttributeValue(null, "type")); if (reader.getAttributeValue(null, "default") != null) - reference.setDefaultBean(reader.getAttributeValue(null, "default")); + reference.setDefaultBean(reader.getAttributeValue(null, "default")); policyProcessor.readPolicies(reference, reader); - references.add(reference); + references.add(reference); } else if (SpringImplementationConstants.SCA_PROPERTY_ELEMENT.equals(qname)) { - // The value of the @name attribute of an <sca:property/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:property/> subelements, - // of the <beans/> element. - if (!scaproperties.isEmpty() && (scaproperties.contains(reader.getAttributeValue(null, "name")))) - error("ScaPropertyNameNotUnique", resolver); - - SpringSCAPropertyElement scaproperty = - new SpringSCAPropertyElement(reader.getAttributeValue(null, "name"), reader - .getAttributeValue(null, "type")); + // The value of the @name attribute of an <sca:property/> subelement of a <beans/> + // element MUST be unique amongst the @name attributes of the <sca:property/> subelements, + // of the <beans/> element. + if (!scaproperties.isEmpty() && (scaproperties.contains(reader.getAttributeValue(null, + "name")))) + error("ScaPropertyNameNotUnique", resolver); + + SpringSCAPropertyElement scaproperty = + new SpringSCAPropertyElement(reader.getAttributeValue(null, "name"), + reader.getAttributeValue(null, "type")); scaproperties.add(scaproperty); } else if (SpringImplementationConstants.BEAN_ELEMENT.equals(qname)) { - bean = new SpringBeanElement(reader.getAttributeValue(null, "id"), - reader.getAttributeValue(null, "class")); + bean = + new SpringBeanElement(reader.getAttributeValue(null, "id"), + reader.getAttributeValue(null, "class")); if (reader.getAttributeValue(null, "abstract") != null) - if (reader.getAttributeValue(null, "abstract").equals("true")) - bean.setAbstractBean(true); + if (reader.getAttributeValue(null, "abstract").equals("true")) + bean.setAbstractBean(true); if (reader.getAttributeValue(null, "parent") != null) - if (!reader.getAttributeValue(null, "parent").equals("")) - bean.setParentAttribute(true); + if (!reader.getAttributeValue(null, "parent").equals("")) + bean.setParentAttribute(true); if (reader.getAttributeValue(null, "factory-bean") != null) - if (!reader.getAttributeValue(null, "factory-bean").equals("")) - bean.setFactoryBeanAttribute(true); + if (!reader.getAttributeValue(null, "factory-bean").equals("")) + bean.setFactoryBeanAttribute(true); if (reader.getAttributeValue(null, "factory-method") != null) - if (!reader.getAttributeValue(null, "factory-method").equals("")) - bean.setFactoryMethodAttribute(true); + if (!reader.getAttributeValue(null, "factory-method").equals("")) + bean.setFactoryMethodAttribute(true); // Set the first name as bean name, when the @id attribute is absent. if (reader.getAttributeValue(null, "id") == null) { - if (reader.getAttributeValue(null, "name") != null) { - String[] names = (reader.getAttributeValue(null, "name")).split(","); - bean.setId(names[0]); - } + if (reader.getAttributeValue(null, "name") != null) { + String[] names = (reader.getAttributeValue(null, "name")).split(","); + bean.setId(names[0]); + } } beans.add(bean); // Read the <bean> element and its child elements @@ -383,34 +416,33 @@ public class SpringXMLComponentTypeLoader { } } - /** * Method which reads the bean definitions from Spring application-context.xml file and identifies * the defined beans, properties, services and references */ - private void readBeanDefinition(XMLStreamReader reader, - SpringBeanElement bean, - List<SpringBeanElement> beans) throws ContributionReadException { + private void readBeanDefinition(XMLStreamReader reader, SpringBeanElement bean, List<SpringBeanElement> beans) + throws ContributionReadException { - SpringBeanElement innerbean = null; + SpringBeanElement innerbean = null; SpringPropertyElement property = null; SpringConstructorArgElement constructorArg = null; - + try { - boolean completed = false; + boolean completed = false; while (!completed) { switch (reader.next()) { case START_ELEMENT: QName qname = reader.getName(); if (SpringImplementationConstants.BEAN_ELEMENT.equals(qname)) { - innerbean = new SpringBeanElement(reader.getAttributeValue(null, "id"), reader - .getAttributeValue(null, "class")); - // Set the first name as bean name, when the @id attribute is absent. + innerbean = + new SpringBeanElement(reader.getAttributeValue(null, "id"), + reader.getAttributeValue(null, "class")); + // Set the first name as bean name, when the @id attribute is absent. if (reader.getAttributeValue(null, "id") == null) { - if (reader.getAttributeValue(null, "name") != null) { - String[] names = (reader.getAttributeValue(null, "name")).split(","); - innerbean.setId(names[0]); - } + if (reader.getAttributeValue(null, "name") != null) { + String[] names = (reader.getAttributeValue(null, "name")).split(","); + innerbean.setId(names[0]); + } } innerbean.setInnerBean(true); beans.add(innerbean); @@ -418,34 +450,37 @@ public class SpringXMLComponentTypeLoader { } else if (SpringImplementationConstants.PROPERTY_ELEMENT.equals(qname)) { property = new SpringPropertyElement(reader.getAttributeValue(null, "name")); if (reader.getAttributeValue(null, "ref") != null) - property.addRef(reader.getAttributeValue(null, "ref")); + property.addRef(reader.getAttributeValue(null, "ref")); bean.addProperty(property); } else if (SpringImplementationConstants.CONSTRUCTORARG_ELEMENT.equals(qname)) { constructorArg = new SpringConstructorArgElement(reader.getAttributeValue(null, "type")); if (reader.getAttributeValue(null, "ref") != null) - constructorArg.addRef(reader.getAttributeValue(null, "ref")); + constructorArg.addRef(reader.getAttributeValue(null, "ref")); if (reader.getAttributeValue(null, "index") != null) - constructorArg.setIndex((new Integer(reader.getAttributeValue(null, "index"))).intValue()); + constructorArg.setIndex((new Integer(reader.getAttributeValue(null, "index"))) + .intValue()); if (reader.getAttributeValue(null, "value") != null) - constructorArg.addValue(reader.getAttributeValue(null, "value")); + constructorArg.addValue(reader.getAttributeValue(null, "value")); bean.addCustructorArgs(constructorArg); } else if (SpringImplementationConstants.REF_ELEMENT.equals(qname)) { - String ref = reader.getAttributeValue(null, "bean"); + String ref = reader.getAttributeValue(null, "bean"); // Check if the parent element is a property - if (property != null) property.addRef(ref); + if (property != null) + property.addRef(ref); // Check if the parent element is a constructor-arg - if (constructorArg != null) constructorArg.addRef(ref); + if (constructorArg != null) + constructorArg.addRef(ref); } else if (SpringImplementationConstants.VALUE_ELEMENT.equals(qname)) { String value = reader.getElementText(); // Check if the parent element is a constructor-arg - if (constructorArg != null) constructorArg.addValue(value); - } else if (SpringImplementationConstants.LIST_ELEMENT.equals(qname) || - SpringImplementationConstants.SET_ELEMENT.equals(qname) || - SpringImplementationConstants.MAP_ELEMENT.equals(qname)) { - if (property != null) - readCollections(reader, bean, beans, property, null); if (constructorArg != null) - readCollections(reader, bean, beans, null, constructorArg); + constructorArg.addValue(value); + } else if (SpringImplementationConstants.LIST_ELEMENT.equals(qname) || SpringImplementationConstants.SET_ELEMENT + .equals(qname) || SpringImplementationConstants.MAP_ELEMENT.equals(qname)) { + if (property != null) + readCollections(reader, bean, beans, property, null); + if (constructorArg != null) + readCollections(reader, bean, beans, null, constructorArg); } // end if break; case END_ELEMENT: @@ -463,8 +498,7 @@ public class SpringXMLComponentTypeLoader { throw new ContributionReadException(e); } } - - + /** * Method which reads the collection elements from Spring application-context.xml file and identifies * the defined beans, list, maps and sets @@ -474,54 +508,62 @@ public class SpringXMLComponentTypeLoader { List<SpringBeanElement> beans, SpringPropertyElement property, SpringConstructorArgElement constructorArg) throws ContributionReadException { - - SpringBeanElement innerbean = null; - + + SpringBeanElement innerbean = null; + try { - boolean completed = false; + boolean completed = false; while (!completed) { switch (reader.next()) { case START_ELEMENT: QName qname = reader.getName(); if (SpringImplementationConstants.BEAN_ELEMENT.equals(qname)) { - innerbean = new SpringBeanElement(reader.getAttributeValue(null, "id"), reader - .getAttributeValue(null, "class")); - // Set the first name as bean name, when the @id attribute is absent. + innerbean = + new SpringBeanElement(reader.getAttributeValue(null, "id"), + reader.getAttributeValue(null, "class")); + // Set the first name as bean name, when the @id attribute is absent. if (reader.getAttributeValue(null, "id") == null) - if (reader.getAttributeValue(null, "name") != null) { - String[] names = (reader.getAttributeValue(null, "name")).split(","); - innerbean.setId(names[0]); - } + if (reader.getAttributeValue(null, "name") != null) { + String[] names = (reader.getAttributeValue(null, "name")).split(","); + innerbean.setId(names[0]); + } innerbean.setInnerBean(true); beans.add(innerbean); readBeanDefinition(reader, innerbean, beans); } else if (SpringImplementationConstants.REF_ELEMENT.equals(qname)) { - String ref = reader.getAttributeValue(null, "bean"); - if (property != null) property.addRef(ref); - if (constructorArg != null) constructorArg.addRef(ref); - } else if (SpringImplementationConstants.LIST_ELEMENT.equals(qname) || - SpringImplementationConstants.SET_ELEMENT.equals(qname) || - SpringImplementationConstants.MAP_ELEMENT.equals(qname)) { - if (property != null) - readCollections(reader, innerbean, beans, property, null); - if (constructorArg != null) - readCollections(reader, innerbean, beans, null, constructorArg); + String ref = reader.getAttributeValue(null, "bean"); + if (property != null) + property.addRef(ref); + if (constructorArg != null) + constructorArg.addRef(ref); + } else if (SpringImplementationConstants.LIST_ELEMENT.equals(qname) || SpringImplementationConstants.SET_ELEMENT + .equals(qname) || SpringImplementationConstants.MAP_ELEMENT.equals(qname)) { + if (property != null) + readCollections(reader, innerbean, beans, property, null); + if (constructorArg != null) + readCollections(reader, innerbean, beans, null, constructorArg); } else if (SpringImplementationConstants.ENTRY_ELEMENT.equals(qname)) { String keyRef = reader.getAttributeValue(null, "key-ref"); String valueRef = reader.getAttributeValue(null, "value-ref"); - if (property != null) {property.addRef(keyRef); property.addRef(valueRef);} - if (constructorArg != null) {constructorArg.addRef(keyRef); constructorArg.addRef(valueRef);} + if (property != null) { + property.addRef(keyRef); + property.addRef(valueRef); + } + if (constructorArg != null) { + constructorArg.addRef(keyRef); + constructorArg.addRef(valueRef); + } } // end if break; case END_ELEMENT: if (SpringImplementationConstants.LIST_ELEMENT.equals(reader.getName())) { - completed = true; + completed = true; break; } else if (SpringImplementationConstants.SET_ELEMENT.equals(reader.getName())) { - completed = true; + completed = true; break; } else if (SpringImplementationConstants.MAP_ELEMENT.equals(reader.getName())) { - completed = true; + completed = true; break; } // end if } // end switch @@ -553,14 +595,14 @@ public class SpringXMLComponentTypeLoader { * at another bean in the application context becomes a property in the component type */ - JavaImplementation javaImplementation = null; + JavaImplementation javaImplementation = null; ComponentType componentType = implementation.getComponentType(); try { // Deal with the services first.... Iterator<SpringSCAServiceElement> its = services.iterator(); while (its.hasNext()) { - SpringSCAServiceElement serviceElement = its.next(); + SpringSCAServiceElement serviceElement = its.next(); Class<?> interfaze = resolveClass(resolver, serviceElement.getType(), context); Service theService = createService(interfaze, serviceElement.getName()); // Spring allows duplication of bean definitions in multiple context scenario, @@ -568,23 +610,23 @@ public class SpringXMLComponentTypeLoader { // we will remove any older definition and use the latest. Service duplicate = null; for (Service service : componentType.getServices()) { - if (service.getName().equals(theService.getName())) - duplicate = service; + if (service.getName().equals(theService.getName())) + duplicate = service; } if (duplicate != null) - componentType.getServices().remove(duplicate); - + componentType.getServices().remove(duplicate); + componentType.getServices().add(theService); // Add this service to the Service / Bean map String beanName = serviceElement.getTarget(); for (SpringBeanElement beanElement : beans) { if (beanName.equals(beanElement.getId())) { - if (isvalidBeanForService(beanElement)) { - // add the required intents and policySets for the service + if (isvalidBeanForService(beanElement)) { + // add the required intents and policySets for the service theService.getRequiredIntents().addAll(serviceElement.getRequiredIntents()); theService.getPolicySets().addAll(serviceElement.getPolicySets()); implementation.setBeanForService(theService, beanElement); - } + } } } // end for } // end while @@ -599,12 +641,12 @@ public class SpringXMLComponentTypeLoader { // for the duplicate definitions found. Reference duplicate = null; for (Reference reference : componentType.getReferences()) { - if (reference.getName().equals(theReference.getName())) - duplicate = reference; + if (reference.getName().equals(theReference.getName())) + duplicate = reference; } if (duplicate != null) - componentType.getReferences().remove(duplicate); - + componentType.getReferences().remove(duplicate); + // add the required intents and policySets for this reference theReference.getRequiredIntents().addAll(referenceElement.getRequiredIntents()); theReference.getPolicySets().addAll(referenceElement.getPolicySets()); @@ -627,12 +669,12 @@ public class SpringXMLComponentTypeLoader { // for the duplicate definitions found. Property duplicate = null; for (Property property : componentType.getProperties()) { - if (property.getName().equals(theProperty.getName())) - duplicate = property; + if (property.getName().equals(theProperty.getName())) + duplicate = property; } if (duplicate != null) - componentType.getProperties().remove(duplicate); - + componentType.getProperties().remove(duplicate); + componentType.getProperties().add(theProperty); // Remember the Java Class (ie the type) for this property implementation.setPropertyClass(theProperty.getName(), propType); @@ -648,17 +690,17 @@ public class SpringXMLComponentTypeLoader { while (itb.hasNext()) { SpringBeanElement beanElement = itb.next(); // If its not a valid bean for service, ignore it - if (!isvalidBeanForService(beanElement)) continue; + if (!isvalidBeanForService(beanElement)) + continue; // Load the Spring bean class Class<?> beanClass = resolveClass(resolver, beanElement.getClassName(), context); // Introspect the bean - beanIntrospector = - new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); + beanIntrospector = new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); ComponentType beanComponentType = assemblyFactory.createComponentType(); javaImplementation = beanIntrospector.introspectBean(beanClass, beanComponentType); // Set the service name as bean name - for (Service componentService : beanComponentType.getServices()) - componentService.setName(beanElement.getId()); + for (Service componentService : beanComponentType.getServices()) + componentService.setName(beanElement.getId()); // Get the service interface defined by this Spring Bean and add to // the component type of the Spring Assembly List<Service> beanServices = beanComponentType.getServices(); @@ -675,12 +717,11 @@ public class SpringXMLComponentTypeLoader { SpringBeanElement beanElement = itb.next(); // Ignore if the bean has no properties and constructor arguments if (beanElement.getProperties().isEmpty() && beanElement.getCustructorArgs().isEmpty()) - continue; + continue; Class<?> beanClass = resolveClass(resolver, beanElement.getClassName(), context); // Introspect the bean - beanIntrospector = - new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); + beanIntrospector = new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); ComponentType beanComponentType = assemblyFactory.createComponentType(); javaImplementation = beanIntrospector.introspectBean(beanClass, beanComponentType); Map<String, JavaElementImpl> propertyMap = javaImplementation.getPropertyMembers(); @@ -694,60 +735,62 @@ public class SpringXMLComponentTypeLoader { while (itp.hasNext()) { SpringPropertyElement propertyElement = itp.next(); for (String propertyRef : propertyElement.getRefs()) { - if (propertyRefUnresolved(propertyRef, beans, references, scaproperties)) { - // This means an unresolved reference from the spring bean... - for (Reference reference : beanReferences) { - if (propertyElement.getName().equals(reference.getName())) { - // The name of the reference in this case is the string in - // the @ref attribute of the Spring property element, NOT the - // name of the field in the Spring bean.... - reference.setName(propertyRef); - componentType.getReferences().add(reference); - } // end if - } // end for - - // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type - for (Property scaproperty : beanProperties) { - if (propertyElement.getName().equals(scaproperty.getName())) { - // The name of the reference in this case is the string in - // the @ref attribute of the Spring property element, NOT the - // name of the field in the Spring bean.... - Class<?> interfaze = resolveClass(resolver, (propertyMap.get(propertyElement.getName()).getType()).getName(), context); - Reference theReference = createReference(interfaze, propertyRef); - implementation.setUnresolvedBeanRef(propertyRef, theReference); - } // end if - } // end for - } // end if + if (propertyRefUnresolved(propertyRef, beans, references, scaproperties)) { + // This means an unresolved reference from the spring bean... + for (Reference reference : beanReferences) { + if (propertyElement.getName().equals(reference.getName())) { + // The name of the reference in this case is the string in + // the @ref attribute of the Spring property element, NOT the + // name of the field in the Spring bean.... + reference.setName(propertyRef); + componentType.getReferences().add(reference); + } // end if + } // end for + + // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type + for (Property scaproperty : beanProperties) { + if (propertyElement.getName().equals(scaproperty.getName())) { + // The name of the reference in this case is the string in + // the @ref attribute of the Spring property element, NOT the + // name of the field in the Spring bean.... + Class<?> interfaze = + resolveClass(resolver, + (propertyMap.get(propertyElement.getName()).getType()).getName(), + context); + Reference theReference = createReference(interfaze, propertyRef); + implementation.setUnresolvedBeanRef(propertyRef, theReference); + } // end if + } // end for + } // end if } // end for } // end while Iterator<SpringConstructorArgElement> itcr = beanElement.getCustructorArgs().iterator(); while (itcr.hasNext()) { - SpringConstructorArgElement conArgElement = itcr.next(); - for (String constructorArgRef : conArgElement.getRefs()) { - if (propertyRefUnresolved(constructorArgRef, beans, references, scaproperties)) { - for (JavaParameterImpl parameter : constructor.getParameters()) { - String paramType = parameter.getType().getName(); - Class<?> interfaze = resolveClass(resolver, paramType, context); - // Create a component type reference/property if the constructor-arg element has a - // type attribute OR index attribute declared... - if ((conArgElement.getType() != null && paramType.equals(conArgElement.getType())) || - (conArgElement.getIndex() != -1 && (conArgElement.getIndex() == parameter.getIndex()))) - { - if (parameter.getClassifer().getName().equals("org.osoa.sca.annotations.Reference")) { - Reference theReference = createReference(interfaze, constructorArgRef); - componentType.getReferences().add(theReference); - } - if (parameter.getClassifer().getName().equals("org.osoa.sca.annotations.Property")) { - // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type - // we might need to verify with the component definition later. - Reference theReference = createReference(interfaze, constructorArgRef); - implementation.setUnresolvedBeanRef(constructorArgRef, theReference); - } - } - } // end for - } // end if - } // end for + SpringConstructorArgElement conArgElement = itcr.next(); + for (String constructorArgRef : conArgElement.getRefs()) { + if (propertyRefUnresolved(constructorArgRef, beans, references, scaproperties)) { + for (JavaParameterImpl parameter : constructor.getParameters()) { + String paramType = parameter.getType().getName(); + Class<?> interfaze = resolveClass(resolver, paramType, context); + // Create a component type reference/property if the constructor-arg element has a + // type attribute OR index attribute declared... + if ((conArgElement.getType() != null && paramType.equals(conArgElement.getType())) || (conArgElement + .getIndex() != -1 && (conArgElement.getIndex() == parameter.getIndex()))) { + if (parameter.getClassifer().getName().equals("org.osoa.sca.annotations.Reference")) { + Reference theReference = createReference(interfaze, constructorArgRef); + componentType.getReferences().add(theReference); + } + if (parameter.getClassifer().getName().equals("org.osoa.sca.annotations.Property")) { + // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type + // we might need to verify with the component definition later. + Reference theReference = createReference(interfaze, constructorArgRef); + implementation.setUnresolvedBeanRef(constructorArgRef, theReference); + } + } + } // end for + } // end if + } // end for } // end while } // end while @@ -793,7 +836,7 @@ public class SpringXMLComponentTypeLoader { break; } // end if } // end while - // Scan over the SCA reference elements looking for a match + // Scan over the SCA reference elements looking for a match if (unresolved) { Iterator<SpringSCAReferenceElement> itr = references.iterator(); while (itr.hasNext()) { @@ -804,7 +847,7 @@ public class SpringXMLComponentTypeLoader { } // end if } // end while } // end if - // Scan over the SCA property elements looking for a match + // Scan over the SCA property elements looking for a match if (unresolved) { Iterator<SpringSCAPropertyElement> itsp = scaproperties.iterator(); while (itsp.hasNext()) { @@ -824,35 +867,35 @@ public class SpringXMLComponentTypeLoader { return unresolved; } // end method propertyRefUnresolved - + /** * Validates whether the <sca:service>, <sca:reference> and <sca:property> elements * has unique names within the application context. */ private void validateBeans(List<SpringBeanElement> beans, - List<SpringSCAServiceElement> services, - List<SpringSCAReferenceElement> references, - List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException { - - // The @target attribute of a <service/> subelement of a <beans/> element - // MUST have the value of the @name attribute of one of the <bean/> - // subelements of the <beans/> element. - Iterator<SpringSCAServiceElement> its = services.iterator(); + List<SpringSCAServiceElement> services, + List<SpringSCAReferenceElement> references, + List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException { + + // The @target attribute of a <service/> subelement of a <beans/> element + // MUST have the value of the @name attribute of one of the <bean/> + // subelements of the <beans/> element. + Iterator<SpringSCAServiceElement> its = services.iterator(); while (its.hasNext()) { - SpringSCAServiceElement serviceElement = its.next(); - boolean targetBeanExists = false; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (serviceElement.getTarget().equals(beanElement.getId())) - targetBeanExists = true; - } - if (!targetBeanExists) - error("TargetBeanDoesNotExist", beans); + SpringSCAServiceElement serviceElement = its.next(); + boolean targetBeanExists = false; + Iterator<SpringBeanElement> itb = beans.iterator(); + while (itb.hasNext()) { + SpringBeanElement beanElement = itb.next(); + if (serviceElement.getTarget().equals(beanElement.getId())) + targetBeanExists = true; + } + if (!targetBeanExists) + error("TargetBeanDoesNotExist", beans); } // end while - - // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:property/> + + // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> + // element MUST be unique amongst the @name attributes of the <sca:property/> // subelements and the <bean/> subelements of the <beans/> element. // AND // The @default attribute of a <sca:reference/> subelement of a <beans/> @@ -860,213 +903,219 @@ public class SpringXMLComponentTypeLoader { // subelements of the <beans/> element. Iterator<SpringSCAReferenceElement> itr = references.iterator(); while (itr.hasNext()) { - SpringSCAReferenceElement referenceElement = itr.next(); - boolean defaultBeanExists = true; - boolean isUniqueReferenceName = true; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (referenceElement.getDefaultBean() != null) - if (referenceElement.getDefaultBean().equals(beanElement.getId())) - defaultBeanExists = false; - if (referenceElement.getName().equals(beanElement.getId())) - isUniqueReferenceName = false; - } - Iterator<SpringSCAPropertyElement> itp = scaproperties.iterator(); - while (itp.hasNext()) { - SpringSCAPropertyElement propertyElement = itp.next(); - if (referenceElement.getName().equals(propertyElement.getName())) - isUniqueReferenceName = false; - } - if (!defaultBeanExists) - error("DefaultBeanDoesNotExist", beans); - if (!isUniqueReferenceName) - error("ScaReferenceNameNotUnique", beans); + SpringSCAReferenceElement referenceElement = itr.next(); + boolean defaultBeanExists = true; + boolean isUniqueReferenceName = true; + Iterator<SpringBeanElement> itb = beans.iterator(); + while (itb.hasNext()) { + SpringBeanElement beanElement = itb.next(); + if (referenceElement.getDefaultBean() != null) + if (referenceElement.getDefaultBean().equals(beanElement.getId())) + defaultBeanExists = false; + if (referenceElement.getName().equals(beanElement.getId())) + isUniqueReferenceName = false; + } + Iterator<SpringSCAPropertyElement> itp = scaproperties.iterator(); + while (itp.hasNext()) { + SpringSCAPropertyElement propertyElement = itp.next(); + if (referenceElement.getName().equals(propertyElement.getName())) + isUniqueReferenceName = false; + } + if (!defaultBeanExists) + error("DefaultBeanDoesNotExist", beans); + if (!isUniqueReferenceName) + error("ScaReferenceNameNotUnique", beans); } // end while - - // The value of the @name attribute of an <sca:property/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:reference/> + + // The value of the @name attribute of an <sca:property/> subelement of a <beans/> + // element MUST be unique amongst the @name attributes of the <sca:reference/> // subelements and the <bean/> subelements of the <beans/> element. Iterator<SpringSCAPropertyElement> itp = scaproperties.iterator(); while (itp.hasNext()) { - SpringSCAPropertyElement propertyElement = itp.next(); - boolean isUniquePropertyName = true; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (propertyElement.getName().equals(beanElement.getId())) - isUniquePropertyName = false; - } - Iterator<SpringSCAReferenceElement> itrp = references.iterator(); + SpringSCAPropertyElement propertyElement = itp.next(); + boolean isUniquePropertyName = true; + Iterator<SpringBeanElement> itb = beans.iterator(); + while (itb.hasNext()) { + SpringBeanElement beanElement = itb.next(); + if (propertyElement.getName().equals(beanElement.getId())) + isUniquePropertyName = false; + } + Iterator<SpringSCAReferenceElement> itrp = references.iterator(); while (itrp.hasNext()) { - SpringSCAReferenceElement referenceElement = itrp.next(); - if (propertyElement.getName().equals(referenceElement.getName())) - isUniquePropertyName = false; + SpringSCAReferenceElement referenceElement = itrp.next(); + if (propertyElement.getName().equals(referenceElement.getName())) + isUniquePropertyName = false; } - if (!isUniquePropertyName) - error("ScaPropertyNameNotUnique", beans); + if (!isUniquePropertyName) + error("ScaPropertyNameNotUnique", beans); } // end while } - + /** * Validates whether a bean definition is valid for exposing as service. */ private boolean isvalidBeanForService(SpringBeanElement beanElement) { - - if (beanElement.isInnerBean()) - return false; - if (beanElement.hasParentAttribute()) - return false; - if (beanElement.hasFactoryMethodAttribute()) - return false; - if (beanElement.hasFactoryBeanAttribute()) - return false; - if (beanElement.getClassName() == null) - return false; - if (beanElement.getClassName().startsWith("org.springframework")) - return false; + + if (beanElement.isInnerBean()) + return false; + if (beanElement.hasParentAttribute()) + return false; + if (beanElement.hasFactoryMethodAttribute()) + return false; + if (beanElement.hasFactoryBeanAttribute()) + return false; + if (beanElement.getClassName() == null) + return false; + if (beanElement.getClassName().startsWith("org.springframework")) + return false; // return true otherwise - return true; + return true; } - - + /** * Gets hold of the application-context.xml file as a Spring resource * @param locationAttr - the location attribute from the <implementation.spring../> element * @param cl - the ClassLoader for the Spring implementation */ - protected List<URL> getApplicationContextResource(URL url) - throws ContributionReadException { + protected List<URL> getApplicationContextResource(URL url) throws ContributionReadException { File manifestFile = null; File appXmlFile; File appXmlFolder; File locationFile = null; List<URL> appCtxResources = new ArrayList<URL>(); - + if (url != null) { String path = url.getPath(); locationFile = new File(path); } else { - throw new ContributionReadException("SpringXMLComponentTypeLoader getApplicationContextResource: " - + "unable to find resource file " + url); + throw new ContributionReadException( + "SpringXMLComponentTypeLoader getApplicationContextResource: " + "unable to find resource file " + + url); } if (locationFile.isDirectory()) { try { - manifestFile = new File(locationFile, "META-INF"+ File.separator +"MANIFEST.MF"); + manifestFile = new File(locationFile, "META-INF" + File.separator + "MANIFEST.MF"); if (manifestFile.exists()) { Manifest mf = new Manifest(new FileInputStream(manifestFile)); Attributes mainAttrs = mf.getMainAttributes(); String appCtxPath = mainAttrs.getValue("Spring-Context"); if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - appXmlFile = new File(locationFile, path.trim()); - if (appXmlFile.exists()) { - appCtxResources.add(appXmlFile.toURI().toURL()); - } - } - return appCtxResources; + String[] cxtPaths = appCtxPath.split(";"); + for (String path : cxtPaths) { + appXmlFile = new File(locationFile, path.trim()); + if (appXmlFile.exists()) { + appCtxResources.add(appXmlFile.toURI().toURL()); + } + } + return appCtxResources; } - } + } // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the // xml files available in the META-INF/spring folder. appXmlFolder = new File(locationFile, "META-INF" + File.separator + "spring"); if (appXmlFolder.exists()) { - File[] files = appXmlFolder.listFiles(); - for (File appFile: files) { - if (appFile.getName().endsWith(".xml")) { - appCtxResources.add(appFile.toURI().toURL()); - } - } - return appCtxResources; + File[] files = appXmlFolder.listFiles(); + for (File appFile : files) { + if (appFile.getName().endsWith(".xml")) { + appCtxResources.add(appFile.toURI().toURL()); + } + } + return appCtxResources; } } catch (IOException e) { throw new ContributionReadException("Error reading manifest " + manifestFile); } } else { - if (locationFile.isFile() && locationFile.getName().endsWith(".jar")) { + if (locationFile.isFile() && locationFile.getName().endsWith(".jar")) { try { - JarFile jf = new JarFile(locationFile); + JarFile jf = new JarFile(locationFile); JarEntry je; Manifest mf = jf.getManifest(); if (mf != null) { Attributes mainAttrs = mf.getMainAttributes(); String appCtxPath = mainAttrs.getValue("Spring-Context"); if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - je = jf.getJarEntry(path.trim()); - if (je != null) - appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() + "!/" + appCtxPath)); - } - return appCtxResources; + String[] cxtPaths = appCtxPath.split(";"); + for (String path : cxtPaths) { + je = jf.getJarEntry(path.trim()); + if (je != null) + appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() + + "!/" + + appCtxPath)); + } + return appCtxResources; } } // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the // .xml files available in the META-INF/spring folder. Enumeration<JarEntry> entries = jf.entries(); while (entries.hasMoreElements()) { - je = entries.nextElement(); - if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { - appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() + "!/" + je.getName())); - } + je = entries.nextElement(); + if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { + appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() + "!/" + je.getName())); + } } return appCtxResources; } catch (IOException e) { // TODO: create a more appropriate exception type - throw new ContributionReadException("SpringXMLComponentTypeLoader getApplicationContextResource: " - + " IO exception reading context file.", e); + throw new ContributionReadException( + "SpringXMLComponentTypeLoader getApplicationContextResource: " + " IO exception reading context file.", + e); } - } - else { - if (locationFile.getName().endsWith(".xml")) { - appCtxResources.add(url); - return appCtxResources; - } - else { - // Deal with the directory inside a jar file, in case the contribution itself is a JAR file. - try { - if (locationFile.getPath().indexOf(".jar") > 0) { - String jarPath = url.getPath().substring(5, url.getPath().indexOf("!")); - JarFile jf = new JarFile(jarPath); - JarEntry je = jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/")+2) - + "/" + "META-INF" + "/" + "MANIFEST.MF"); - if (je != null) { - Manifest mf = new Manifest(jf.getInputStream(je)); - Attributes mainAttrs = mf.getMainAttributes(); - String appCtxPath = mainAttrs.getValue("Spring-Context"); - if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - je = jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/")+2) + "/" + path.trim()); - if (je != null) { - appCtxResources.add(new URL("jar:" + url.getPath() + "/" + path.trim())); - } - } - return appCtxResources; - } - } - // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the - // .xml files available in the META-INF/spring folder. - Enumeration<JarEntry> entries = jf.entries(); - while (entries.hasMoreElements()) { - je = entries.nextElement(); - if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { - appCtxResources.add(new URL("jar:" + url.getPath() + "/" + je.getName())); - } - } + } else { + if (locationFile.getName().endsWith(".xml")) { + appCtxResources.add(url); + return appCtxResources; + } else { + // Deal with the directory inside a jar file, in case the contribution itself is a JAR file. + try { + if (locationFile.getPath().indexOf(".jar") > 0) { + String jarPath = url.getPath().substring(5, url.getPath().indexOf("!")); + JarFile jf = new JarFile(jarPath); + JarEntry je = + jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/") + 2) + "/" + + "META-INF" + + "/" + + "MANIFEST.MF"); + if (je != null) { + Manifest mf = new Manifest(jf.getInputStream(je)); + Attributes mainAttrs = mf.getMainAttributes(); + String appCtxPath = mainAttrs.getValue("Spring-Context"); + if (appCtxPath != null) { + String[] cxtPaths = appCtxPath.split(";"); + for (String path : cxtPaths) { + je = + jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/") + 2) + "/" + + path.trim()); + if (je != null) { + appCtxResources.add(new URL("jar:" + url.getPath() + "/" + path.trim())); + } + } + return appCtxResources; + } + } + // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the + // .xml files available in the META-INF/spring folder. + Enumeration<JarEntry> entries = jf.entries(); + while (entries.hasMoreElements()) { + je = entries.nextElement(); + if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { + appCtxResources.add(new URL("jar:" + url.getPath() + "/" + je.getName())); + } + } return appCtxResources; - } - } catch (IOException e) { + } + } catch (IOException e) { throw new ContributionReadException("Error reading manifest " + manifestFile); } - } - } + } + } } - throw new ContributionReadException("SpringXMLComponentTypeLoader getApplicationContextResource: " - + "unable to read resource file " + url); + throw new ContributionReadException( + "SpringXMLComponentTypeLoader getApplicationContextResource: " + "unable to read resource file " + + url); } // end method getApplicationContextResource /** @@ -1114,40 +1163,40 @@ public class SpringXMLComponentTypeLoader { return reference; } - + private class ContextClassLoader extends ClassLoader { - public ContextClassLoader(ModelResolver resolver, ProcessorContext context) { - super(); - this.resolver = resolver; - this.context = context; - } - - private ModelResolver resolver; - private ProcessorContext context; - - @Override - protected Class<?> findClass(String name) throws ClassNotFoundException { - return SpringXMLComponentTypeLoader.this.resolveClass(resolver, name, context); - } - - @Override - protected URL findResource(String name) { - try { - return resolveLocation(resolver, name, context); - } catch (Exception e) { - return null; - } - } - - @Override - protected Enumeration<URL> findResources(String name) throws IOException { - URL url = findResource(name); - if (url != null) { - return Collections.enumeration(Arrays.asList(url)); - } else { - Collection<URL> urls = Collections.emptyList(); - return Collections.enumeration(urls); - } - } + public ContextClassLoader(ModelResolver resolver, ProcessorContext context) { + super(); + this.resolver = resolver; + this.context = context; + } + + private ModelResolver resolver; + private ProcessorContext context; + + @Override + protected Class<?> findClass(String name) throws ClassNotFoundException { + return SpringXMLComponentTypeLoader.this.resolveClass(resolver, name, context); + } + + @Override + protected URL findResource(String name) { + try { + return resolveLocation(resolver, name, context); + } catch (Exception e) { + return null; + } + } + + @Override + protected Enumeration<URL> findResources(String name) throws IOException { + URL url = findResource(name); + if (url != null) { + return Collections.enumeration(Arrays.asList(url)); + } else { + Collection<URL> urls = Collections.emptyList(); + return Collections.enumeration(urls); + } + } } -} // end class SpringXMLComponentTypeLoader
\ No newline at end of file +} // end class SpringXMLComponentTypeLoader diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ComponentTie.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ComponentTie.java index b97c02d216..63e88f15a5 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ComponentTie.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ComponentTie.java @@ -30,7 +30,7 @@ import org.apache.tuscany.sca.runtime.RuntimeComponent; public class ComponentTie { private RuntimeComponent component; - + public ComponentTie(RuntimeComponent component) { this.component = component; } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/PropertyValueTie.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/PropertyValueTie.java index 89d14961ac..6289ec8626 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/PropertyValueTie.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/PropertyValueTie.java @@ -35,7 +35,7 @@ public class PropertyValueTie { private RuntimeComponent component; private JavaPropertyValueObjectFactory propertyFactory; - + public PropertyValueTie(RuntimeComponent component, JavaPropertyValueObjectFactory propertyFactory) { this.component = component; this.propertyFactory = propertyFactory; @@ -46,8 +46,8 @@ public class PropertyValueTie { for (ComponentProperty prop : props) { if (prop.getName().equals(name)) { return propertyFactory.createValueFactory(prop, prop.getValue(), type).getInstance(); - } - } + } + } return null; // property name not found } } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java index dcb9a53a33..6980b81e5d 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java @@ -43,11 +43,11 @@ public class SpringContextStub { private Method getBeanMethod; public SpringContextStub(RuntimeComponent component, - SpringImplementation implementation, - ProxyFactory proxyService, - JavaPropertyValueObjectFactory propertyValueObjectFactory) { + SpringImplementation implementation, + ProxyFactory proxyService, + JavaPropertyValueObjectFactory propertyValueObjectFactory) { - initTie(component, implementation, propertyValueObjectFactory); + initTie(component, implementation, propertyValueObjectFactory); } @@ -60,14 +60,21 @@ public class SpringContextStub { try { - Class<?> stubClass = Class.forName("org.apache.tuscany.sca.implementation.spring.runtime.context.SpringImplementationStub", true, cl); - Constructor<?> stubConstructor = stubClass.getConstructor(new Class<?>[]{Object.class}); - Object stub = stubConstructor.newInstance(new SpringImplementationTie(implementation, component, propertyValueObjectFactory)); - - Class<?> tieClass = Class.forName("org.apache.tuscany.sca.implementation.spring.runtime.context.SpringContextTie", true, cl); - Constructor<?> tieConstructor = tieClass.getConstructor(new Class<?>[]{stubClass, List.class}); + Class<?> stubClass = + Class.forName("org.apache.tuscany.sca.implementation.spring.runtime.context.SpringImplementationStub", + true, + cl); + Constructor<?> stubConstructor = stubClass.getConstructor(new Class<?>[] {Object.class}); + Object stub = + stubConstructor.newInstance(new SpringImplementationTie(implementation, component, + propertyValueObjectFactory)); + + Class<?> tieClass = + Class + .forName("org.apache.tuscany.sca.implementation.spring.runtime.context.SpringContextTie", true, cl); + Constructor<?> tieConstructor = tieClass.getConstructor(new Class<?>[] {stubClass, List.class}); this.tie = tieConstructor.newInstance(stub, implementation.getResource()); - + this.startMethod = tieClass.getMethod("start"); this.closeMethod = tieClass.getMethod("close"); this.getBeanMethod = tieClass.getMethod("getBean", String.class); @@ -85,7 +92,7 @@ public class SpringContextStub { } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { - e.printStackTrace(); + e.printStackTrace(); throw new RuntimeException(e); } } @@ -98,7 +105,7 @@ public class SpringContextStub { } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { - e.printStackTrace(); + e.printStackTrace(); throw new RuntimeException(e); } } @@ -111,7 +118,7 @@ public class SpringContextStub { } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { - e.printStackTrace(); + e.printStackTrace(); throw new RuntimeException(e); } } @@ -126,9 +133,9 @@ public class SpringContextStub { } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { - e.printStackTrace(); + e.printStackTrace(); throw new RuntimeException(e); } } -}
\ No newline at end of file +} diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java index 0ecd00d5a8..304f3e2c1a 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java @@ -33,12 +33,12 @@ import org.apache.tuscany.sca.runtime.RuntimeComponentService; */ public class SpringImplementationProvider implements ImplementationProvider { private RuntimeComponent component; - + // A Spring application context object private SpringContextStub springContext; - + private SpringImplementation implementation; - + private JavaPropertyValueObjectFactory propertyValueObjectFactory; /** @@ -56,14 +56,14 @@ public class SpringImplementationProvider implements ImplementationProvider { this.component = component; this.propertyValueObjectFactory = propertyValueObjectFactory; - springContext = new SpringContextStub(component, implementation, proxyService, propertyValueObjectFactory); - + springContext = new SpringContextStub(component, implementation, proxyService, propertyValueObjectFactory); + } // end constructor public Invoker createInvoker(RuntimeComponentService service, Operation operation) { return new SpringInvoker(component, springContext, service, operation); } - + public boolean supportsOneWayInvocation() { return false; } @@ -79,7 +79,7 @@ public class SpringImplementationProvider implements ImplementationProvider { * Stop this implementation instance */ public void stop() { - springContext.close(); + springContext.close(); } } // end class SpringImplementationProvider diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java index 01b458d1f5..5d9d6b31c4 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java @@ -44,8 +44,8 @@ public class SpringImplementationProviderFactory implements ImplementationProvid */ public SpringImplementationProviderFactory(ExtensionPointRegistry extensionPoints) { super(); - - proxyFactory = ExtensibleProxyFactory.getInstance(extensionPoints); + + proxyFactory = ExtensibleProxyFactory.getInstance(extensionPoints); // TODO: could the runtime have a default PropertyValueObjectFactory? propertyFactory = new JavaPropertyValueObjectFactory(new MediatorImpl(extensionPoints)); @@ -60,10 +60,7 @@ public class SpringImplementationProviderFactory implements ImplementationProvid */ public ImplementationProvider createImplementationProvider(RuntimeComponent component, SpringImplementation implementation) { - return new SpringImplementationProvider(component, - implementation, - proxyFactory, - propertyFactory); + return new SpringImplementationProvider(component, implementation, proxyFactory, propertyFactory); } /** diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java index a65db51449..749081e95b 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java @@ -42,13 +42,15 @@ public class SpringImplementationTie { private SpringImplementation implementation; private RuntimeComponent component; private JavaPropertyValueObjectFactory propertyFactory; - - public SpringImplementationTie(SpringImplementation implementation, RuntimeComponent component, JavaPropertyValueObjectFactory propertyFactory) { + + public SpringImplementationTie(SpringImplementation implementation, + RuntimeComponent component, + JavaPropertyValueObjectFactory propertyFactory) { this.implementation = implementation; this.component = component; this.propertyFactory = propertyFactory; } - + public String getURI() { return implementation.getURI(); } @@ -56,6 +58,7 @@ public class SpringImplementationTie { public String getComponentName() { return component.getName(); } + /** * Method to create a Java Bean for a Property value * @param <B> the class type of the Bean @@ -127,11 +130,11 @@ public class SpringImplementationTie { return getPropertyBean(requiredType, property.getName()); } // end if } // end for - // TODO: NoSuchBeanException + // TODO: NoSuchBeanException throw new RuntimeException("Unable to find Bean with name " + name); } // end method getBean( String, Class ) - + public Object getComponentTie() { return new ComponentTie(component); } @@ -139,9 +142,9 @@ public class SpringImplementationTie { public Object getPropertyValueTie() { return new PropertyValueTie(component, propertyFactory); } - + public ClassLoader getClassLoader() { - return implementation.getClassLoader(); + return implementation.getClassLoader(); } -}
\ No newline at end of file +} diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvocationException.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvocationException.java index 6a23830aa9..dbc6f6f687 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvocationException.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvocationException.java @@ -28,13 +28,13 @@ public class SpringInvocationException extends Exception { public SpringInvocationException(String msg) { super(msg); } - + public SpringInvocationException(Throwable e) { super(e); } - - public SpringInvocationException(String msg,Throwable e) { - super(msg,e); + + public SpringInvocationException(String msg, Throwable e) { + super(msg, e); } } diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvoker.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvoker.java index 1f9796ccc4..fc0642cdb1 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvoker.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringInvoker.java @@ -70,14 +70,14 @@ public class SpringInvoker implements Invoker { } // end constructor SpringInvoker // Lazy-load the method to avoid timing problems with the Spring Context - private void setupMethod() throws SpringInvocationException{ + private void setupMethod() throws SpringInvocationException { try { bean = springContext.getBean(beanElement.getId()); Class<?> beanClass = bean.getClass(); theMethod = JavaInterfaceUtil.findMethod(beanClass, operation); //System.out.println("SpringInvoker - found method " + theMethod.getName() ); } catch (NoSuchMethodException e) { - throw new SpringInvocationException(e); + throw new SpringInvocationException(e); } } @@ -98,9 +98,10 @@ public class SpringInvoker implements Invoker { } return ret; } catch (InvocationTargetException e) { - throw new SpringInvocationException("Spring invoker invoke method '"+ theMethod.getName()+"' error.",e.getCause()); + throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", + e.getCause()); } catch (Exception e) { - throw new SpringInvocationException("Spring invoker invoke method '"+ theMethod.getName()+"' error.",e); + throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", e); } } // end method doInvoke @@ -114,7 +115,7 @@ public class SpringInvoker implements Invoker { msg.setBody(resp); } catch (SpringInvocationException e) { msg.setFaultBody(e.getCause()); - }catch (Throwable e) { + } catch (Throwable e) { msg.setFaultBody(e); } //System.out.println("Spring Invoker - invoke called"); diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java index d553011098..086dd3b5cf 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java @@ -51,7 +51,8 @@ import org.apache.tuscany.sca.monitor.Problem.Severity; * * @version $Rev$ $Date$ */ -public class SpringImplementationProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<SpringImplementation> { +public class SpringImplementationProcessor extends BaseStAXArtifactProcessor implements + StAXArtifactProcessor<SpringImplementation> { private static final String LOCATION = "location"; private static final String IMPLEMENTATION_SPRING = "implementation.spring"; @@ -61,7 +62,6 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp private ExtensionPointRegistry registry; private AssemblyFactory assemblyFactory; private PolicySubjectProcessor policyProcessor; - private FactoryExtensionPoint factories; @@ -80,10 +80,16 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp * @param model */ private void error(Monitor monitor, String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "impl-spring-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "impl-spring-validation-messages", + Severity.ERROR, + model, + message, + ex); + monitor.problem(problem); + } } /** @@ -94,10 +100,16 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp * @param model */ private void error(Monitor monitor, String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "impl-spring-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "impl-spring-validation-messages", + Severity.ERROR, + model, + message, + (Object[])messageParameters); + monitor.problem(problem); + } } /* @@ -119,7 +131,8 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp * then the default behaviour is to build an application context using all the *.xml files * in the METAINF/spring directory. */ - public SpringImplementation read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { + public SpringImplementation read(XMLStreamReader reader, ProcessorContext context) + throws ContributionReadException, XMLStreamException { // Create the Spring implementation SpringImplementation springImplementation = null; @@ -127,12 +140,12 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp // Read the location attribute for the spring implementation String springLocation = getURIString(reader, LOCATION); if (springLocation != null) { - springImplementation = new SpringImplementation(); - springImplementation.setLocation(springLocation); - springImplementation.setUnresolved(true); + springImplementation = new SpringImplementation(); + springImplementation.setLocation(springLocation); + springImplementation.setUnresolved(true); processComponentType(springImplementation); } else { - error(context.getMonitor(), "LocationAttributeMissing", reader); + error(context.getMonitor(), "LocationAttributeMissing", reader); //throw new ContributionReadException(MSG_LOCATION_MISSING); } @@ -167,7 +180,8 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp * Write out the XML representation of the Spring implementation * <implementation.spring location="..." /> */ - public void write(SpringImplementation springImplementation, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException { + public void write(SpringImplementation springImplementation, XMLStreamWriter writer, ProcessorContext context) + throws ContributionWriteException, XMLStreamException { // Write <implementation.spring> writer.writeStartElement(Constants.SCA11_NS, IMPLEMENTATION_SPRING); @@ -188,19 +202,18 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp public void resolve(SpringImplementation springImplementation, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { - if (springImplementation == null) - return; + if (springImplementation == null) + return; - Monitor monitor = context.getMonitor(); + Monitor monitor = context.getMonitor(); /* Load the Spring component type by reading the Spring application context */ - SpringXMLComponentTypeLoader springLoader = - new SpringXMLComponentTypeLoader(registry, monitor); + SpringXMLComponentTypeLoader springLoader = new SpringXMLComponentTypeLoader(registry, monitor); try { // Load the Spring Implementation information from its application context file... springLoader.load(springImplementation, resolver, context); } catch (ContributionReadException e) { - ContributionResolveException ce = new ContributionResolveException(e); - error(monitor, "ContributionResolveException", resolver, ce); + ContributionResolveException ce = new ContributionResolveException(e); + error(monitor, "ContributionResolveException", resolver, ce); throw ce; } @@ -209,12 +222,12 @@ public class SpringImplementationProcessor extends BaseStAXArtifactProcessor imp // If the introspection fails to resolve, try to find a side file... ComponentType componentType = resolver.resolveModel(ComponentType.class, ct, context); if (componentType.isUnresolved()) { - error(monitor, "UnableToResolveComponentType", resolver); + error(monitor, "UnableToResolveComponentType", resolver); //throw new ContributionResolveException("SpringArtifactProcessor: unable to resolve componentType for Spring component"); } else { springImplementation.setComponentType(componentType); springImplementation.setUnresolved(false); - } + } } // end if |