ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "tbuss (JIRA)" <j...@apache.org>
Subject [jira] [Issue Comment Edited] (ODE-922) Problem with BPEL 1.1 literal initialization support
Date Mon, 23 May 2011 18:38:47 GMT

    [ https://issues.apache.org/jira/browse/ODE-922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13038115#comment-13038115
] 

tbuss edited comment on ODE-922 at 5/23/11 6:38 PM:
----------------------------------------------------

I have a proposed fix for this issue.  

To fixing the ODE compiler to allow <from> ... literal value ... </from> modify
the From class to fix up literal values for BPEL 1.1 following the similar technique used
for expressions...

    public LiteralVal getAsLiteralVal() {
        // BPEL 1.1 fixups. In 1.1 a literal was the value of the <from> element not
the value of a child <literal> element.
        if (is11()) {
         String literalText = getTextValue();
         return literalText == null  ? null : new LiteralVal11( getElement());}
        else {
         return getFirstChild(LiteralVal.class);
        }
    }

and then provide a class that represent the BPEL 1.1 literal.  

public class LiteralVal11 extends LiteralVal {

    public LiteralVal11(Element el) {
     //This will be a <From> element not a <Literal> element
     //This subclass may not be necessary
     //It is here only to distinguish the 1.1 to 2.0 difference
        super(el);
    }
}

The only purpose of this class, LiteralVal11,  is to indicate there is a difference between
1.1 and 2.0.  It has no other behavior and is not essential to the fix.  The main thing to
note is that instead of the <literal> element that contains the text value of the literal
in BPEL 2.0,  this class will hold a <from> element that contains the text value of
the literal.  The class files and compiled .jar are attached.

Note: I have tested this with various examples and it seems to address the issue without causing
problems.  I wrote a unit test but the current ODE compiler uint test structure is oriented
to testing things that are supposed to fail which makes it difficult to supply a unit test
for something that is supposed to work.

      was (Author: tbuss):
    I have a proposed fix for this issue.  

To fixing the ODE compiler to allow <from> ... literal value ... </from> modify
the From class to fix up literal values for BPEL 1.1 following the similar technique used
for expressions...

    public LiteralVal getAsLiteralVal() {
        // BPEL 1.1 fixups. In 1.1 a literal was the value of the <from> element not
the value of a child <literal> element.
        if (is11()) {
         String literalText = getTextValue();
         return literalText == null  ? null : new LiteralVal11( getElement());}
        else {
         return getFirstChild(LiteralVal.class);
        }
    }

and then provide a class that represent the BPEL 1.1 literal.  

public class LiteralVal11 extends LiteralVal {

    public LiteralVal11(Element el) {
     //This will be a <From> element not a <Literal> element
     //This subclass may not be necessary
     //It is here only to distinguish the 1.1 to 2.0 difference
        super(el);
    }
}

The only purpose of this class, LiteralVal11,  is to indicate there is a difference between
1.1 and 2.0.  It has no other behavior and is not essential to the fix.  The main thing to
note is that instead of the <literal> element that contains the text value of the literal
in BPEL 2.0,  this class will hold a <from> element that contains the text value of
the literal.  The class files and compiled .jar are attached.

  
> Problem with BPEL 1.1 literal initialization support
> ----------------------------------------------------
>
>                 Key: ODE-922
>                 URL: https://issues.apache.org/jira/browse/ODE-922
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Compilation/Parsing
>    Affects Versions: 1.3.5
>         Environment: Windows XP SP3, Tomcat-7.0.10,  jdk1.6.0
>            Reporter: tbuss
>         Attachments: Ode_Compiler_Fix.zip
>
>
> I am trying to port some BPEL 1.1 workflows to ODE 1.3.5 but am having difficulty with
assigning literal XML.
> According to all the discussions and specs for BPEL 1.1 I have found, the correct <from>
syntax for literals is  <from>some literal value</from>.  
> In BPEL 2.0 this appears to have changed to <from><literal>...</literal></from>
but <literal> is not defined for BPEL 1.1.
> For example, given the namespaces:
> xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" 
> xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"  
> and given a schema type:
>     <xsd:schema targetNamespace="urn:MyNamespace" xmlns="urn:MyNamespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <xsd:complexType name="CredentialsType">
>       <xsd:sequence>
>         <xsd:element name="UsernameToken">
>           <xsd:complexType>
>             <xsd:sequence>
>               <xsd:element name="Username" type="xsd:string" />
>               <xsd:element name="Password" type="xsd:string" />
>             </xsd:sequence>
>           </xsd:complexType>
>         </xsd:element>
>       </xsd:sequence>
>     </xsd:complexType>
>     </xsd:schema>
> The following BPEL should be valid:
>     <variables>
>         <variable name="myliteralvar" type="myns:CredentialsType"/>
>     </variables>
>    <assign name="assign1">
>         <copy>
>             <from >
>                 <myns:UsernameToken xmlns:myns="urn:MyNamespace">
>                     <myns:username xmlns:myns="urn:MyNamespace" />
>                     <myns:password xmlns:myns="urn:MyNamespace" />
>                 </myns:UsernameToken>
>             </from>
>             <to variable="myliteralvar"/>
>         </copy>
>     </assign>
> And result is the variable, myliteralvar taking the value 
>                 <myns:UsernameToken xmlns:myns="urn:MyNamespace">
>                     <myns:username xmlns:myns="urn:MyNamespace" />
>                     <myns:password xmlns:myns="urn:MyNamespace" />
>                 </myns:UsernameToken>
> However Ode 1.3.5 complains on deployment with
> "Unrecognized element in BPEL dom:  {urn:MyNamespace}UsernameToken"
> Followed by 
> "error: [UnknownFromSpec] From-spec format is unrecognized.
> I have attached a full example where I modified the HelloWorld BPEL to use BPEL 1.1.
 It deploys successfully if the above assign is removed.
> Is this a known bug in Ode or is there some configuration apart from the BPEL namespace
that is required to have Ode recognize BPEL 1.1 syntax?
> Note: I am setting the filename and bpel11wsdlFileName on the process element in deploy.xml
> 	<process name="pns:HelloWorld4" 
> 		fileName="HelloWorld4.bpel"  
> 		bpel11wsdlFileName="HelloWorld4.wsdl" 
>                 >
> 		<active>true</active>
> 		<provide partnerLink="helloPartnerLink">
> 			<service name="wns:HelloService" port="HelloPort"/>
> 		</provide>
> 	</process>
> see user mailing list for original discussion and attachment
> http://mail-archives.apache.org/mod_mbox/ode-user/201104.mbox/%3c1B3A9CAA04782F40AC59576CFBFC802C0B22DE2B32@VA3DIAXVS251.RED001.local%3e

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message