You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/03/07 17:58:15 UTC

svn commit: r515645 - in /incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src: main/java/org/apache/tuscany/core/loader/ main/java/org/apache/tuscany/core/property/ test/java/org/apache/tuscany/core/loader/ test/java/org/apache/tuscany/...

Author: svkrish
Date: Wed Mar  7 08:58:13 2007
New Revision: 515645

URL: http://svn.apache.org/viewvc?view=rev&rev=515645
Log:
added support for many simple property values and changed property values from a list of documents to a list of Elements

Modified:
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/PropertyLoader.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimpleMultivaluedPropertyObjectFactory.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/JNDIPropertyFactoryTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/MultivaluePropertyLoadingTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/PropertyLoaderTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Wed Mar  7 08:58:13 2007
@@ -69,7 +69,7 @@
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.util.stax.StaxUtil;
 import org.osoa.sca.annotations.Constructor;
-import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * Loads a component definition from an XML-based assembly file 
@@ -77,348 +77,371 @@
  * @version $Rev$ $Date$
  */
 public class ComponentLoader extends LoaderExtension<ComponentDefinition<?>> {
-    private static final QName COMPONENT = new QName(SCA_NS, "component");
-    private static final QName PROPERTY = new QName(SCA_NS, "property");
-    private static final QName REFERENCE = new QName(SCA_NS, "reference");
-
-    private static final String PROPERTY_FILE_ATTR = "file";
-    private static final String PROPERTY_SOURCE_ATTR = "source";
-    private static final String PROPERTY_NAME_ATTR = "name";
-    private static final String PROPERTY_TYPE_ATTR = "type";
-    private static final String PROPERTY_ELEMENT_ATTR = "element";
-    public static final char COLON = ':';
-
-    private PropertyObjectFactory propertyFactory;
-
-    @Constructor
-    public ComponentLoader(@Autowire
-    LoaderRegistry registry, @Autowire
-    PropertyObjectFactory propertyFactory) {
-        super(registry);
-        this.propertyFactory = propertyFactory;
-    }
-
-    public QName getXMLType() {
-        return COMPONENT;
-    }
-
-    @SuppressWarnings("unchecked")
-    public ComponentDefinition<?> load(CompositeComponent parent,
-                                       ModelObject object,
-                                       XMLStreamReader reader,
-                                       DeploymentContext deploymentContext) throws XMLStreamException,
-                                                                           LoaderException {
-        assert COMPONENT.equals(reader.getName());
-        String name = reader.getAttributeValue(null, "name");
-        String initLevel = reader.getAttributeValue(null, "initLevel");
-
-        try {
-            Implementation<?> impl = loadImplementation(parent, reader, deploymentContext);
-            registry.loadComponentType(parent, impl, deploymentContext);
-
-            ComponentDefinition<Implementation<?>> componentDefinition =
-                new ComponentDefinition<Implementation<?>>(name, impl);
-
-            if (initLevel != null) {
-                if (initLevel.length() == 0) {
-                    componentDefinition.setInitLevel(0);
-                } else {
-                    try {
-                        componentDefinition.setInitLevel(Integer.valueOf(initLevel));
-                    } catch (NumberFormatException e) {
-                        throw new InvalidValueException(initLevel, "initValue", e);
-                    }
-                }
-            }
-
-            while (true) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        QName qname = reader.getName();
-                        if (PROPERTY.equals(qname)) {
-                            loadProperty(reader, deploymentContext, componentDefinition);
-                        } else if (REFERENCE.equals(qname)) {
-                            loadReference(reader, deploymentContext, componentDefinition);
-                        } else {
-                            throw new UnrecognizedElementException(qname);
-                        }
-                        reader.next();
-                        break;
-                    case END_ELEMENT:
-                        if (reader.getName().equals(COMPONENT)) {
-                            // hack to leave alone SystemImplementation
-                            if (!((Implementation)componentDefinition.getImplementation() instanceof SystemImplementation)) {
-                                populatePropertyValues(componentDefinition);
-                            }
-                            ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-                                (ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>)componentDefinition
-                                    .getImplementation().getComponentType();
-                            for (ReferenceDefinition ref : type.getReferences().values()) {
-                                if (ref.isAutowire()) {
-                                    ReferenceTarget referenceTarget = new ReferenceTarget();
-                                    referenceTarget.setReferenceName(ref.getName());
-                                    componentDefinition.add(referenceTarget);
-                                }
-                            }
-                            validate(componentDefinition);
-                            return componentDefinition;
-                        }
-                        break;
-                }
-            }
-        } catch (LoaderException e) {
-            e.addContextName(name);
-            throw e;
-        }
-    }
-
-    protected Implementation<?> loadImplementation(CompositeComponent parent,
-                                                   XMLStreamReader reader,
-                                                   DeploymentContext deploymentContext) throws XMLStreamException,
-                                                                                       LoaderException {
-        reader.nextTag();
-        ModelObject o = registry.load(parent, null, reader, deploymentContext);
-        if (!(o instanceof Implementation)) {
-            throw new MissingImplementationException();
-        }
-        return (Implementation<?>)o;
-    }
-
-    @SuppressWarnings("unchecked")
-    protected void loadProperty(XMLStreamReader reader,
-                                DeploymentContext deploymentContext,
-                                ComponentDefinition<?> componentDefinition) throws XMLStreamException,
-                                                                                   LoaderException {
-        String name = reader.getAttributeValue(null, PROPERTY_NAME_ATTR);
-        Implementation<?> implementation = componentDefinition.getImplementation();
-        ComponentType<?, ?, ?> componentType = implementation.getComponentType();
-        Property<Type> property = componentType.getProperty(name);
-        if (property == null) {
-            throw new UndefinedPropertyException(name);
-        }
-        
-        PropertyValue<Type> propertyValue;
-        readPropertyType(reader, property);
-        
-        String source = reader.getAttributeValue(null, PROPERTY_SOURCE_ATTR);
-        String file = reader.getAttributeValue(null, PROPERTY_FILE_ATTR);
-        
-        if (source != null || file != null) {
-            propertyValue = new PropertyValue<Type>(name, source, file);
-            propertyValue.setValue(property.getDefaultValues());
-            LoaderUtil.skipToEndElement(reader);
-        } else {
-            try {
-                DocumentBuilder documentBuilder = DOMHelper.newDocumentBuilder();
-                List<Document> values = loadPropertyValues(reader, documentBuilder, property.getXmlType(), property.getXmlElement());
-                propertyValue = new PropertyValue<Type>(name, values);
-                if (!property.isMany() && values.size() > 1) {
-                    ManyPropertyValueLoaderException ex = new ManyPropertyValueLoaderException();
-                    ex.setPropertyName(name);
-                    ex.setLine(reader.getLocation().getLineNumber());
-                    ex.setColumn(reader.getLocation().getColumnNumber());
-                    throw ex;
-                }
-            } catch (ParserConfigurationException e) {
-                throw new LoaderException(e);
-            }
-        }
-        
-        ObjectFactory<?> objectFactory = null;
-        if (property.isMany()) {
-            objectFactory = propertyFactory.createListObjectFactory(property, propertyValue);
-        } else {
-            objectFactory = propertyFactory.createObjectFactory(property, propertyValue);
-        }
-        // propertyValue.setValueFactory(new
-        // SimplePropertyObjectFactory(property, propertyValue.getValue()));
-        propertyValue.setValueFactory(objectFactory);
-        componentDefinition.add(propertyValue);
-    }
-
-    protected void loadReference(XMLStreamReader reader,
-                                 DeploymentContext deploymentContext,
-                                 ComponentDefinition<?> componentDefinition) throws XMLStreamException,
-                                                                            LoaderException {
-        String name = reader.getAttributeValue(null, "name");
-        String text = reader.getElementText();
-        String target = text != null ? text.trim() : null;
-
-        if (name == null) {
-            throw new InvalidReferenceException("No name specified");
-        } else if (target == null) {
-            throw new InvalidReferenceException("No target specified", name);
-        }
-        Implementation<?> impl = componentDefinition.getImplementation();
-        ComponentType<?, ?, ?> componentType = impl.getComponentType();
-        if (!componentType.getReferences().containsKey(name)) {
-            throw new UndefinedReferenceException(name);
-        }
-        if (componentType instanceof CompositeComponentType) {
-            ReferenceDefinition definition = componentType.getReferences().get(name);
-            if (definition.getBindings().isEmpty()) {
-                // TODO JFM allow selection of a default binding
-                try {
-                    LocalBindingDefinition binding = new LocalBindingDefinition(new URI(target));
-                    definition.addBinding(binding);
-                } catch (URISyntaxException e) {
-                    throw new InvalidReferenceException(e);
-                }
-            } else {
-                for (BindingDefinition binding : definition.getBindings()) {
-                    try {
-                        // FIXME this is bad - clarify in the spec how URIs are
-                        // overriden
-                        binding.setTargetUri(new URI(target));
-                    } catch (URISyntaxException e) {
-                        throw new LoaderException(e);
-                    }
-                }
-            }
-        } else {
-            ReferenceTarget referenceTarget = componentDefinition.getReferenceTargets().get(name);
-            if (referenceTarget == null) {
-                referenceTarget = new ReferenceTarget();
-                referenceTarget.setReferenceName(name);
-                componentDefinition.add(referenceTarget);
-            }
-            try {
-                referenceTarget.addTarget(new URI(target));
-            } catch (URISyntaxException e) {
-                throw new InvalidReferenceException(e);
-            }
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    protected void populatePropertyValues(ComponentDefinition<Implementation<?>> componentDefinition) throws LoaderException,
-                                                                                                     MissingPropertyValueException {
-        ComponentType componentType = componentDefinition.getImplementation().getComponentType();
-        if (componentType != null) {
-            Map<String, Property<?>> properties = componentType.getProperties();
-            Map<String, PropertyValue<?>> propertyValues = componentDefinition.getPropertyValues();
-
-            for (Property<?> aProperty : properties.values()) {
-                if (propertyValues.get(aProperty.getName()) == null) {
-                    if (aProperty.isMustSupply()) {
-                        throw new MissingPropertyValueException(aProperty.getName());
-                    } else if (aProperty.getDefaultValues() != null) {
-                        PropertyValue propertyValue = new PropertyValue();
-                        propertyValue.setName(aProperty.getName());
-                        propertyValue.setValue(aProperty.getDefaultValues());
-                        propertyValue.setValueFactory(propertyFactory
-                            .createObjectFactory(aProperty, propertyValue));
-                        /*
-                         * propertyValue.setValueFactory(new
-                         * SimplePropertyObjectFactory(aProperty,
-                         * propertyValue.getValue()));
-                         */
-                        propertyValues.put(aProperty.getName(), propertyValue);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Validates a component definition, ensuring all component type
-     * configuration elements are satisfied
-     */
-    protected void validate(ComponentDefinition<Implementation<?>> definition) throws LoaderException {
-        // validate refererences
-        Implementation<?> implementation = definition.getImplementation();
-        ComponentType<?, ?, ?> type = implementation.getComponentType();
-        if (type == null) {
-            return;
-        }
-        for (ReferenceDefinition referenceDef : type.getReferences().values()) {
-            if (referenceDef.isAutowire() || !referenceDef.isRequired()) {
-                continue;
-            }
-            String name = referenceDef.getName();
-            ReferenceTarget target = definition.getReferenceTargets().get(name);
-            if (target == null) {
-                throw new MissingReferenceException(name);
-            }
-            int count = target.getTargets().size();
-            Multiplicity multiplicity = referenceDef.getMultiplicity();
-            switch (multiplicity) {
-                case ZERO_N:
-                    break;
-                case ZERO_ONE:
-                    if (count > 1) {
-                        throw new ReferenceMultiplicityViolationException(name, multiplicity, count);
-                    }
-                    break;
-                case ONE_ONE:
-                    if (count != 1) {
-                        throw new ReferenceMultiplicityViolationException(name, multiplicity, count);
-                    }
-                    break;
-                case ONE_N:
-                    if (count < 1) {
-                        throw new ReferenceMultiplicityViolationException(name, multiplicity, count);
-                    }
-                    break;
-            }
-
-        }
-    }
-
-    private void readPropertyType(XMLStreamReader reader, Property property) throws MissingTypePropertyLoaderException{
-
-        String typeName = reader.getAttributeValue(null, PROPERTY_TYPE_ATTR);
-        String elementName = reader.getAttributeValue(null, PROPERTY_ELEMENT_ATTR);
-        QName xmlElement = null;
-        QName xmlType = null;
-
-        if (typeName != null) {
-            int index = typeName.indexOf(COLON);
-            if (index != -1) {
-                String prefix = typeName.substring(0, index);
-                String localName = typeName.substring(index + 1);
-                String ns = reader.getNamespaceURI(prefix);
-                xmlType = new QName(ns, localName, prefix);
-            }
-        } else if (elementName != null) {
-            int index = elementName.indexOf(COLON);
-            if (index != -1) {
-                String prefix = elementName.substring(0, index);
-                String localName = elementName.substring(index + 1);
-                String ns = reader.getNamespaceURI(prefix);
-                xmlElement = new QName(ns, localName, prefix);
-                // FIXME :
-                // need to figure out how to determine the xmltype from this
-                // xmlelement
-                // this need access to the global xml element thro
-                // schemalocation or thro
-                // artifact repository
-                xmlType = null;
-            }
-        }
-
-        if (xmlType != null) {
-            property.setXmlType(xmlType);
-        }
-
-        if (xmlElement != null) {
-            property.setXmlElement(xmlElement);
-        }
-        
-        /*if (property.getXmlType() == null && property.getXmlElement() == null) {
-            MissingTypePropertyLoaderException ex = new MissingTypePropertyLoaderException();
-            ex.setPropertyName(property.getName());
-            ex.setLine(reader.getLocation().getLineNumber());
-            ex.setColumn(reader.getLocation().getColumnNumber());
-            throw ex; 
-        }*/
-    }
-
-    private List<Document> loadPropertyValues(XMLStreamReader reader,
-                                    DocumentBuilder documentBuilder,
-                                    QName xmlType,
-                                    QName xmlElement) throws XMLStreamException {
-        return StaxUtil.createPropertyValues(reader, xmlType, xmlElement, documentBuilder);
-    }
-    
- }
+	private static final QName COMPONENT = new QName(SCA_NS, "component");
+
+	private static final QName PROPERTY = new QName(SCA_NS, "property");
+
+	private static final QName REFERENCE = new QName(SCA_NS, "reference");
+
+	private static final String PROPERTY_FILE_ATTR = "file";
+
+	private static final String PROPERTY_SOURCE_ATTR = "source";
+
+	private static final String PROPERTY_NAME_ATTR = "name";
+
+	private static final String PROPERTY_TYPE_ATTR = "type";
+
+	private static final String PROPERTY_ELEMENT_ATTR = "element";
+
+	public static final char COLON = ':';
+
+	private PropertyObjectFactory propertyFactory;
+
+	@Constructor
+	public ComponentLoader(@Autowire
+	LoaderRegistry registry, @Autowire
+	PropertyObjectFactory propertyFactory) {
+		super(registry);
+		this.propertyFactory = propertyFactory;
+	}
+
+	public QName getXMLType() {
+		return COMPONENT;
+	}
+
+	@SuppressWarnings("unchecked")
+	public ComponentDefinition<?> load(CompositeComponent parent,
+			ModelObject object, XMLStreamReader reader,
+			DeploymentContext deploymentContext) throws XMLStreamException,
+			LoaderException {
+		assert COMPONENT.equals(reader.getName());
+		String name = reader.getAttributeValue(null, "name");
+		String initLevel = reader.getAttributeValue(null, "initLevel");
+
+		try {
+			Implementation<?> impl = loadImplementation(parent, reader,
+					deploymentContext);
+			registry.loadComponentType(parent, impl, deploymentContext);
+
+			ComponentDefinition<Implementation<?>> componentDefinition = new ComponentDefinition<Implementation<?>>(
+					name, impl);
+
+			if (initLevel != null) {
+				if (initLevel.length() == 0) {
+					componentDefinition.setInitLevel(0);
+				} else {
+					try {
+						componentDefinition.setInitLevel(Integer
+								.valueOf(initLevel));
+					} catch (NumberFormatException e) {
+						throw new InvalidValueException(initLevel, "initValue",
+								e);
+					}
+				}
+			}
+
+			while (true) {
+				switch (reader.next()) {
+				case START_ELEMENT:
+					QName qname = reader.getName();
+					if (PROPERTY.equals(qname)) {
+						loadProperty(reader, deploymentContext,
+								componentDefinition);
+					} else if (REFERENCE.equals(qname)) {
+						loadReference(reader, deploymentContext,
+								componentDefinition);
+					} else {
+						throw new UnrecognizedElementException(qname);
+					}
+					reader.next();
+					break;
+				case END_ELEMENT:
+					if (reader.getName().equals(COMPONENT)) {
+						// hack to leave alone SystemImplementation
+						if (!((Implementation) componentDefinition
+								.getImplementation() instanceof SystemImplementation)) {
+							populatePropertyValues(componentDefinition);
+						}
+						ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type = (ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>) componentDefinition
+								.getImplementation().getComponentType();
+						for (ReferenceDefinition ref : type.getReferences()
+								.values()) {
+							if (ref.isAutowire()) {
+								ReferenceTarget referenceTarget = new ReferenceTarget();
+								referenceTarget.setReferenceName(ref.getName());
+								componentDefinition.add(referenceTarget);
+							}
+						}
+						validate(componentDefinition);
+						return componentDefinition;
+					}
+					break;
+				}
+			}
+		} catch (LoaderException e) {
+			e.addContextName(name);
+			throw e;
+		}
+	}
+
+	protected Implementation<?> loadImplementation(CompositeComponent parent,
+			XMLStreamReader reader, DeploymentContext deploymentContext)
+			throws XMLStreamException, LoaderException {
+		reader.nextTag();
+		ModelObject o = registry.load(parent, null, reader, deploymentContext);
+		if (!(o instanceof Implementation)) {
+			throw new MissingImplementationException();
+		}
+		return (Implementation<?>) o;
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void loadProperty(XMLStreamReader reader,
+			DeploymentContext deploymentContext,
+			ComponentDefinition<?> componentDefinition)
+			throws XMLStreamException, LoaderException {
+		String name = reader.getAttributeValue(null, PROPERTY_NAME_ATTR);
+		Implementation<?> implementation = componentDefinition
+				.getImplementation();
+		ComponentType<?, ?, ?> componentType = implementation
+				.getComponentType();
+		Property<Type> property = componentType.getProperty(name);
+		if (property == null) {
+			throw new UndefinedPropertyException(name);
+		}
+
+		PropertyValue<Type> propertyValue;
+		readPropertyType(reader, property);
+
+		String source = reader.getAttributeValue(null, PROPERTY_SOURCE_ATTR);
+		String file = reader.getAttributeValue(null, PROPERTY_FILE_ATTR);
+
+		if (source != null || file != null) {
+			propertyValue = new PropertyValue<Type>(name, source, file);
+			propertyValue.setValue(property.getDefaultValues());
+			LoaderUtil.skipToEndElement(reader);
+		} else {
+			try {
+				DocumentBuilder documentBuilder = DOMHelper
+						.newDocumentBuilder();
+				List<Element> values = StaxUtil.createPropertyValues(reader,
+						property.getXmlType(), property.getXmlElement(), property.isMany(),
+						documentBuilder);
+				propertyValue = new PropertyValue<Type>(name, values);
+				if (!property.isMany() && values.size() > 1) {
+					ManyPropertyValueLoaderException ex = new ManyPropertyValueLoaderException();
+					ex.setPropertyName(name);
+					ex.setLine(reader.getLocation().getLineNumber());
+					ex.setColumn(reader.getLocation().getColumnNumber());
+					throw ex;
+				}
+			} catch (ParserConfigurationException e) {
+				throw new LoaderException(e);
+			}
+		}
+
+		ObjectFactory<?> objectFactory = null;
+		if (property.isMany()) {
+			objectFactory = propertyFactory.createListObjectFactory(property,
+					propertyValue);
+		} else {
+			objectFactory = propertyFactory.createObjectFactory(property,
+					propertyValue);
+		}
+		// propertyValue.setValueFactory(new
+		// SimplePropertyObjectFactory(property, propertyValue.getValue()));
+		propertyValue.setValueFactory(objectFactory);
+		componentDefinition.add(propertyValue);
+	}
+
+	protected void loadReference(XMLStreamReader reader,
+			DeploymentContext deploymentContext,
+			ComponentDefinition<?> componentDefinition)
+			throws XMLStreamException, LoaderException {
+		String name = reader.getAttributeValue(null, "name");
+		String text = reader.getElementText();
+		String target = text != null ? text.trim() : null;
+
+		if (name == null) {
+			throw new InvalidReferenceException("No name specified");
+		} else if (target == null) {
+			throw new InvalidReferenceException("No target specified", name);
+		}
+		Implementation<?> impl = componentDefinition.getImplementation();
+		ComponentType<?, ?, ?> componentType = impl.getComponentType();
+		if (!componentType.getReferences().containsKey(name)) {
+			throw new UndefinedReferenceException(name);
+		}
+		if (componentType instanceof CompositeComponentType) {
+			ReferenceDefinition definition = componentType.getReferences().get(
+					name);
+			if (definition.getBindings().isEmpty()) {
+				// TODO JFM allow selection of a default binding
+				try {
+					LocalBindingDefinition binding = new LocalBindingDefinition(
+							new URI(target));
+					definition.addBinding(binding);
+				} catch (URISyntaxException e) {
+					throw new InvalidReferenceException(e);
+				}
+			} else {
+				for (BindingDefinition binding : definition.getBindings()) {
+					try {
+						// FIXME this is bad - clarify in the spec how URIs are
+						// overriden
+						binding.setTargetUri(new URI(target));
+					} catch (URISyntaxException e) {
+						throw new LoaderException(e);
+					}
+				}
+			}
+		} else {
+			ReferenceTarget referenceTarget = componentDefinition
+					.getReferenceTargets().get(name);
+			if (referenceTarget == null) {
+				referenceTarget = new ReferenceTarget();
+				referenceTarget.setReferenceName(name);
+				componentDefinition.add(referenceTarget);
+			}
+			try {
+				referenceTarget.addTarget(new URI(target));
+			} catch (URISyntaxException e) {
+				throw new InvalidReferenceException(e);
+			}
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void populatePropertyValues(
+			ComponentDefinition<Implementation<?>> componentDefinition)
+			throws LoaderException, MissingPropertyValueException {
+		ComponentType componentType = componentDefinition.getImplementation()
+				.getComponentType();
+		if (componentType != null) {
+			Map<String, Property<?>> properties = componentType.getProperties();
+			Map<String, PropertyValue<?>> propertyValues = componentDefinition
+					.getPropertyValues();
+
+			for (Property<?> aProperty : properties.values()) {
+				if (propertyValues.get(aProperty.getName()) == null) {
+					if (aProperty.isMustSupply()) {
+						throw new MissingPropertyValueException(aProperty
+								.getName());
+					} else if (aProperty.getDefaultValues() != null) {
+						PropertyValue propertyValue = new PropertyValue();
+						propertyValue.setName(aProperty.getName());
+						propertyValue.setValue(aProperty.getDefaultValues());
+						propertyValue.setValueFactory(propertyFactory
+								.createObjectFactory(aProperty, propertyValue));
+						/*
+						 * propertyValue.setValueFactory(new
+						 * SimplePropertyObjectFactory(aProperty,
+						 * propertyValue.getValue()));
+						 */
+						propertyValues.put(aProperty.getName(), propertyValue);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Validates a component definition, ensuring all component type
+	 * configuration elements are satisfied
+	 */
+	protected void validate(ComponentDefinition<Implementation<?>> definition)
+			throws LoaderException {
+		// validate refererences
+		Implementation<?> implementation = definition.getImplementation();
+		ComponentType<?, ?, ?> type = implementation.getComponentType();
+		if (type == null) {
+			return;
+		}
+		for (ReferenceDefinition referenceDef : type.getReferences().values()) {
+			if (referenceDef.isAutowire() || !referenceDef.isRequired()) {
+				continue;
+			}
+			String name = referenceDef.getName();
+			ReferenceTarget target = definition.getReferenceTargets().get(name);
+			if (target == null) {
+				throw new MissingReferenceException(name);
+			}
+			int count = target.getTargets().size();
+			Multiplicity multiplicity = referenceDef.getMultiplicity();
+			switch (multiplicity) {
+			case ZERO_N:
+				break;
+			case ZERO_ONE:
+				if (count > 1) {
+					throw new ReferenceMultiplicityViolationException(name,
+							multiplicity, count);
+				}
+				break;
+			case ONE_ONE:
+				if (count != 1) {
+					throw new ReferenceMultiplicityViolationException(name,
+							multiplicity, count);
+				}
+				break;
+			case ONE_N:
+				if (count < 1) {
+					throw new ReferenceMultiplicityViolationException(name,
+							multiplicity, count);
+				}
+				break;
+			}
+
+		}
+	}
+
+	private void readPropertyType(XMLStreamReader reader, Property property)
+			throws MissingTypePropertyLoaderException {
+
+		String typeName = reader.getAttributeValue(null, PROPERTY_TYPE_ATTR);
+		String elementName = reader.getAttributeValue(null,
+				PROPERTY_ELEMENT_ATTR);
+		QName xmlElement = null;
+		QName xmlType = null;
+
+		if (typeName != null) {
+			int index = typeName.indexOf(COLON);
+			if (index != -1) {
+				String prefix = typeName.substring(0, index);
+				String localName = typeName.substring(index + 1);
+				String ns = reader.getNamespaceURI(prefix);
+				xmlType = new QName(ns, localName, prefix);
+			}
+		} else if (elementName != null) {
+			int index = elementName.indexOf(COLON);
+			if (index != -1) {
+				String prefix = elementName.substring(0, index);
+				String localName = elementName.substring(index + 1);
+				String ns = reader.getNamespaceURI(prefix);
+				xmlElement = new QName(ns, localName, prefix);
+				// FIXME :
+				// need to figure out how to determine the xmltype from this
+				// xmlelement
+				// this need access to the global xml element thro
+				// schemalocation or thro
+				// artifact repository
+				xmlType = null;
+			}
+		}
+
+		if (xmlType != null) {
+			property.setXmlType(xmlType);
+		}
+
+		if (xmlElement != null) {
+			property.setXmlElement(xmlElement);
+		}
+
+		/*if (property.getXmlType() == null && property.getXmlElement() == null) {
+		 MissingTypePropertyLoaderException ex = new MissingTypePropertyLoaderException();
+		 ex.setPropertyName(property.getName());
+		 ex.setLine(reader.getLocation().getLineNumber());
+		 ex.setColumn(reader.getLocation().getColumnNumber());
+		 throw ex; 
+		 }*/
+	}
+}

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java Wed Mar  7 08:58:13 2007
@@ -45,7 +45,7 @@
 public class JNDIPropertyFactory implements PropertyObjectFactory {
     public <T> ObjectFactory<T> createObjectFactory(Property<T> property, PropertyValue<T> value)
         throws LoaderException {
-        String text = value.getValue().get(0).getDocumentElement().getTextContent();
+        String text = value.getValue().get(0).getTextContent();
         try {
             Context context = new InitialContext();
             return new JNDIObjectFactory<T>(context, text);
@@ -61,7 +61,7 @@
             Context context = new InitialContext();
             List<String> text = new ArrayList<String>();
             for (int count = 0 ; count < instances.size() ; ++count) {
-                text.add(value.getValue().get(count).getDocumentElement().getTextContent());
+                text.add(value.getValue().get(count).getTextContent());
             }
             return new JNDIListObjectFactory<T>(context, text);
         } catch (NamingException e) {

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/PropertyLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/PropertyLoader.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/PropertyLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/PropertyLoader.java Wed Mar  7 08:58:13 2007
@@ -31,7 +31,6 @@
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.databinding.extension.DOMHelper;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
@@ -39,7 +38,7 @@
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.util.stax.StaxUtil;
 import org.osoa.sca.annotations.Constructor;
-import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * Loads a property from an XML-based assembly file
@@ -140,8 +139,8 @@
             mustSupply = Boolean.parseBoolean(attrValue);
         }
 
-        List<Document> defaultValues =
-            StaxUtil.createPropertyValues(reader, xmlType, xmlElement, documentBuilder);
+        List<Element> defaultValues =
+            StaxUtil.createPropertyValues(reader, xmlType, xmlElement, many, documentBuilder);
 
         if (mustSupply && defaultValues.size() > 0) {
             DefaultPropertyValueLoaderException ex = new DefaultPropertyValueLoaderException();

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java Wed Mar  7 08:58:13 2007
@@ -46,7 +46,7 @@
 
     public <T> ObjectFactory<T> createObjectFactory(Property<T> property, PropertyValue<T> value)
         throws LoaderException {
-        String text = value.getValue().get(0).getDocumentElement().getTextContent();
+        String text = value.getValue().get(0).getTextContent();
         return new SingletonObjectFactory<T>(createInstance(text, property.getJavaType()));
     }
     
@@ -55,7 +55,7 @@
         String text = null;
         List<T> instances = new ArrayList<T>();
         for (int count = 0 ; count < value.getValue().size() ; ++count) {
-            text = value.getValue().get(count).getDocumentElement().getTextContent();
+            text = value.getValue().get(count).getTextContent();
             instances.add(createInstance(text, property.getJavaType()));
         }
         return new SingletonListObjectFactory<T>(instances);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java Wed Mar  7 08:58:13 2007
@@ -20,7 +20,6 @@
 package org.apache.tuscany.core.property;
 
 import java.io.InputStream;
-import java.io.StringWriter;
 import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
@@ -32,16 +31,12 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
-import org.apache.tuscany.core.databinding.javabeans.JavaBean2DOMNodeTransformer;
 import org.apache.tuscany.core.databinding.xml.InputStream2Node;
 import org.apache.tuscany.spi.databinding.extension.DOMHelper;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
@@ -53,6 +48,7 @@
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.PropertyValue;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 /**
@@ -140,16 +136,15 @@
                             throw ex;
                         }
                         
+                        boolean prependValue = false;
                         DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                         Document compositePropDefValues = builder.newDocument();
-                        
-                        boolean prependValue = false;
+                        Node element = null;
                         for (int count = 0 ; count < compositeProp.getDefaultValues().size() ; ++count) {
-                            Node clone = compositeProp.getDefaultValues().get(count).getFirstChild().cloneNode(true);
-                            prependValue = clone.getNodeName().equals("value");
-                            clone = compositePropDefValues.adoptNode(clone);
-                            compositePropDefValues.appendChild(clone);
-                            //compositePropDefValues.appendChild(compositeProp.getDefaultValues().get(count).getFirstChild().cloneNode(true));
+                        	element = compositeProp.getDefaultValues().get(count);
+                            prependValue = element.getNodeName().equals("value");
+                            element = compositePropDefValues.adoptNode(element);
+                            compositePropDefValues.appendChild(element);
                         }
                         // Adding /value because the document root is "value"
                         String path = source.substring(index);
@@ -169,6 +164,7 @@
                             
                         // FIXME: How to deal with namespaces?
                         Document node = evaluate(null, compositePropDefValues, xpath);
+                        //Document node = evaluate(null, compositeProp.getDefaultValues().get(0).getOwnerDocument(), xpath);
                         if (node != null) {
                             List<Document> values = new ArrayList<Document>();
                             values.add(node);
@@ -184,17 +180,26 @@
                     throw new LoaderException(e);
                 }
             } else if (file != null) {
-                Document node = loadFromFile(propValue.getFile(), deploymentContext);
-                List<Document> values = new ArrayList<Document>();
-                values.add(node);
-                propValue.setValue(values);
                 Property<?> prop =
                     (Property<?>)componentDefinition.getImplementation().getComponentType().getProperties()
                         .get(propValue.getName());
+                Document document = loadFromFile(propValue.getFile(), deploymentContext);
+                List<Element> values = new ArrayList<Element>();
                 if (prop.isMany()) {
-                    propValue.setValueFactory(new SimpleMultivaluedPropertyObjectFactory(prop, propValue.getValue()));
+                	//extract the property value elements from the loaded document
+                	Element element = document.getDocumentElement();
+                	Node childNode = null;
+                	for (int count = 0 ; count < element.getChildNodes().getLength() ; ++count) {
+                		if (element.getChildNodes().item(count).getNodeType() == Document.ELEMENT_NODE) {
+                			values.add((Element)element.getChildNodes().item(count));
+                		}
+                	}
+                	propValue.setValue(values);
+                	propValue.setValueFactory(new SimpleMultivaluedPropertyObjectFactory(prop, propValue.getValue()));
                 } else {
-                    propValue.setValueFactory(new SimplePropertyObjectFactory(prop, (Document)propValue.getValue().get(0)));
+                	values.add(document.getDocumentElement());
+                	propValue.setValue(values);
+                	propValue.setValueFactory(new SimplePropertyObjectFactory(prop, (Element)propValue.getValue().get(0)));
                 }
             }
         }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java Wed Mar  7 08:58:13 2007
@@ -22,8 +22,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.namespace.QName;
-
 import org.apache.tuscany.core.databinding.xml.DOMDataBinding;
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
@@ -32,7 +30,6 @@
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.databinding.Mediator;
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
-import org.apache.tuscany.spi.idl.ElementInfo;
 import org.apache.tuscany.spi.idl.TypeInfo;
 import org.apache.tuscany.spi.idl.XMLType;
 import org.apache.tuscany.spi.loader.LoaderException;

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimpleMultivaluedPropertyObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimpleMultivaluedPropertyObjectFactory.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimpleMultivaluedPropertyObjectFactory.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimpleMultivaluedPropertyObjectFactory.java Wed Mar  7 08:58:13 2007
@@ -27,15 +27,15 @@
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
 import org.apache.tuscany.spi.idl.TypeInfo;
 import org.apache.tuscany.spi.model.Property;
-import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 public class SimpleMultivaluedPropertyObjectFactory<P> implements ObjectFactory<List<P>> {
     private SimpleTypeMapperExtension typeMapper;
     private Property<P> property;
-    private List<Document> values;
+    private List<Element> values;
     private List<P> instance;
 
-    public SimpleMultivaluedPropertyObjectFactory(Property<P> property, List<Document> value) {
+    public SimpleMultivaluedPropertyObjectFactory(Property<P> property, List<Element> value) {
         super();
         
         this.property = property;
@@ -55,7 +55,7 @@
         if (instance == null) {
             instance = new ArrayList<P>();
             for (int count = 0 ; count < values.size() ; ++count) {
-                text = values.get(count).getDocumentElement().getTextContent();
+                text = values.get(count).getTextContent();
             
                 if (property.getJavaType() == null) {
                     xmlType = new TypeInfo(property.getXmlType(), true, null);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java Wed Mar  7 08:58:13 2007
@@ -24,15 +24,15 @@
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
 import org.apache.tuscany.spi.idl.TypeInfo;
 import org.apache.tuscany.spi.model.Property;
-import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 public class SimplePropertyObjectFactory<P> implements ObjectFactory<P> {
     private SimpleTypeMapperExtension typeMapper;
     private Property<P> property;
-    private Document value;
+    private Element value;
     private P instance;
 
-    public SimplePropertyObjectFactory(Property<P> property, Document value) {
+    public SimplePropertyObjectFactory(Property<P> property, Element value) {
         super();
         
         this.property = property;
@@ -46,7 +46,7 @@
             return null;
         }
         if (instance == null) {
-            String text = value.getDocumentElement().getTextContent();
+            String text = value.getTextContent();
             TypeInfo xmlType = null;
             if (property.getJavaType() == null) {
                 xmlType = new TypeInfo(property.getXmlType(), true, null);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/JNDIPropertyFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/JNDIPropertyFactoryTestCase.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/JNDIPropertyFactoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/JNDIPropertyFactoryTestCase.java Wed Mar  7 08:58:13 2007
@@ -14,7 +14,6 @@
 import org.apache.tuscany.core.injection.JNDIObjectFactory;
 import org.apache.tuscany.spi.model.PropertyValue;
 import org.easymock.EasyMock;
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 /**
@@ -30,12 +29,12 @@
             Element element = EasyMock.createMock(Element.class);
             EasyMock.expect(element.getTextContent()).andReturn("foo");
             EasyMock.replay(element);
-            Document doc = EasyMock.createMock(Document.class);
-            EasyMock.expect(doc.getDocumentElement()).andReturn(element);
-            EasyMock.replay(doc);
+            //Document doc = EasyMock.createMock(Document.class);
+            //EasyMock.expect(doc.getDocumentElement()).andReturn(element);
+            //EasyMock.replay(doc);
             PropertyValue<?> value = new MockPropertyValue<Type>();
-            List<Document> docList = new ArrayList<Document>();
-            docList.add(doc);
+            List<Element> docList = new ArrayList<Element>();
+            docList.add(element);
             value.setValue(docList);
             JNDIObjectFactory<?> jndiFactory = (JNDIObjectFactory<?>) factory.createObjectFactory(null, value);
             assertEquals("bar", jndiFactory.getInstance());

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/MultivaluePropertyLoadingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/MultivaluePropertyLoadingTestCase.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/MultivaluePropertyLoadingTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/MultivaluePropertyLoadingTestCase.java Wed Mar  7 08:58:13 2007
@@ -21,24 +21,20 @@
 import java.io.StringReader;
 import java.io.StringWriter;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
 
 import junit.framework.TestCase;
 
 import org.apache.tuscany.core.databinding.javabeans.JavaBean2DOMNodeTransformer;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.util.stax.StaxUtil;
 import org.easymock.EasyMock;
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -53,30 +49,33 @@
     
     
     public void testPropertyLoading_SimpleType() throws Exception {
-        String xml = "<tus:property xmlns:foo='http://foo.com' "
-                + "xmlns:tus='http://www.osoa.org/xmlns/sca/1.0'"
-            + " name='TestProperty' many='true' type='foo:TestType'>"
-            + "<foo:TestValue>"
-            + "TestPropertyValue"
-            + "</foo:TestValue>"
-            + "</tus:property>";
-
-        XMLStreamReader reader = getReader(xml);
-        Property<?> aProperty = propertyLoader.load(null, null, reader, null);
-        //printNode(aProperty.getDefaultValue());
-        
-        assertEquals("TestProperty", aProperty.getName());
-        assertEquals(new QName("http://foo.com", "TestType", "foo"), aProperty.getXmlType());
-        assertEquals(false, aProperty.isMustSupply());
-        assertEquals(true, aProperty.isMany());
-        
-        Element root = aProperty.getDefaultValues().get(0).getDocumentElement();
-        
-        NodeList childNodes = root.getChildNodes();
-        assertEquals(1, childNodes.getLength());
-
-        Text t = (Text) childNodes.item(0);
-        assertEquals("TestPropertyValue", t.getTextContent());
+    	String xml = "<tus:property xmlns:foo='http://foo.com' "
+            			+ "xmlns:tus='http://www.osoa.org/xmlns/sca/1.0' "
+            			+ "xmlns:xs='http://www.w3.org/2001/XMLSchema' "
+            			+ " name='TestProperty' type='xs:string' many='true'>"
+            			+ "<value>"
+            				+ "TestPropertyValue1"
+            			+ "</value>"	
+            			+ "<value>"
+        					+ "TestPropertyValue2"
+        				+ "</value>"
+            			+ "</tus:property>";
+
+	    XMLStreamReader reader = getReader(xml);
+	    Property<?> aProperty = propertyLoader.load(null, null, reader, null);
+	    
+	    assertEquals("TestProperty", aProperty.getName());
+	    assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "string", "xs"), aProperty.getXmlType());
+	    assertEquals(false, aProperty.isMustSupply());
+	    assertEquals(true, aProperty.isMany());
+	    
+	    Element secondValue = aProperty.getDefaultValues().get(1);
+	    
+	    NodeList childNodes = secondValue.getChildNodes();
+	    assertEquals(1, childNodes.getLength());
+	
+	    Text t = (Text) childNodes.item(0);
+	    assertEquals("TestPropertyValue2", t.getTextContent());
     }
     
     public void testPropertyLoading_Type() throws Exception {
@@ -104,7 +103,7 @@
         assertEquals(false, aProperty.isMustSupply());
         assertEquals(true, aProperty.isMany());
         
-        Element secondValue = aProperty.getDefaultValues().get(1).getDocumentElement();
+        Element secondValue = aProperty.getDefaultValues().get(1);
         
         NodeList childNodes = secondValue.getChildNodes();
         assertEquals(2, childNodes.getLength());
@@ -136,7 +135,7 @@
         XMLStreamReader reader = getReader(xml);
         Property<?> aProperty = propertyLoader.load(null, null, reader, null);
         
-        Element secondElement = aProperty.getDefaultValues().get(1).getDocumentElement();
+        Element secondElement = aProperty.getDefaultValues().get(1);
         
         assertEquals(2, aProperty.getDefaultValues().size());
         assertEquals("TestProperty", aProperty.getName());

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/PropertyLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/PropertyLoaderTestCase.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/PropertyLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/PropertyLoaderTestCase.java Wed Mar  7 08:58:13 2007
@@ -64,7 +64,7 @@
         assertEquals(false, aProperty.isMustSupply());
         assertEquals(false, aProperty.isMany());
         
-        Element root = aProperty.getDefaultValues().get(0).getDocumentElement();
+        Element root = aProperty.getDefaultValues().get(0);
         
         NodeList childNodes = root.getChildNodes();
         assertEquals(1, childNodes.getLength());
@@ -92,7 +92,7 @@
         assertEquals(false, aProperty.isMustSupply());
         assertEquals(false, aProperty.isMany());
         
-        Element root = aProperty.getDefaultValues().get(0).getDocumentElement();
+        Element root = aProperty.getDefaultValues().get(0);
         
         NodeList childNodes = root.getChildNodes();
         assertEquals(2, childNodes.getLength());
@@ -119,7 +119,7 @@
         XMLStreamReader reader = getReader(xml);
         Property<?> aProperty = propertyLoader.load(null, null, reader, null);
         
-        Element root = aProperty.getDefaultValues().get(0).getDocumentElement();
+        Element root = aProperty.getDefaultValues().get(0);
         
         assertEquals("TestProperty", aProperty.getName());
         assertEquals(new QName("http://foo.com", "TestElement", "foo"), aProperty.getXmlElement());

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java Wed Mar  7 08:58:13 2007
@@ -38,12 +38,12 @@
     private <T> PropertyValue<T> mock(String value) {
         Document document = EasyMock.createMock(Document.class);
         Element element = EasyMock.createMock(Element.class);
-        EasyMock.expect(document.getDocumentElement()).andReturn(element);
+        //EasyMock.expect(document.getDocumentElement()).andReturn(element);
         EasyMock.expect(element.getTextContent()).andReturn(value);
         EasyMock.replay(document, element);
         
-        List<Document> valueList = new ArrayList<Document>();
-        valueList.add(document);
+        List<Element> valueList = new ArrayList<Element>();
+        valueList.add(element);
         return new PropertyValue<T>(null, valueList);
     }
 

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java?view=diff&rev=515645&r1=515644&r2=515645
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java Wed Mar  7 08:58:13 2007
@@ -39,12 +39,12 @@
     private <T> PropertyValue<T> mock(String value) {
         Document document = EasyMock.createMock(Document.class);
         Element element = EasyMock.createMock(Element.class);
-        EasyMock.expect(document.getDocumentElement()).andReturn(element);
+        //EasyMock.expect(document.getDocumentElement()).andReturn(element);
         EasyMock.expect(element.getTextContent()).andReturn(value);
         EasyMock.replay(document, element);
         
-        List<Document> valueList = new ArrayList<Document>();
-        valueList.add(document);
+        List<Element> valueList = new ArrayList<Element>();
+        valueList.add(element);
         return new PropertyValue<T>(null, valueList);
     }
 



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