You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ka...@apache.org on 2009/02/06 22:52:02 UTC

svn commit: r741748 - in /ode/trunk: bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/ bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/ bpel-test/src/test/java/org/apache/ode/test/ bpel-test/src/test/resources/bpe...

Author: karthick
Date: Fri Feb  6 21:52:01 2009
New Revision: 741748

URL: http://svn.apache.org/viewvc?rev=741748&view=rev
Log:
ODE-508 In essence, this is a forward port of ODE-498.

Added:
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/deploy.xml
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.bpel
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.properties
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.wsdl
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.xsd
Modified:
    ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/XPath20ExpressionCompilerImpl.java
    ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/XPath20ExpressionCompilerImpl.java
    ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
    ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel

Modified: ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/XPath20ExpressionCompilerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/XPath20ExpressionCompilerImpl.java?rev=741748&r1=741747&r2=741748&view=diff
==============================================================================
--- ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/XPath20ExpressionCompilerImpl.java (original)
+++ ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v1/xpath20/XPath20ExpressionCompilerImpl.java Fri Feb  6 21:52:01 2009
@@ -19,7 +19,9 @@
 
 package org.apache.ode.bpel.compiler.v1.xpath20;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
@@ -30,6 +32,7 @@
 import javax.xml.xpath.XPathFactory;
 import javax.xml.xpath.XPathFactoryConfigurationException;
 
+import net.sf.saxon.om.Name11Checker;
 import net.sf.saxon.om.NamespaceConstant;
 
 import org.apache.commons.logging.Log;
@@ -155,6 +158,14 @@
             } catch (XPathExpressionException xpee) { 
             	// swallow errors caused by uninitialized variable 
             }
+            for (String varExpr : extractVariableExprs(xpathStr)) {
+                expr = xpe.compile(varExpr);
+            	try {
+            		expr.evaluate(node);
+            	} catch (XPathExpressionException xpee) {
+                	// swallow errors caused by uninitialized variable 
+            	}
+            }
         } catch (XPathFactoryConfigurationException xpfce) {
             __log.debug(xpfce);
             __log.info("Couldn't validate properly expression " + xpathStr);
@@ -174,4 +185,59 @@
         return _properties;
     }
 
+    /**
+     * Returns the list of variable references in the given XPath expression
+     * that may not have been resolved properly, which is the case especially 
+     * if the expression contains a function, which short circuited the evaluation.
+     *  
+     * @param xpathStr
+     * @return list of variable expressions that may not have been resolved properly
+     */
+    private List<String> extractVariableExprs(String xpathStr) {    	
+		ArrayList<String> variableExprs = new ArrayList<String>();
+		int firstVariable = xpathStr.indexOf("$"), 
+			lastVariable = xpathStr.lastIndexOf("$"),
+			firstFunction = xpathStr.indexOf("("); 
+		if ((firstVariable > 0 && // the xpath references a variable
+				firstFunction > 0) || // the xpath contains a function
+			(firstVariable < lastVariable)) { // the xpath references multiple variables  
+			// most likely, the variable reference has not been resolved, so make that happen
+			StringBuffer variableExpr = new StringBuffer();
+			boolean quoted = false, doubleQuoted = false, variable = false;
+			Name11Checker nameChecker = Name11Checker.getInstance();
+			for (int index = 0; index < xpathStr.length(); index++) {
+				char ch = xpathStr.charAt(index);
+				if (ch == '\''){
+					quoted = !quoted;
+				}
+				if (ch == '\"') {
+					doubleQuoted = !doubleQuoted;
+				}
+				if (quoted || doubleQuoted){
+					continue;
+				}
+				if (ch == '$') {
+					variable = true;
+					variableExpr.setLength(0);
+					variableExpr.append(ch);
+				} else {
+					if (variable) {
+						variableExpr.append(ch);
+						// in the name is qualified, don't check if its a qname when we're at the ":" character
+						if (ch == ':') {
+							continue;
+						}
+						if (index == xpathStr.length() || 
+								!nameChecker.isQName(variableExpr.substring(1))) {
+							variable = false;
+							variableExpr.setLength(variableExpr.length() - 1);
+							variableExprs.add(variableExpr.toString());
+						}
+					}
+				}
+			}
+		}
+		return variableExprs;
+	}
+
 }

Modified: ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/XPath20ExpressionCompilerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/XPath20ExpressionCompilerImpl.java?rev=741748&r1=741747&r2=741748&view=diff
==============================================================================
--- ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/XPath20ExpressionCompilerImpl.java (original)
+++ ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/xpath20/XPath20ExpressionCompilerImpl.java Fri Feb  6 21:52:01 2009
@@ -19,7 +19,9 @@
 
 package org.apache.ode.bpel.compiler.v2.xpath20;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
