Author: charper
Date: Mon Jun 26 15:00:26 2006
New Revision: 417301

URL: http://svn.apache.org/viewvc?rev=417301&view=rev
Log:
ODE-5: Implementation of Relative Schema/WSDL Import Paths

Added:
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/AccountTypes.xsd
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_1.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_2.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_3.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_4.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_5.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_6.txt
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/Investor.xsd
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.bpel
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.wsdl
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.xml
    
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl
    incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testSchema.xsd
Modified:
    incubator/ode/scratch/bpe/bpelTests/build.xml
    
incubator/ode/scratch/bpe/src/main/java/org/apache/ode/bpe/deployment/bpel/BPELWSDLLocator.java
    
incubator/ode/scratch/bpe/src/test/java/org/apache/ode/bpe/test/BPELTests.java

Modified: incubator/ode/scratch/bpe/bpelTests/build.xml
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/build.xml?rev=417301&r1=417300&r2=417301&view=diff
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/build.xml (original)
+++ incubator/ode/scratch/bpe/bpelTests/build.xml Mon Jun 26 15:00:26 2006
@@ -1,186 +1,190 @@
-<project name="Build BPEL Jars" default="bpeltestsjar">
-       <description>
-               Build BPEL Jars.
-       </description>
-       <!-- 
=================================================================== -->
-       <!-- jartest                                                            
 -->
-       <!-- 
=================================================================== -->
-       <target name="jartest">
-               <jar 
destfile="${basedir}/test${jartest.num}/bpelTest${jartest.num}.jar">
-                       <fileset dir="${basedir}/..">
-                               <include name="bpelTests/probeService/*.wsdl"/>
-                               <include 
name="bpelTests/test${jartest.num}/*.wsdl"/>
-                               <include 
name="bpelTests/test${jartest.num}/*.bpel"/>
-                               <include 
name="bpelTests/test${jartest.num}/*.xslt"/>
-                               <include 
name="bpelTests/test${jartest.num}/*.xml"/>
-                       </fileset>
-               </jar>
-       </target>
-       <!-- 
=================================================================== -->
-       <!-- jar up the tests                                                   
 -->
-       <!-- 
=================================================================== -->
-       <target name="bpeltestsjar">
-               <antcall target="jartest">
-                       <param name="jartest.num" value="1"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="3"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="4"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="5"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="6"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="7"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="8"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="9"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="10"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="12"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="13"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="14"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="15"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="16"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="17"/>
-               </antcall>              
-               <antcall target="jartest">
-                       <param name="jartest.num" value="benchMark2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="benchMark3"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="benchMark4"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="BPChain"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="ThrowFaultOutsideOfBP"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="Timer1"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="Timer2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="Timer3"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="Terminate"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="FlowScopes"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="ScopedCorrelationSets"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="CatchForcedTerminate"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="FaultInCompensationHandler"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="FaultInFaultHandler"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="TimerOnAlarmAtRootScope"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="FaultCompHandlerInInvoke"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="LoopedCompensation"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="OOBData"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="NSDeploy"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="GetVarData"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="LocalInvoke"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="LinkInSwitch"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="Qts377278"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="PartnerLinkAssign"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="NestedSplits"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="ReplyWithFault"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="CorrlCmplx"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="CorrlInvokeReply"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="GraftGraftChildren"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="LoopedCompensation2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="BuildDocWithNestedNS"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="SingleRuleInCompHandler"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="CatchAllNonBPError"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="CatchFaultInFaultHandler"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="ThrowInScopeInFaultHandler"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="CatchFaultInFaultHandler2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" 
value="ThrowInScopeInFaultHandler2"/>
-               </antcall>
-               <antcall target="jartest">
-                       <param name="jartest.num" value="BPInvokeDeadlock"/>
-               </antcall>
-       </target>
-</project>
+<project name="Build BPEL Jars" default="bpeltestsjar">
+       <description>
+               Build BPEL Jars.
+       </description>
+       <!-- 
=================================================================== -->
+       <!-- jartest                                                            
 -->
+       <!-- 
=================================================================== -->
+       <target name="jartest">
+               <jar 
destfile="${basedir}/test${jartest.num}/bpelTest${jartest.num}.jar">
+                       <fileset dir="${basedir}/..">
+                               <include name="bpelTests/probeService/*.wsdl"/>
+                               <include 
name="bpelTests/test${jartest.num}/*.wsdl"/>
+                               <include 
name="bpelTests/test${jartest.num}/*.bpel"/>
+                               <include 
name="bpelTests/test${jartest.num}/*.xslt"/>
+                               <include 
name="bpelTests/test${jartest.num}/*.xml"/>
+                               <include 
name="bpelTests/test${jartest.num}/**/*.xsd"/>
+                       </fileset>
+               </jar>
+       </target>
+       <!-- 
=================================================================== -->
+       <!-- jar up the tests                                                   
 -->
