[jbosstools-issues] [JBoss JIRA] Commented: (JBIDE-6748) Enhance Assign Activity Initializer to support complex message types that include choice elements

Robert (Bob) Brodt (JIRA) jira-events at lists.jboss.org
Thu Oct 21 19:13:54 EDT 2010


    [ https://jira.jboss.org/browse/JBIDE-6748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12558664#action_12558664 ] 

Robert (Bob) Brodt commented on JBIDE-6748:
-------------------------------------------

OK, I think I have a fix for this.  It involves extending the org.eclipse.wst.xml.ui.internal.wizards.NewXMLGenerator, a subclass of which is defined in org.eclipse.bpel.ui.properties.VariablePartAssignCategory where the XML literal generation for message/variable initialization happens. This class ("MyNewXMLGenerator") can be enhanced so that it generates the correct values for <choice> elements and text nodes, but I have found that a couple of minor enhancements are necessary in org.eclipse.wst.xsd.contentmodel.internal.XSDImpl (a 3,000+ line class :-O)

It looks like by setting the right build policy in the DOMContentBuilder, it will generate all the right XML bits needed for proper initialization of a BPEL message/variable. The only problem I have run across (and this MAY be a bug in XSDImpl#getEnumeratedValuesForType()) is that the DOMContentBuilder always returns the first value in the enumerated value list, which in the example Jeff provided would be "receivePolicyQuote". So, the generated XML literal looks like this:

<pol:policyQuote xmlns:pol="http://www.example.org/policyQuote" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <pol:calculatePolicyQuote>
    <pol:requestDate>2001-01-01</pol:requestDate>
    <pol:task>receivePolicyQuote</pol:task>
    <pol:policyQuoteInfo>
      <pol:policyType/>
      <pol:vehicleYear/>
      <pol:driverName/>
      <pol:ssn/>
      <pol:dlNumber/>
      <pol:age/>
      <pol:numberOfAccidents/>
      <pol:numberOfTickets/>
      <pol:creditScore/>
      <pol:price/>
    </pol:policyQuoteInfo>
  </pol:calculatePolicyQuote>
</pol:policyQuote>

Note the <pol:task>receivePolicyQuote</pol:task> element should be <pol:task>calculatePolicyQuote</pol:task> because that's the only enumeration value defined in the CalculatePolicyQuoteType definition (see the policyQuoteRequest.xsd schema for its definition). What's happening is that XSDImpl#getEnumeratedValuesForType() is collecting the enumeration values for the base type of CalculatePolicyQuoteType (which is policyQuote which is defined as a <choice>, like this:

			<xs:choice minOccurs="1" maxOccurs="1">
				<xs:element name="receivePolicyQuote" type="pol:ReceivePolicyQuoteType"/>
				<xs:element name="createPolicyQuote" type="pol:CreatePolicyQuoteType"/>
				<xs:element name="deletePolicyQuote" type="pol:DeletePolicyQuoteType"/>
				<xs:element name="getPolicyQuote" type="pol:GetPolicyQuoteType"/>
				<xs:element name="calculatePolicyQuote" type="pol:CalculatePolicyQuoteType"/>
			</xs:choice>
 
Each of the choices contains a TaskType element (the <pol:task> in the sample above) and each of those has a different enumeration value; "receivePolicyQuote" for the first, choice, "createPolicyQuote" for the second and so on. What XSDImpl#getEnumeratedValuesForType() should really do is return only the enumeration values for the given type (in this case "calculatePolicyQuote"). I could get around this (bug?) if only I could get the XSD type for the element currently being built, but alas this is unavailable from the DataTypeImpl inner class defined in XSDImpl.

I'll submit a change request to the wtp project and attach the bugzilla to this JIRA.


> Enhance Assign Activity Initializer to support complex message types that include choice elements
> -------------------------------------------------------------------------------------------------
>
>                 Key: JBIDE-6748
>                 URL: https://jira.jboss.org/browse/JBIDE-6748
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>          Components: bpel
>    Affects Versions: 3.2.0.M1
>         Environment: Mac with Eclipse 3.6 and JBoss Tools 3.2.0.M1
>            Reporter: Jeff DeLong
>            Assignee: Robert (Bob) Brodt
>             Fix For: 3.2.0.Beta2
>
>   Original Estimate: 0 minutes
>  Remaining Estimate: 0 minutes
>
> Enhance Assign Activity Initializer to support complex message types that include choice elements. See RIFTSAW-249 for more details. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbosstools-issues mailing list