Re: Generated Faults and Inheritance

2008-03-21 Thread mikem2005

I'm trying to do the same thing...does anyone know if hierarchical exceptions
are possible with CXF?

Thanks!
Mike




Joel Turkel wrote:
 
 Hi,
 
 Is there anyway to get CXF to generate an inheritance hierarchy of users
 defined exceptions? For example, I'd like to generate something like the
 following from a WSDL:
 
 public interface Greeter {
 
 public void pingMe() throws PingMeSubclassFault, PingMeFault;
 
 }
 
 where PingMeSubclassFault is a subclass of PingMeFault. The WSDL below
 doesn't seem to do the trick i.e. PingMeFault and PingMeSubclassFault are
 not related via inheritance. The actually WSDL I'm working with has a rich
 hierarchy of exception so the lack of exception inheritance makes the
 generated code hard to work with.
 
 Thanks,
 Joel
 
 ?xml version=1.0 encoding=UTF-8?
 wsdl:definitions name=HelloWorld
   targetNamespace=http://apache.org/hello_world_soap_http;
   xmlns=http://schemas.xmlsoap.org/wsdl/;
   xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/;
   xmlns:tns=http://apache.org/hello_world_soap_http;
   xmlns:x1=http://apache.org/hello_world_soap_http/types;
   xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/;
   xmlns:xsd=http://www.w3.org/2001/XMLSchema;
   wsdl:types
   schema
   
 targetNamespace=http://apache.org/hello_world_soap_http/types;
   xmlns=http://www.w3.org/2001/XMLSchema;
   
 xmlns:tns=http://apache.org/hello_world_soap_http/types;
   elementFormDefault=qualified
   element name=pingMe
   complexType /
   /element
   element name=pingMeResponse
   complexType /
   /element
   element name=faultDetail type=tns:faultDetail /
   complexType name=faultDetail
   sequence
   element name=minor type=short /
   element name=major type=short /
   /sequence
   /complexType
   element name=subclassFaultDetail
   complexType
   complexContent
   extension 
 base=tns:faultDetail
   sequence /
   /extension
   /complexContent
   /complexType
   /element
   /schema
   /wsdl:types
   wsdl:message name=pingMeRequest
   wsdl:part name=in element=x1:pingMe /
   /wsdl:message
   wsdl:message name=pingMeResponse
   wsdl:part name=out element=x1:pingMeResponse /
   /wsdl:message
   wsdl:message name=pingMeFault
   wsdl:part name=faultDetail element=x1:faultDetail /
   /wsdl:message
   wsdl:message name=pingMeSubclassFault
   wsdl:part name=faultDetail element=x1:subclassFaultDetail 
 /
   /wsdl:message
   wsdl:portType name=Greeter
   wsdl:operation name=pingMe
   wsdl:input name=pingMeRequest
   message=tns:pingMeRequest /
   wsdl:output name=pingMeResponse
   message=tns:pingMeResponse /
   wsdl:fault name=pingMeFault 
 message=tns:pingMeFault /
   wsdl:fault name=pingMeSubclassFault
   message=tns:pingMeSubclassFault /
   /wsdl:operation
   /wsdl:portType
   wsdl:binding name=Greeter_SOAPBinding type=tns:Greeter
   soap:binding style=document
   transport=http://schemas.xmlsoap.org/soap/http; /
   wsdl:operation name=pingMe
   soap:operation style=document /
   wsdl:input
   soap:body use=literal /
   /wsdl:input
   wsdl:output
   soap:body use=literal /
   /wsdl:output
   wsdl:fault name=pingMeFault
   soap:fault name=pingMeFault use=literal /
   /wsdl:fault
   wsdl:fault name=pingMeSubclassFault
   soap:fault name=pingMeSubclassFault 
 use=literal /
   /wsdl:fault
   /wsdl:operation
   /wsdl:binding
   wsdl:service name=SOAPService
   wsdl:port binding=tns:Greeter_SOAPBinding name=SoapPort
   soap:address
   
 location=http://localhost:9000/SoapContext/SoapPort; /
   /wsdl:port
   /wsdl:service
 /wsdl:definitions
 

