
(object Petal
    version    	50
    _written   	"Rose 8.3.0407.2800"
    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"
	    attributes 	(list Attribute_Set
		(object Attribute
		    tool       	"Java"
		    name       	"cg_style"
		    value      	"Default_EJB"))
	    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"
	    attributes 	(list Attribute_Set
		(object Attribute
		    tool       	"Java"
		    name       	"cg_style"
		    value      	"Default_EJB"))
	    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"
	    attributes 	(list Attribute_Set
		(object Attribute
		    tool       	"Java"
		    name       	"cg_style"
		    value      	"Default_EJB"))
	    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))
