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