+       <!-- 
=================================================================== -->
+       <target name="bpeltestsjar">
+               <antcall target="jartest">
+                       <param name="jartest.num" value="1"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="3"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="4"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="5"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="6"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="7"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="8"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="9"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="10"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="12"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="13"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="14"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="15"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="16"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="17"/>
+               </antcall>              
+               <antcall target="jartest">
+                       <param name="jartest.num" value="benchMark2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="benchMark3"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="benchMark4"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="BPChain"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="ThrowFaultOutsideOfBP"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="Timer1"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="Timer2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="Timer3"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="Terminate"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="FlowScopes"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="ScopedCorrelationSets"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="CatchForcedTerminate"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="FaultInCompensationHandler"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="FaultInFaultHandler"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="TimerOnAlarmAtRootScope"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="FaultCompHandlerInInvoke"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="LoopedCompensation"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="OOBData"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="NSDeploy"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="GetVarData"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="LocalInvoke"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="LinkInSwitch"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="Qts377278"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="PartnerLinkAssign"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="NestedSplits"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="ReplyWithFault"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="CorrlCmplx"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="CorrlInvokeReply"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="GraftGraftChildren"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="LoopedCompensation2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="BuildDocWithNestedNS"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="SingleRuleInCompHandler"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="CatchAllNonBPError"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="CatchFaultInFaultHandler"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="ThrowInScopeInFaultHandler"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="CatchFaultInFaultHandler2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="ThrowInScopeInFaultHandler2"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" value="BPInvokeDeadlock"/>
+               </antcall>
+               <antcall target="jartest">
+                       <param name="jartest.num" 
value="RelativeSchemaImports"/>
+               </antcall>
+       </target>
+</project>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/AccountTypes.xsd
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/AccountTypes.xsd?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/AccountTypes.xsd
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/account/AccountTypes.xsd
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,19 @@
+<xsd:schema
+    targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing:account"
+    xmlns:investor="urn:sybase:bpel:testRelativeImportsProcessing:investor"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+    
+    <xsd:import 
namespace="urn:sybase:bpel:testRelativeImportsProcessing:investor"
+        location="../investor/Investor.xsd"/>
+
+
+    <xsd:complexType name="AccountType">
+        <xsd:sequence>
+            <xsd:element name="accountId" type="xsd:integer"/>
+            <xsd:element name="name" type="xsd:string"/>
+            <xsd:element name="balance" type="xsd:float"/>
+            <xsd:element name="investor" type="investor:InvestorType"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+</xsd:schema>

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_1.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_1.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_1.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_1.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,14 @@
+# Test BPEL control flow objects
+# Both control flows are set to positive the loop indcator is set to minimum.
+# Expected result = Event Start Test1.1 -> root process splits into A and B -> 
process B completes -> process A completes -> processes A and B merge on 
process C -> merge into root process -> test switch statement -> case min: set 
loop iterations = 5 -> test loop iterations -> 2 -> 3 -> 4 -> 5 -> 6 -> 
test1Process complete
+
+# Note the prefix on the part name identifies the message type ( xml = xml 
data; str = string data )
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.1</requestID><requestText>Event Start 
TestRelativeImports.1</requestText><flowIndicators><indicatorOne>yes</indicatorOne><indicatorTwo>yes</indicatorTwo></flowIndicators><loopIndicator>min</loopIndicator></testMessage>
+

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_2.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_2.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_2.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_2.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,14 @@
+# Test BPEL control flow objects
+# Control flow one is positive and control flow two is negative the loop 
indcator is set to minimum.
+# Expected result = Event Start TestRelativeImports.2 -> root process splits 
into A and B -> process B completes -> process A completes -> merge into root 
process -> test switch statement -> case min: set loop iterations = 5 -> test 
loop iterations -> 2 -> 3 -> 4 -> 5 -> 6 -> test1Process complete
+
+# Note the prefix on the part name identifies the message type ( xml = xml 
data; str = string data )
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.2</requestID><requestText>Event Start 
TestRelativeImports.2</requestText><flowIndicators><indicatorOne>yes</indicatorOne><indicatorTwo>no</indicatorTwo></flowIndicators><loopIndicator>min</loopIndicator></testMessage>
+

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_3.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_3.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_3.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_3.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,14 @@
+# Test BPEL control flow objects
+# Control flow one is negative and control flow two is positive the loop 
indcator is set to minimum.
+# Expected result = Event Start TestRelativeImports.3 -> root process splits 
into A and B -> process B completes -> process A completes -> merge into root 
process -> test switch statement -> case min: set loop iterations = 5 -> test 
loop iterations -> 2 -> 3 -> 4 -> 5 -> 6 -> test1Process complete
+
+# Note the prefix on the part name identifies the message type ( xml = xml 
data; str = string data )
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.3</requestID><requestText>Event Start 
TestRelativeImports.3</requestText><flowIndicators><indicatorOne>no</indicatorOne><indicatorTwo>yes</indicatorTwo></flowIndicators><loopIndicator>min</loopIndicator></testMessage>
+

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_4.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_4.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_4.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_4.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,14 @@
+# Test BPEL control flow objects
+# Both control flows are set to negative the loop indcator is set to minimum.
+# Expected result = Event Start TestRelativeImports.4 -> root process splits 
into A and B -> process B completes -> process A completes -> merge into root 
process -> test switch statement -> case min: set loop iterations = 5 -> test 
loop iterations -> 2 -> 3 -> 4 -> 5 -> 6 -> test1Process complete
+
+# Note the prefix on the part name identifies the message type ( xml = xml 
data; str = string data )
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.4</requestID><requestText>Event Start 
TestRelativeImports.4</requestText><flowIndicators><indicatorOne>no</indicatorOne><indicatorTwo>no</indicatorTwo></flowIndicators><loopIndicator>min</loopIndicator></testMessage>
+

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_5.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_5.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_5.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_5.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,12 @@
+# Test BPEL control flow objects
+# Both control flows are set to positive the loop indcator is set to maximum.
+# Expected result = Event Start TestRelativeImports.5 -> root process splits 
into A and B -> process B completes -> process A completes -> processes A and B 
merge on process C -> merge into root process -> test switch statement -> case 
max: set loop iterations = 10 -> test loop iterations -> 2 -> 3 -> 4 -> 5 -> 6 
-> 7 -> 8 -> 9 -> 10 -> 11 -> test1Process complete
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.5</requestID><requestText>Event Start 
TestRelativeImports.5</requestText><flowIndicators><indicatorOne>yes</indicatorOne><indicatorTwo>yes</indicatorTwo></flowIndicators><loopIndicator>max</loopIndicator></testMessage>
+

