You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/05/08 20:03:44 UTC

svn commit: r405110 - in /incubator/tuscany/java/sca: containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/ containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/ containers/container.java/src/t...

Author: jmarino
Date: Mon May  8 11:03:44 2006
New Revision: 405110

URL: http://svn.apache.org/viewcvs?rev=405110&view=rev
Log:
fix for 324

Modified:
    incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
    incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
    incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java

Modified: incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java?rev=405110&r1=405109&r2=405110&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java Mon May  8 11:03:44 2006
@@ -29,6 +29,17 @@
     @Property
     public String locale;
 
+    public String getBar() {
+        return bar;
+    }
+
+    @Property(required=true)
+     public void setBar(String bar) {
+        this.bar = bar;
+    }
+
+    public String bar;
+
     public void setGreetingProvider(GreetingProvider greetingProvider) {
         this.greetingProvider2 = greetingProvider;
     }

Modified: incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=405110&r1=405109&r2=405110&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java Mon May  8 11:03:44 2006
@@ -38,6 +38,7 @@
 import org.apache.tuscany.container.java.mock.binding.foo.FooBindingWireBuilder;
 import org.apache.tuscany.container.java.mock.components.GenericComponent;
 import org.apache.tuscany.container.java.mock.components.HelloWorldClient;
+import org.apache.tuscany.container.java.mock.components.ModuleScopeComponent;
 import org.apache.tuscany.container.java.mock.components.ModuleScopeComponentImpl;
 import org.apache.tuscany.container.java.mock.components.OtherTarget;
 import org.apache.tuscany.container.java.mock.components.OtherTargetImpl;
@@ -45,7 +46,6 @@
 import org.apache.tuscany.container.java.mock.components.SourceImpl;
 import org.apache.tuscany.container.java.mock.components.Target;
 import org.apache.tuscany.container.java.mock.components.TargetImpl;
-import org.apache.tuscany.container.java.mock.components.ModuleScopeComponent;
 import org.apache.tuscany.core.builder.BuilderException;
 import org.apache.tuscany.core.builder.ContextFactory;
 import org.apache.tuscany.core.builder.ContextFactoryBuilder;
@@ -59,14 +59,12 @@
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
-import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.context.CompositeContext;
 import org.apache.tuscany.core.context.Context;
 import org.apache.tuscany.core.context.SystemCompositeContext;
 import org.apache.tuscany.core.context.event.ModuleStart;
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
-import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
@@ -176,22 +174,22 @@
         return sc;
     }
 
-    public static AtomicComponent createNonIntrospectedComponent(String name, Class service,  Class type, Scope scope) throws ConfigurationLoadException {
-         AtomicComponent sc = factory.createSimpleComponent();
-         JavaImplementation impl = factory.createJavaImplementation();
-         impl.setComponentType(factory.createComponentType());
-         impl.setImplementationClass(type);
-         sc.setImplementation(impl);
-         Service s = factory.createService();
-         JavaServiceContract ji = factory.createJavaServiceContract();
-         ji.setInterface(service);
-         s.setServiceContract(ji);
-         ji.setScope(scope);
-         impl.getComponentType().getServices().add(s);
-         sc.setName(name);
-         sc.setImplementation(impl);
-         return sc;
-     }
+    public static AtomicComponent createNonIntrospectedComponent(String name, Class service, Class type, Scope scope) throws ConfigurationLoadException {
+        AtomicComponent sc = factory.createSimpleComponent();
+        JavaImplementation impl = factory.createJavaImplementation();
+        impl.setComponentType(factory.createComponentType());
+        impl.setImplementationClass(type);
+        sc.setImplementation(impl);
+        Service s = factory.createService();
+        JavaServiceContract ji = factory.createJavaServiceContract();
+        ji.setInterface(service);
+        s.setServiceContract(ji);
+        ji.setScope(scope);
+        impl.getComponentType().getServices().add(s);
+        sc.setName(name);
+        sc.setImplementation(impl);
+        return sc;
+    }
 
 
     /**
@@ -207,6 +205,7 @@
         JavaServiceContract ji = systemFactory.createJavaServiceContract();
         s.setServiceContract(ji);
         ji.setScope(Scope.AGGREGATE);
+        //impl.setComponentType(systemFactory.createComponentType());
         impl.setImplementationClass(CompositeContextImpl.class);
         impl.setComponentType(getCompositeComponentType());
         impl.getComponentType().getServices().add(s);
@@ -230,6 +229,7 @@
         s.setServiceContract(ji);
         ji.setScope(Scope.AGGREGATE);
         impl.setComponentType(getComponentType());
+        //impl.setComponentType(systemFactory.createComponentType());
         impl.getComponentType().getServices().add(s);
         sc.setName(name);
         sc.setImplementation(impl);

Modified: incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module?rev=405110&r1=405109&r2=405110&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module Mon May  8 11:03:44 2006
@@ -24,6 +24,7 @@
             <v:greetingProvider>GreetingProvider</v:greetingProvider>
         </references>
         <properties>
+            <v:bar>bar</v:bar>
             <v:locale>en</v:locale>
         </properties>
     </component>

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java?rev=405110&r1=405109&r2=405110&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java Mon May  8 11:03:44 2006
@@ -16,15 +16,10 @@
  */
 package org.apache.tuscany.core.loader.assembly;
 
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.COMPONENT;
-import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.PROPERTIES;
-import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.REFERENCES;
-
 import java.util.List;
