diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-13 20:02:36 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-13 20:02:36 +0000 |
commit | 4ed0ed906e82c9484b384419fa4ef4c980768731 (patch) | |
tree | e0250b6d10349e29522a2b1667d2e1db4d9dab84 /branches/sca-java-1.x/modules/databinding-job/src | |
parent | ba73f8abcef884936f965c3085b80485bf2b5e1a (diff) |
Creating Java SCA 1.x branch
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@713805 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/databinding-job/src')
12 files changed, 690 insertions, 0 deletions
diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job.java new file mode 100644 index 0000000000..98ca6c7429 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +public interface Job<T, E> { + public T compute(E v); + + public boolean eos(); + + public int getType(); + + public static int NULL_JOB = 0; + public static int REGULAR_JOB = 1; + public static int RESULT_JOB = 2; + // public boolean reusable(); +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job2OMElement.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job2OMElement.java new file mode 100644 index 0000000000..9752815640 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/Job2OMElement.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +import java.io.ByteArrayOutputStream; +import java.io.Externalizable; +import java.io.ObjectOutputStream; + +import javax.activation.DataHandler; +import javax.xml.namespace.QName; + +import org.apache.axiom.attachments.ByteArrayDataSource; +import org.apache.axiom.om.OMAbstractFactory; +import org.apache.axiom.om.OMElement; +import org.apache.axiom.om.OMFactory; +import org.apache.axiom.om.OMNamespace; +import org.apache.axiom.om.OMText; +import org.apache.tuscany.sca.databinding.PullTransformer; +import org.apache.tuscany.sca.databinding.TransformationContext; +import org.apache.tuscany.sca.databinding.TransformationException; +import org.apache.tuscany.sca.databinding.impl.BaseTransformer; +import org.apache.tuscany.sca.databinding.impl.XSDDataTypeConverter.Base64Binary; +import org.apache.tuscany.sca.databinding.axiom.AxiomHelper; + +@SuppressWarnings("unchecked") +public class Job2OMElement extends BaseTransformer<Job, OMElement> implements + PullTransformer<Job, OMElement> { + + @Override + protected Class getSourceType() { + return Job.class; + } + + @Override + protected Class getTargetType() { + return OMElement.class; + } + + public OMElement transform(Job source, TransformationContext context) { + OMElement element = null; + + try { + // JobDataSource dataSource = new JobDataSource(); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(bos); + out.writeObject(source); + out.close(); + byte[] bytes = bos.toByteArray(); + // ByteArrayDataSource ds = new ByteArrayDataSource(bytes); + OMFactory factory = OMAbstractFactory.getOMFactory(); + OMNamespace ns = AxiomHelper.createOMNamespace(factory, new QName( + "http://job")); + element = factory.createOMElement("jobreference", ns); + // OMText data = factory.createOMText(new DataHandler(ds), true); + // element.addChild(data); + element.setText(Base64Binary.encode(bytes)); + return element; + } catch (Exception e) { + throw new TransformationException(e); + } + } + + @Override + public int getWeight() { + return 10; + } + +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataBinding.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataBinding.java new file mode 100644 index 0000000000..9d3c6fac5a --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataBinding.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.databinding.job; + +import org.apache.tuscany.sca.databinding.impl.BaseDataBinding; + +/** + * DataBinding for Jobs + */ +public class JobDataBinding extends BaseDataBinding { + + public static final String NAME = Job.class.getName(); + + public JobDataBinding() { + super(NAME, Job.class); + } + +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataMap.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataMap.java new file mode 100644 index 0000000000..40ee2ff010 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobDataMap.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +import java.util.HashMap; + +public class JobDataMap implements java.io.Serializable { + private static final long serialVersionUID = -2602843967597362950L; + private HashMap<String, Object> data = new HashMap<String, Object>(); + + public JobDataMap() { + super(); + } + + public <T> void addJobData(String name, T t) { + data.put(name, t); + } + + public Object getJobDataObject(String name) { + if (data.containsKey(name)) { + return data.get(name); + } + return null; + } + + public Class<?> getJobDataClass(String name) { + if (data.containsKey(name)) { + return data.get(name).getClass(); + } + return null; + } + + public Class<?>[] getJobDataClasses() { + int siz = data.keySet().size(); + int i = 0; + Class<?>[] claz = new Class<?>[siz]; + for (Object e : data.values()) { + claz[i] = e.getClass(); + ++i; + } + return claz; + } + + public Object[] getJobDataObjects() { + int siz = data.keySet().size(); + Object[] objs = new Object[siz]; + int i = 0; + for (Object e : data.values()) { + objs[i] = e.getClass(); + ++i; + } + return objs; + } +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobExecutionContext.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobExecutionContext.java new file mode 100644 index 0000000000..8c98fd2e26 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/JobExecutionContext.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; + +public class JobExecutionContext implements java.io.Serializable { + private JobDataMap jobData; + + public JobDataMap getJobData() { + return jobData; + } + + public void storeJSONData(String jsonData) { + XStream xstream = new XStream(new JsonHierarchicalStreamDriver()); + jobData = (JobDataMap) xstream.fromXML(jsonData); + } + + public String getJSONData() { + XStream xstream = new XStream(new JsonHierarchicalStreamDriver()); + String jsonData = xstream.toXML(jobData); + return jsonData; + } + + public void setJobData(JobDataMap jdm) { + this.jobData = jdm; + } +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/OMElement2Job.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/OMElement2Job.java new file mode 100644 index 0000000000..5665e4f492 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/OMElement2Job.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; + +import org.apache.axiom.om.OMElement; +import org.apache.tuscany.sca.databinding.PullTransformer; +import org.apache.tuscany.sca.databinding.TransformationContext; +import org.apache.tuscany.sca.databinding.TransformationException; +import org.apache.tuscany.sca.databinding.impl.BaseTransformer; +import org.apache.tuscany.sca.databinding.impl.XSDDataTypeConverter.Base64Binary; + +/** + * Transformer to convert data from an OMElement to Job + */ +@SuppressWarnings("unchecked") +public class OMElement2Job extends BaseTransformer<OMElement, Job> implements + PullTransformer<OMElement, Job> { + + public Job transform(OMElement source, TransformationContext context) { + try { + + String value = (String) source.getText(); + ByteArrayInputStream bis = new ByteArrayInputStream(Base64Binary + .decode(value)); + ObjectInputStream ois = new ObjectInputStream(bis); + Object obj = ois.readObject(); + ois.close(); + Job aReference = (Job) obj; + return aReference; + } catch (Exception e) { + throw new TransformationException(e); + } + } + + @Override + public Class getSourceType() { + return OMElement.class; + } + + @Override + public Class getTargetType() { + return Job.class; + } + + @Override + public int getWeight() { + return 10; + } + +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/RemoteJob.java b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/RemoteJob.java new file mode 100644 index 0000000000..693e0f1af7 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/java/org/apache/tuscany/sca/databinding/job/RemoteJob.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.databinding.job; + +/** + * This an abstract class to represent a Job with a Context + * + */ +public abstract class RemoteJob<T> implements Job<T, JobExecutionContext>, + java.io.Serializable { + protected JobExecutionContext context = new JobExecutionContext(); + + public abstract T compute(JobExecutionContext v); + + public JobExecutionContext getContext() { + return context; + } + +} diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding b/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding new file mode 100644 index 0000000000..e9e7dc9d09 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# implementation classes for the databindings +org.apache.tuscany.sca.databinding.job.JobDataBinding;name=org.apache.tuscany.sca.databinding.job.Job + diff --git a/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer b/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer new file mode 100644 index 0000000000..f42a526a48 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +org.apache.tuscany.sca.databinding.job.Job2OMElement;source=org.apache.tuscany.sca.databinding.job.Job,target=org.apache.axiom.om.OMElement,weight=10 +org.apache.tuscany.sca.databinding.job.OMElement2Job;source=org.apache.axiom.om.OMElement,target=org.apache.tuscany.sca.databinding.job.Job,weight=10 diff --git a/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xml b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xml new file mode 100644 index 0000000000..df901d183d --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xml @@ -0,0 +1,51 @@ +<?xml version="1.0"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<ipo:purchaseOrder + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ipo="http://www.example.com/IPO" + xsi:schemaLocation="http://www.example.com/IPO ipo.xsd" + orderDate="1999-12-01"> + + <shipTo exportCode="1" xsi:type="ipo:UKAddress"> + <name>Helen Zoe</name> + <street>47 Eden Street</street> + <city>Cambridge</city> + <postcode>CB1 1JR</postcode> + </shipTo> + + <billTo xsi:type="ipo:USAddress"> + <name>Robert Smith</name> + <street>8 Oak Avenue</street> + <city>Old Town</city> + <state>PA</state> + <zip>95819</zip> + </billTo> + + <items> + <item partNum="833-AA"> + <productName>Lapis necklace</productName> + <quantity>1</quantity> + <USPrice>99.95</USPrice> + <ipo:comment>Want this for the holidays</ipo:comment> + <shipDate>1999-12-05</shipDate> + </item> + </items> +</ipo:purchaseOrder> + diff --git a/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xsd b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xsd new file mode 100644 index 0000000000..cce0cf1019 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/ipo.xsd @@ -0,0 +1,155 @@ +<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<schema targetNamespace="http://www.example.com/IPO"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ipo="http://www.example.com/IPO">
+
+ <annotation>
+ <documentation xml:lang="en">
+ International Purchase order schema for Example.com
+ Copyright 2000 Example.com. All rights reserved.
+ </documentation>
+ </annotation>
+
+
+ <element name="purchaseOrder" type="ipo:PurchaseOrderType" />
+
+ <element name="comment" type="string" />
+
+ <complexType name="PurchaseOrderType">
+ <sequence>
+ <element name="shipTo" type="ipo:Address" />
+ <element name="billTo" type="ipo:Address" />
+ <element ref="ipo:comment" minOccurs="0" />
+ <element name="items" type="ipo:Items" />
+ </sequence>
+ <attribute name="orderDate" type="date" />
+ </complexType>
+
+ <complexType name="Items">
+ <sequence>
+ <element name="item" minOccurs="0" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="productName" type="string" />
+ <element name="quantity">
+ <simpleType>
+ <restriction base="positiveInteger">
+ <maxExclusive value="100" />
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="USPrice" type="decimal" />
+ <element ref="ipo:comment" minOccurs="0" />
+ <element name="shipDate" type="date"
+ minOccurs="0" />
+ </sequence>
+ <attribute name="partNum" type="ipo:SKU"
+ use="required" />
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+
+ <simpleType name="SKU">
+ <restriction base="string">
+ <pattern value="\d{3}-[A-Z]{2}" />
+ </restriction>
+ </simpleType>
+
+ <complexType name="Address">
+ <sequence>
+ <element name="name" type="string" />
+ <element name="street" type="string" />
+ <element name="city" type="string" />
+ </sequence>
+ </complexType>
+
+ <complexType name="USAddress">
+ <complexContent>
+ <extension base="ipo:Address">
+ <sequence>
+ <element name="state" type="ipo:USState" />
+ <element name="zip" type="positiveInteger" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="UKAddress">
+ <complexContent>
+ <extension base="ipo:Address">
+ <sequence>
+ <element name="postcode" type="ipo:UKPostcode" />
+ </sequence>
+ <attribute name="exportCode" type="positiveInteger"
+ fixed="1" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- other Address derivations for more countries -->
+
+ <simpleType name="USState">
+ <restriction base="string">
+ <enumeration value="AK" />
+ <enumeration value="AL" />
+ <enumeration value="AR" />
+ <enumeration value="CA" />
+ <enumeration value="PA" />
+ <!-- and so on ... -->
+ </restriction>
+ </simpleType>
+
+ <simpleType name="Postcode">
+ <restriction base="string">
+ <length value="7" fixed="true" />
+ </restriction>
+ </simpleType>
+
+
+ <simpleType name="UKPostcode">
+ <restriction base="ipo:Postcode">
+ <pattern value="[A-Z]{2}\d\s\d[A-Z]{2}" />
+ </restriction>
+ </simpleType>
+
+
+
+</schema>
+
diff --git a/branches/sca-java-1.x/modules/databinding-job/src/test/resources/order.wsdl b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/order.wsdl new file mode 100644 index 0000000000..913d9e4928 --- /dev/null +++ b/branches/sca-java-1.x/modules/databinding-job/src/test/resources/order.wsdl @@ -0,0 +1,76 @@ +<?xml version="1.0"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<definitions name="StockQuote" targetNamespace="http://example.com/order.wsdl" xmlns:tns="http://example.com/order.wsdl" + xmlns:xsd1="http://example.com/order.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.xmlsoap.org/wsdl/"> + + <types> + <schema targetNamespace="http://example.com/order.xsd" xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:ipo="http://www.example.com/IPO"> + <import namespace="http://www.example.com/IPO" schemaLocation="ipo.xsd"/> + <element name="checkOrderStatus"> + <complexType> + <sequence> + <element name="customerId" type="string" /> + <element name="order" type="ipo:PurchaseOrderType" /> + <element name="flag" type="int" /> + </sequence> + </complexType> + </element> + <element name="checkOrderStatusResponse"> + <complexType> + <sequence> + <element name="status" type="string" /> + </sequence> + </complexType> + </element> + <element name="note" type="string" /> + </schema> + </types> + + <message name="CheckOrderStatusInput1"> + <part name="body" element="xsd1:checkOrderStatus" /> + </message> + + <message name="CheckOrderStatusOutput1"> + <part name="body" element="xsd1:checkOrderStatusResponse" /> + </message> + + <message name="CheckOrderStatusInput2"> + <part name="p1" element="xsd1:checkOrderStatus" /> + <part name="p2" element="xsd1:note" /> + </message> + + <message name="CheckOrderStatusOutput2"> + <part name="p1" element="xsd1:checkOrderStatusResponse" /> + </message> + + <portType name="OrderPortType"> + <operation name="checkOrderStatus"> + <input message="tns:CheckOrderStatusInput1" /> + <output message="tns:CheckOrderStatusOutput1" /> + </operation> + <operation name="checkOrderStatus2"> + <input message="tns:CheckOrderStatusInput2" /> + <output message="tns:CheckOrderStatusOutput2" /> + </operation> + </portType> + +</definitions>
\ No newline at end of file |