This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 83546 - mapper should support soap arrayType in data mapping and wsdl:arrayType
Summary: mapper should support soap arrayType in data mapping and wsdl:arrayType
Status: NEW
Alias: None
Product: soa
Classification: Unclassified
Component: BPEL Mapper (show other bugs)
Version: 6.x
Hardware: All All
: P3 blocker (vote)
Assignee: Alexander Permyakov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-08-28 05:55 UTC by Ritesh Adval
Modified: 2008-05-05 08:42 UTC (History)
1 user (show)

See Also:
Issue Type: ENHANCEMENT
Exception Reporter:


Attachments
Google wsdl (7.32 KB, application/octet-stream)
2006-08-28 05:55 UTC, Ritesh Adval
Details
sample Google project (29.60 KB, application/octet-stream)
2006-09-20 00:05 UTC, Ritesh Adval
Details
email thread on support for soap encoding. (105.46 KB, application/octet-stream)
2006-09-20 00:08 UTC, Ritesh Adval
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ritesh Adval 2006-08-28 05:55:16 UTC
This is for the use case of recognizing soap arrayType and wsdl arrayType.

Refer to attached google wsdl, it has following operation:

<operation name="doGoogleSearch">
         <input message="typens:doGoogleSearch"/>
         <output message="typens:doGoogleSearchResponse"/>
      </operation>


The message doGoogleSearchResponse is defined as follows:

<message name="doGoogleSearchResponse">
      <part name="return" type="typens:GoogleSearchResult"/>
   </message>
   

Where typens:GoogleSearchResult is defined as follows:

<xsd:complexType name="GoogleSearchResult">
            <xsd:all>
               <xsd:element name="documentFiltering" type="xsd:boolean"/>
               <xsd:element name="searchComments" type="xsd:string"/>
               <xsd:element name="estimatedTotalResultsCount" type="xsd:int"/>
               <xsd:element name="estimateIsExact" type="xsd:boolean"/>
               <xsd:element name="resultElements" 
type="typens:ResultElementArray"/>
               <xsd:element name="searchQuery" type="xsd:string"/>
               <xsd:element name="startIndex" type="xsd:int"/>
               <xsd:element name="endIndex" type="xsd:int"/>
               <xsd:element name="searchTips" type="xsd:string"/>
               <xsd:element name="directoryCategories" 
type="typens:DirectoryCategoryArray"/>
               <xsd:element name="searchTime" type="xsd:double"/>
            </xsd:all>
         </xsd:complexType>

Note here resultElements is of type typens:ResultElementArray.

And typens:ResultElementArray is defined as:

<xsd:complexType name="ResultElementArray">
            <xsd:complexContent>
               <xsd:restriction base="soapenc:Array">
                  <xsd:attribute ref="soapenc:arrayType" 
wsdl:arrayType="typens:ResultElement[]"/>
               </xsd:restriction>
            </xsd:complexContent>
         </xsd:complexType>

So what this is saying is that ResultElementArray is extending soapenc:Array
so it is an array of some elements and because of presense of wsdl:arrayType,
it is saying that ResultElementArray is an array of typens:ResultElement.

typens:ResultElement is defined as:

 <xsd:complexType name="ResultElement">
            <xsd:all>
               <xsd:element name="summary" type="xsd:string"/>
               <xsd:element name="URL" type="xsd:string"/>
               <xsd:element name="snippet" type="xsd:string"/>
               <xsd:element name="title" type="xsd:string"/>
               <xsd:element name="cachedSize" type="xsd:string"/>
               <xsd:element name="relatedInformationPresent" 
type="xsd:boolean"/>
               <xsd:element name="hostName" type="xsd:string"/>
               <xsd:element name="directoryCategory" 
type="typens:DirectoryCategory"/>
               <xsd:element name="directoryTitle" type="xsd:string"/>
            </xsd:all>
         </xsd:complexType>


What mapper needs to support is as follows:
(a) when showing resultElements as defined in typens:GoogleSearchResult it 
should show it as being an array which contains typens:ResultElement. Possibly 
could show a different array icon for resultElements.

(b)Predicate should be allowed to be created on resultElements. This would 
facilitate predicate creation which allow user to map only some element of an 
array.
ex: user wants to map only 4 element. so we should be able to create 
resultElements[4] using predicate mapper.
Comment 1 Ritesh Adval 2006-08-28 05:55:43 UTC
Created attachment 33307 [details]
Google wsdl
Comment 2 Ritesh Adval 2006-08-28 06:12:06 UTC
Also when user expands resultElement[4] he should be able to see elements 
defined in typens:ResultElement
Comment 3 Ritesh Adval 2006-09-20 00:05:03 UTC
Attaching sample Google project which works soap encoding
Comment 4 Ritesh Adval 2006-09-20 00:05:40 UTC
Created attachment 34191 [details]
sample Google project
Comment 5 Ritesh Adval 2006-09-20 00:08:22 UTC
Created attachment 34192 [details]
email thread on support for soap encoding.
Comment 6 Ritesh Adval 2006-09-20 07:28:17 UTC
This is an enhancement in mapper to support soap array.
current work around is to type in xpath query in source.

This should be fixed as part of support to allow user to edit node test
and xpath axis. Need to support wildchar as well.

changing issue type.
Comment 7 Ritesh Adval 2006-09-28 22:15:50 UTC
I meant this to be enhancement , it is not fixed yet.
Comment 8 Ritesh Adval 2006-09-29 01:52:50 UTC
see previous comments for structure of part and its xsd element/types.

User see something like this is mapper tree:

return (part)
  documentFiltering
  searchComments
  estimatedTotalResultsCount
  resultElements
 
now here resultElements is of type typens:ResultElementArray which is defined
as an extension of soapenc:Array, so if resultElements represents an array we 
need to allow user to create a child step on resultElements.

note that since resultElements is an array, its child elements are of the type 
ResultElement 

( this is a complex type defined)


For gogogle web service to work we need to create expression something like 
this:

$DoGoogleSearchOut1.return/resultElements/*[ 1]/URL

This means following need to be supported:
(a) user should be able to select resultElements in mapper tree and lauch a 
step editor to create this *[1]/URL step.

This needs more design.
Comment 9 Ritesh Adval 2006-09-29 01:58:29 UTC
At  this point we do not have design to allow user to specify wildchar and 
also change the name of nodetest.

I propose we could do following:
(a) if an element is of soap array type , add an action to create location step.
(b) This would show a text field where user can type in extra steps:

ex user right click on resultElement  and say edit step.

then he types in *[ 1]/URL this will add a node resultElement*[ 1]/URL in the 
tree which user can map.

when reverse rendering we need to add this node back into tree.
Comment 10 Jiri Prox 2007-09-17 20:22:04 UTC
Obsolete milestone, please reevaluate
Comment 11 Sergey Lunegov 2008-05-05 08:42:44 UTC
This one I think we need to implement.