You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/10/24 20:34:44 UTC
svn commit: r467432 - in /incubator/activemq/sandbox/activemq-xmpp: ./
src/main/java/org/apache/activemq/transport/xmpp/ src/main/resources/
src/test/java/org/apache/activemq/transport/xmpp/
Author: jstrachan
Date: Tue Oct 24 11:34:43 2006
New Revision: 467432
URL: http://svn.apache.org/viewvc?view=rev&rev=467432
Log:
fixes so that the Spark Jabber client can connect to ActiveMQ
Added:
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd (with props)
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd (with props)
Modified:
incubator/activemq/sandbox/activemq-xmpp/pom.xml
incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/ProtocolConverter.java
incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/XmppTransport.java
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/jabber-client.xsd
incubator/activemq/sandbox/activemq-xmpp/src/test/java/org/apache/activemq/transport/xmpp/XmppTest.java
Modified: incubator/activemq/sandbox/activemq-xmpp/pom.xml
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/pom.xml?view=diff&rev=467432&r1=467431&r2=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/pom.xml (original)
+++ incubator/activemq/sandbox/activemq-xmpp/pom.xml Tue Oct 24 11:34:43 2006
@@ -38,7 +38,7 @@
<repository>
<id>codehaus</id>
<name>Codehaus Maven 2 Repository</name>
- <url>https://repository.codehaus.org/</url>
+ <url>http://repository.codehaus.org/</url>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
Modified: incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/ProtocolConverter.java
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/ProtocolConverter.java?view=diff&rev=467432&r1=467431&r2=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/ProtocolConverter.java (original)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/ProtocolConverter.java Tue Oct 24 11:34:43 2006
@@ -26,6 +26,7 @@
import jabber.client.Error;
import jabber.client.Iq;
import jabber.client.Message;
+import jabber.client.Presence;
import jabber.iq.auth.Query;
import org.apache.activemq.command.*;
import org.apache.activemq.transport.xmpp.command.Handler;
@@ -34,6 +35,7 @@
import org.apache.activemq.util.LongSequenceGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Element;
import javax.jms.JMSException;
import java.io.PrintWriter;
@@ -147,8 +149,13 @@
protected void onIq(final Iq iq) throws Exception {
Object any = iq.getAny();
+ log.debug("Received Iq");
+
if (any instanceof Query) {
Query query = (Query) any;
+ if (log.isDebugEnabled()) {
+ log.debug("Iq Query: " + query.getResource() + " username: " + query.getUsername());
+ }
if (query.getPassword() == null) {
Iq result = createResult(iq);
Query required = new Query();
@@ -159,7 +166,7 @@
return;
}
- connectionInfo.setClientId(query.getResource());
+ //connectionInfo.setClientId(query.getResource());
connectionInfo.setUserName(query.getUsername());
connectionInfo.setPassword(query.getPassword());
@@ -194,7 +201,82 @@
});
}
+ else if (any instanceof Presence) {
+ Presence presence = (Presence) any;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Presence: " + presence.getFrom() + " showOrStatusOrPriority: " + presence.getShowOrStatusOrPriority());
+ }
+
+ /*
+ Iq result = createResult(iq);
+ Presence answer = new Presence();
+ answer.setFrom(transport.getFrom());
+ answer.setType("");
+ result.setAny(answer);
+ transport.marshall(result);
+ */
+
+ }
+ else if (any instanceof jabber.iq._private.Query) {
+ jabber.iq._private.Query query = (jabber.iq._private.Query) any;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Private: " + query.getAny());
+ }
+
+ Iq result = createResult(iq);
+ jabber.iq._private.Query answer = new jabber.iq._private.Query();
+ result.setAny(answer);
+ transport.marshall(result);
+ }
+ else if (any instanceof jabber.iq.roster.Query) {
+ jabber.iq.roster.Query query = (jabber.iq.roster.Query) any;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Roster: " + query.getItem());
+ }
+
+ Iq result = createResult(iq);
+ jabber.iq.roster.Query roster = new jabber.iq.roster.Query();
+ result.setAny(roster);
+ transport.marshall(result);
+ }
+ else if (any instanceof org.jabber.protocol.disco_items.Query) {
+ org.jabber.protocol.disco_items.Query query = (org.jabber.protocol.disco_items.Query) any;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Disco Items query node: " + query.getNode() + " item: " + query.getItem());
+ }
+
+ Iq result = createResult(iq);
+ org.jabber.protocol.disco_items.Query roster = new org.jabber.protocol.disco_items.Query();
+ result.setAny(roster);
+ transport.marshall(result);
+ }
+ else if (any instanceof org.jabber.protocol.disco_info.Query) {
+ org.jabber.protocol.disco_info.Query query = (org.jabber.protocol.disco_info.Query) any;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Disco Info query node: " + query.getNode() + " features: " + query.getFeature() + " identity: " + query.getIdentity());
+ }
+
+ Iq result = createResult(iq);
+ org.jabber.protocol.disco_info.Query answer = new org.jabber.protocol.disco_info.Query();
+ // TODO
+ //answer.getFeature().add(new Conference)
+
+ result.setAny(answer);
+ transport.marshall(result);
+ }
else {
+ if (any instanceof Element) {
+ Element element = (Element) any;
+ log.warn("Unknown Id element namespace: " + element.getNamespaceURI() + " localName: " + element.getLocalName());
+ }
+ else {
+ log.warn("Unknown Id: " + any + " of type: " + any.getClass().getName());
+ }
Iq result = createResult(iq);
jabber.client.Error error = new Error();
error.setUnexpectedRequest("Don't understand: " + any.toString());
Modified: incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/XmppTransport.java
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/XmppTransport.java?view=diff&rev=467432&r1=467431&r2=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/XmppTransport.java (original)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/java/org/apache/activemq/transport/xmpp/XmppTransport.java Tue Oct 24 11:34:43 2006
@@ -152,7 +152,7 @@
@Override
public void run() {
- log.trace("XMPP consumer thread starting");
+ log.debug("XMPP consumer thread starting");
try {
XMLInputFactory xif = XMLInputFactory.newInstance();
@@ -251,7 +251,10 @@
// TODO it would be preferable to use class discovery here!
context = JAXBContext.newInstance("jabber.client" + ":jabber.server"
+ ":jabber.iq._private" + ":jabber.iq.auth" + ":jabber.iq.gateway" + ":jabber.iq.last" + ":jabber.iq.oob"
- + ":jabber.iq.pass" + ":jabber.iq.roster" + ":jabber.iq.time" + ":jabber.iq.version" + ":org.jabber.etherx.streams"
+ + ":jabber.iq.pass" + ":jabber.iq.roster" + ":jabber.iq.time" + ":jabber.iq.version"
+ + ":org.jabber.etherx.streams" + ":org.jabber.protocol.activity" + ":org.jabber.protocol.address"
+ + ":org.jabber.protocol.amp" + ":org.jabber.protocol.amp_errors"
+ + ":org.jabber.protocol.disco_info" + ":org.jabber.protocol.disco_items"
+ ":ietf.params.xml.ns.xmpp_sasl" + ":ietf.params.xml.ns.xmpp_stanzas"
+ ":ietf.params.xml.ns.xmpp_streams" + ":ietf.params.xml.ns.xmpp_tls");
Added: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd?view=auto&rev=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd Tue Oct 24 11:34:43 2006
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/disco#info'
+ xmlns='http://jabber.org/protocol/disco#info'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ JEP-0030: http://www.jabber.org/jeps/jep-0030.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='query'>
+ <xs:complexType>
+ <xs:sequence minOccurs='0'>
+ <xs:element ref='identity' maxOccurs='unbounded'/>
+ <xs:element ref='feature' maxOccurs='unbounded'/>
+ </xs:sequence>
+ <xs:attribute name='node' type='xs:string' use='optional'/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='identity'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='category' type='xs:string' use='required'/>
+ <xs:attribute name='name' type='xs:string' use='optional'/>
+ <xs:attribute name='type' type='xs:string' use='required'/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='feature'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='var' type='xs:string' use='required'/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name='empty'>
+ <xs:restriction base='xs:string'>
+ <xs:enumeration value=''/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-info.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd?view=auto&rev=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd Tue Oct 24 11:34:43 2006
@@ -0,0 +1,51 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/disco#items'
+ xmlns='http://jabber.org/protocol/disco#items'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ JEP-0030: http://www.jabber.org/jeps/jep-0030.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='query'>
+ <xs:complexType>
+ <xs:sequence minOccurs='0'>
+ <xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
+ </xs:sequence>
+ <xs:attribute name='node' type='xs:string' use='optional'/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='item'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='action' use='optional'>
+ <xs:simpleType>
+ <xs:restriction base='xs:NCName'>
+ <xs:enumeration value='remove'/>
+ <xs:enumeration value='update'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name='jid' type='xs:string' use='required'/>
+ <xs:attribute name='name' type='xs:string' use='optional'/>
+ <xs:attribute name='node' type='xs:string' use='optional'/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name='empty'>
+ <xs:restriction base='xs:string'>
+ <xs:enumeration value=''/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/disco-items.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/jabber-client.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/jabber-client.xsd?view=diff&rev=467432&r1=467431&r2=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/jabber-client.xsd (original)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/jabber-client.xsd Tue Oct 24 11:34:43 2006
@@ -67,7 +67,18 @@
</xs:complexType>
</xs:element>
+
+ <xs:element name='thread'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='xs:NMTOKEN'/>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!--
<xs:element name='thread' type='xs:NMTOKEN'/>
+ -->
<xs:element name='presence'>
<xs:complexType>
Modified: incubator/activemq/sandbox/activemq-xmpp/src/test/java/org/apache/activemq/transport/xmpp/XmppTest.java
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/test/java/org/apache/activemq/transport/xmpp/XmppTest.java?view=diff&rev=467432&r1=467431&r2=467432
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/test/java/org/apache/activemq/transport/xmpp/XmppTest.java (original)
+++ incubator/activemq/sandbox/activemq-xmpp/src/test/java/org/apache/activemq/transport/xmpp/XmppTest.java Tue Oct 24 11:34:43 2006
@@ -28,7 +28,7 @@
public class XmppTest extends TestCase {
private XmppBroker broker = new XmppBroker();
- private boolean block = false;
+ private boolean block = true;
public void testConnect() throws Exception {
//ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
@@ -40,7 +40,7 @@
XMPPConnection con = new XMPPConnection("localhost", 61222);
con.login("amq-user", "amq-pwd");
Chat chat = con.createChat("test@localhost");
- for (int i = 0; i < 1000; i++) {
+ for (int i = 0; i < 10; i++) {
System.out.println("Sending message: " + i);
chat.sendMessage("Hello from Message: " + i);
}