-- 

Re: Generated Faults and Inheritance

2008-03-21 Thread Benson Margulies
Aegis allows you to declare a base class in the throw clause and deliver
specific subclasses based on the actual class thrown. All the classes in
question end up in the wsdl.



On Fri, Mar 21, 2008 at 9:41 AM, mikem2005 [EMAIL PROTECTED] wrote:


 I'm trying to do the same thing...does anyone know if hierarchical
 exceptions
 are possible with CXF?

 Thanks!
 Mike




 Joel Turkel wrote:
 
  Hi,
 
  Is there anyway to get CXF to generate an inheritance hierarchy of users
  defined exceptions? For example, I'd like to generate something like the
  following from a WSDL:
 
  public interface Greeter {
 
  public void pingMe() throws PingMeSubclassFault, PingMeFault;
 
  }
 
  where PingMeSubclassFault is a subclass of PingMeFault. The WSDL below
  doesn't seem to do the trick i.e. PingMeFault and PingMeSubclassFault
 are
  not related via inheritance. The actually WSDL I'm working with has a
 rich
  hierarchy of exception so the lack of exception inheritance makes the
  generated code hard to work with.
 
  Thanks,
  Joel
 
  ?xml version=1.0 encoding=UTF-8?
  wsdl:definitions name=HelloWorld
targetNamespace=http://apache.org/hello_world_soap_http;
xmlns=http://schemas.xmlsoap.org/wsdl/;
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/;
xmlns:tns=http://apache.org/hello_world_soap_http;
xmlns:x1=http://apache.org/hello_world_soap_http/types;
xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/;
xmlns:xsd=http://www.w3.org/2001/XMLSchema;
wsdl:types
schema
targetNamespace=
 http://apache.org/hello_world_soap_http/types;
xmlns=http://www.w3.org/2001/XMLSchema;
xmlns:tns=
 http://apache.org/hello_world_soap_http/types;
elementFormDefault=qualified
element name=pingMe
complexType /
/element
element name=pingMeResponse
complexType /
/element
element name=faultDetail type=tns:faultDetail
 /
complexType name=faultDetail
sequence
element name=minor type=short
 /
element name=major type=short
 /
/sequence
/complexType
element name=subclassFaultDetail
complexType
complexContent
extension
 base=tns:faultDetail
sequence /
/extension
/complexContent
/complexType
/element
/schema
/wsdl:types
wsdl:message name=pingMeRequest
wsdl:part name=in element=x1:pingMe /
/wsdl:message
wsdl:message name=pingMeResponse
wsdl:part name=out element=x1:pingMeResponse /
/wsdl:message
wsdl:message name=pingMeFault
wsdl:part name=faultDetail element=x1:faultDetail /
/wsdl:message
wsdl:message name=pingMeSubclassFault
wsdl:part name=faultDetail
 element=x1:subclassFaultDetail /
/wsdl:message
wsdl:portType name=Greeter
wsdl:operation name=pingMe
wsdl:input name=pingMeRequest
message=tns:pingMeRequest /
wsdl:output name=pingMeResponse
message=tns:pingMeResponse /
wsdl:fault name=pingMeFault
 message=tns:pingMeFault /
wsdl:fault name=pingMeSubclassFault
message=tns:pingMeSubclassFault /
/wsdl:operation
/wsdl:portType
wsdl:binding name=Greeter_SOAPBinding type=tns:Greeter
soap:binding style=document
transport=http://schemas.xmlsoap.org/soap/http;
 /
wsdl:operation name=pingMe
soap:operation style=document /
wsdl:input
soap:body use=literal /
/wsdl:input
wsdl:output
soap:body use=literal /
/wsdl:output
wsdl:fault name=pingMeFault
soap:fault name=pingMeFault
 use=literal /
/wsdl:fault
wsdl:fault name=pingMeSubclassFault
soap:fault name=pingMeSubclassFault
 use=literal /
/wsdl:fault
   

Re: Generated Faults and Inheritance

2008-03-21 Thread Benson Margulies
1) Build code-first with Aegis.
2) Run java2ws from 2.1 with the Aegis databinding.
3) Use that WDSL as your starting point.

