Author: jboynes
Date: Wed May  3 16:58:37 2006
New Revision: 399491

URL: http://svn.apache.org/viewcvs?rev=399491&view=rev
Log:
refactor property value setting

Added:
    
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
   (with props)
Modified:
    
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
    
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
    
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
    
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java

Modified: 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
 (original)
+++ 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/AssemblyConstants.java
 Wed May  3 16:58:37 2006
@@ -27,17 +27,11 @@
     public static final QName COMPONENT = new QName(SCA_NAMESPACE, 
"component");
     public static final QName COMPONENT_TYPE = new QName(SCA_NAMESPACE, 
"componentType");
     public static final QName COMPOSITE = new QName(SCA_NAMESPACE, 
"composite");
-    public static final QName ENTRY_POINT = new QName(SCA_NAMESPACE, 
"entryPoint");
-    public static final QName EXTERNAL_SERVICE = new QName(SCA_NAMESPACE, 
"externalService");
     public static final QName IMPORT_WSDL = new QName(SCA_NAMESPACE, 
"import.wsdl");
     public static final QName INTERFACE_JAVA = new QName(SCA_NAMESPACE, 
"interface.java");
     public static final QName INTERFACE_WSDL = new QName(SCA_NAMESPACE, 
"interface.wsdl");
-    public static final QName MODULE = new QName(SCA_NAMESPACE, "module");
-    public static final QName MODULE_FRAGMENT = new QName(SCA_NAMESPACE, 
"moduleFragment");
     public static final QName PROPERTY = new QName(SCA_NAMESPACE, "property");
-    public static final QName PROPERTIES = new QName(SCA_NAMESPACE, 
"properties");
     public static final QName REFERENCE = new QName(SCA_NAMESPACE, 
"reference");
-    public static final QName REFERENCES = new QName(SCA_NAMESPACE, 
"references");
     public static final QName SERVICE = new QName(SCA_NAMESPACE, "service");
     public static final QName WIRE = new QName(SCA_NAMESPACE, "wire");
 

Modified: 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
 (original)
+++ 
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
 Wed May  3 16:58:37 2006
@@ -16,16 +16,24 @@
  */
 package org.apache.tuscany.core.loader;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 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;
 
+import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.ComponentType;
 import org.apache.tuscany.model.Implementation;
 import org.apache.tuscany.model.ModelObject;
+import org.apache.tuscany.model.Property;
+import org.apache.tuscany.model.PropertyValue;
+import org.apache.tuscany.model.ReferenceTarget;
 import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.loader.InvalidReferenceException;
 import org.apache.tuscany.spi.loader.LoaderContext;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderSupport;