Added: incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_6.txt
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_6.txt?rev=417301&view=auto
==============================================================================
--- incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_6.txt 
(added)
+++ incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/data1_6.txt 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,14 @@
+# Test BPEL control flow objects
+# Both control flows are set to positive the loop indcator is set to default.
+# Expected result = Event Start TestRelativeImports.6 -> root process splits 
into A and B -> process B completes -> process A completes -> processes A and B 
merge on process C -> merge into root process -> test switch statement -> 
otherwise: set loop iterations = 0 -> test loop iterations -> test1Process 
complete
+
+# Note the prefix on the part name identifies the message type ( xml = xml 
data; str = string data )
+
+target.name.space=urn:sybase:bpel:testRelativeImportsProcessing
+port.type=testRelativeImportsPT
+operation=request
+
+part1=xml.requestMessageData
+
+xml.requestMessageData=<testMessage><requestID>Start 
TestRelativeImports.6</requestID><requestText>Event Start 
TestRelativeImports.6</requestText><flowIndicators><indicatorOne>yes</indicatorOne><indicatorTwo>yes</indicatorTwo></flowIndicators><loopIndicator>default</loopIndicator></testMessage>
+

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/Investor.xsd
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/Investor.xsd?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/Investor.xsd
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/investor/Investor.xsd
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,18 @@
+<xsd:schema
+    targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing:account"
+    xmlns:investor="urn:sybase:bpel:testRelativeImportsProcessing:investor"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+    
+    <xsd:import 
namespace="urn:sybase:bpel:testRelativeImportsProcessing:investor"
+        location="../investor/Investor.xsd"/>
+
+
+    <xsd:complexType name="InvestorType">
+        <xsd:sequence>
+            <xsd:element name="investorId" type="xsd:integer"/>
+            <xsd:element name="firstName" type="xsd:string"/>
+            <xsd:element name="lastName" type="xsd:string"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+</xsd:schema>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.bpel
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.bpel?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.bpel
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.bpel
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,327 @@
+<process name="test1Process" 
+         targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing"
+         xmlns:tns="urn:sybase:bpel:testRelativeImportsProcessing"
+         suppressJoinFailure="yes"
+         xmlns:prb="urn:sybase:bpel:testProbe"
+         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/";>
+
+<!-- test control flow elements -->
+<!--   sequence                                -->
+<!--   flow ( links )                  -->
+<!--   swith                                   -->
+<!--   while                                   -->
+
+  <partnerLinks>
+       <partnerLink name="request" 
partnerLinkType="tns:testRelativeImportsRequest" 
myRole="testRelativeImportsService"/>
+       <partnerLink name="probe" partnerLinkType="tns:probeRequest" 
partnerRole="probeService"/>
+  </partnerLinks>
+
+  <variables>
+    <variable name="request" 
+               messageType="tns:requestMessage"/>
+    <variable name="probeInput" 
+               messageType="prb:probeMessage"/>
+    <variable name="reply" 
+               messageType="tns:replyMessage"/>
+    <variable name="internalState"
+                  messageType="tns:internalProcessData"/>
+  </variables>
+
+  <sequence>
+         <flow>
+           <links>
+             <link name="receive-to-assign1"/>
+             <link name="assign1-to-probe1"/>
+             <link name="assign1-to-probe2"/>
+             <link name="probe1-to-probe3"/>
+             <link name="probe2-to-probe3"/>
+           </links>
+
+               <receive name="receive1" partnerLink="request"
+                    portType="tns:testRelativeImportsPT" 
+                    operation="request" variable="request"
+                    createInstance="yes">
+                <source linkName="receive-to-assign1"/>    
+                    
+               </receive>
+     
+             
+               <!-- Copy input variables to internal accumulators -->
+               <!-- After the copy the process splits into two execution paths 
-->
+               
+               <sequence>       
+                 <target linkName="receive-to-assign1"/>
+             <source linkName="assign1-to-probe1"/>
+             <source linkName="assign1-to-probe2"/>
+               
+           <assign name="assign1">
+
+             <copy>
+               <from variable="request" part="requestMessageData" 
query="/testMessage/requestID"/>
+               <to variable="probeInput" part="probeName"/>
+             </copy>
+             <copy>
+               <from variable="request" property="tns:testProbeData"/>
+               <to variable="probeInput" part="probeData"/>
+             </copy>
+           </assign> 
+
+                       <assign>
+                       <copy>
+                               <from expression="'root process splits into A 
and B'"/>
+                               <to variable="probeInput" part="probeName"/>
+                       </copy>
+                       </assign> 
+
+               <invoke name="probe2" partnerLink="probe"
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+               </invoke>                   
+           
+           </sequence> 
+           
+
+       
+               <!-- probe1 outbound status is dependent on the request input 
testFlow1 -->
+               
+           <sequence>
+               <target linkName="assign1-to-probe1"/>
+             <source linkName="probe1-to-probe3" 
+                     transitionCondition="getVariableProperty('request', 
'tns:testFlow1') = 'yes'"/>
+
+               <assign>
+               <copy>
+                       <from expression="'process A completes'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+               </assign> 
+
+           <invoke name="probe3" partnerLink="probe"
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+           </invoke>
+
+           </sequence>
+           
+           <!-- probe2 outbound status is dependent on the request input 
testFlow2 -->
+           
+           <sequence>
+             <target linkName="assign1-to-probe2"/>
+             <source linkName="probe2-to-probe3" 
+                     transitionCondition="getVariableData('request', 
'requestMessageData', '/testMessage/flowIndicators/indicatorTwo') = 'yes'"/>
+
+               <assign>
+               <copy>
+                       <from expression="'process B completes'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+               </assign> 
+
+               <invoke name="probe4" partnerLink="probe"
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+               </invoke>
+
+           </sequence>
+           
+           <!-- The split execution path from assign1 joins on probe3 -->
+           <!-- Probe3 will only fire if the transition condition from probe1 
and probe2 both evaluate to true -->
+           
+           <sequence joinCondition="getLinkStatus('probe1-to-probe3') and 
getLinkStatus('probe2-to-probe3')">
+                 <target linkName="probe1-to-probe3"/>
+                 <target linkName="probe2-to-probe3"/>
+
+                 <assign>
+               <copy>
+                       <from expression="'processes A and B merge on process 
C'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+                 </assign> 
+
+                 <invoke name="probe5" partnerLink="probe" 
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+             </invoke>
+
+           </sequence>
+       
+         </flow>
+         
+         <assign>
+               <copy>
+                       <from expression="'merge into root process'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+         </assign> 
+
+         <invoke name="probe6" partnerLink="probe" 
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+         </invoke>
+
+
+         <!-- from the input data loopIndicator set the number of loop 
interations -->
+
+         <assign>
+               <copy>
+                       <from expression="'test switch statement'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+         </assign> 
+
+         <invoke name="probe7" partnerLink="probe" 
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+         </invoke>
+
+         <switch>
+               <case condition="getVariableProperty('request', 'tns:loopInd') 
= 'min'">
+                 <sequence>
+                       <assign name="flow1-min-assign">
+                               <copy>
+                                       <from expression="5"/>
+                                       <to variable="internalState" 
part="loop1"/>
+                               </copy>
+                               <copy>
+                               <from expression="'case min: set loop 
iterations = 5'"/>
+                               <to variable="probeInput" part="probeName"/>
+                       </copy>
+                </assign>
+                               <invoke name="probe8" partnerLink="probe" 
+                       portType="prb:probeMessagePT" 
+                       operation="probe"
+                       inputVariable="probeInput"  
+                       outputVariable="probeInput">
+                               </invoke>
+                 </sequence>
+               </case>
+               <case condition="getVariableData('request', 
'requestMessageData', '/testMessage/loopIndicator') = 'max'">
+                       <sequence>
+                         <assign name="flow1-max-assign">
+                               <copy>
+                                       <from expression="10"/>
+                                       <to variable="internalState" 
part="loop1"/>
+                               </copy>
+                               <copy>
+                               <from expression="'case max: set loop 
iterations = 10'"/>
+                               <to variable="probeInput" part="probeName"/>
+                       </copy>
+                         </assign>
+                         <invoke name="probe9" partnerLink="probe" 
+                       portType="prb:probeMessagePT" 
+                       operation="probe"
+                       inputVariable="probeInput"  
+                       outputVariable="probeInput">
+                         </invoke>
+                         
+                       </sequence>
+               </case>
+               <otherwise>
+                       <sequence>
+                         <assign name="flow1-default-assign">
+                               <copy>
+                                       <from expression="0"/>
+                                       <to variable="internalState" 
part="loop1"/>
+                               </copy>
+                               <copy>
+                               <from expression="'otherwise: set loop 
iterations = 0'"/>
+                               <to variable="probeInput" part="probeName"/>
+                       </copy>
+                         </assign>
+                         <invoke name="probe10" partnerLink="probe" 
+                       portType="prb:probeMessagePT" 
+                       operation="probe"
+                       inputVariable="probeInput"  
+                       outputVariable="probeInput">
+                         </invoke>
+                         
+                       </sequence>             
+               </otherwise>      
+         </switch>
+         
+         <assign name="while-increment-initialize">
+               <copy>
+                       <from expression="0"/>
+                       <to variable="internalState" part="loop1Counter"/>
+               </copy>
+               <copy>
+                       <from expression="'test loop iterations'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+         </assign>
+
+         <invoke name="probe10" partnerLink="probe" 
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+         </invoke>
+         
+         <while condition="getVariableData('internalState','loop1Counter') 
&lt; getVariableData('internalState','loop1')">
+               <sequence>
+                       <assign name="while-increment">
+                          <copy>
+                               <from 
expression="getVariableData('internalState','loop1Counter') + 1"/>
+                               <to variable="internalState" 
part="loop1Counter"/>
+                          </copy>
+                               <copy>
+                               <from 
expression="getVariableData('internalState','loop1Counter') + 1"/>
+                               <to variable="probeInput" part="probeName"/>
+                       </copy>
+                       </assign>
+                       <invoke name="probe11" partnerLink="probe" 
+                       portType="prb:probeMessagePT" 
+                       operation="probe"
+                       inputVariable="probeInput"  
+                       outputVariable="probeInput">
+                       </invoke>
+
+               </sequence>
+         </while> 
+
+         <!-- copy internal accumulators to the reply message -->
+
+               <assign>
+               <copy>
+                       <from expression="'testRelativeImportsProcess 
complete'"/>
+                       <to variable="probeInput" part="probeName"/>
+               </copy>
+               </assign> 
+           
+           <invoke name="probe12" partnerLink="probe"
+                   portType="prb:probeMessagePT" 
+                   operation="probe"
+                   inputVariable="probeInput"  
+                   outputVariable="probeInput">
+           </invoke>
+
+         <assign name="assign2">
+             <copy>
+               <from variable="probeInput" part="probeName"/>
+               <to variable="reply" part="replyID"/>
+             </copy>
+             <copy>
+               <from variable="probeInput" part="probeData"/>
+               <to variable="reply" part="replyText"/>
+             </copy>
+         </assign> 
+           
+         <reply name="reply" partnerLink="request" 
portType="tns:testRelativeImportsPT" 
+                  operation="request" variable="reply"> 
+         </reply>
+
+  
+  </sequence>
+</process>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.wsdl?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.wsdl
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.wsdl
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,62 @@
+<!-- The public service interface for test1.bpel -->
+
+<definitions 
+      targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing"
+       xmlns:tns="urn:sybase:bpel:testRelativeImportsProcessing"
+       xmlns:typens="urn:sybase:bpel:testRelativeImportsProcessing:types"
+      xmlns:prb="urn:sybase:bpel:testProbe"
+      xmlns="http://schemas.xmlsoap.org/wsdl/";
+       xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";      
+      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+      xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/";>
+    
+  <import namespace="urn:sybase:bpel:testRelativeImportsProcessing:types"
+                 
location="bpelTests/testRelativeSchemaImports/testSchema.xsd"/>
+  <import namespace="urn:sybase:bpel:testRelativeImportsProcessing"
+                 
location="bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl"/>
+  <import namespace="urn:sybase:bpel:testProbe"
+          location="bpelTests/probeService/probeService.wsdl"/>
+      
+          
+
+  <bpws:property name="testProbeData" type="xsd:string"/>
+  <bpws:propertyAlias propertyName="tns:testProbeData" 
messageType="tns:requestMessage" part="requestMessageData" 
query="/testMessage/requestText"/>
+
+  <bpws:property name="testFlow1" type="xsd:boolean"/>
+  <bpws:propertyAlias propertyName="tns:testFlow1" 
messageType="tns:requestMessage" part="requestMessageData" 
query="/testMessage/flowIndicators/indicatorOne"/>
+
+  <bpws:property name="loopInd" type="xsd:string"/>
+  <bpws:propertyAlias propertyName="tns:loopInd" 
messageType="tns:requestMessage" part="requestMessageData" 
query="/testMessage/loopIndicator"/>
+
+   <message name="requestMessage">
+     <part name="requestMessageData" type="typens:testMessage"/>
+   </message>
+   
+   <message name="replyMessage">
+     <part name="replyID" type="xsd:string"/>
+     <part name="replyText" type="xsd:string"/>
+   </message>
+
+   <!-- portType supported by the test2 process -->
+
+   <portType name="testRelativeImportsPT">
+      <operation name="request">
+         <input message="requestMessage"/>
+         <output message="replyMessage"/>
+      </operation>
+   </portType>
+
+   <plnk:partnerLinkType name="testRelativeImportsRequest">
+       <plnk:role name="testRelativeImportsService">
+               <plnk:portType name="testRelativeImportsPT"/>
+       </plnk:role>
+   </plnk:partnerLinkType>
+
+   <plnk:partnerLinkType name="probeRequest">
+       <plnk:role name="probeService">
+               <plnk:portType name="prb:probeMessagePT"/>
+       </plnk:role>
+   </plnk:partnerLinkType>
+   
+
+</definitions>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.xml
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.xml?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.xml
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImports.xml
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<BPEBinding xmlns="http://ode.apache.org/bpe/binding/bpe"; 
xmlns:prb="urn:sybase:bpel:testProbe">
+       <ActionBindings>
+               <binding  name="BPEBinding1" 
nameSpace="urn:sybase:bpel:testProbe" portType="probeMessagePT">
+                       <operation name="probe">
+                               <action 
implementation="org.apache.ode.bpe.action.external.ProbeAction" 
prb:rootSourcePart="probeName" prb:targetPart="probeData"/>
+                       </operation>
+               </binding>
+       </ActionBindings>
+</BPEBinding>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl
 (added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testRelativeImportsDefinitions.wsdl
 Mon Jun 26 15:00:26 2006
@@ -0,0 +1,15 @@
+<!-- The WSDL contains message definitions that are internal to the business 
-->
+<!-- process. ( i.e. counters, accumulators, bpe deployment mappings, etc ... 
) -->
+
+
+<definitions targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing"
+    xmlns:tns="urn:sybase:bpel:testRelativeImportsProcessing"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+    xmlns="http://schemas.xmlsoap.org/wsdl/";>
+
+  <message name="internalProcessData">
+    <part name="loop1Counter" type="xsd:int"/>
+    <part name="loop1" type="xsd:int"/>
+  </message>
+
+</definitions>

Added: 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testSchema.xsd
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testSchema.xsd?rev=417301&view=auto
==============================================================================
--- 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testSchema.xsd 
(added)
+++ 
incubator/ode/scratch/bpe/bpelTests/testRelativeSchemaImports/testSchema.xsd 
Mon Jun 26 15:00:26 2006
@@ -0,0 +1,24 @@
+<xsd:schema
+    targetNamespace="urn:sybase:bpel:testRelativeImportsProcessing:types"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+
+    <xsd:import 
namespace="urn:sybase:bpel:testRelativeImportsProcessing:account"
+        location="accounts/AccountTypes.xsd"/>
+    
+    <xsd:complexType name="flowIndicator">
+        <xsd:sequence>
+            <xsd:element name="indicatorOne" type="xsd:boolean"/>
+            <xsd:element name="indicatorTwo" type="xsd:boolean"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="testMessage">
+        <xsd:sequence>
+            <xsd:element name="requestID" type="xsd:string"/>
+            <xsd:element name="requestText" type="xsd:string"/>
+            <xsd:element name="flowIndicators" type="typens:flowIndicator"/>
+            <xsd:element name="loopIndicator" type="xsd:string"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+</xsd:schema>

Modified: 
incubator/ode/scratch/bpe/src/main/java/org/apache/ode/bpe/deployment/bpel/BPELWSDLLocator.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/scratch/bpe/src/main/java/org/apache/ode/bpe/deployment/bpel/BPELWSDLLocator.java?rev=417301&r1=417300&r2=417301&view=diff
==============================================================================
--- 
incubator/ode/scratch/bpe/src/main/java/org/apache/ode/bpe/deployment/bpel/BPELWSDLLocator.java
 (original)
+++ 
incubator/ode/scratch/bpe/src/main/java/org/apache/ode/bpe/deployment/bpel/BPELWSDLLocator.java
 Mon Jun 26 15:00:26 2006
@@ -1,112 +1,165 @@
-/*
- * Copyright 2006 The Apache Software Foundation.
- *
- * Licensed 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.
-*/
-/*
- * Created on May 14, 2003
- */
-package org.apache.ode.bpe.deployment.bpel;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.wsdl.xml.WSDLLocator;
-
-import org.xml.sax.InputSource;
-
-import org.apache.ode.bpe.lang.ResourceGetter;
-
-/**
- * 
- * Imported WSDL documents are dereferenced by the WSDL API - JSR110. Because 
all linked WSDL
- * documents are found in a jar file a WSDLLocator is required to find 
documents stored in
- * an internal document hashmap. Supporting WSDL documents are pulled from the 
deployment
- * jar into an internal HashMap.
- *
- * @author waterman
- */
-class BPELWSDLLocator implements WSDLLocator {
-       
-       private static final Logger logger = 
Logger.getLogger(BPELWSDLLocator.class.getName());
-       
-       private InputSource m_source;
-       private HashMap m_supportDoc;
-       private String m_bpelURI;
-       private String m_latestURI;
-
-       BPELWSDLLocator(String bpelURI, InputSource source, HashMap supportDoc) 
{
-               m_source = source;
-               m_supportDoc = supportDoc;
-               m_bpelURI = bpelURI;
-       }
-       /**
-        * @see javax.wsdl.xml.WSDLLocator#getBaseInputSource()
-        */
-       public InputSource getBaseInputSource() {
-               return m_source;
-       }
-
-       /**
-        * @see javax.wsdl.xml.WSDLLocator#getBaseURI()
-        */
-       public String getBaseURI() {
-               return m_bpelURI;
-       }
-
-       /**
-        * @see 
javax.wsdl.xml.WSDLLocator#getImportInputSource(java.lang.String, 
java.lang.String)
-        */
-       public InputSource getImportInputSource(String arg0, String arg1) {
-               
-               // Strip away any prefix path. May need to come back and 
revisit this if 
-               // deployment package contains a heirarchy.
-               //m_latestURI = arg1.substring(arg1.lastIndexOf("/")+1);
-               m_latestURI = arg1;
-               
-               InputSource is = null;
-               
-               // lookup the document from the internal map collection
-               byte[] data = 
(byte[])m_supportDoc.get(m_latestURI.toLowerCase());
-               
-               if ( data != null ) {
-                       try {
-
-                               // Create a SAX InputSource from the document 
byte array
-                               ByteArrayInputStream bais = new 
ByteArrayInputStream(data);
-                               is = new InputSource(bais);
-                           bais.close();
-                       } catch (IOException e) {
-                               
logger.log(Level.SEVERE,ResourceGetter.getFormatted("BPEL_IOERR",new Object[] 
{arg0, m_latestURI.toLowerCase()}),e);
-                       }
-               }
-               
-
-               if ( is == null ) {
-                       
logger.log(Level.SEVERE,ResourceGetter.getFormatted("DEPLOY_WSDL_NOTFOUND",new 
Object[] {m_bpelURI,m_latestURI.toLowerCase()}));
-               }
-               
-               return is;
-       }
-
-       /**
-        * @see javax.wsdl.xml.WSDLLocator#getLatestImportURI()
-        */
-       public String getLatestImportURI() {
-               return m_latestURI;
-       }
-
-}
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+*/
+/*
+ * Created on May 14, 2003
+ */
+package org.apache.ode.bpe.deployment.bpel;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.wsdl.xml.WSDLLocator;
+
+import org.xml.sax.InputSource;
+
+import org.apache.ode.bpe.lang.ResourceGetter;
+
+/**
+ * 
+ * Imported WSDL documents are dereferenced by the WSDL API - JSR110. Because 
all linked WSDL
+ * documents are found in a jar file a WSDLLocator is required to find 
documents stored in
+ * an internal document hashmap. Supporting WSDL documents are pulled from the 
deployment
+ * jar into an internal HashMap.
+ *
+ * @author waterman
+ */
+class BPELWSDLLocator implements WSDLLocator {
+       
+       private static final Logger logger = 
Logger.getLogger(BPELWSDLLocator.class.getName());
+       
+       private InputSource m_source;
+       private HashMap m_supportDoc;
+       private String m_bpelURI;
+       private String m_latestURI;
+
+       BPELWSDLLocator(String bpelURI, InputSource source, HashMap supportDoc) 
{
+               m_source = source;
+               m_supportDoc = supportDoc;
+               m_bpelURI = bpelURI;
+       }
+       /**
+        * @see javax.wsdl.xml.WSDLLocator#getBaseInputSource()
+        */
+       public InputSource getBaseInputSource() {
+               return m_source;
+       }
+
+       /**
+        * @see javax.wsdl.xml.WSDLLocator#getBaseURI()
+        */
+       public String getBaseURI() {
+               return m_bpelURI;
+       }
+
+       /**
+        * Calculate the absolute path with respect to the root of the main 
bpel file
+        * from a relative schema location given the parent location as an 
absolute
+        * path (without preceding /).
+        * 
+        * @param parentLocation
+        * @param importLocation
+        * @return
+        */
+       private String getQualifiedImportPath(String parentLocation, String 
importLocation) {
+               // check to see if the import location is in the map
+               if (m_supportDoc.containsKey(importLocation.toLowerCase())) {
+                       return importLocation;
+               }
+               
+               // check to see if we have an absolute path
+               if (importLocation.startsWith("/")) {
+                       return importLocation;
+               }
+               
+               String path;
+               
+               // remove the last component of the path
+               int index = parentLocation.lastIndexOf("/");
+               if (index == -1) {
+                       return importLocation;
+               } else {
+                       path = parentLocation.substring(0, index);
+               }
+               
+               // split the path components on the import location for 
processing
+               String[] components = importLocation.split("/");
+               for (int i = 0; i < components.length; i++) {
+                       if (components[i].equals(".")) {
+                               continue;
+                       } else if (components[i].equals("..")) {
+                               index = path.lastIndexOf("/");
+                               if (index == -1) {
+                                       path = "";
+                               } else {
+                                       path = path.substring(0, index);
+                               }
+                       } else {
+                               if (path.length() > 0) {
+                                       path = path + "/";
+                               }
+                               path = path + components[i];
+                       }
+               }
+               
+               logger.info("Relative path: " + path);
+               
+               return path;
+       }
+       
+       /**
+        * @see 
javax.wsdl.xml.WSDLLocator#getImportInputSource(java.lang.String, 
java.lang.String)
+        */
+       public InputSource getImportInputSource(String parentLocation, String 
importLocation) {
+               logger.info("parentLocation: " + parentLocation + " 
importLocation: " + importLocation);
+               
+               m_latestURI = getQualifiedImportPath(parentLocation, 
importLocation);
+               
+               InputSource is = null;
+               
+               // lookup the document from the internal map collection
+               byte[] data = 
(byte[])m_supportDoc.get(m_latestURI.toLowerCase());
+               
+               if ( data != null ) {
+                       try {
+
+                               // Create a SAX InputSource from the document 
byte array
+                               ByteArrayInputStream bais = new 
ByteArrayInputStream(data);
+                               is = new InputSource(bais);
+                           bais.close();
+                       } catch (IOException e) {
+                               
logger.log(Level.SEVERE,ResourceGetter.getFormatted("BPEL_IOERR",new Object[] 
{parentLocation, m_latestURI.toLowerCase()}),e);
+                       }
+               }
+               
+
+               if ( is == null ) {
+                       
logger.log(Level.SEVERE,ResourceGetter.getFormatted("DEPLOY_WSDL_NOTFOUND",new 
Object[] {m_bpelURI,m_latestURI.toLowerCase()}));
+               }
+               
+               return is;
+       }
+
+       /**
+        * @see javax.wsdl.xml.WSDLLocator#getLatestImportURI()
+        */
+       public String getLatestImportURI() {
+               return m_latestURI;
+       }
+
+}


Reply via email to