@@ -30,6 +32,7 @@
 import javax.xml.xpath.XPathFactory;
 import javax.xml.xpath.XPathFactoryConfigurationException;
 
+import net.sf.saxon.om.Name11Checker;
 import net.sf.saxon.om.NamespaceConstant;
 
 import org.apache.commons.logging.Log;
@@ -155,6 +158,14 @@
             } catch (XPathExpressionException xpee) { 
             	// swallow errors caused by uninitialized variable 
             }
+            for (String varExpr : extractVariableExprs(xpathStr)) {
+                expr = xpe.compile(varExpr);
+            	try {
+            		expr.evaluate(node);
+            	} catch (XPathExpressionException xpee) {
+                	// swallow errors caused by uninitialized variable 
+            	}
+            }
         } catch (XPathFactoryConfigurationException xpfce) {
             __log.debug(xpfce);
             __log.info("Couldn't validate properly expression " + xpathStr);
@@ -174,4 +185,59 @@
         return _properties;
     }
 
+    /**
+     * Returns the list of variable references in the given XPath expression
+     * that may not have been resolved properly, which is the case especially 
+     * if the expression contains a function, which short circuited the evaluation.
+     *  
+     * @param xpathStr
+     * @return list of variable expressions that may not have been resolved properly
+     */
+    private List<String> extractVariableExprs(String xpathStr) {    	
+		ArrayList<String> variableExprs = new ArrayList<String>();
+		int firstVariable = xpathStr.indexOf("$"), 
+			lastVariable = xpathStr.lastIndexOf("$"),
+			firstFunction = xpathStr.indexOf("("); 
+		if ((firstVariable > 0 && // the xpath references a variable
+				firstFunction > 0) || // the xpath contains a function
+			(firstVariable < lastVariable)) { // the xpath references multiple variables  
+			// most likely, the variable reference has not been resolved, so make that happen
+			StringBuffer variableExpr = new StringBuffer();
+			boolean quoted = false, doubleQuoted = false, variable = false;
+			Name11Checker nameChecker = Name11Checker.getInstance();
+			for (int index = 0; index < xpathStr.length(); index++) {
+				char ch = xpathStr.charAt(index);
+				if (ch == '\''){
+					quoted = !quoted;
+				}
+				if (ch == '\"') {
+					doubleQuoted = !doubleQuoted;
+				}
+				if (quoted || doubleQuoted){
+					continue;
+				}
+				if (ch == '$') {
+					variable = true;
+					variableExpr.setLength(0);
+					variableExpr.append(ch);
+				} else {
+					if (variable) {
+						variableExpr.append(ch);
+						// in the name is qualified, don't check if its a qname when we're at the ":" character
+						if (ch == ':') {
+							continue;
+						}
+						if (index == xpathStr.length() || 
+								!nameChecker.isQName(variableExpr.substring(1))) {
+							variable = false;
+							variableExpr.setLength(variableExpr.length() - 1);
+							variableExprs.add(variableExpr.toString());
+						}
+					}
+				}
+			}
+		}
+		return variableExprs;
+	}
+
 }

Modified: ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java?rev=741748&r1=741747&r2=741748&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java (original)
+++ ode/trunk/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java Fri Feb  6 21:52:01 2009
@@ -47,6 +47,9 @@
     @Test public void testAssignActivity2() throws Throwable {
         go("/bpel/2.0/TestAssignActivity2");
     }
+    @Test public void testAssignActivity3() throws Throwable {
+        go("/bpel/2.0/TestAssignActivity3");
+    }
     @Test public void testAssignComplex() throws Throwable {
         go("/bpel/2.0/TestAssignComplex");
     }

Modified: ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java?rev=741748&r1=741747&r2=741748&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java (original)
+++ ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java Fri Feb  6 21:52:01 2009
@@ -36,6 +36,7 @@
          // Test Flow with XPath10
          go("/bpel/2.0/TestFlowLinks");
      }
