cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Judes Tumuhairwe" <judethecuted...@gmail.com>
Subject Re: AegisDataBinding throwing NullPointer
Date Mon, 07 Apr 2008 18:21:15 GMT
Benson,
Thank you for resolving the issue I logged so quickly.
I'm guessing it is available in the trunk? (if not, I can wait till the next
snapshot)

thanks again!
Judes


On 4/6/08, Benson Margulies <bimargulies@gmail.com> wrote:
>
> Aegis does not support unqualified schema. However, it should have just
> made
> up one for you. Please post a JIRA.
>
> On Sun, Apr 6, 2008 at 2:40 AM, Judes Tumuhairwe <
> judethecutedude@gmail.com>
> wrote:
>
> > Hi,
> > I have an interesting case binding/marshalling complex types using the
> 2.1
> > snapshot. A NullPointer is thrown [in NamespaceHelper.getPrefix() ] when
> I
> > used AegisDataBinding but it works perfectly fine when I use JAXB (see
> the
> > "comment me to use JAXB" line in the server & client).
> >
> > Question: Do I absolutely have to have a prefix for my namespace? How
> come
> > it works fine with primitives? [actually I was trying to get the service
> > working with some interfaces & abstract classes & was running into "no
> > write
> > method for property xxx" so when I took them out & dealt with POJOs, I
> ran
> > into this NPE.]
> >
> > About the environment: Eclipse Europa, Win XP, Java 1.6
> > I have 2 beans, the interface and the implementation, the server & the
> > client (all in the same package).
> > First, here is the stacktrace:
> >
> > Apr 6, 2008 2:06:05 AM
> > org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> > buildServiceFromClass
> > INFO: Creating Service {http://education.toorosystems.com/}University<
> http://education.toorosystems.com/%7DUniversity>from
> > class com.toorosystems.education.University
> > Exception in thread "main" java.lang.NullPointerException
> >    at
> >
> >
> org.apache.cxf.aegis.util.NamespaceHelper.getPrefix(NamespaceHelper.java:71)
> >    at
> >
> >
> org.apache.cxf.aegis.util.NamespaceHelper.getUniquePrefix(NamespaceHelper.java:57)
> >    at
> >
> >
> org.apache.cxf.aegis.type.basic.BeanType.getNameWithPrefix(BeanType.java:533)
> >    at
> > org.apache.cxf.aegis.type.basic.BeanType.writeSchema(BeanType.java:483)
> >    at
> >
> >
> org.apache.cxf.aegis.databinding.AegisDatabinding.createSchemas(AegisDatabinding.java:477)
> >    at
> >
> >
> org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:322)
> >    at
> >
> >
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:343)
> >    at
> >
> >
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:392)
> >    at
> >
> >
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:180)
> >    at
> >
> >
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:79)
> >    at
> >
> >
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:113)
> >    at com.toorosystems.education.Server.main(Server.java:19)
> >
> > The model:
> > *a)* The beans:
> > 1. Course [id (long), name & description; their getters and setters, + 2
> > constructors: (no-arg & all-arg)]
> > 2. Teacher [age (int), name, department; their getters/setters, + 2
> > constructors (no-arg & all-arg i.e. Course(int age, String name, String
> > dept)]
> >
> > *b)* The interface:
> > package com.toorosystems.education;
> >
> > import javax.jws.WebService;
> > import javax.jws.soap.SOAPBinding;
> > import javax.jws.WebMethod;
> > import javax.jws.WebResult;
> > import javax.jws.WebParam;
> >
> > @WebService(name="University", targetNamespace="
> > http://education.toorosystems.com/")
> > @SOAPBinding(use=SOAPBinding.Use.LITERAL,
> > style=SOAPBinding.Style.DOCUMENT,
> > parameterStyle=SOAPBinding.ParameterStyle.BARE)
> > public interface University {
> >
> >    @WebResult(targetNamespace="http://education.toorosystems.com/",
> > name="return", partName="return")
> >    @WebMethod(operationName="getTeacher", exclude=false)
> >    public Teacher getTeacher(@WebParam(targetNamespace="
> > http://education.toorosystems.com/", name="course", mode=
> WebParam.Mode.IN)
> >    Course course);
> > }
> >
> > *c)* The implementation
> > package com.toorosystems.education;
> >
> > import javax.xml.ws.WebServiceClient;
> >
> > //@WebServiceClient(name="com.toorosystems.education.UniversityImpl",
> > targetNamespace="http://education.toorosystems.com/")
> > public class UniversityImpl implements University {
> >
> >    public UniversityImpl() {}
> >    public Teacher getTeacher(Course course) {
> >        System.out.println("getTeacher called...");
> >        return new Teacher("Mr. Tom", 52, "Computer Science" +
> > course.getName());
> >    }
> >
> > }
> >
> >
> > *d)* The Server
> > package com.toorosystems.education;
> >
> > import org.apache.cxf.aegis.databinding.AegisDatabinding;
> > import org.apache.cxf.frontend.ServerFactoryBean;
> >
> > public class Server {
> >
> >    public static void main(String[] args) {
> >        // Create our service implementation
> >        System.out.println("Starting server ...");
> >        ServerFactoryBean svrFactory = new ServerFactoryBean();
> >        svrFactory.setServiceClass(University.class);
> >        svrFactory.setAddress("http://localhost:9090/TV");
> >        svrFactory.setServiceBean(new UniversityImpl());
> >
> >        // comment me to use JAXB
> >        svrFactory.getServiceFactory().setDataBinding(new
> > AegisDatabinding());
> >
> >        svrFactory.create();
> >        System.out.println("Server started!");
> >    }
> > }
> >
> > *e)* The client
> > package com.toorosystems.education;
> >
> > import org.apache.cxf.aegis.databinding.AegisDatabinding;
> > import org.apache.cxf.frontend.ClientProxyFactoryBean;
> >
> > public class Client {
> >
> >    public static void main(String[] args) {
> >        // see
> > http://cwiki.apache.org/CXF20DOC/introduction-to-aegis-21.html
> >        ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
> >        // comment me to use JAXB
> >        factory.getServiceFactory().setDataBinding(new
> AegisDatabinding());
> >
> >        factory.setServiceClass(University.class);
> >        factory.setAddress("http://localhost:9090/TV");
> >        University client = (University) factory.create();
> >
> >        Teacher tr = client.getTeacher(new Course(40, "Intro to CS",
> > "Introductory Comp Sci"));
> >        System.out.println("Response is: " + tr.getName() + ", " +
> > tr.getAge() + ", " + tr.getDepartment());
> >    }
> > }
> >
> >
> > Any pointers will be appreciated,
> >
> > Judes T
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message