@@ -38,10 +46,10 @@
  */
 @Scope("MODULE")
 public class ComponentLoader extends LoaderSupport {
-    private StAXPropertyFactory<?> defaultPropertyFactory;
+    private StAXPropertyFactory defaultPropertyFactory;
 
     @Autowire
-    public void setDefaultPropertyFactory(StAXPropertyFactory<?> 
defaultPropertyFactory) {
+    public void setDefaultPropertyFactory(StAXPropertyFactory 
defaultPropertyFactory) {
         this.defaultPropertyFactory = defaultPropertyFactory;
     }
 
@@ -67,13 +75,11 @@
             switch (reader.next()) {
                 case START_ELEMENT:
                     QName qname = reader.getName();
-/*
-                    if (AssemblyConstants.PROPERTIES.equals(qname)) {
-                    loadProperties(reader, loaderContext.getResourceLoader(), 
component);
-                    } else if (AssemblyConstants.REFERENCES.equals(qname)) {
-                    loadReferences(reader, component);
+                    if (AssemblyConstants.PROPERTY.equals(qname)) {
+                        loadProperty(reader, loaderContext, component);
+                    } else if (AssemblyConstants.REFERENCE.equals(qname)) {
+                        loadReference(reader, loaderContext, component);
                     }
-*/
                     reader.next();
                     break;
                 case END_ELEMENT:
@@ -82,49 +88,33 @@
         }
     }
 
-/*
-    protected void loadProperties(XMLStreamReader reader, ResourceLoader 
resourceLoader, Component<?> component) throws XMLStreamException, 
ConfigurationLoadException {
-        ComponentInfo componentType = 
component.getImplementation().getComponentInfo();
-        List<ConfiguredProperty> configuredProperties = 
component.getConfiguredProperties();
+    protected <T> void loadProperty(XMLStreamReader reader, LoaderContext 
loaderContext, Component<?> component) throws XMLStreamException, 
LoaderException {
+        String name = reader.getAttributeValue(null, "name");
+        Implementation<?> implementation = component.getImplementation();
+        ComponentType componentType = implementation.getComponentType();
+        Property<T> property = (Property<T>) 
componentType.getProperties().get(name);
+        // todo allow property to specify the factory to use
+        ObjectFactory<T> factory = 
defaultPropertyFactory.createObjectFactory(reader, property);
+        PropertyValue<T> value = new PropertyValue<T>();
+        value.setName(name);
+        value.setValueFactory(factory);
+        component.add(value);
+    }
 
-        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.setValueFactory(value);
-                configuredProperty.setOverrideOption(override);
-                configuredProperties.add(configuredProperty);
-                break;
-            case END_ELEMENT:
-                return;
-            }
+    protected void loadReference(XMLStreamReader reader, LoaderContext 
loaderContext, Component<?> component) throws XMLStreamException, 
LoaderException {
+        String name = reader.getAttributeValue(null, "name");
+        String target = reader.getAttributeValue(null, "target");
+        ReferenceTarget referenceTarget = new ReferenceTarget();
+        referenceTarget.setReferenceName(name);
+        try {
+            referenceTarget.setTarget(new URI(target));
+        } catch (URISyntaxException e) {
+            InvalidReferenceException le = new InvalidReferenceException(e);
+            le.setIdentifier(target);
+            throw le;
         }
+        component.add(referenceTarget);
     }
-*/
 
 /*
     protected StAXPropertyFactory<?> getPropertyFactory(String factoryName, 
ResourceLoader resourceLoader) throws InvalidPropertyFactoryException {
@@ -148,31 +138,6 @@
             throw new InvalidPropertyFactoryException(factoryName, e);
         } catch (ClassCastException e) {
             throw new InvalidPropertyFactoryException(factoryName, e);
-        }
-    }
-*/
-
-/*
-    protected void loadReferences(XMLStreamReader reader, Component<?> 
component) throws XMLStreamException {
-        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(uri);
-                break;
-            case END_ELEMENT:
-                return;
-            }
         }
     }
 */

Modified: 
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
 (original)
+++ 
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
 Wed May  3 16:58:37 2006
@@ -51,4 +51,12 @@
     public Map<String, PropertyValue<?>> getPropertyValues() {
         return propertyValues;
     }
+
+    public void add(PropertyValue<?> value) {
+        propertyValues.put(value.getName(), value);
+    }
+
+    public void add(ReferenceTarget target) {
+        referenceTargets.put(target.getReferenceName(), target);
+    }
 }

Added: 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java?rev=399491&view=auto
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
 (added)
+++ 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
 Wed May  3 16:58:37 2006
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.tuscany.spi.loader;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class InvalidReferenceException extends LoaderException {
+    private static final long serialVersionUID = -4346666572527197558L;
+
+    public InvalidReferenceException() {
+    }
+
+    public InvalidReferenceException(String message) {
+        super(message);
+    }
+
+    public InvalidReferenceException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public InvalidReferenceException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidReferenceException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
 (original)
+++ 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/StAXPropertyFactory.java
 Wed May  3 16:58:37 2006
@@ -27,7 +27,7 @@
  *
  * @version $Rev$ $Date$
  */
-public interface StAXPropertyFactory<T> {
+public interface StAXPropertyFactory {
     /**
      * Return an ObjectFactory for instances of a property defined in an XML 
stream.
      *
@@ -37,5 +37,5 @@
      * @throws javax.xml.stream.XMLStreamException if there is a problem 
reading the stream
      * @throws LoaderException if there is a problem creating the ObjectFactory
      */
-    ObjectFactory<T> createObjectFactory(XMLStreamReader reader, Property 
property) throws XMLStreamException, LoaderException;
+    <T> ObjectFactory<T> createObjectFactory(XMLStreamReader reader, 
Property<T> property) throws XMLStreamException, LoaderException;
 }

Modified: 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java?rev=399491&r1=399490&r2=399491&view=diff
==============================================================================
--- 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
 (original)
+++ 
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireFactory.java
 Wed May  3 16:58:37 2006
@@ -30,7 +30,7 @@
  * <p/>
  * Unmanaged code, i.e. clients that are not components, that perform a locate 
operation are handled differently. In this case, a
  * target-side proxy will be returned by the locate operation created by the 
<code>WireFactory</code> associated with the target
- * service. This target-side proxy will only contain the target-side wire and 
its handlers/interceptors.Ê
+ * service. This target-side proxy will only contain the target-side wire and 
its handlers/interceptors.
  * <p/>
  * Wires are structured by operation; that is, they contain an invocation 
chain per operation on a service. Note that the service
  * specified by a reference may differ in type from the target service 
specified by the wire. In this case, a mediation may be


Reply via email to