Author: rfeng
Date: Fri Mar 6 21:35:43 2009
New Revision: 751079
URL: http://svn.apache.org/viewvc?rev=751079&view=rev
Log:
Support the SCA property value based on the OASIS syntax
Modified:
tuscany/java/sca/itest/properties/src/main/resources/ConstructorPropertyInjection.composite
tuscany/java/sca/itest/properties/src/main/resources/Outer.composite
tuscany/java/sca/itest/properties/src/main/resources/OuterPropertyTest.composite
tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
tuscany/java/sca/itest/properties/src/main/resources/mySimpleService.composite
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/WriteAllTestCase.java
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllCalculator.composite
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllPolicyCalculator.composite
tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/POJOTestCase.java
tuscany/java/sca/modules/databinding-jaxb/src/test/resources/ipo.xsd
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Modified:
tuscany/java/sca/itest/properties/src/main/resources/ConstructorPropertyInjection.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/properties/src/main/resources/ConstructorPropertyInjection.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/itest/properties/src/main/resources/ConstructorPropertyInjection.composite
(original)
+++
tuscany/java/sca/itest/properties/src/main/resources/ConstructorPropertyInjection.composite
Fri Mar 6 21:35:43 2009
@@ -17,25 +17,23 @@
* specific language governing permissions and limitations
* under the License.
-->
-<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200712"
- name="ConstructorPropertyInjection">
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
name="ConstructorPropertyInjection">
- <component name="Foo1Component">
- <implementation.java
- class="org.apache.tuscany.sca.itest.cdi.Foo1" />
- <property name="bar">fubar</property>
- </component>
+ <component name="Foo1Component">
+ <implementation.java class="org.apache.tuscany.sca.itest.cdi.Foo1" />
+ <property name="bar" value="foobar" />
+ </component>
- <component name="Foo2Component">
- <implementation.java
- class="org.apache.tuscany.sca.itest.cdi.Foo2" />
- <property name="bar">fubar</property>
- </component>
+ <component name="Foo2Component">
+ <implementation.java class="org.apache.tuscany.sca.itest.cdi.Foo2" />
+ <property name="bar">fubar</property>
+ </component>
- <component name="Foo3Component">
- <implementation.java
- class="org.apache.tuscany.sca.itest.cdi.Foo3" />
- <property name="bar">fubar</property>
- </component>
+ <component name="Foo3Component">
+ <implementation.java class="org.apache.tuscany.sca.itest.cdi.Foo3" />
+ <property name="bar">
+ <value>fubar</value>
+ </property>
+ </component>
</composite>
\ No newline at end of file
Modified: tuscany/java/sca/itest/properties/src/main/resources/Outer.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/properties/src/main/resources/Outer.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
--- tuscany/java/sca/itest/properties/src/main/resources/Outer.composite
(original)
+++ tuscany/java/sca/itest/properties/src/main/resources/Outer.composite Fri
Mar 6 21:35:43 2009
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations
* under the License.
-->
-<composite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200712"
+<composite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
xmlns:foo="http://foo" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xsi:schemaLocation="http://docs.oasis-open.org/ns/opencsa/sca/200712
http://docs.oasis-open.org/ns/opencsa/sca/200712" name="Iteration3Composite"
+ xsi:schemaLocation="http://docs.oasis-open.org/ns/opencsa/sca/200903
http://docs.oasis-open.org/ns/opencsa/sca/200903" name="Iteration3Composite"
targetNamespace="http://foo" local="true" autowire="false">
<property name="newLocation" type="xsd:anyURI">Raleigh</property>
Modified:
tuscany/java/sca/itest/properties/src/main/resources/OuterPropertyTest.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/properties/src/main/resources/OuterPropertyTest.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/itest/properties/src/main/resources/OuterPropertyTest.composite
(original)
+++
tuscany/java/sca/itest/properties/src/main/resources/OuterPropertyTest.composite
Fri Mar 6 21:35:43 2009
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
-->
-<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200712"
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
xmlns:foo="http://foo"
targetNamespace="http://foo"
name="OuterPropertyTest"
Modified:
tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
--- tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
(original)
+++ tuscany/java/sca/itest/properties/src/main/resources/PropertyTest.composite
Fri Mar 6 21:35:43 2009
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
-->
-<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200712"
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
xmlns:foo="http://foo"
xmlns:cust="http://www.example.com/Customer"
xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0"
@@ -35,7 +35,7 @@
<property name="number" type="xsd:int">1</property>
<property name="complex" type="foo:MyComplexType" >
- <foo:MyComplexValue xsi:type="foo:MyComplexType" >
+ <value xsi:type="foo:MyComplexType" >
<foo:a>a</foo:a>
<foo:b>b</foo:b>
<foo:c>c</foo:c>
@@ -44,11 +44,11 @@
<foo:y>y</foo:y>
<foo:z>z</foo:z>
</foo:x>
- </foo:MyComplexValue>
+ </value>
</property>
<property name="moreComplex" type="foo:MyMoreComplexType">
- <MyMoreComplexValue xmlns="">
+ <value>
<numberSetArray>
<integerNumber>1</integerNumber>
<floatNumber>11</floatNumber>
@@ -73,16 +73,16 @@
<floatNumber>158.68</floatNumber>
<doubleNumber>369.04</doubleNumber>
</numberSet>
- </MyMoreComplexValue>
+ </value>
</property>
<property name="complexFoo" type="foo:MyMoreComplexType">
- <MyMoreComplexValue xmlns="">
+ <value>
<stringArray>TestString_3</stringArray>
<stringArray>TestString_4</stringArray>
<intArray>100</intArray>
<intArray>200</intArray>
- </MyMoreComplexValue>
+ </value>
</property>
<component name="ABCDComponent">
@@ -118,7 +118,7 @@
<implementation.java
class="org.apache.tuscany.sca.itest.PropertyComponentImpl"/>
<property name="complexPropertyOne" source="$moreComplex"></property>
<property name="complexPropertyTwo">
- <MyAnotherComplexValue xmlns="">
+ <value>
<stringArray>TestString_1</stringArray>
<stringArray>TestString_2</stringArray>
<intArray>10</intArray>
@@ -143,10 +143,10 @@
<floatNumber>158.68</floatNumber>
<doubleNumber>369.04</doubleNumber>
</numberSet>
- </MyAnotherComplexValue>
+ </value>
</property>
<property name="complexPropertyThree"
element="foo:PropertyThreeElement">
- <PropertyThreeElement xmlns="">
+ <PropertyThreeElement xmlns="http://foo">
<stringArray>TestElementString_1</stringArray>
<stringArray>TestElementString_2</stringArray>
<intArray>10</intArray>
@@ -174,7 +174,7 @@
</PropertyThreeElement>
</property>
<property name="complexPropertyFour" element="foo:PropertyFourElement"
many="true">
- <PropertyFourElement xmlns="">
+ <PropertyFourElement xmlns="http://foo">
<integerNumber>1</integerNumber>
<floatNumber>11.11</floatNumber>
<doubleNumber>111.111</doubleNumber>
@@ -184,7 +184,7 @@
<doubleNumber>11111.11111</doubleNumber>
</numberSet>
</PropertyFourElement>
- <PropertyFourElement xmlns="">
+ <PropertyFourElement xmlns="http://foo">
<integerNumber>2</integerNumber>
<floatNumber>22.22</floatNumber>
<doubleNumber>222.222</doubleNumber>
@@ -194,7 +194,7 @@
<doubleNumber>22222.22222</doubleNumber>
</numberSet>
</PropertyFourElement>
- <PropertyFourElement xmlns="">
+ <PropertyFourElement xmlns="http://foo">
<integerNumber>3</integerNumber>
<floatNumber>33.33</floatNumber>
<doubleNumber>333.333</doubleNumber>
@@ -207,18 +207,18 @@
</property>
<property name="complexPropertyFive" source="$complexFoo"/>
<property name="sdoProperty" type="cust:Customer">
- <cust:customer>
+ <value>
<cust:firstName>Firstly Name</cust:firstName>
<cust:middleName>Middler Name</cust:middleName>
<cust:lastName>Lasting Name</cust:lastName>
- </cust:customer>
+ </value>
</property>
<property name="customerSdo" type="cust:Customer">
- <cust:customer>
+ <value>
<cust:firstName>Sdo Firstly Name</cust:firstName>
<cust:middleName>Sdo Middler Name</cust:middleName>
<cust:lastName>Sdo Lasting Name</cust:lastName>
- </cust:customer>
+ </value>
</property>
<property name="location" type="xsd:string">RTP</property>
<property name="year" type="xsd:string">2006</property>
@@ -226,21 +226,21 @@
<property name="integerNumbers" many="true" type="xsd:int">1 2 3 4 5 6
7 8 9 10</property>
<property name="intNumbers" many="true" type="xsd:int">10 9 8 7 6 5 4
3 2 1 0</property>
<property name="sdoArray" many="true" type="cust:Customer">
- <cust:customer>
+ <value>
<cust:firstName>Firstly Name 1</cust:firstName>
<cust:middleName>Middler Name 1</cust:middleName>
<cust:lastName>Lasting Name 1</cust:lastName>
- </cust:customer>
- <cust:customer>
+ </value>
+ <value>
<cust:firstName>Firstly Name 2</cust:firstName>
<cust:middleName>Middler Name 2</cust:middleName>
<cust:lastName>Lasting Name 2</cust:lastName>
- </cust:customer>
- <cust:customer>
+ </value>
+ <value>
<cust:firstName>Firstly Name 3</cust:firstName>
<cust:middleName>Middler Name 3</cust:middleName>
<cust:lastName>Lasting Name 3</cust:lastName>
- </cust:customer>
+ </value>
</property>
<property name="complexJAXBPropertyOne"
type="rcp:ReturnCodeProperties">
<MyRCProps xmlns="http://test.sca.jaxb/rcprops">
Modified:
tuscany/java/sca/itest/properties/src/main/resources/mySimpleService.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/properties/src/main/resources/mySimpleService.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/itest/properties/src/main/resources/mySimpleService.composite
(original)
+++
tuscany/java/sca/itest/properties/src/main/resources/mySimpleService.composite
Fri Mar 6 21:35:43 2009
@@ -18,9 +18,9 @@
* under the License.
-->
<composite autowire="false" local="true" name="MySimpleService"
- targetNamespace="http://foo" xmlns:foo="http://foo"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200712"
+ targetNamespace="http://foo" xmlns:foo="http://foo"
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://docs.oasis-open.org/ns/opencsa/sca/200712
http://docs.oasis-open.org/ns/opencsa/sca/200712 ">
+ xsi:schemaLocation="http://docs.oasis-open.org/ns/opencsa/sca/200903
http://docs.oasis-open.org/ns/opencsa/sca/200903 ">
<service name="MyServiceNew1" promote="MyServiceComponentNew/MyService">
Modified:
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
(original)
+++
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
Fri Mar 6 21:35:43 2009
@@ -21,6 +21,9 @@
import static javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI;
import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
+import static javax.xml.stream.XMLStreamConstants.CDATA;
+import static javax.xml.stream.XMLStreamConstants.CHARACTERS;
+import static javax.xml.stream.XMLStreamConstants.COMMENT;
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
import static org.apache.tuscany.sca.assembly.xml.Constants.ELEMENT;
@@ -30,6 +33,7 @@
import static org.apache.tuscany.sca.assembly.xml.Constants.NAME;
import static org.apache.tuscany.sca.assembly.xml.Constants.ONE_N;
import static org.apache.tuscany.sca.assembly.xml.Constants.ONE_ONE;
+import static org.apache.tuscany.sca.assembly.xml.Constants.PROPERTY;
import static org.apache.tuscany.sca.assembly.xml.Constants.PROPERTY_QNAME;
import static org.apache.tuscany.sca.assembly.xml.Constants.SCA11_NS;
import static org.apache.tuscany.sca.assembly.xml.Constants.TARGET;
@@ -430,6 +434,7 @@
return null;
}
+ /*
protected List<Extension> readPropertyValue(XMLStreamReader reader) throws
XMLStreamException,
ContributionReadException {
List<Extension> values = new ArrayList<Extension>();
@@ -455,7 +460,7 @@
name = reader.getName();
if (PROPERTY_QNAME.equals(name)) {
isTextForProperty = true;
- continue;
+ break;
}
isTextForProperty = false;
// Read <value>
@@ -489,8 +494,14 @@
}
break;
}
+ if (reader.hasNext()) {
+ event = reader.next();
+ } else {
+ return values;
+ }
}
}
+ */
/**
* Read a property value into a DOM document.
@@ -517,8 +528,13 @@
throw ce;
}
- // root element has no namespace and local name "value"
- Element root = document.createElementNS(null, "value");
+ // Collect the property values as <value> elements under the <property>
+ Element root = document.createElementNS(SCA11_NS, "sca:" + PROPERTY);
+ String nameAttr = getString(reader, NAME);
+ if (nameAttr != null) {
+ root.setAttributeNS(SCA11_NS, "sca:" + NAME, nameAttr);
+ }
+ declareNamespace(root, "sca", SCA11_NS);
if (type != null) {
org.w3c.dom.Attr xsi =
document.createAttributeNS(XMLNS_ATTRIBUTE_NS_URI, "xmlns:xsi");
xsi.setValue(W3C_XML_SCHEMA_INSTANCE_NS_URI);
@@ -537,7 +553,63 @@
}
document.appendChild(root);
- loadElement(reader, root);
+ // Start to parse the property
+ QName name = reader.getName(); // Should be sca:property
+
+ // SCA 1.1 supports the @value for simple types
+ String valueAttr = getString(reader, VALUE);
+ if (valueAttr != null) {
+ Element valueElement = document.createElementNS(SCA11_NS, VALUE);
+ root.appendChild(valueElement);
+ valueElement.setTextContent(valueAttr);
+ }
+
+ boolean isTextForProperty = true;
+ StringBuffer text = new StringBuffer();
+
+ int event = reader.getEventType();
+ while (true) {
+ switch (event) {
+ case START_ELEMENT:
+ name = reader.getName();
+ if (PROPERTY_QNAME.equals(name)) {
+ isTextForProperty = true;
+ break;
+ }
+ isTextForProperty = false;
+ // Read <value>
+ if (VALUE_QNAME.equals(name)) {
+ loadElement(reader, root);
+ } else {
+ // Global elements
+ loadElement(reader, root);
+ }
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ case XMLStreamConstants.CDATA:
+ if (isTextForProperty) {
+ text.append(reader.getText());
+ }
+ break;
+ case END_ELEMENT:
+ name = reader.getName();
+ if (PROPERTY_QNAME.equals(name)) {
+ if (root.getChildNodes().getLength() == 0) {
+ // Add the text as an <value>
+ Element valueElement =
document.createElementNS(SCA11_NS, VALUE);
+ root.appendChild(valueElement);
+ valueElement.setTextContent(text.toString());
+ }
+ return document;
+ }
+ break;
+ }
+ if (reader.hasNext()) {
+ event = reader.next();
+ } else {
+ break;
+ }
+ }
return document;
}
@@ -607,8 +679,8 @@
Document document = root.getOwnerDocument();
Node current = root;
while (true) {
- switch (reader.next()) {
- case XMLStreamConstants.START_ELEMENT:
+ switch (reader.getEventType()) {
+ case START_ELEMENT:
QName name = reader.getName();
Element child = createElement(document, name);
@@ -644,20 +716,28 @@
}
break;
- case XMLStreamConstants.CDATA:
+ case CDATA:
current.appendChild(document.createCDATASection(reader.getText()));
break;
- case XMLStreamConstants.CHARACTERS:
+ case CHARACTERS:
current.appendChild(document.createTextNode(reader.getText()));
break;
- case XMLStreamConstants.END_ELEMENT:
+ case COMMENT:
+
current.appendChild(document.createComment(reader.getText()));
+ break;
+ case END_ELEMENT:
+ // pop the element off the stack
+ current = current.getParentNode();
// if we are back at the root then we are done
if (current == root) {
return;
}
- // pop the element off the stack
- current = current.getParentNode();
+ }
+ if (reader.hasNext()) {
+ reader.next();
+ } else {
+ return;
}
}
}
Modified:
tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/WriteAllTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/WriteAllTestCase.java?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/WriteAllTestCase.java
(original)
+++
tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/WriteAllTestCase.java
Fri Mar 6 21:35:43 2009
@@ -152,7 +152,7 @@
assertEquals(composite.getProperties().get(1).getName(),"prop2");
assertEquals(composite.getProperties().get(1).isMustSupply(), true);
assertEquals(composite.getProperties().get(0).getXSDType(), new
QName("http://foo", "MyComplexType"));
- assertEquals(composite.getProperties().get(1).getXSDElement(), new
QName("http://docs.oasis-open.org/ns/opencsa/sca/200903",
"MyComplexPropertyValue1"));
+ assertEquals(composite.getProperties().get(1).getXSDElement(), new
QName("http://foo", "MyComplexPropertyValue1"));
}
}
Modified:
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllCalculator.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllCalculator.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllCalculator.composite
(original)
+++
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllCalculator.composite
Fri Mar 6 21:35:43 2009
@@ -107,17 +107,21 @@
</reference>
<property name="prop1" xmlns:foo="http://foo" many="true"
type="foo:MyComplexType">
- <ext:testExtension/>
- <MyComplexPropertyValue1 xsi:type="foo:MyComplexType" attr="bar">
+ <value xsi:type="foo:MyComplexType" attr="bar">
<foo:a>AValue</foo:a>
<bar:b xmlns:bar="http://bar">InterestingURI</bar:b>
- </MyComplexPropertyValue1>
- <MyComplexPropertyValue2 xsi:type="foo:MyComplexType" attr="zing">
+ </value>
+ <value xsi:type="foo:MyComplexType" attr="zing">
<foo:a>BValue</foo:a>
<bar:b xmlns:bar="http://bar">BoringURI</bar:b>
- </MyComplexPropertyValue2>
+ </value>
</property>
- <property name="prop2" xmlns:foo="http://foo" mustSupply="true"
element="MyComplexPropertyValue1"/>
+ <property name="prop2" xmlns:foo="http://foo" mustSupply="true"
element="foo:MyComplexPropertyValue1">
+ <foo:MyComplexPropertyValue1>123</foo:MyComplexPropertyValue1>
+ </property>
+ <property name="prop3" xmlns:foo="http://foo" mustSupply="true"
value="123"/>
+ <property name="prop4">123</property>
+ <property name="prop5"><value>123</value></property>
</composite>
Modified:
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllPolicyCalculator.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllPolicyCalculator.composite?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllPolicyCalculator.composite
(original)
+++
tuscany/java/sca/modules/assembly-xml/src/test/resources/org/apache/tuscany/sca/assembly/xml/TestAllPolicyCalculator.composite
Fri Mar 6 21:35:43 2009
@@ -112,15 +112,14 @@
</reference>
<property name="prop1" xmlns:foo="http://foo">
- <ext:testExtension/>
- <MyComplexPropertyValue1 xsi:type="foo:MyComplexType" attr="bar">
+ <value xsi:type="foo:MyComplexType" attr="bar">
<foo:a>AValue</foo:a>
<bar:b xmlns:bar="http://bar">InterestingURI</bar:b>
- </MyComplexPropertyValue1>
- <MyComplexPropertyValue2 xsi:type="foo:MyComplexType" attr="zing">
+ </value>
+ <value xsi:type="foo:MyComplexType" attr="zing">
<foo:a>BValue</foo:a>
<bar:b xmlns:bar="http://bar">BoringURI</bar:b>
- </MyComplexPropertyValue2>
+ </value>
</property>
</composite>
Modified:
tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/POJOTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/POJOTestCase.java?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/POJOTestCase.java
(original)
+++
tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/POJOTestCase.java
Fri Mar 6 21:35:43 2009
@@ -209,11 +209,12 @@
public void testPrimitive() throws Exception {
JAXBContext context = JAXBContext.newInstance(int.class);
StringWriter writer = new StringWriter();
- JAXBElement<Object> element = new JAXBElement<Object>(new
QName("http://ns1", "bean"), Object.class, 1);
+ JAXBElement<Integer> element = new JAXBElement<Integer>(new
QName("http://ns1", "bean"), Integer.class, 1);
context.createMarshaller().marshal(element, writer);
// System.out.println(writer.toString());
- Object result = context.createUnmarshaller().unmarshal(new
StringReader(writer.toString()));
+ StreamSource source = new StreamSource(new
StringReader(writer.toString()));
+ Object result = context.createUnmarshaller().unmarshal(source,
int.class);
assertTrue(result instanceof JAXBElement);
JAXBElement e2 = (JAXBElement)result;
assertEquals(1, e2.getValue());
Modified: tuscany/java/sca/modules/databinding-jaxb/src/test/resources/ipo.xsd
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/test/resources/ipo.xsd?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/test/resources/ipo.xsd
(original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/test/resources/ipo.xsd Fri
Mar 6 21:35:43 2009
@@ -129,6 +129,14 @@
<pattern value="[A-Z]{2}\d\s\d[A-Z]{2}" />
</restriction>
</simpleType>
+
+ <element name="note" type="ipo:Note" />
+ <complexType name="Note" mixed="true">
+ <sequence>
+ <any namespace="##any" processContents="lax" minOccurs="0"/>
+ </sequence>
+ <anyAttribute/>
+ </complexType>
Modified:
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
(original)
+++
tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
Fri Mar 6 21:35:43 2009
@@ -57,95 +57,62 @@
public JavaPropertyValueObjectFactory(ExtensionPointRegistry registry) {
this.mediator =
registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(Mediator.class);
}
+
public JavaPropertyValueObjectFactory(Mediator mediator) {
this.mediator = mediator;
}
-
+
+ /**
+ * Introspect the property
+ * @param javaElement
+ * @return
+ */
+ private DataType<?> introspect(JavaElementImpl javaElement) {
+ DataType<XMLType> dt =
+ new DataTypeImpl<XMLType>(null, javaElement.getType(),
javaElement.getGenericType(), XMLType.UNKNOWN);
+ mediator.getDataBindings().introspectType(dt, null);
+ return dt;
+ }
+
public ObjectFactory createValueFactory(Property property, Object
propertyValue, JavaElementImpl javaElement) {
- isSimpleType = isSimpleType(property);
Document doc = (Document)propertyValue;
+ List<Node> nodes = getValues(doc);
Class<?> javaType =
JavaIntrospectionHelper.getBaseType(javaElement.getType(),
javaElement.getGenericType());
- Element rootElement = doc.getDocumentElement();
if (property.isMany()) {
- if (isSimpleType) {
- String value = "";
- if (rootElement.getChildNodes().getLength() > 0) {
- value =
rootElement.getChildNodes().item(0).getTextContent();
- }
- List<String> values = getSimplePropertyValues(value, javaType);
- if ( javaElement.getType().isArray() ) {
- return new ArrayObjectFactoryImpl(property, values,
isSimpleType, javaType);
- } else {
- return new ListObjectFactoryImpl(property, values,
isSimpleType, javaType);
- }
+ if (javaElement.getType().isArray()) {
+ return new ArrayObjectFactoryImpl(property, nodes, javaType);
} else {
- if ( javaElement.getType().isArray() ) {
- return new ArrayObjectFactoryImpl(property,
getComplexPropertyValues(doc), isSimpleType, javaType);
- } else {
- return new ListObjectFactoryImpl(property,
getComplexPropertyValues(doc), isSimpleType, javaType);
- }
+ return new ListObjectFactoryImpl(property, nodes, javaType);
}
} else {
- if (isSimpleType) {
- String value = "";
- if (rootElement.getChildNodes().getLength() > 0) {
- value =
rootElement.getChildNodes().item(0).getTextContent();
- }
- return new ObjectFactoryImpl(property, value, isSimpleType,
javaType);
- } else {
- List<Node> nodes = getComplexPropertyValues(doc);
- Object value = null;
- if (!nodes.isEmpty()) {
- value = nodes.get(0);
- }
- return new ObjectFactoryImpl(property, value, isSimpleType,
javaType);
+ Object value = null;
+ if (!nodes.isEmpty()) {
+ value = nodes.get(0);
}
+ return new ObjectFactoryImpl(property, value, javaType);
}
}
-
+
public ObjectFactory createValueFactory(Property property, Object
propertyValue, Class<?> javaType) {
- isSimpleType = isSimpleType(property);
Document doc = (Document)propertyValue;
- Element rootElement = doc.getDocumentElement();
+ List<Node> nodes = getValues(doc);
if (property.isMany()) {
- if (isSimpleType) {
- String value = "";
- if (rootElement.getChildNodes().getLength() > 0) {
- value =
rootElement.getChildNodes().item(0).getTextContent();
- }
- List<String> values = getSimplePropertyValues(value, javaType);
- return new ListObjectFactoryImpl(property, values,
isSimpleType, javaType);
- } else {
- return new ListObjectFactoryImpl(property,
getComplexPropertyValues(doc), isSimpleType, javaType);
- }
+ return new ListObjectFactoryImpl(property, nodes, javaType);
} else {
- if (isSimpleType) {
- String value = "";
- if (rootElement.getChildNodes().getLength() > 0) {
- value =
rootElement.getChildNodes().item(0).getTextContent();
- }
- return new ObjectFactoryImpl(property, value, isSimpleType,
javaType);
- } else {
- List<Node> nodes = getComplexPropertyValues(doc);
- Object value = null;
- if (!nodes.isEmpty()) {
- value = nodes.get(0);
- }
- return new ObjectFactoryImpl(property, value, isSimpleType,
javaType);
+ Object value = null;
+ if (!nodes.isEmpty()) {
+ value = nodes.get(0);
}
-
+ return new ObjectFactoryImpl(property, value, javaType);
}
- }
-
+ }
- public <B> B createPropertyValue(ComponentProperty property, Class<B> type)
- {
+ public <B> B createPropertyValue(ComponentProperty property, Class<B>
type) {
ObjectFactory<B> factory = this.createValueFactory(property,
property.getValue(), type);
return factory.getInstance();
}
-
abstract class ObjectFactoryImplBase implements ObjectFactory {
protected SimpleTypeMapper simpleTypeMapper = new
SimpleTypeMapperImpl();
protected Property property;
@@ -153,15 +120,14 @@
protected Class<?> javaType;
protected DataType<XMLType> sourceDataType;
protected DataType<?> targetDataType;
- boolean isSimpleType;
- public ObjectFactoryImplBase(Property property, Object propertyValue,
boolean isSimpleType, Class<?> javaType) {
- this.isSimpleType = isSimpleType;
+ public ObjectFactoryImplBase(Property property, Object propertyValue,
Class<?> javaType) {
this.property = property;
this.propertyValue = propertyValue;
this.javaType = javaType;
- sourceDataType = new DataTypeImpl<XMLType>(DOMDataBinding.NAME,
Node.class, new XMLType(null, this.property
- .getXSDType()));
+ sourceDataType =
+ new DataTypeImpl<XMLType>(DOMDataBinding.NAME, Node.class,
+ new XMLType(null,
this.property.getXSDType()));
TypeInfo typeInfo = null;
if (this.property.getXSDType() != null) {
if
(SimpleTypeMapperImpl.isSimpleXSDType(this.property.getXSDType())) {
@@ -185,8 +151,8 @@
}
class ObjectFactoryImpl extends ObjectFactoryImplBase {
- public ObjectFactoryImpl(Property property, Object propertyValue,
boolean isSimpleType, Class<?> javaType) {
- super(property, propertyValue, isSimpleType, javaType);
+ public ObjectFactoryImpl(Property property, Object propertyValue,
Class<?> javaType) {
+ super(property, propertyValue, javaType);
}
public Object getInstance() throws ObjectCreationException {
@@ -194,11 +160,13 @@
try {
return
simpleTypeMapper.toJavaObject(property.getXSDType(), (String)propertyValue,
null);
} catch (NumberFormatException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " +
propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property.getName()
+ + " with value "
+ + propertyValue, ex);
} catch (IllegalArgumentException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " +
propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property.getName()
+ + " with value "
+ + propertyValue, ex);
}
} else {
return mediator.mediate(propertyValue, sourceDataType,
targetDataType, null);
@@ -208,8 +176,8 @@
}
class ListObjectFactoryImpl extends ObjectFactoryImplBase {
- public ListObjectFactoryImpl(Property property, List<?>
propertyValues, boolean isSimpleType, Class<?> javaType) {
- super(property, propertyValues, isSimpleType, javaType);
+ public ListObjectFactoryImpl(Property property, List<?>
propertyValues, Class<?> javaType) {
+ super(property, propertyValues, javaType);
}
@SuppressWarnings("unchecked")
@@ -220,13 +188,19 @@
try {
values.add(simpleTypeMapper.toJavaObject(property.getXSDType(), aValue, null));
} catch (NumberFormatException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " + aValue
- + " from value list of " + propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property
+ .getName()
+ + " with value "
+ + aValue
+ + " from value list of "
+ + propertyValue, ex);
} catch (IllegalArgumentException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " + aValue
- + " from value list of " + propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property
+ .getName()
+ + " with value "
+ + aValue
+ + " from value list of "
+ + propertyValue, ex);
}
}
return values;
@@ -239,10 +213,10 @@
}
}
}
-
+
class ArrayObjectFactoryImpl extends ObjectFactoryImplBase {
- public ArrayObjectFactoryImpl(Property property, List<?>
propertyValues, boolean isSimpleType, Class<?> javaType) {
- super(property, propertyValues, isSimpleType, javaType);
+ public ArrayObjectFactoryImpl(Property property, List<?>
propertyValues, Class<?> javaType) {
+ super(property, propertyValues, javaType);
}
@SuppressWarnings("unchecked")
@@ -254,13 +228,19 @@
try {
Array.set(values, count++,
simpleTypeMapper.toJavaObject(property.getXSDType(), aValue, null));
} catch (NumberFormatException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " + aValue
- + " from value list of " + propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property
+ .getName()
+ + " with value "
+ + aValue
+ + " from value list of "
+ + propertyValue, ex);
} catch (IllegalArgumentException ex) {
- throw new ObjectCreationException("Failed to create
instance for property "
- + property.getName() + " with value " + aValue
- + " from value list of " + propertyValue, ex);
+ throw new ObjectCreationException("Failed to create
instance for property " + property
+ .getName()
+ + " with value "
+ + aValue
+ + " from value list of "
+ + propertyValue, ex);
}
}
return values;
@@ -275,12 +255,10 @@
}
}
-
-
/**
* Utility methods
*/
-
+
/**
*
* @param property
@@ -301,7 +279,6 @@
return false;
}
-
/**
* Retrieve list of simple property values
* @param concatenatedValue
@@ -331,7 +308,8 @@
* @param document
* @return
*/
- private static List<Node> getComplexPropertyValues(Document document) {
+ private static List<Node> getValues(Document document) {
+ // The root is the property element
Element rootElement = document.getDocumentElement();
List<Node> propValues = new ArrayList<Node>();
NodeList nodes = rootElement.getChildNodes();
Modified:
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=751079&r1=751078&r2=751079&view=diff
==============================================================================
---
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
(original)
+++
tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
Fri Mar 6 21:35:43 2009
@@ -387,7 +387,7 @@
// will be extended later with definitions from application
contributions
systemContribution = contributionFactory.createContribution();
systemContribution.setURI("http://tuscany.apache.org/SystemContribution");
- systemContribution.setLocation("Derived");
+
systemContribution.setLocation("http://tuscany.apache.org/SystemContribution");
ModelResolver modelResolver = new
ExtensibleModelResolver(systemContribution, modelResolvers, modelFactories);
systemContribution.setModelResolver(modelResolver);
systemContribution.setUnresolved(true);