-
 import javax.xml.namespace.QName;
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
@@ -32,9 +27,10 @@
 import org.apache.tuscany.core.builder.ObjectFactory;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.core.loader.InvalidPropertyFactoryException;
+import org.apache.tuscany.core.loader.LoaderContext;
 import org.apache.tuscany.core.loader.StAXPropertyFactory;
 import org.apache.tuscany.core.loader.StAXUtil;
-import org.apache.tuscany.core.loader.LoaderContext;
+import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.*;
 import org.apache.tuscany.core.system.annotation.Autowire;
 import org.apache.tuscany.model.assembly.AssemblyObject;
 import org.apache.tuscany.model.assembly.Component;
@@ -70,24 +66,34 @@
 
         while (true) {
             switch (reader.next()) {
-            case START_ELEMENT:
-                QName name = reader.getName();
-                if (PROPERTIES.equals(name)) {
-                    loadProperties(reader, loaderContext.getResourceLoader(), component);
-                } else if (REFERENCES.equals(name)) {
-                    loadReferences(reader, component);
-                } else {
-                    AssemblyObject o = registry.load(reader, loaderContext);
-                    if (o instanceof Implementation) {
-                        Implementation impl = (Implementation) o;
-                        impl.initialize(registry.getContext());
-                        component.setImplementation(impl);
+                case START_ELEMENT:
+                    QName name = reader.getName();
+                    if (PROPERTIES.equals(name)) {
+                        loadProperties(reader, loaderContext.getResourceLoader(), component);
+                    } else if (REFERENCES.equals(name)) {
+                        loadReferences(reader, component);
+                    } else {
+                        AssemblyObject o = registry.load(reader, loaderContext);
+                        if (o instanceof Implementation) {
+                            Implementation impl = (Implementation) o;
+                            impl.initialize(registry.getContext());
+                            component.setImplementation(impl);
+                        }
+                    }
+                    reader.next();
+                    break;
+                case END_ELEMENT:
+                    List<Property> props = component.getImplementation().getComponentType().getProperties();
+                    for (Property property : props) {
+                        if (property.isRequired()) {
+                            if (component.getConfiguredProperty(property.getName()) == null) {
+                                ConfigurationLoadException e = new ConfigurationLoadException("Required property not configured");
+                                e.setIdentifier(property.getName());
+                                throw e;
+                            }
+                        }
                     }
-                }
-                reader.next();
-                break;
-            case END_ELEMENT:
-                return component;
+                    return component;
             }
         }
     }
