You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/10/24 06:31:01 UTC

svn commit: r587778 [9/13] - in /incubator/tuscany/branches/sca-java-1.0.1: ./ distribution/ distribution/bundle/ distribution/manifest/ distribution/webapp/src/main/java/org/apache/tuscany/sca/webapp/ distribution/webapp/src/main/resources/_node/ dist...

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaImplementationProvider.java Tue Oct 23 21:30:02 2007
@@ -19,6 +19,11 @@
 
 package org.apache.tuscany.sca.implementation.java.invocation;
 
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.context.ComponentContextFactory;
 import org.apache.tuscany.sca.context.RequestContextFactory;
@@ -36,6 +41,10 @@
 import org.apache.tuscany.sca.implementation.java.injection.ResourceObjectFactory;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.util.PolicyHandler;
+import org.apache.tuscany.sca.policy.util.PolicySetHandlerUtil;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
 import org.osoa.sca.ComponentContext;
@@ -48,6 +57,7 @@
     private JavaImplementation implementation;
     private JavaComponentContextProvider componentContextProvider;
     private RequestContextFactory requestContextFactory;
+    private Map<PolicySet, PolicyHandler> policyHandlers = new Hashtable<PolicySet, PolicyHandler>();
     
     public JavaImplementationProvider(RuntimeComponent component,
                                       JavaImplementation implementation,
@@ -64,7 +74,7 @@
             configuration.setProxyFactory(proxyService);
             componentContextProvider =
                 new JavaComponentContextProvider(component, configuration, dataBindingRegistry, propertyValueObjectFactory,
-                                      componentContextFactory, requestContextFactory);
+                                      componentContextFactory, requestContextFactory, policyHandlers);
 
             Scope scope = getScope();
 
@@ -93,10 +103,29 @@
 
             componentContextProvider.configureProperties(component.getProperties());
             handleResources(implementation, proxyService);
+            loadPolicyHandlers();
         } catch (Exception e) {
             throw new IllegalStateException(e);
         }
-
+        
+    }
+    
+    private void loadPolicyHandlers() throws Exception {
+        Map<QName, PolicyHandler> availablePolicyHandlers = 
+            PolicySetHandlerUtil.getPolicyHandlers(Thread.currentThread().getContextClassLoader(), 
+                                                    "org.apache.tuscany.sca.policy.PolicySetHandlers");
+        if ( implementation instanceof PolicySetAttachPoint ) {
+            PolicyHandler aHandler = null;
+            PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
+            for ( PolicySet policySet : policiedImpl.getPolicySets() ) {
+                if ( ( aHandler = availablePolicyHandlers.get(policySet.getName()) ) != null ) {
+                    aHandler.setApplicablePolicySet(policySet);
+                    policyHandlers.put(policySet, aHandler);
+                } else {
+                    //FIXME : maybe there must be a warning thrown here
+                }
+            }
+        }
     }
 
     private void handleResources(JavaImplementation componentType, ProxyFactory proxyService) {
@@ -169,5 +198,4 @@
     public long getMaxIdleTime() {
         return implementation.getMaxIdleTime();
     }
-
 }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/pom.xml?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/pom.xml Tue Oct 23 21:30:02 2007
@@ -48,6 +48,20 @@
             <version>${version}</version>
             <scope>test</scope>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-definitions</artifactId>
+            <version>${version}</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-definitions-xml</artifactId>
+            <version>${version}</version>
+            <scope>test</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java Tue Oct 23 21:30:02 2007
@@ -53,7 +53,10 @@
 import org.apache.tuscany.sca.implementation.java.introspect.impl.JavaIntrospectionHelper;
 import org.apache.tuscany.sca.interfacedef.Interface;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