+ 	@Ignore
     @Test public void testIsolatedScopes1() throws Throwable {
         // Test Flow with XPath10
         go("/bpel/2.0/TestIsolatedScopes1");

Modified: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel?rev=741748&r1=741747&r2=741748&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel (original)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel Fri Feb  6 21:52:01 2009
@@ -43,6 +43,8 @@
         <variable name="myVar" messageType="test:TestAssignMessage"/>
         <variable name="otherMsgVar" messageType="test:TestAssignMessage"/>
         <variable name="strVar" type="xsd:string"/>
+        <variable name="txtVar" type="xsd:string"/>
+        <variable name="eprVar" type="xsd:anyType"/>
         <variable name="intVar" type="xsd:int"/>
     </variables>
 
@@ -77,6 +79,34 @@
                 <to>$otherMsgVar.TestPart</to>
             </copy>
         </assign>
+
+        <assign name="assign2">
+            <copy>
+                <from><literal>1</literal></from>
+                <to variable="intVar"/>
+            </copy>
+            <copy>
+                <from><literal>1</literal></from>
+                <to variable="intVar"/>
+            </copy>
+            <copy>
+                <from>ode:process-property("dd:epr")/addr:EndpointReference/child::node()[position()=$intVar]</from>
+                <to variable="strVar"/>
+            </copy>
+            <copy>
+                <from>ode:process-property("dd:epr")/addr:EndpointReference</from>
+                <to>$eprVar</to>
+            </copy>
+            <copy>
+                <from>$eprVar/child::node()[$intVar]</from>
+                <to variable="strVar"/>
+            </copy>
+            <copy>
+                <from>concat($eprVar/text()[1], $ode:pid)</from>
+                <to variable="strVar"/>
+            </copy>
+        </assign>
+
         <reply name="end" partnerLink="TestAssignPartnerLink" portType="test:TestAssignPortType"
                operation="testAssign" variable="otherMsgVar"/>
     </sequence>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/deploy.xml
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/deploy.xml?rev=741748&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/deploy.xml (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/deploy.xml Fri Feb  6 21:52:01 2009
@@ -0,0 +1,11 @@
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+   xmlns:testws="http://xxx/yyy/ws"
+   xmlns:testbpel="http://xxx/yyy/bpel">
+
+   <process name="testbpel:test" fileName="test.bpel">
+      <active>true</active>
+      <provide partnerLink="test-pl">
+         <service name="testws:testService" port="testPort"/>
+      </provide>
+   </process>
+</deploy>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.bpel?rev=741748&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.bpel (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.bpel Fri Feb  6 21:52:01 2009
@@ -0,0 +1,81 @@
+<process xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+         xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
+         xmlns:op="http://www.w3.org/2005/xpath-functions"
+         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+         xmlns:test="http://xxx/yyy"
+         xmlns:testws="http://xxx/yyy/ws"
+         xmlns:ode="http://www.apache.org/ode/type/extension"
+         xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
+         xmlns:dbg="java:tc.Test"
+         name="test"
+         targetNamespace="http://xxx/yyy/bpel"
+         queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+         expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+   <import location="test.wsdl"
+           namespace="http://xxx/yyy/ws"
+           importType="http://schemas.xmlsoap.org/wsdl/"/>
+
+  <partnerLinks>
+    <partnerLink name="test-pl" partnerLinkType="testws:test-plt" myRole="testService" />
+  </partnerLinks>
+  <variables>
+    <!-- invoking message for this process.  -->
+    <variable name="test-req-msg" messageType="testws:test-request-msg" />
+    <!-- response message for this process.  -->
+    <variable name="test-resp-msg" messageType="testws:test-response-msg" />
+    <variable name="id" type="xsd:string"/>
+
+    <variable name="is-it" type="xsd:boolean" />
+    <variable name="is-that" type="xsd:boolean" />
+  </variables>
+  <sequence name="HiddenSequence">
+    <receive createInstance="yes" name="Receive__test-request" partnerLink="test-pl"
+             variable="test-req-msg" portType="testws:testInterface" operation="test-op" />
+    <assign name="Assign__credentials_from_header">
+      <copy>
+        <from><literal>false</literal></from>
+        <to>$is-it</to>
+      </copy>
+      <copy>
+        <from><literal>false</literal></from>
+        <to>$is-that</to>
+      </copy>
+      <copy>
+        <from>string(false)</from>
+        <to>$id</to>
+      </copy>
+      <copy>
+        <from>string("")</from>
+        <to>$id</to>
+      </copy>
+      <copy>
+        <from>string($is-it)</from>
+        <to>$id</to>
+      </copy>
+      <copy>
+        <from>xsd:string(($is-it or $is-that))</from>
+        <to>$id</to>
+      </copy>
+      <copy>
+        <from>string(not($is-it or $is-that))</from>
+        <to>$id</to>
+      </copy>
+    </assign>
+    <assign name="Assign__test_response">
+      <copy>
+        <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0">
+        <![CDATA[
+        <test-response xmlns="http://xxx/yyy">
+            <id>{$id}</id>
+        </test-response>
+        ]]>
+        </from>
+        <to variable="test-resp-msg" part="test-resp-part"></to>
+      </copy>
+    </assign>
+    <reply name="Reply__test_response" partnerLink="test-pl"
+           portType="testws:testInterface"
+           operation="test-op" variable="test-resp-msg" />
+  </sequence>
+</process>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.properties
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.properties?rev=741748&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.properties (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.properties Fri Feb  6 21:52:01 2009
@@ -0,0 +1,22 @@
+#
+#    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.
+#
+
+namespace=http://xxx/yyy/ws
+service=testService
+operation=test-op
+request1=<message><test-req-part><test-request xmlns="http://xxx/yyy"><id></id><c-id>1</c-id>2<r-id>3</r-id></test-request></test-req-part></message>
+response1=.*<id>true</id>.*
\ No newline at end of file

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.wsdl?rev=741748&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.wsdl Fri Feb  6 21:52:01 2009
@@ -0,0 +1,66 @@
+<!--
+bcprt
+This software and related documentation are proprietary to UGS Corp.
+COPYRIGHT 2005 UGS CORP.  ALL RIGHTS RESERVED
+ecprt
+-->
+
+<wsdl:definitions name="test"
+                  targetNamespace="http://xxx/yyy/ws"
+                  xmlns="http://schemas.xmlsoap.org/wsdl/"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  xmlns:test="http://xxx/yyy"
+                  xmlns:testws="http://xxx/yyy/ws"
+                  xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+
+    <wsdl:types>
+        <xsd:schema>
+            <xsd:import namespace="http://xxx/yyy" schemaLocation="test.xsd"/>
+        </xsd:schema>
+    </wsdl:types>
+
+   <wsdl:message name="test-request-msg">
+      <wsdl:part name="test-req-part" element="test:test-request"/>
+   </wsdl:message>
+
+   <wsdl:message name="test-response-msg">
+      <wsdl:part name="test-resp-part" element="test:test-response"/>
+   </wsdl:message>
+
+   <wsdl:portType name="testInterface">
+      <wsdl:documentation>
+           Test BPEL webservice.
+      </wsdl:documentation>
+
+      <!-- test operation -->
+      <wsdl:operation name="test-op">
+         <wsdl:input name="test-op-input"
+                     message="testws:test-request-msg"/>
+         <wsdl:output name="test-op-output"
+                      message="testws:test-response-msg"/>
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="testBinding" type="testws:testInterface">
+      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+      <wsdl:operation name="test-op">
+           <soap:operation style="document" soapAction="testSoapAction"/>
+           <wsdl:input><soap:body  use="literal"/></wsdl:input>
+           <wsdl:output><soap:body use="literal"/></wsdl:output>
+      </wsdl:operation>
+   </wsdl:binding>
+
+   <wsdl:service name="testService">
+       <wsdl:port binding="testws:testBinding" name="testPort">
+          <soap:address location="http://localhost:8080/ode/processes/test"/>
+      </wsdl:port>
+   </wsdl:service>
+
+  <plnk:partnerLinkType name="test-plt">
+     <plnk:role name="testService" portType="testws:testInterface"/>
+  </plnk:partnerLinkType>
+
+</wsdl:definitions>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.xsd
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.xsd?rev=741748&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.xsd (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity3/test.xsd Fri Feb  6 21:52:01 2009
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+bcprt
+This software and related documentation are proprietary to UGS Corp.
+COPYRIGHT 2005 UGS CORP.  ALL RIGHTS RESERVED
+ecprt
+  -->
+
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+           xmlns:test="http://xxx/yyy"
+           targetNamespace="http://xxx/yyy"
+           elementFormDefault="qualified">
+
+   <xsd:element name="test-request">
+      <xsd:complexType>
+         <xsd:sequence>
+            <xsd:element name="id" type="xsd:string"/>
+            <xsd:element name="c-id" type="xsd:string" minOccurs="0"/>
+            <xsd:element name="r-id" type="xsd:string" minOccurs="0"/>
+         </xsd:sequence>
+      </xsd:complexType>
+   </xsd:element>
+
+   <xsd:element name="test-response">
+      <xsd:complexType>
+         <xsd:sequence>
+            <xsd:element name="id" type="xsd:string"/>
+            <xsd:element name="c-id" type="xsd:string" minOccurs="0"/>
+            <xsd:element name="r-id" type="xsd:string" minOccurs="0"/>
+         </xsd:sequence>
+      </xsd:complexType>
+   </xsd:element>
+
+</xsd:schema>