Warning: while I've worked on the code that supports all of this, I've never
looked closely at what come out of it.

On Fri, Mar 21, 2008 at 11:24 AM, Joel Turkel [EMAIL PROTECTED]
wrote:


 Is there anyway to do this using WSDL first development?


 Benson Margulies-4 wrote:
 
  Aegis allows you to declare a base class in the throw clause and deliver
  specific subclasses based on the actual class thrown. All the classes in
  question end up in the wsdl.
 
 
 
  On Fri, Mar 21, 2008 at 9:41 AM, mikem2005 [EMAIL PROTECTED] wrote:
 
 
  I'm trying to do the same thing...does anyone know if hierarchical
  exceptions
  are possible with CXF?
 
  Thanks!
  Mike
 
 
 
 
  Joel Turkel wrote:
  
   Hi,
  
   Is there anyway to get CXF to generate an inheritance hierarchy of
  users
   defined exceptions? For example, I'd like to generate something like
  the
   following from a WSDL:
  
   public interface Greeter {
  
   public void pingMe() throws PingMeSubclassFault, PingMeFault;
  
   }
  
   where PingMeSubclassFault is a subclass of PingMeFault. The WSDL
 below
   doesn't seem to do the trick i.e. PingMeFault and PingMeSubclassFault
  are
   not related via inheritance. The actually WSDL I'm working with has a
  rich
   hierarchy of exception so the lack of exception inheritance makes the
   generated code hard to work with.
  
   Thanks,
   Joel
  
   ?xml version=1.0 encoding=UTF-8?
   wsdl:definitions name=HelloWorld
 targetNamespace=http://apache.org/hello_world_soap_http;
 xmlns=http://schemas.xmlsoap.org/wsdl/;
 xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/;
 xmlns:tns=http://apache.org/hello_world_soap_http;
 xmlns:x1=http://apache.org/hello_world_soap_http/types;
 xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/;
 xmlns:xsd=http://www.w3.org/2001/XMLSchema;
 wsdl:types
 schema
 targetNamespace=
  http://apache.org/hello_world_soap_http/types;
 xmlns=http://www.w3.org/2001/XMLSchema;
 xmlns:tns=
  http://apache.org/hello_world_soap_http/types;
 elementFormDefault=qualified
 element name=pingMe
 complexType /
 /element
 element name=pingMeResponse
 complexType /
 /element
 element name=faultDetail
  type=tns:faultDetail
  /
 complexType name=faultDetail
 sequence
 element name=minor
  type=short
  /
 element name=major
  type=short
  /
 /sequence
 /complexType
 element name=subclassFaultDetail
 complexType
 complexContent
 extension
  base=tns:faultDetail
 sequence /
 /extension
 /complexContent
 /complexType
 /element
 /schema
 /wsdl:types
 wsdl:message name=pingMeRequest
 wsdl:part name=in element=x1:pingMe /
 /wsdl:message
 wsdl:message name=pingMeResponse
 wsdl:part name=out element=x1:pingMeResponse /
 /wsdl:message
 wsdl:message name=pingMeFault
 wsdl:part name=faultDetail element=x1:faultDetail
 /
 /wsdl:message
 wsdl:message name=pingMeSubclassFault
 wsdl:part name=faultDetail
  element=x1:subclassFaultDetail /
 /wsdl:message
 wsdl:portType name=Greeter
 wsdl:operation name=pingMe
 wsdl:input name=pingMeRequest
 message=tns:pingMeRequest /
 wsdl:output name=pingMeResponse
 message=tns:pingMeResponse /
 wsdl:fault name=pingMeFault
  message=tns:pingMeFault /
 wsdl:fault name=pingMeSubclassFault
 message=tns:pingMeSubclassFault /
 /wsdl:operation
 /wsdl:portType
 wsdl:binding name=Greeter_SOAPBinding type=tns:Greeter
 soap:binding style=document
 transport=http://schemas.xmlsoap.org/soap/http
 
  /
 wsdl:operation name=pingMe
 soap:operation style=document /
 wsdl:input
   