+import org.apache.tuscany.sca.policy.IntentAttachPointType;
+import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
 
 public class JavaImplementationProcessor implements StAXArtifactProcessor<JavaImplementation>,
     JavaImplementationConstants {
@@ -62,18 +65,28 @@
     private AssemblyFactory assemblyFactory;
     private PolicyFactory policyFactory;
     private PolicyAttachPointProcessor policyProcessor;
+    private IntentAttachPointTypeFactory  intentAttachPointTypeFactory;
 
     public JavaImplementationProcessor(ModelFactoryExtensionPoint modelFactories) {
         this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
         this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
         this.javaFactory = modelFactories.getFactory(JavaImplementationFactory.class);
         this.policyProcessor = new PolicyAttachPointProcessor(policyFactory);
+        this.intentAttachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
     }
 
     public JavaImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
 
         // Read an <implementation.java>
         JavaImplementation javaImplementation = javaFactory.createJavaImplementation();
+        
+        if ( javaImplementation instanceof PolicySetAttachPoint ) {
+            IntentAttachPointType implType = intentAttachPointTypeFactory.createImplementationType();
+            implType.setName(getArtifactType());
+            implType.setUnresolved(true);
+            ((PolicySetAttachPoint)javaImplementation).setType(implType);
+        }
+        
         javaImplementation.setUnresolved(true);
         javaImplementation.setName(reader.getAttributeValue(null, CLASS));
 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java Tue Oct 23 21:30:02 2007
@@ -20,6 +20,8 @@
 package org.apache.tuscany.sca.implementation.java.xml;
 
 import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
 
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLOutputFactory;
@@ -33,6 +35,7 @@
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl;
 import org.apache.tuscany.sca.assembly.xml.CompositeProcessor;
+import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor;
 import org.apache.tuscany.sca.binding.sca.impl.SCABindingFactoryImpl;
 import org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
@@ -40,12 +43,17 @@
 import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.definitions.SCADefinitions;
+import org.apache.tuscany.sca.definitions.xml.SCADefinitionsDocumentProcessor;
 import org.apache.tuscany.sca.implementation.java.DefaultJavaImplementationFactory;
 import org.apache.tuscany.sca.implementation.java.JavaImplementationFactory;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
+import org.apache.tuscany.sca.policy.DefaultIntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
+import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
 
 /**
  * Test reading Java implementations.
@@ -61,6 +69,8 @@
     private SCABindingFactory scaBindingFactory;
     private PolicyFactory policyFactory;
     private InterfaceContractMapper mapper;
+    SCADefinitionsDocumentProcessor scaDefnDocProcessor;
+    private IntentAttachPointTypeFactory  intentAttachPointTypeFactory;
     
     @Override
     public void setUp() throws Exception {
@@ -74,6 +84,7 @@
         inputFactory = XMLInputFactory.newInstance();
         staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(modelFactories);
         staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
+        intentAttachPointTypeFactory = new DefaultIntentAttachPointTypeFactory();
         
         JavaImplementationFactory javaImplementationFactory = new DefaultJavaImplementationFactory();
         modelFactories.addFactory(javaImplementationFactory);
@@ -82,7 +93,9 @@
         staxProcessors.addArtifactProcessor(compositeProcessor);
 
         JavaImplementationProcessor javaProcessor = new JavaImplementationProcessor(modelFactories);
-        staxProcessors.addArtifactProcessor(javaProcessor); 
+        staxProcessors.addArtifactProcessor(javaProcessor);  
+        
+        scaDefnDocProcessor = new SCADefinitionsDocumentProcessor(staxProcessors, staxProcessor, inputFactory, policyFactory);
     }
 
     @Override
@@ -101,23 +114,36 @@
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, mapper, null, null);
         compositeUtil.build(composite);
 
     }
 
     public void testReadAndResolveComposite() throws Exception {
+        ModelResolver resolver = new TestModelResolver(getClass().getClassLoader());
+        
+        URL url = getClass().getResource("definitions.xml");
+        URI uri = URI.create("definitions.xml");
+        scaDefnDocProcessor.setDomainModelResolver(resolver);
+        SCADefinitions scaDefns = scaDefnDocProcessor.read(null, uri, url);
+                
         CompositeProcessor compositeProcessor = new CompositeProcessor(new ContributionFactoryImpl(), assemblyFactory, policyFactory, mapper, staxProcessor);
         InputStream is = getClass().getResourceAsStream("Calculator.composite");
         XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);
         
-        ModelResolver resolver = new TestModelResolver(getClass().getClassLoader());
+        staxProcessor.resolve(scaDefns, resolver);
         staxProcessor.resolve(composite, resolver);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        //intents are not computed for the implementation as yet
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(), 1);
+        
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, mapper, null, null);
         compositeUtil.build(composite);
+        
+        //intents are computed and aggregate intents from ancestor elements
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(), 3);
 
         //new PrintUtil(System.out).print(composite);
     }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/sca/implementation/java/xml/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/sca/implementation/java/xml/Calculator.composite?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/sca/implementation/java/xml/Calculator.composite (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/sca/implementation/java/xml/Calculator.composite Tue Oct 23 21:30:02 2007
@@ -19,15 +19,17 @@
 -->
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
 	xmlns:calc="http://sample.calculator"
+	requires="cns:tuscanyIntent_1"
 	targetNamespace="http://sample.calculator"
+	xmlns:cns="http://test" 
 	name="Calculator">
 
     <service name="CalculatorService" promote="CalculatorServiceComponent">
         <interface.java interface="calculator.CalculatorService"/>
     </service>
 
-    <component name="CalculatorServiceComponent">
-		<implementation.java class="calculator.CalculatorServiceImpl"/>
+    <component name="CalculatorServiceComponent" requires="cns:tuscanyIntent_2">
+		<implementation.java class="calculator.CalculatorServiceImpl" requires="cns:tuscanyIntent_3" />
         <reference name="addService" target="AddServiceComponent"/>
         <reference name="subtractService" target="SubtractServiceComponent"/>
         <reference name="multiplyService" target="MultiplyServiceComponent"/>

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/impl/JavaClassIntrospectorImpl.java Tue Oct 23 21:30:02 2007
@@ -86,17 +86,17 @@
             }
         }
 
-        Set<Method> methods = JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz, true);
-        for (Method method : methods) {
-            for (JavaClassVisitor processor : visitors) {
-                processor.visitMethod(method, type);
-            }
-        }
-
         Set<Field> fields = JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz, true);
         for (Field field : fields) {
             for (JavaClassVisitor extension : visitors) {
                 extension.visitField(field, type);
+            }
+        }
+        
+        Set<Method> methods = JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz, true);
+        for (Method method : methods) {
+            for (JavaClassVisitor processor : visitors) {
+                processor.visitMethod(method, type);
             }
         }
 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/AbstractPropertyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/AbstractPropertyProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/AbstractPropertyProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/AbstractPropertyProcessor.java Tue Oct 23 21:30:02 2007
@@ -19,9 +19,11 @@
 package org.apache.tuscany.sca.implementation.java.introspect.impl;
 
 import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
@@ -40,11 +42,25 @@
  */
 public abstract class AbstractPropertyProcessor<A extends Annotation> extends BaseJavaClassVisitor {
     private final Class<A> annotationClass;
-    
+
     protected AbstractPropertyProcessor(AssemblyFactory assemblyFactory, Class<A> annotationClass) {
         super(assemblyFactory);
         this.annotationClass = annotationClass;
     }
+    
+    private boolean removeProperty(JavaElementImpl prop, JavaImplementation type) {
+        if(prop==null) {
+            return false;
+        }
+        List<Property> props = type.getProperties();
+        for(int i=0;i<props.size();i++) {
+            if(props.get(i).getName().equals(prop.getName())) {
+                props.remove(i);
+                return true;
+            }
+        }
+        return false;
+    }
 
     @Override
     public void visitMethod(Method method, JavaImplementation type) throws IntrospectionException {
@@ -53,12 +69,8 @@
             return;
         }
 
-        if (!Void.TYPE.equals(method.getReturnType())) {
-            throw new IllegalPropertyException("Method does not have void return type", method);
-        }
-        Class[] paramTypes = method.getParameterTypes();
-        if (paramTypes.length != 1) {
-            throw new IllegalPropertyException("Method must have a single parameter", method);
+        if (!JavaIntrospectionHelper.isSetter(method)) {
+            throw new IllegalPropertyException("Annotated method is not a setter: " + method, method);
         }
 
         String name = getName(annotation);
@@ -70,10 +82,14 @@
         }
 
         Map<String, JavaElementImpl> properties = type.getPropertyMembers();
-        if (properties.containsKey(name)) {
+        JavaElementImpl prop = properties.get(name);
+        // Setter override field
+        if (prop != null && prop.getElementType() != ElementType.FIELD) {
             throw new DuplicatePropertyException(name);
         }
 
+        removeProperty(prop, type);
+        
         JavaElementImpl element = new JavaElementImpl(method, 0);
         Property property = createProperty(name, element);
 
@@ -101,15 +117,19 @@
         }
 
         Map<String, JavaElementImpl> properties = type.getPropertyMembers();
-        if (properties.containsKey(name)) {
+        JavaElementImpl prop = properties.get(name);
+        // Setter override field
+        if (prop != null && prop.getElementType() == ElementType.FIELD) {
             throw new DuplicatePropertyException(name);
         }
 
-        JavaElementImpl element = new JavaElementImpl(field);
-        Property property = createProperty(name, element);
-        initProperty(property, annotation);
-        type.getProperties().add(property);
-        properties.put(name, element);    
+        if (prop == null) {
+            JavaElementImpl element = new JavaElementImpl(field);
+            Property property = createProperty(name, element);
+            initProperty(property, annotation);
+            type.getProperties().add(property);
+            properties.put(name, element);
+        }
     }
 
     @Override
@@ -133,9 +153,13 @@
                 name = parameter.getName();
             }
 
-            if (properties.containsKey(name)) {
-                throw new DuplicatePropertyException("Duplication property: " + name);
+            JavaElementImpl prop = properties.get(name);
+            // Setter override field
+            if (prop != null && prop.getElementType() != ElementType.FIELD) {
+                throw new DuplicatePropertyException(name);
             }
+            removeProperty(prop, type);
+            
             parameter.setName(name);
             parameter.setClassifer(annotationClass);
             Property property = createProperty(name, parameter);
@@ -150,7 +174,7 @@
     protected abstract void initProperty(Property property, A annotation) throws IntrospectionException;
 
     @SuppressWarnings("unchecked")
-    protected  Property createProperty(String name, JavaElementImpl element) throws IntrospectionException {
+    protected Property createProperty(String name, JavaElementImpl element) throws IntrospectionException {
 
         Property property = assemblyFactory.createProperty();
         property.setName(name);

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java Tue Oct 23 21:30:02 2007
@@ -73,8 +73,7 @@
 public class HeuristicPojoProcessor extends BaseJavaClassVisitor {
     private JavaInterfaceFactory javaFactory;
 
-    public HeuristicPojoProcessor(AssemblyFactory assemblyFactory,
-                                  JavaInterfaceFactory javaFactory) {
+    public HeuristicPojoProcessor(AssemblyFactory assemblyFactory, JavaInterfaceFactory javaFactory) {
         super(assemblyFactory);
         this.javaFactory = javaFactory;
     }
@@ -97,12 +96,12 @@
              * is the implementation class.
              */
             Set<Class> interfaces = getAllInterfaces(clazz);
-            for(Class<?> i: interfaces) {
-                if(i.isAnnotationPresent(Remotable.class)) {
+            for (Class<?> i : interfaces) {
+                if (i.isAnnotationPresent(Remotable.class)) {
                     addService(type, i);
                 }
             }
-            if(services.isEmpty()) {
+            if (services.isEmpty()) {
                 // class is the interface
                 addService(type, clazz);
             }
@@ -110,12 +109,12 @@
         Set<Method> methods = getAllUniquePublicProtectedMethods(clazz, false);
         if (!type.getReferenceMembers().isEmpty() || !type.getPropertyMembers().isEmpty()) {
             // references and properties have been explicitly defined
-//            if (type.getServices().isEmpty()) {
-//                calculateServiceInterface(clazz, type, methods);
-//                if (type.getServices().isEmpty()) {
-//                    throw new ServiceTypeNotFoundException(clazz.getName());
-//                }
-//            }
+            //            if (type.getServices().isEmpty()) {
+            //                calculateServiceInterface(clazz, type, methods);
+            //                if (type.getServices().isEmpty()) {
+            //                    throw new ServiceTypeNotFoundException(clazz.getName());
+            //                }
+            //            }
             evaluateConstructor(type, clazz);
             return;
         }
@@ -134,14 +133,14 @@
 
     private boolean isPublicSetter(Method method) {
         return method.getParameterTypes().length == 1 && Modifier.isPublic(method.getModifiers())
-               && method.getName().startsWith("set")
-               && method.getReturnType() == void.class;
+            && method.getName().startsWith("set")
+            && method.getReturnType() == void.class;
     }
 
     private boolean isProtectedSetter(Method method) {
         return method.getParameterTypes().length == 1 && Modifier.isProtected(method.getModifiers())
-               && method.getName().startsWith("set")
-               && method.getReturnType() == void.class;
+            && method.getName().startsWith("set")
+            && method.getReturnType() == void.class;
     }
 
     private <T> void calcPropRefs(Set<Method> methods,
@@ -188,11 +187,13 @@
             String name = toPropertyName(method.getName());
             setters.add(name);
             // avoid duplicate property or ref names
-            if (!type.getPropertyMembers().containsKey(name) && !type.getReferenceMembers().containsKey(name)) {
-                if (isReferenceType(param, method.getGenericParameterTypes()[0])) {
+            if (isReferenceType(param, method.getGenericParameterTypes()[0])) {
+                if (!type.getReferenceMembers().containsKey(name)) {
                     type.getReferences().add(createReference(name, param));
                     type.getReferenceMembers().put(name, new JavaElementImpl(method, 0));
-                } else {
+                }
+            } else {
+                if (!type.getPropertyMembers().containsKey(name)) {
                     type.getProperties().add(createProperty(name, param));
                     type.getPropertyMembers().put(name, new JavaElementImpl(method, 0));
                 }
@@ -213,11 +214,15 @@
             String name = field.getName();
             Class<?> paramType = field.getType();
             if (isReferenceType(paramType, field.getGenericType())) {
-                type.getReferences().add(createReference(name, paramType));
-                type.getReferenceMembers().put(name, new JavaElementImpl(field));
+                if (!type.getReferenceMembers().containsKey(name)) {
+                    type.getReferences().add(createReference(name, paramType));
+                    type.getReferenceMembers().put(name, new JavaElementImpl(field));
+                }
             } else {
-                type.getProperties().add(createProperty(name, paramType));
-                type.getPropertyMembers().put(name, new JavaElementImpl(field));
+                if (!type.getPropertyMembers().containsKey(name)) {
+                    type.getProperties().add(createProperty(name, paramType));
+                    type.getPropertyMembers().put(name, new JavaElementImpl(field));
+                }
             }
         }
     }
@@ -239,7 +244,7 @@
         Constructor constructor;
         boolean explict = false;
         if (definition != null && definition.getConstructor()
-                .isAnnotationPresent(org.osoa.sca.annotations.Constructor.class)) {
+            .isAnnotationPresent(org.osoa.sca.annotations.Constructor.class)) {
             // the constructor was already defined explicitly
             return;
         } else if (definition != null) {
@@ -452,7 +457,7 @@
     private boolean isReferenceType(Class<?> cls, Type genericType) {
         Class<?> baseType = JavaIntrospectionHelper.getBaseType(cls, genericType);
         return baseType.isInterface() && (baseType.isAnnotationPresent(Remotable.class) || baseType
-                   .isAnnotationPresent(Service.class));
+            .isAnnotationPresent(Service.class));
     }
 
     /**

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JavaIntrospectionHelper.java Tue Oct 23 21:30:02 2007
@@ -491,5 +491,14 @@
             getAllInterfaces(superClass, implemented);
         }
     }
+    
+    public static boolean isSetter(Method method) {
+        return (void.class == method.getReturnType() && method.getParameterTypes().length == 1 && method.getName()
+            .startsWith("set"));
+    }
 
+    public static boolean isGetter(Method method) {
+        return (void.class != method.getReturnType() && method.getParameterTypes().length == 0 && method.getName()
+            .startsWith("get"));
+    }    
 }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java Tue Oct 23 21:30:02 2007
@@ -34,7 +34,9 @@
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.osoa.sca.annotations.PolicySets;
 import org.osoa.sca.annotations.Requires;
 
 /**
@@ -71,13 +73,15 @@
      * @param clazz
      * @param requiredIntents
      */
-    private void readIntents(Class<?> clazz, List<Intent> requiredIntents) {
+    private void readIntentsAndPolicySets(Class<?> clazz, 
+                                          List<Intent> requiredIntents, 
+                                          List<PolicySet> policySets) {
         Requires intentAnnotation = clazz.getAnnotation(Requires.class);
         if (intentAnnotation != null) {
             String[] intentNames = intentAnnotation.value();
             if (intentNames.length != 0) {
                 for (String intentName : intentNames) {
-                    
+
                     // Add each intent to the list
                     Intent intent = policyFactory.createIntent();
                     intent.setName(getQName(intentName));
@@ -85,6 +89,20 @@
                 }
             }
         }
+        
+        PolicySets policySetAnnotation = clazz.getAnnotation(PolicySets.class);
+        if (policySetAnnotation != null) {
+            String[] policySetNames = policySetAnnotation.value();
+            if (policySetNames.length != 0) {
+                for (String policySetName : policySetNames) {
+
+                    // Add each intent to the list
+                    PolicySet policySet = policyFactory.createPolicySet();
+                    policySet.setName(getQName(policySetName));
+                    policySets.add(policySet);
+                }
+            }
+        }
     }
     
     private void readIntents(Method method, List<Intent> requiredIntents) {
@@ -113,7 +131,9 @@
         
         // Read intents on the Java implementation class
         if ( type instanceof PolicySetAttachPoint ) {
-            readIntents(clazz, ((PolicySetAttachPoint)type).getRequiredIntents());
+            readIntentsAndPolicySets(clazz, 
+                                     ((PolicySetAttachPoint)type).getRequiredIntents(),
+                                     ((PolicySetAttachPoint)type).getPolicySets());
         }
         
         // Process annotations on the service interfaces
@@ -127,7 +147,9 @@
                 if (javaInterfaceContract.getInterface() != null) {
                     JavaInterface javaInterface = (JavaInterface)javaInterfaceContract.getInterface();
                     if (javaInterface.getJavaClass() != null) {
-                        readIntents(javaInterface.getJavaClass(), service.getRequiredIntents());
+                        readIntentsAndPolicySets(javaInterface.getJavaClass(), 
+                                                 service.getRequiredIntents(),
+                                                 service.getPolicySets());
 
                         // Read intents on the service interface methods 
                         Method[] methods = javaInterface.getJavaClass().getMethods();
@@ -147,7 +169,9 @@
                             callback = assemblyFactory.createCallback();
                             service.setCallback(callback);
                         }
-                        readIntents(javaCallbackInterface.getJavaClass(), callback.getRequiredIntents());
+                        readIntentsAndPolicySets(javaCallbackInterface.getJavaClass(), 
+                                                 callback.getRequiredIntents(),
+                                                 callback.getPolicySets());
 
                         // Read intents on the callback interface methods 
                         Method[] methods = javaCallbackInterface.getJavaClass().getMethods();

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessor.java Tue Oct 23 21:30:02 2007
@@ -28,7 +28,7 @@
  * @version $Rev$ $Date$
  */
 public class PropertyProcessor extends AbstractPropertyProcessor<Property> {
-    
+
     public PropertyProcessor(AssemblyFactory assemblyFactory) {
         super(assemblyFactory, Property.class);
     }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessor.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessor.java Tue Oct 23 21:30:02 2007
@@ -20,10 +20,12 @@
 
 import static org.apache.tuscany.sca.implementation.java.introspect.impl.JavaIntrospectionHelper.getBaseType;
 
+import java.lang.annotation.ElementType;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Multiplicity;
@@ -47,7 +49,7 @@
  */
 public class ReferenceProcessor extends BaseJavaClassVisitor {
     private JavaInterfaceFactory javaFactory;
-    
+
     public ReferenceProcessor(AssemblyFactory assemblyFactory, JavaInterfaceFactory javaFactory) {
         super(assemblyFactory);
         this.javaFactory = javaFactory;
@@ -59,16 +61,19 @@
         if (annotation == null) {
             return; // Not a reference annotation.
         }
-        if (method.getParameterTypes().length != 1) {
-            throw new IllegalReferenceException("Setter must have one parameter", method);
+        if (!JavaIntrospectionHelper.isSetter(method)) {
+            throw new IllegalReferenceException("Annotated method is not a setter: " + method, method);
         }
         String name = annotation.name();
         if ("".equals(name)) {
             name = JavaIntrospectionHelper.toPropertyName(method.getName());
         }
-        if (type.getReferenceMembers().get(name) != null) {
+        JavaElementImpl ref = type.getReferenceMembers().get(name);
+        // Setter override field
+        if (ref != null && ref.getElementType() != ElementType.FIELD) {
             throw new DuplicateReferenceException(name);
         }
+        removeReference(ref, type);
 
         JavaElementImpl element = new JavaElementImpl(method, 0);
         org.apache.tuscany.sca.assembly.Reference reference = createReference(element, name);
@@ -76,6 +81,20 @@
         type.getReferenceMembers().put(name, element);
     }
 
+    private boolean removeReference(JavaElementImpl ref, JavaImplementation type) {
+        if (ref == null) {
+            return false;
+        }
+        List<org.apache.tuscany.sca.assembly.Reference> refs = type.getReferences();
+        for (int i = 0; i < refs.size(); i++) {
+            if (refs.get(i).getName().equals(ref.getName())) {
+                refs.remove(i);
+                return true;
+            }
+        }
+        return false;
+    }
+
     @Override
     public void visitField(Field field, JavaImplementation type) throws IntrospectionException {
         Reference annotation = field.getAnnotation(Reference.class);
@@ -86,13 +105,18 @@
         if ("".equals(name)) {
             name = field.getName();
         }
-        if (type.getReferenceMembers().get(name) != null) {
+        JavaElementImpl ref = type.getReferenceMembers().get(name);
+        if (ref != null && ref.getElementType() == ElementType.FIELD) {
             throw new DuplicateReferenceException(name);
         }
-        JavaElementImpl element = new JavaElementImpl(field);
-        org.apache.tuscany.sca.assembly.Reference reference = createReference(element, name);
-        type.getReferences().add(reference);
-        type.getReferenceMembers().put(name, element);
+
+        // Setter method override field
+        if (ref == null) {
+            JavaElementImpl element = new JavaElementImpl(field);
+            org.apache.tuscany.sca.assembly.Reference reference = createReference(element, name);
+            type.getReferences().add(reference);
+            type.getReferenceMembers().put(name, element);
+        }
     }
 
     @Override
@@ -104,9 +128,14 @@
         }
         String paramName = parameter.getName();
         String name = getReferenceName(paramName, parameter.getIndex(), refAnnotation.name());
-        if (type.getReferenceMembers().get(name) != null) {
+        JavaElementImpl ref = type.getReferenceMembers().get(name);
+
+        // Setter override field
+        if (ref != null && ref.getElementType() != ElementType.FIELD) {
             throw new DuplicateReferenceException(name);
         }
+
+        removeReference(ref, type);
         org.apache.tuscany.sca.assembly.Reference reference = createReference(parameter, name);
         type.getReferences().add(reference);
         type.getReferenceMembers().put(name, parameter);
@@ -128,11 +157,12 @@
         }
     }
 
-    private org.apache.tuscany.sca.assembly.Reference createReference(JavaElementImpl element, String name) throws IntrospectionException {
+    private org.apache.tuscany.sca.assembly.Reference createReference(JavaElementImpl element, String name)
+        throws IntrospectionException {
         org.apache.tuscany.sca.assembly.Reference reference = assemblyFactory.createReference();
         JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract();
         reference.setInterfaceContract(interfaceContract);
-        
+
         // reference.setMember((Member)element.getAnchor());
         boolean required = true;
         Reference ref = element.getAnnotation(Reference.class);
@@ -157,8 +187,8 @@
         }
         Type genericType = element.getGenericType();
         Class<?> baseType = getBaseType(rawType, genericType);
-        if(CallableReference.class.isAssignableFrom(baseType)) {
-            if(Collection.class.isAssignableFrom(rawType)) {
+        if (CallableReference.class.isAssignableFrom(baseType)) {
+            if (Collection.class.isAssignableFrom(rawType)) {
                 genericType = JavaIntrospectionHelper.getParameterType(genericType);
             }
             baseType = JavaIntrospectionHelper.getBusinessInterface(baseType, genericType);

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessorTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessorTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PropertyProcessorTestCase.java Tue Oct 23 21:30:02 2007
@@ -85,9 +85,9 @@
     }
 
     public void testDuplicateMethods() throws Exception {
-        processor.visitMethod(Bar.class.getMethod("dupMethod", String.class), type);
+        processor.visitMethod(Bar.class.getMethod("setDupMethod", String.class), type);
         try {
-            processor.visitMethod(Bar.class.getMethod("dupSomeMethod", String.class), type);
+            processor.visitMethod(Bar.class.getMethod("setDupSomeMethod", String.class), type);
             fail();
         } catch (DuplicatePropertyException e) {
             // expected
@@ -143,11 +143,11 @@
         protected String baz;
 
         @Property
-        public void dupMethod(String s) {
+        public void setDupMethod(String s) {
         }
 
         @Property(name = "dupMethod")
-        public void dupSomeMethod(String s) {
+        public void setDupSomeMethod(String s) {
         }
 
         @Property

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessorTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessorTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/introspect/impl/ReferenceProcessorTestCase.java Tue Oct 23 21:30:02 2007
@@ -91,9 +91,9 @@
     }
 
     public void testDuplicateMethods() throws Exception {
-        processor.visitMethod(ReferenceProcessorTestCase.Bar.class.getMethod("dupMethod", Ref.class), type);
+        processor.visitMethod(ReferenceProcessorTestCase.Bar.class.getMethod("setDupMethod", Ref.class), type);
         try {
-            processor.visitMethod(ReferenceProcessorTestCase.Bar.class.getMethod("dupSomeMethod", Ref.class), type);
+            processor.visitMethod(ReferenceProcessorTestCase.Bar.class.getMethod("setDupSomeMethod", Ref.class), type);
             fail();
         } catch (DuplicateReferenceException e) {
             // expected
@@ -152,11 +152,11 @@
         protected Ref baz;
 
         @Reference
-        public void dupMethod(Ref s) {
+        public void setDupMethod(Ref s) {
         }
 
         @Reference(name = "dupMethod")
-        public void dupSomeMethod(Ref s) {
+        public void setDupSomeMethod(Ref s) {
         }
 
         @Reference

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-node-xml/src/test/java/org/apache/tuscany/sca/implementation/node/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-node-xml/src/test/java/org/apache/tuscany/sca/implementation/node/xml/ReadTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-node-xml/src/test/java/org/apache/tuscany/sca/implementation/node/xml/ReadTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-node-xml/src/test/java/org/apache/tuscany/sca/implementation/node/xml/ReadTestCase.java Tue Oct 23 21:30:02 2007
@@ -41,9 +41,9 @@
 import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
 import org.apache.tuscany.sca.implementation.node.NodeImplementationFactory;
 import org.apache.tuscany.sca.implementation.node.impl.NodeImplementationFactoryImpl;
-import org.apache.tuscany.sca.implementation.node.xml.NodeImplementationProcessor;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
+import org.apache.tuscany.sca.policy.DefaultIntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 
@@ -94,7 +94,7 @@
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(), mapper, null, null);
         compositeUtil.build(composite);
     }
 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationProvider.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationProvider.java Tue Oct 23 21:30:02 2007
@@ -55,7 +55,7 @@
             if (service.getService() != null) {
                 InterfaceContract interfaceContract = service.getService().getInterfaceContract();
                 if (interfaceContract instanceof WSDLInterfaceContract) {
-                    interfaceContract.getInterface().setDefaultDataBinding("org.apache.axiom.om.OMElement");
+                    interfaceContract.getInterface().resetDataBinding("org.apache.axiom.om.OMElement");
                 }
             }
         }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java Tue Oct 23 21:30:02 2007
@@ -21,10 +21,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.binding.sca.impl.SCABindingFactoryImpl;
-import org.apache.tuscany.sca.implementation.notification.NotificationComponentInvoker;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.InvocationChain;
@@ -35,9 +37,6 @@
 import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
 import org.easymock.EasyMock;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
 
 /**
  * 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java Tue Oct 23 21:30:02 2007
@@ -25,8 +25,6 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.sca.assembly.Implementation;
-import org.apache.tuscany.sca.implementation.notification.DefaultNotificationImplementationFactory;
-import org.apache.tuscany.sca.implementation.notification.NotificationImplementationProcessor;
 import org.easymock.EasyMock;
 
 /**

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/context/OSGiAnnotations.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/context/OSGiAnnotations.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/context/OSGiAnnotations.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/context/OSGiAnnotations.java Tue Oct 23 21:30:02 2007
@@ -203,17 +203,18 @@
 
     /*
      * Get the annotation corresponding to an instance
-     * Note that this can be null since annotations are processed from implementation
-     * classes in bundles only if the class names are provided in <implementation.osgi/>
      * 
      */
     private JavaImplementation getAnnotationInfo(Object instance) {
-        for (Class clazz : javaAnnotationInfo.keySet()) {
-            if (clazz.isInstance(instance)) {
-                return javaAnnotationInfo.get(clazz);
-            }
-        }
-        
+    	
+    	// The simplest case where the implementation class was listed under the
+    	// classes attribute of <implementation.osgi/>, or this is the second call
+    	// to this method for the implementation class.
+    	JavaImplementation javaImpl = javaAnnotationInfo.get(instance.getClass());
+    	if (javaImpl != null)
+    		return javaImpl;
+    	
+        // Process annotations from the instance class.
         try {
             return processAnnotations(instance.getClass());
         } catch (IntrospectionException e) {

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiImplementationProvider.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiImplementationProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiImplementationProvider.java Tue Oct 23 21:30:02 2007
@@ -32,7 +32,6 @@
 import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 
-
 import org.apache.tuscany.sca.assembly.ComponentProperty;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
@@ -53,12 +52,6 @@
 import org.apache.tuscany.sca.core.scope.ScopedRuntimeComponent;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl;
-import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
-import org.apache.tuscany.sca.runtime.EndpointReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.runtime.RuntimeWire;
 import org.apache.tuscany.sca.implementation.java.IntrospectionException;
 import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory;
 import org.apache.tuscany.sca.implementation.osgi.OSGiImplementationInterface;
@@ -68,6 +61,12 @@
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
 import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
+import org.apache.tuscany.sca.runtime.EndpointReference;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+import org.apache.tuscany.sca.runtime.RuntimeComponentService;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -1109,8 +1108,9 @@
                 component.setScopeContainer(null);
                 ScopeContainer scopeContainer = scopeRegistry.getScopeContainer(runtimeComponent);
 
-                if (oldScopeContainer.getLifecycleState() == ScopeContainer.RUNNING)
+                if (oldScopeContainer != null && oldScopeContainer.getLifecycleState() == ScopeContainer.RUNNING) {
                     scopeContainer.start();
+                }
                 
                 component.setScopeContainer(scopeContainer);
             }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiInstanceWrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiInstanceWrapper.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiInstanceWrapper.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiInstanceWrapper.java Tue Oct 23 21:30:02 2007
@@ -23,10 +23,12 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
+
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.core.context.InstanceWrapper;
 import org.apache.tuscany.sca.core.scope.Scope;
@@ -34,7 +36,7 @@
 import org.apache.tuscany.sca.core.scope.TargetInitializationException;
 import org.apache.tuscany.sca.implementation.osgi.context.OSGiAnnotations;
 import org.apache.tuscany.sca.interfacedef.Interface;
-import org.apache.tuscany.sca.runtime.EndpointReference;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
@@ -76,11 +78,44 @@
     
     public synchronized T getInstance(ComponentService service) throws TargetInitializationException {
         
+    	// If an instance corresponding to this service has already been created, return the instance.
         if (instanceInfoList.get(service) != null)
             return instanceInfoList.get(service).osgiInstance;
+        
+        // There is no strict relation between service and callback instances. The instance semantics
+        // actually applies to the component instance in SCA. But for OSGi services, the callback
+        // is just another OSGi service, and could correspond to any of the service instances in 
+        // the component. To implement the SCA scope semantics for callbacks, OSGi callbacks
+        // should also be made on the service object which implements the callback. The following code
+        // finds the first possible callback instance based on the interfaces implemented by the service 
+        // objects in this component. Note that the interfaces are checked by name rather than using
+        // instanceof since the class seen by Tuscany could be from a different classloader from that
+        // used by the bundle.
+        if (service.isCallback()) {
+        	Iterator<InstanceInfo<T>> instances = instanceInfoList.values().iterator();
+        	while (instances.hasNext()) {
+        		InstanceInfo<T> instanceInfo = instances.next();
+        		Interface interfaze = service.getInterfaceContract().getInterface();
+        		if (interfaze instanceof JavaInterface && ((JavaInterface)interfaze).getJavaClass() != null) {
+        			String interfaceName = ((JavaInterface)interfaze).getJavaClass().getName();
+        			Class[] interfaces = instanceInfo.osgiInstance.getClass().getInterfaces();
+        			for (Class clazz : interfaces) {
+        				if (clazz.getName().equals(interfaceName)) {
+                			return instanceInfo.osgiInstance;
+        				}
+        			}
+        			
+        		}
+        		    
+        	}
+        }
 
         Bundle refBundle = provider.startBundle();
         
+        // For scopes other than composite, the service object is obtained using a dummy reference
+        // bundle to guarantee that a new instance is created each time. This combined with the Tuscany
+        // scope container code guarantee SCA scope semantics for OSGi components as long as service
+        // factories are used.
         if (!annotationProcessor.getScope().equals(Scope.COMPOSITE)) {
             refBundle = getDummyReferenceBundle();
         }
@@ -111,44 +146,7 @@
         return instanceInfo.osgiInstance;
     }
     
-    public synchronized T getCallbackInstance(EndpointReference from, Interface callbackInterface) 
-            throws TargetInitializationException {
-        
-        if (instanceInfoList.get(callbackInterface) != null)
-            return instanceInfoList.get(callbackInterface).osgiInstance;
-
-        Bundle refBundle = provider.startBundle();
-        
-        if (!annotationProcessor.getScope().equals(Scope.COMPOSITE)) {
-            refBundle = getDummyReferenceBundle();
-        }
-        
-        InstanceInfo<T> instanceInfo = new InstanceInfo<T>();
-        
-
-        instanceInfo.osgiServiceReference = provider.getOSGiServiceReference(from, callbackInterface);
-        
-        instanceInfo.refBundleContext = refBundle.getBundleContext();
-        instanceInfo.osgiInstance = getInstanceObject(instanceInfo);
-        
-       
-        try {
-            
-            if (!isInitialized(instanceInfo.osgiInstance)) {
-
-                annotationProcessor.injectProperties(instanceInfo.osgiInstance);
-                callLifecycleMethod(instanceInfo.osgiInstance, Init.class); 
-                instanceInfo.isFirstInstance = true;
-            }
-
-            instanceInfoList.put(callbackInterface, instanceInfo);
-            
-        } catch (Exception e) {
-            throw new TargetInitializationException(e);
-        }
-        
-        return instanceInfo.osgiInstance;
-    }
+    
     
     // This method is provided purely to implement InstanceWrapper interface, and is never called.
     public T getInstance() {

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTargetInvoker.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTargetInvoker.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTargetInvoker.java Tue Oct 23 21:30:02 2007
@@ -136,13 +136,8 @@
                 removeTemporaryConversationalComponentAfterCall = true;
             }
             
-
-            if (service != null) {
-                instance = wrapper.getInstance(service);
-            } else {
-                instance = wrapper.getCallbackInstance(to, operation.getInterface());
-            }
-
+            instance = wrapper.getInstance(service);
+            
             Method m = JavaInterfaceUtil.findMethod(instance.getClass(), operation);
 
             Object ret = invokeMethod(instance, m, msg);

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiImplementation.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiImplementation.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiImplementation.java Tue Oct 23 21:30:02 2007
@@ -115,6 +115,14 @@
         return serviceCallbackProperties.get(serviceName);
     }
 
+    /**
+     * Since OSGi implementation annotations may not be processed until much later, leave it to
+     * the OSGi invoker to decide whether pass-by-reference is allowed.
+     * @return
+     */
+    public boolean isAllowsPassByReference() {
+        return true;
+    }
     
     public Object getOSGiBundle() {
         return osgiBundle;

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java Tue Oct 23 21:30:02 2007
@@ -24,10 +24,10 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
 import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestBundles;
 import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestImpl;
 import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestInterface;
+import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
 
 
 /**

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java Tue Oct 23 21:30:02 2007
@@ -50,6 +50,7 @@
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
 import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.policy.DefaultIntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 
@@ -85,7 +86,7 @@
         osgiProcessor = new OSGiImplementationProcessor(modelFactories);
         staxProcessors.addArtifactProcessor(osgiProcessor);
 
-        OSGiTestBundles.createBundle("target/OSGiTestService.jar", OSGiTestInterface.class, OSGiTestImpl.class);
+        OSGiTestBundles.createBundle("target/test-classes/OSGiTestService.jar", OSGiTestInterface.class, OSGiTestImpl.class);
 
     }
 
@@ -105,7 +106,7 @@
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(), mapper, null, null);
         compositeUtil.build(composite);
 
     }
@@ -128,7 +129,7 @@
         
         compositeProcessor.resolve(composite, resolver);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(), mapper, null, null);
         compositeUtil.build(composite);
     }
 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptInvokerFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptInvokerFactory.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptInvokerFactory.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptInvokerFactory.java Tue Oct 23 21:30:02 2007
@@ -113,7 +113,7 @@
             InterfaceContract ic = service.getInterfaceContract();
             if (ic instanceof WSDLInterfaceContract) {
                 // Set to use the Axiom data binding
-                ic.getInterface().setDefaultDataBinding(OMElement.class.getName());
+                ic.getInterface().resetDataBinding(OMElement.class.getName());
                 xmlHelper = XMLHelper.getArgHelper(scriptEngine);
             }
         }

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/engines/TuscanyJRubyScriptEngine.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/engines/TuscanyJRubyScriptEngine.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/engines/TuscanyJRubyScriptEngine.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/engines/TuscanyJRubyScriptEngine.java Tue Oct 23 21:30:02 2007
@@ -57,13 +57,16 @@
 import javax.script.SimpleBindings;
 
 import org.jruby.Ruby;
+import org.jruby.RubyException;
 import org.jruby.ast.Node;
+import org.jruby.exceptions.RaiseException;
 import org.jruby.internal.runtime.GlobalVariable;
 import org.jruby.internal.runtime.GlobalVariables;
 import org.jruby.internal.runtime.ReadonlyAccessor;
 import org.jruby.javasupport.Java;
 import org.jruby.javasupport.JavaObject;
 import org.jruby.javasupport.JavaUtil;
+import org.jruby.javasupport.bsf.JRubyEngine;
 import org.jruby.runtime.Block;
 import org.jruby.runtime.IAccessor;
 import org.jruby.runtime.builtin.IRubyObject;
@@ -404,6 +407,9 @@
         try {
             setGlobalVariables(ctx);
             return rubyToJava(runtime.eval(node));
+        } catch (RaiseException exp) {
+            RubyException rexp = exp.getException();
+            throw new ScriptException(rexp.toString());
         } catch (Exception exp) {
             throw new ScriptException(exp);
         } finally {
@@ -418,9 +424,16 @@
         if (loadPath == null) {
             loadPath = System.getProperty("java.class.path");
         }
-        List list = Arrays.asList(loadPath.split(File.pathSeparator));
-        runtime.getLoadService().init(list);                
+        List list = new ArrayList(Arrays.asList(loadPath.split(File.pathSeparator)));
+        list.add("META-INF/jruby.home/lib/ruby/site_ruby/1.8");
+        list.add("META-INF/jruby.home/lib/ruby/site_ruby/1.8/java");
+        list.add("META-INF/jruby.home/lib/ruby/site_ruby");
+        list.add("META-INF/jruby.home/lib/ruby/1.8");
+        list.add("META-INF/jruby.home/lib/ruby/1.8/java");
+        list.add("lib/ruby/1.8");
+        runtime.getLoadService().init(list);
         runtime.getLoadService().require("java");
+        
     }
 
     private Object invokeImpl(final Object obj, String method, 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaNamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaNamespaceHandler.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaNamespaceHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaNamespaceHandler.java Tue Oct 23 21:30:02 2007
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * Created on 10-Apr-2006 by Adrian Colyer
  */
 package org.apache.tuscany.sca.implementation.spring;
 

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaPropertyBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaPropertyBeanDefinitionParser.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaPropertyBeanDefinitionParser.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaPropertyBeanDefinitionParser.java Tue Oct 23 21:30:02 2007
@@ -16,11 +16,10 @@
  */
 package org.apache.tuscany.sca.implementation.spring;
 
-import org.w3c.dom.Element;
-
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
 
 /**
  * Parser for the &lt;sca:reference&gt; element

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaReferenceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaReferenceBeanDefinitionParser.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaReferenceBeanDefinitionParser.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaReferenceBeanDefinitionParser.java Tue Oct 23 21:30:02 2007
@@ -13,15 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * Created on 10-Apr-2006 by Adrian Colyer
  */
 package org.apache.tuscany.sca.implementation.spring;
 
-import org.w3c.dom.Element;
-
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
 
 /**
  * Parser for the &lt;sca:reference&gt; element

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaServiceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaServiceBeanDefinitionParser.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaServiceBeanDefinitionParser.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/ScaServiceBeanDefinitionParser.java Tue Oct 23 21:30:02 2007
@@ -13,15 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * Created on 10-Apr-2006 by Adrian Colyer
  */
 package org.apache.tuscany.sca.implementation.spring;
 
-import org.w3c.dom.Element;
-
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
 
 /**
  * Parser for the &lt;sca:service/&gt; element

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyValueObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyValueObjectFactory.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyValueObjectFactory.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyValueObjectFactory.java Tue Oct 23 21:30:02 2007
@@ -19,8 +19,8 @@
 
 package org.apache.tuscany.sca.implementation.spring;
 
-import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory;
 import org.apache.tuscany.sca.databinding.Mediator;
+import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory;
 
 /**
  *

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringBeanElement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringBeanElement.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringBeanElement.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringBeanElement.java Tue Oct 23 21:30:02 2007
@@ -18,8 +18,8 @@
  */
 package org.apache.tuscany.sca.implementation.spring.xml;
 
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Represents a <bean> element in a Spring application-context

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java Tue Oct 23 21:30:02 2007
@@ -128,7 +128,7 @@
     }
 
     private void setDataBinding(Interface interfaze, boolean isReference) {
-        interfaze.setDefaultDataBinding(SaxonNodeDataBinding.NAME);
+        // interfaze.resetDataBinding(SaxonNodeDataBinding.NAME);
         List<Operation> operations = interfaze.getOperations();
         for (Operation operation : operations) {
             operation.setDataBinding(SaxonNodeDataBinding.NAME);

Modified: incubator/tuscany/branches/sca-java-1.0.1/modules/interface-java-xml/src/test/java/org/apache/tuscany/sca/interfacedef/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0.1/modules/interface-java-xml/src/test/java/org/apache/tuscany/sca/interfacedef/java/xml/ReadTestCase.java?rev=587778&r1=587777&r2=587778&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0.1/modules/interface-java-xml/src/test/java/org/apache/tuscany/sca/interfacedef/java/xml/ReadTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0.1/modules/interface-java-xml/src/test/java/org/apache/tuscany/sca/interfacedef/java/xml/ReadTestCase.java Tue Oct 23 21:30:02 2007
@@ -47,6 +47,7 @@
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
 import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.policy.DefaultIntentAttachPointTypeFactory;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 
@@ -119,7 +120,7 @@
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);
 
-        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, mapper, null, null);
+        CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(), mapper, null, null);
         compositeUtil.build(composite);
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org