@@ -98,38 +104,38 @@
 
         while (true) {
             switch (reader.next()) {
-            case START_ELEMENT:
-                String name = reader.getLocalName();
-                Property property = componentType.getProperty(name);
-                if (property == null) {
-                    throw new ConfigurationLoadException(name);
-                }
-                OverrideOption override = StAXUtil.overrideOption(reader.getAttributeValue(null, "override"), OverrideOption.NO);
-
-                // get a factory for the property
-                StAXPropertyFactory<?> propertyFactory;
-                String factoryName = reader.getAttributeValue(null, "factory");
-                if (factoryName == null) {
-                    propertyFactory = defaultPropertyFactory;
-                } else {
-                    propertyFactory = getPropertyFactory(factoryName, resourceLoader);
-                }
-
-                // create the property value
-                // FIXME to support complex types we probably should store the factory in the ConfiguredProperty
-                // FIXME instead of the value as the value may be mutable and should not be shared between instances
-                ObjectFactory<?> objectFactory = propertyFactory.createObjectFactory(reader, property);
-                Object value = objectFactory.getInstance();
-
-                // create the configured property definition
-                ConfiguredProperty configuredProperty = factory.createConfiguredProperty();
-                configuredProperty.setName(name);
-                configuredProperty.setValue(value);
-                configuredProperty.setOverrideOption(override);
-                configuredProperties.add(configuredProperty);
-                break;
-            case END_ELEMENT:
-                return;
+                case START_ELEMENT:
+                    String name = reader.getLocalName();
+                    Property property = componentType.getProperty(name);
+                    if (property == null) {
+                        throw new ConfigurationLoadException(name);
+                    }
+                    OverrideOption override = StAXUtil.overrideOption(reader.getAttributeValue(null, "override"), OverrideOption.NO);
+
+// get a factory for the property
+                    StAXPropertyFactory<?> propertyFactory;
+                    String factoryName = reader.getAttributeValue(null, "factory");
+                    if (factoryName == null) {
+                        propertyFactory = defaultPropertyFactory;
+                    } else {
+                        propertyFactory = getPropertyFactory(factoryName, resourceLoader);
+                    }
+
+                    // create the property value
+                    // FIXME to support complex types we probably should store the factory in the ConfiguredProperty
+                    // FIXME instead of the value as the value may be mutable and should not be shared between instances
+                    ObjectFactory<?> objectFactory = propertyFactory.createObjectFactory(reader, property);
+                    Object value = objectFactory.getInstance();
+
+                    // create the configured property definition
+                    ConfiguredProperty configuredProperty = factory.createConfiguredProperty();
+                    configuredProperty.setName(name);
+                    configuredProperty.setValue(value);
+                    configuredProperty.setOverrideOption(override);
+                    configuredProperties.add(configuredProperty);
+                    break;
+                case END_ELEMENT:
+                    return;
             }
         }
     }
@@ -162,47 +168,22 @@
         List<ConfiguredReference> configuredReferences = component.getConfiguredReferences();
         while (true) {
             switch (reader.next()) {
-            case START_ELEMENT:
-                String name = reader.getLocalName();
-                String uri = reader.getElementText();
-
-                ConfiguredReference configuredReference = component.getConfiguredReference(name);
-                if (configuredReference == null) {
-                    configuredReference = factory.createConfiguredReference();
-                    configuredReference.setName(name);
-                    configuredReferences.add(configuredReference);
-                }
-
-                configuredReference.getTargets().add(prevSpace(uri));
-                break;
-            case END_ELEMENT:
-                return;
-            }
-        }
-    }
-    
-    protected String prevSpace(String uri){
-        if(uri == null ) return null;
-        String ret= uri.replace('\t', ' ');
-        ret= ret.replace('\n', ' ');
-        ret= ret.replace('\r', ' ');
-        ret= ret.trim();
-        StringBuilder sb= new StringBuilder(ret.length());
-        boolean prevSpace= false;
-        for(int i=0; i< ret.length(); ++i){
-            char c= ret.charAt(i);
-            if(c == ' '){
-                if(!prevSpace){
-                    sb.append(c);
-                    prevSpace= true;
-                }
-            }else{
-                sb.append(c);
-                prevSpace= false;
+                case START_ELEMENT:
+                    String name = reader.getLocalName();
+                    String uri = reader.getElementText();
+
+                    ConfiguredReference configuredReference = component.getConfiguredReference(name);
+                    if (configuredReference == null) {
+                        configuredReference = factory.createConfiguredReference();
+                        configuredReference.setName(name);
+                        configuredReferences.add(configuredReference);
+                    }
+
+                    configuredReference.getTargets().add(uri);
+                    break;
+                case END_ELEMENT:
+                    return;
             }
-            
         }
-        
-        return sb.toString();
     }
 }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java?rev=405110&r1=405109&r2=405110&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java Mon May  8 11:03:44 2006
@@ -113,6 +113,7 @@
         JavaServiceContract ji = systemFactory.createJavaServiceContract();
         s.setServiceContract(ji);
         ji.setScope(Scope.AGGREGATE);
+//        impl.setComponentType(systemFactory.createComponentType());
         impl.getComponentType().getServices().add(s);
         sc.setName(name);
         sc.setImplementation(impl);
@@ -133,6 +134,7 @@
         JavaServiceContract ji = systemFactory.createJavaServiceContract();
         s.setServiceContract(ji);
         ji.setScope(Scope.AGGREGATE);
+        //impl.setComponentType(systemFactory.createComponentType());
         impl.getComponentType().getServices().add(s);
         sc.setName(name);
         sc.setImplementation(impl);