On Fri, Apr 27, 2007 at 10:18:03AM -0500, Davies, Joshua wrote:
> It look as if (somehow) com.echomine.jabber.packet.DiscoverQueryIQPacket
> is being loaded from a different classpath entry than the
> "JiBX_MungeAdapter". You said you were developing an extension; my best
> guess from the stack trace below is that you're loading
> "DiscoverQueryIQPacket" from your extension's "build" directory, but the
> JiBX_MungeAdapter is coming from a .jar somewhere (that was comipiled
> sometime long ago). Most likely, you'll need to re-run jibx on the
> whole mess and make sure that none of the old classes are loaded from
> .jars.
>
> Like I said, though, I'm just guessing from the stack trace; if you
> want, post more details on exactly what you're doing, and I'll see if I
> can offer any more clues.
Oh, to post what I'm doing I need to spend a lot of time explaining feridian,
which I'm not enough familiar with ;) I bet I can't explain what is going on
:(
I'm just trying to extend feridian with new packets, I created jibx mapping (I
altered it a bit to support collections instead of arrays, as before, and
exception was changed a bit
Exception in thread "Feridian - office.redwerk.com"
java.lang.NoSuchMethodError:
com.echomine.jabber.packet.JiBX_MungeAdapter.JiBX_jep_0030_binding_newinstance_1_0(Lorg/jibx/runtime/impl/UnmarshallingContext;)Ljava/util/ArrayList;
at
com.echomine.jabber.packet.DiscoveryQueryIQPacket.JiBX_jep_0030_binding_unmarshal_3_0(DiscoveryQueryIQPacket.java)
at
com.echomine.jabber.packet.JiBX_jep_0030_bindingDiscoveryQueryIQPacket_access.unmarshal()
at org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(Unknown
Source),
so it looks like changes I made were compiled, and this is not a
classpath-related issue )
The binding is:
<!-- Binding for JEP-0030: Service discovery -->
<binding>
<!-- setup serializers/deserializers -->
<format type="com.echomine.xmpp.JID"
serializer="com.echomine.xmpp.JID.toString"
deserializer="com.echomine.xmpp.JID.parseJID"/>
<mapping name="query" ns="http://jabber.org/protocol/disco#info"
ordered='false'
class="com.echomine.jabber.packet.DiscoveryQueryIQPacket">
<namespace uri="http://jabber.org/protocol/disco#info"
default="elements"/>
<collection field="features" type="java.util.ArrayList"
usage="optional">
<structure name="feature" type="com.echomine.jabber.packet.Feature">
<value style="attribute" name="var" field="var" />
</structure>
</collection>
<collection field="identities" type="java.util.ArrayList"
usage="optional">
<structure name="identity"
type="com.echomine.jabber.packet.Identity">
<value style="attribute" name="category" field="category" />
<value style="attribute" name="type" field="type" />
<value style="attribute" name="name" field="name" />
</structure>
</collection>
</mapping>
</binding>
when I'm running this test:
package com.echomine.jabber.packet;
import java.io.StringReader;
import com.echomine.jibx.JiBXUtil;
import com.echomine.xmpp.JID;
import com.echomine.xmpp.XMPPTestCase;
import com.echomine.xmpp.packet.IQPacket;
/**
*
*/
public class DiscoveryQueryIQPacketTest extends XMPPTestCase {
private static final String SOURCE_DOMAIN_ORG = "[EMAIL PROTECTED]";
private static final String TARGET_DOMAIN_ORG = "[EMAIL PROTECTED]";
public void testUnmarshall() throws Exception {
String xml = "<query xmlns='http://jabber.org/protocol/disco#info'/>";
StringReader reader = new StringReader(xml);
DiscoveryQueryIQPacket discovery = (DiscoveryQueryIQPacket) JiBXUtil
.unmarshallObject(reader, DiscoveryQueryIQPacket.class);
assertNotNull(discovery);
assertNull(discovery.getFeatures());
assertNull(discovery.getIdentities());
assertNull(discovery.getItems());
reader.close();
reader = new StringReader(
"<query xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='conference' type='text'
name='Play-Specific Chatrooms'/>"
+ "<identity category='directory' type='chatroom'
name='Play-Specific Chatrooms'/>"
+ "<feature
var='http://jabber.org/protocol/disco#info'/>"
+ "<feature
var='http://jabber.org/protocol/disco#items'/>"
+ "<feature var='http://jabber.org/protocol/muc'/>"
+ "<feature var='jabber:iq:register'/>"
+ "<feature var='jabber:iq:search'/>"
+ "<feature var='jabber:iq:time'/>"
+ "<feature var='jabber:iq:version'/>" + "</query>");
discovery = (DiscoveryQueryIQPacket) JiBXUtil.unmarshallObject(reader,
DiscoveryQueryIQPacket.class);
assertNotNull(discovery);
assertNotNull(discovery.getFeatures());
assertEquals(7, discovery.getFeatures().size());
assertNotNull(discovery.getIdentities());
assertEquals(2, discovery.getIdentities().size());
reader.close();
reader = new StringReader(
"<iq xmlns='jabber:client' type='result' ><query
xmlns='http://jabber.org/protocol/disco#info'>"
+ "<identity category='conference' type='text'
name='Play-Specific Chatrooms'/>"
+ "<identity category='directory' type='chatroom'
name='Play-Specific Chatrooms'/>"
+ "<feature
var='http://jabber.org/protocol/disco#info'/>"
+ "<feature
var='http://jabber.org/protocol/disco#items'/>"
+ "<feature var='http://jabber.org/protocol/muc'/>"
+ "<feature var='jabber:iq:register'/>"
+ "<feature var='jabber:iq:search'/>"
+ "<feature var='jabber:iq:time'/>"
+ "<feature var='jabber:iq:version'/>"
+ "</query></iq>");
discovery = (DiscoveryQueryIQPacket) JiBXUtil.unmarshallObject(reader,
IQPacket.class);
assertNotNull(discovery);
assertNotNull(discovery.getFeatures());
assertEquals(7, discovery.getFeatures().size());
assertNotNull(discovery.getIdentities());
assertEquals(2, discovery.getIdentities().size());
reader.close();
}
public void testMarshalling() throws Exception {
StringReader reader = new StringReader(
"<iq xmlns='jabber:client' type='get' from='"
+ SOURCE_DOMAIN_ORG
+ "' to='"
+ TARGET_DOMAIN_ORG
+ "'><query
xmlns='http://jabber.org/protocol/disco#info'></iq>");
Feature feature = new Feature();
feature.setVar("testVar");
DiscoveryQueryIQPacket discoveryPacket = new DiscoveryQueryIQPacket();
// discoveryPacket.setFeatures(new Feature[] { feature
});
discoveryPacket.setTo(JID.parseJID(TARGET_DOMAIN_ORG));
discoveryPacket.setFrom(JID.parseJID(SOURCE_DOMAIN_ORG));
discoveryPacket.setType(IQPacket.TYPE_GET);
JiBXUtil.marshallIQPacket(writer, discoveryPacket);
// compare(reader);
}
}
everything works just fine, but If I try to use new class to parse XML, the
error occurs :(
Makes sence for you or may be you need to know some more specific
details/sources?
--
Eugene N Dzhurinsky
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users