
(object Petal
    version    	47
    _written   	"Rose 8.0.0303.1400"
    charSet    	0)

(object Class_Category "wscommon"
    is_unit    	TRUE
    is_loaded  	TRUE
    attributes 	(list Attribute_Set
	(object Attribute
	    tool       	"Ecore"
	    name       	"basePackage"
	    value      	(value Text "org.eclipse.jst.j2ee.webservice"))
	(object Attribute
	    tool       	"Ecore"
	    name       	"prefix"
	    value      	(value Text "Wscommon"))
	(object Attribute
	    tool       	"Ecore"
	    name       	"nsURI"
	    value      	(value Text "wscommon.xmi")))
    quid       	"3E15B4C0016F"
    exportControl 	"Public"
    logical_models 	(list unit_reference_list
	(object Class "InitParam"
	    quid       	"3E10AC6E0280"
	    class_attributes 	(list class_attribute_list
		(object ClassAttribute "paramName"
		    quid       	"3E526C580355"
		    type       	"String"
		    exportControl 	"Public")
		(object ClassAttribute "paramValue"
		    quid       	"3E526C5D0013"
		    type       	"String"
		    exportControl 	"Public")
		(object ClassAttribute "description"
		    quid       	"3E526C63017A"
		    type       	"String"
		    exportControl 	"Public"))
	    language   	"Java")
	(object Class "SOAPHeader"
	    quid       	"3E10AC99022F"
	    documentation 	
|Defines the QName of a SOAP header that will be processed by the handler.
|
	    
	    superclasses 	(list inheritance_relationship_list
		(object Inheritance_Relationship
		    quid       	"3F4671870049"
		    supplier   	"Logical View::common::QName"
		    quidu      	"3F3BEF5D02C0"))
	    language   	"Java")
	(object Class "SOAPRole"
	    quid       	"3E10ACBC0164"
	    documentation 	
|The soap-role element contains a SOAP actor definition that the Handler will play as a role.
|
	    
	    class_attributes 	(list class_attribute_list
		(object ClassAttribute "soapRole"
		    quid       	"3E11E9AD02D7"
		    type       	"String"
		    exportControl 	"Public"))
	    language   	"Java")
	(object Class "PortName"
	    quid       	"3E15BBC90209"
	    class_attributes 	(list class_attribute_list
		(object ClassAttribute "portName"
		    quid       	"3E15E4F70076"
		    type       	"String"
		    exportControl 	"Public"))
	    language   	"Java")
	(object Class "DescriptionType"
	    quid       	"3F5CBC6D0353"
	    superclasses 	(list inheritance_relationship_list
		(object Inheritance_Relationship
		    quid       	"3F5DDB7E00C1"
		    supplier   	"Logical View::common::Description"
		    quidu      	"3E4A98D602E0")))
	(object Class "DisplayNameType"
	    quid       	"3F5CBC780236"
	    superclasses 	(list inheritance_relationship_list
		(object Inheritance_Relationship
		    quid       	"3F5DDB82033D"
		    supplier   	"Logical View::common::DisplayName"
		    quidu      	"3E4A9922000E"))))
    logical_presentations 	(list unit_reference_list))
