Hi Martin
This is good info! It looks like a bug in our core code and I opened a
jira for it:
http://issues.apache.org/jira/browse/JUDDI-466
It should be fixed soon.
Thanks for finding it :)
--Kurt
On 3/30/11 4:16 AM, Martynas A. (chainer) wrote:
Hey Kurt,
Here is the log from Catalina: http://codepaste.net/abrvqa
2011/3/29 Kurt T Stam <[email protected] <mailto:[email protected]>>
Hi Martin,
Can you check the juddi.log on the server side for stacktraces?
You are doing something very similar to what we do in the
unittests (and it works fine there), so I'm not sure what's going on.
It should never deal with anything org.apache.juddi.model.* on the
client side. And I can't tell where it is trying a cast either..
Thx,
--Kurt
On 3/29/11 9:17 AM, chainerlt wrote:
Kurt wrote:
Hi Martin,
Your code fragments don't really tell the whole story, can
you attach
all code and the
full stack trace?
--Kurt
Hi again,
well I'm not gonna post whole project, since it is just too
big, but I'm
gonna show the classes which gets involved in this problem.
so Here are 2 important classes which does work around with
juddiv3.
Tools class which operates with juddiv3 directly:
Tools - http://codepaste.net/dijvwq
and QueryBuilder which builds queries in a static way:
QueryBuilder - http://codepaste.net/radvpa
Some classes you might be interested in:
FindQualifiersAbbreviations - http://codepaste.net/bw4oye
SwingWorkerCompletionWaiter - http://codepaste.net/wwygis
Let me remind I already set up XMLDocAuthenticator in
~\webapps\juddiv3\WEB-INF\classes\juddiv3.properties :
juddi.authenticator =
org.apache.juddi.v3.auth.XMLDocAuthenticator
juddi.usersfile = juddi-users.xml
Have ~\webapps\juddiv3\WEB-INF\classes\juddi-users.xml which is:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<juddi-users>
<user userid="anou_mana" password="password" />
<user userid="bozo" password="clown" />
<user userid="sviens" password="password" />
<user userid="admin" password="secret" />
</juddi-users>
So everything seems to be working: I can get AuthToken using
credentials.
Also authorized users can save/delete business/services and
etc. But
problems appears in working with Publishers. I can view them,
but cannot
save/delete (throws exception).
The main idea of the architecture: You build queries with
QueryBuilder and
pass them to Tools so it will return feedback depending on
what query you
gave to it.
For instance let me show simplified code example of how I view all
publishers:
//Let's imagine we have a valid auth token with
admin rights.
AuthToken authToken = ?;
//Build query (GetAllPublisherDetail)
Object query = QueryBuilder.GetAllPublisherDetail(authToken);
//Pass to the tools object so it can manage it and
give me the feedback
Object feedback = tools.submitQuery(null, query);
//the feedback should be PublisherDetail object or
null.
//(I'm not adding exception handling here, so code
could be more easy to
read)
//Lets say it gives me PublisherDetail which I know
contains all
publishers,
//and .getPublisher() will give me non-empty
List<Publisher>.
//Lets take first Publisher from here:
Publisher p =
((PublisherDetail)feedback).getPublisher().get(0);
//Okay, lets imagine we edited this publisher a bit
and now we wanna save
it:
//Build query (SavePublisher)
query = QueryBuilder.GetSavePublisher(p ,authToken);
//Pass it to the tools, and expect PublisherDetail
object as a feedback
feedback = tools.submitQuery(null, query); //but here I
get the exception
The exception:
javax.xml.ws.soap.SOAPFaultException:
org.apache.juddi.model.UddiEntityPublisher cannot be cast to
org.apache.juddi.model.Publisher
at
com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
at
com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
at
com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at
com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at
com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
at $Proxy40.savePublisher(Unknown Source)
at
juddiv3admin.juddiv3.Tools$PublisherWorker.savePublisher(Tools.java:200)
at
juddiv3admin.juddiv3.Tools$1.doInBackground(Tools.java:170)
at
javax.swing.SwingWorker$1.call(SwingWorker.java:277)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at
java.util.concurrent.FutureTask.run(FutureTask.java:138)
at javax.swing.SwingWorker.run(SwingWorker.java:316)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Appears in this Tools class here:
public PublisherDetail savePublisher(SavePublisher
savePublisher) throws
Exception
{
return juddiApi.savePublisher(savePublisher);
}
Looking for answer, thank you.
--Martin