Hi Ping ,

It seems you are making some good progress with this issue. I will review
your approach and post my comments soon .

Thanks !

On Thu, Mar 3, 2011 at 1:02 AM, Ping Liu (JIRA) <[email protected]> wrote:

>
>    [
> https://issues.apache.org/jira/browse/WODEN-186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13001570#comment-13001570]
>
> Ping Liu commented on WODEN-186:
> --------------------------------
>
> I did an initial try with the throw-catch-exception I mentioned above but
> quickly found several issues:
>
> 1. have to modify WSDLComponent interface to add "throws XXXException" for
> getFragmentIdentifier().  This is to allow all implementation classes to
> throw the exception.  This might be okay as I saw getFragmentIdentifier() is
> only used by WSDLCompentImpl.  But it is not a good practice at the risk of
> possibly breaking existing implementation classes.
>
> 2. for the complicated case like BindingFaultReferenceImpl, it is not easy
> to provide a friendly "meaningful" error description.  The error not only
> can occur on the spot in BindingFaultReferenceImpl directly but also can go
> deep to several parent layers.  In the example test case I have, the error
> goes all the way to BindingFaultReference's great parent Binding's
> getInterfaceOperation() like this
>
>
>  
> org.apache.woden.internal.wsdl20.BindingImpl.getInterface(BindingImpl.java:93)
>
>  
> org.apache.woden.internal.wsdl20.BindingOperationImpl.getInterfaceOperation(BindingOperationImpl.java:65)
>
>  
> org.apache.woden.internal.wsdl20.BindingFaultReferenceImpl.getFragmentIdentifier(BindingFaultReferenceImpl.java:201)
>
>  
> org.apache.woden.internal.wsdl20.WSDLComponentImpl.toString(WSDLComponentImpl.java:183)
>
> If still go this way with the throw-catch-exception, I guess we should only
> check the very basic info (i.e. is null, has no QName) inside
> getFragmentIdentifier() for the current implementation class and its parent.
>  If the current instance or its parent is null or has no QName, then we
> provide warning message to indicate the instance or the parent instance is
> null or has no QName.  And then throw this warning message for the caller
> (WSDLComponentImpl).  In other word, this is the same steps as what I said
> in my previous comment above.
>
> However, beyond the basic info check, we leave whatever exception alone but
> throw out the exception stack.  In this case, there will be no "meaningful"
> error description other than the exception stack itself.  The idea is the
> error check is hard to and also should not try to check possible exceptions
> beyond what are available within current implementation class.  As a result,
> the warning message will be largely the exception stack instead of what
> error it is exactly.
>
> Going beyond, is there any better way for the fix?
>
>
> > Various problems calling toString() on uninitialized *Impl classes
> > ------------------------------------------------------------------
> >
> >                 Key: WODEN-186
> >                 URL: https://issues.apache.org/jira/browse/WODEN-186
> >             Project: Woden
> >          Issue Type: Bug
> >          Components: Parser
> >    Affects Versions: M8
> >            Reporter: Jeremy Hughes
> >             Fix For: 1.0
> >
> >         Attachments: TestToStringForComponentAndElement.txt
> >
> >
> > I'm using the Element API to construct a Description from the ground up,
> with some problems in calling toString() on uninitialized *Impl objects.
> >         WSDLFactory factory = WSDLFactory.newInstance();
> >         DescriptionElement descElem1 = factory.newDescription();
> >         ServiceElement svcElem1 = descElem1.addServiceElement();
> >         assertNotNull(svcElem1.toString());
> > gives:
> > java.lang.IllegalArgumentException
> >       at
> org.apache.woden.wsdl20.fragids.ServicePart.<init>(ServicePart.java:40)
> >       at
> org.apache.woden.internal.wsdl20.ServiceImpl.getFragmentIdentifier(ServiceImpl.java:227)
> >       at
> org.apache.woden.internal.wsdl20.WSDLComponentImpl.toString(WSDLComponentImpl.java:108)
> > ServicePart ctor actually throws a new IllegalArgumentException if passed
> a null so that's WAD. However, ServiceImpl.toString() should be friendlier.
> > Then there is a problem with ElementImpl.toString():
> >         WSDLFactory factory = WSDLFactory.newInstance();
> >         DescriptionElement descElem1 = factory.newDescription();
> >         ServiceElement svcElem1 = descElem1.addServiceElement();
> >         EndpointElement endPtElem1 = svcElem1.addEndpointElement();
> >         assertNotNull(endPtElem1.toString());
> > gives:
> > java.lang.NullPointerException
> >       at
> org.apache.woden.internal.wsdl20.EndpointImpl.getFragmentIdentifier(EndpointImpl.java:140)
> >       at
> org.apache.woden.internal.wsdl20.WSDLComponentImpl.toString(WSDLComponentImpl.java:108)
>
> --
> This message is automatically generated by JIRA.
> -
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Sagara Gunathunga

Blog - http://ssagara.blogspot.com
Web - http://people.apache.org/~sagara/

Reply via email to