Re: Generated Faults and Inheritance

2008-03-21 Thread Daniel Kulp

I don't think so using normal looking java exception.  You could do it 
if you model your exceptions exactly like the exceptions would look like 
if you generated code from wsdl.   Basically, put the data in JAXB Beans 
that implement the heiarchy you want to see in the wsdl, then add Bean 
getFaultInfo() methods to the exceptions to return the JAXB Beans.

Even then, I'm not sure if it will actually work.

Dan


On Tuesday 18 March 2008, Joel_Turkel wrote:
 Hi,

 Is there anyway to get CXF to generate an inheritance hierarchy of
 users defined exceptions? For example, I'd like to generate something
 like the following from a WSDL:

 public interface Greeter {

 public void pingMe() throws PingMeSubclassFault, PingMeFault;

 }

 where PingMeSubclassFault is a subclass of PingMeFault. The WSDL below
 doesn't seem to do the trick i.e. PingMeFault and PingMeSubclassFault
 are not related via inheritance. The actually WSDL I'm working with
 has a rich hierarchy of exception so the lack of exception inheritance
 makes the generated code hard to work with.

 Thanks,
 Joel

 ?xml version=1.0 encoding=UTF-8?
 wsdl:definitions name=HelloWorld
   targetNamespace=http://apache.org/hello_world_soap_http;
   xmlns=http://schemas.xmlsoap.org/wsdl/;
   xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/;
   xmlns:tns=http://apache.org/hello_world_soap_http;
   xmlns:x1=http://apache.org/hello_world_soap_http/types;
   xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/;
   xmlns:xsd=http://www.w3.org/2001/XMLSchema;
   wsdl:types
   schema
   
 targetNamespace=http://apache.org/hello_world_soap_http/types;
   xmlns=http://www.w3.org/2001/XMLSchema;
   
 xmlns:tns=http://apache.org/hello_world_soap_http/types;
   elementFormDefault=qualified
   element name=pingMe
   complexType /
   /element
   element name=pingMeResponse
   complexType /
   /element
   element name=faultDetail type=tns:faultDetail /
   complexType name=faultDetail
   sequence
   element name=minor type=short /
   element name=major type=short /
   /sequence
   /complexType
   element name=subclassFaultDetail
   complexType
   complexContent
   extension 
 base=tns:faultDetail
   sequence /
   /extension
   /complexContent
   /complexType
   /element
   /schema
   /wsdl:types
   wsdl:message name=pingMeRequest
   wsdl:part name=in element=x1:pingMe /
   /wsdl:message
   wsdl:message name=pingMeResponse
   wsdl:part name=out element=x1:pingMeResponse /
   /wsdl:message
   wsdl:message name=pingMeFault
   wsdl:part name=faultDetail element=x1:faultDetail /
   /wsdl:message
   wsdl:message name=pingMeSubclassFault
   wsdl:part name=faultDetail element=x1:subclassFaultDetail 
 /
   /wsdl:message
   wsdl:portType name=Greeter
   wsdl:operation name=pingMe
   wsdl:input name=pingMeRequest
   message=tns:pingMeRequest /
   wsdl:output name=pingMeResponse
   message=tns:pingMeResponse /
   wsdl:fault name=pingMeFault 
 message=tns:pingMeFault /
   wsdl:fault name=pingMeSubclassFault
   message=tns:pingMeSubclassFault /
   /wsdl:operation
   /wsdl:portType
   wsdl:binding name=Greeter_SOAPBinding type=tns:Greeter
   soap:binding style=document
   transport=http://schemas.xmlsoap.org/soap/http; /
   wsdl:operation name=pingMe
   soap:operation style=document /
   wsdl:input
   soap:body use=literal /
   /wsdl:input
   wsdl:output
   soap:body use=literal /
   /wsdl:output
   wsdl:fault name=pingMeFault
   soap:fault name=pingMeFault use=literal /
   /wsdl:fault
   wsdl:fault name=pingMeSubclassFault
   soap:fault name=pingMeSubclassFault 
 use=literal /
   /wsdl:fault
   /wsdl:operation