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/25 11:15:36 UTC
svn commit: r467586 - in /incubator/activemq/sandbox/activemq-xmpp: ./
src/main/java/org/apache/activemq/transport/xmpp/ src/main/resources/
Author: jstrachan
Date: Wed Oct 25 02:15:35 2006
New Revision: 467586
URL: http://svn.apache.org/viewvc?view=rev&rev=467586
Log:
patches so that the Spark client can create a new chatroom and start talking to activemq. Still not quite got the querying of available queues/topics figured out yet but getting closer....
Added:
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd (with props)
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd (with props)
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd (with props)
incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.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
Modified: incubator/activemq/sandbox/activemq-xmpp/pom.xml
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/pom.xml?view=diff&rev=467586&r1=467585&r2=467586
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/pom.xml (original)
+++ incubator/activemq/sandbox/activemq-xmpp/pom.xml Wed Oct 25 02:15:35 2006
@@ -126,11 +126,11 @@
</dependency>
<dependency>
- <groupId>org.codehaus.woodstox</groupId>
- <!--<groupId>woodstox</groupId>-->
- <artifactId>wstx-asl</artifactId>
- <version>3.0.1</version>
- <!--<version>3.1-rc1</version>-->
+ <groupId>org.codehaus.woodstox</groupId>
+ <!--<groupId>woodstox</groupId>-->
+ <artifactId>wstx-asl</artifactId>
+ <version>3.0.1</version>
+ <!--<version>3.1-rc1</version>-->
</dependency>
<dependency>
@@ -194,6 +194,19 @@
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>net.java.dev.jaxb2-commons</groupId>
+ <artifactId>jaxb-fluent-api</artifactId>
+ <version>2.0.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.xml</groupId>
+ <artifactId>jaxb-xjc</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
<executions>
<execution>
<goals>
@@ -204,12 +217,15 @@
<configuration>
<strict>false</strict>
<verbose>false</verbose>
- <!--
<args>
- <arg>-XtoString</arg>
- <arg>-Xequals</arg>
- <arg>-XhashCode</arg>
+ <!--<arg value="-Xfluent-api"/>-->
</args>
+ <!--
+ <arg>-XtoString</arg>
+ <arg>-Xequals</arg>
+ <arg>-XhashCode</arg>
+ -->
+ <!--
<schemasExcludes>
<exclude>delimiter.xsd</exclude>
</schemasExcludes>
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=467586&r1=467585&r2=467586
==============================================================================
--- 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 Wed Oct 25 02:15:35 2006
@@ -35,9 +35,14 @@
import org.apache.activemq.util.LongSequenceGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jabber.protocol.disco_info.Feature;
+import org.jabber.protocol.disco_info.Identity;
+import org.jabber.protocol.disco_items.Item;
+import org.jabber.protocol.muc_user.X;
import org.w3c.dom.Element;
import javax.jms.JMSException;
+import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
@@ -110,6 +115,11 @@
onIq(event);
}
});
+ registry.registerHandler(Presence.class, new Handler<Presence>() {
+ public void handle(Presence event) throws Exception {
+ onPresence(event);
+ }
+ });
}
public void onXmppCommand(Object command) throws Exception {
@@ -149,12 +159,10 @@
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());
+ log.debug("Iq Auth Query " + debugString(iq) + " resource: " + query.getResource() + " username: " + query.getUsername());
}
if (query.getPassword() == null) {
Iq result = createResult(iq);
@@ -201,28 +209,11 @@
});
}
- 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());
+ log.debug("Iq Private " + debugString(iq) + " any: " + query.getAny());
}
Iq result = createResult(iq);
@@ -234,7 +225,7 @@
jabber.iq.roster.Query query = (jabber.iq.roster.Query) any;
if (log.isDebugEnabled()) {
- log.debug("Roster: " + query.getItem());
+ log.debug("Iq Roster " + debugString(iq) + " item: " + query.getItem());
}
Iq result = createResult(iq);
@@ -243,39 +234,18 @@
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);
+ onDiscoItems(iq, (org.jabber.protocol.disco_items.Query) any);
}
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);
+ onDiscoInfo(iq, (org.jabber.protocol.disco_info.Query) any);
}
else {
if (any instanceof Element) {
Element element = (Element) any;
- log.warn("Unknown Id element namespace: " + element.getNamespaceURI() + " localName: " + element.getLocalName());
+ log.warn("Iq Unknown " + debugString(iq) + " element namespace: " + element.getNamespaceURI() + " localName: " + element.getLocalName());
}
else {
- log.warn("Unknown Id: " + any + " of type: " + any.getClass().getName());
+ log.warn("Iq Unknown " + debugString(iq) + " any: " + any + " of type: " + any.getClass().getName());
}
Iq result = createResult(iq);
jabber.client.Error error = new Error();
@@ -283,6 +253,118 @@
result.setAny(error);
transport.marshall(result);
}
+ }
+
+ protected String debugString(Iq iq) {
+ return " to: " + iq.getTo() + " type: " + iq.getType() + " from: " + iq.getFrom() + " id: " + iq.getId();
+ }
+
+ protected void onDiscoItems(Iq iq, org.jabber.protocol.disco_items.Query query) throws IOException {
+ String to = iq.getTo();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Iq Disco Items query " + debugString(iq) + " node: " + query.getNode() + " item: " + query.getItem());
+ }
+
+ Iq result = createResult(iq);
+ org.jabber.protocol.disco_items.Query answer = new org.jabber.protocol.disco_items.Query();
+ if (to == null || to.length() == 0) {
+ answer.getItem().add(createItem("queues", "Queues", "queues"));
+ answer.getItem().add(createItem("topics", "Topics", "topics"));
+ }
+ else {
+ // lets not add anything?
+ }
+
+ result.setAny(answer);
+ transport.marshall(result);
+ }
+
+ protected void onDiscoInfo(Iq iq, org.jabber.protocol.disco_info.Query query) throws IOException {
+ String to = iq.getTo();
+
+ // TODO lets create the topic 'to'
+
+ if (log.isDebugEnabled()) {
+ log.debug("Iq Disco Info query " + debugString(iq) + " 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();
+ answer.setNode(to);
+ answer.getFeature().add(createFeature("http://jabber.org/protocol/disco#info"));
+ answer.getFeature().add(createFeature("http://jabber.org/protocol/disco#items"));
+ if (to == null || to.length() == 0) {
+ answer.getIdentity().add(createIdentity("directory", "chatroom", "queues"));
+ answer.getIdentity().add(createIdentity("directory", "chatroom", "topics"));
+ /*
+ answer.getIdentity().add(createIdentity("hierarchy", "queues", "branch"));
+ answer.getIdentity().add(createIdentity("hierarchy", "topics", "branch"));
+ */
+ }
+ else {
+ // for queues/topics
+ if (to.equals("queues")) {
+ answer.getIdentity().add(createIdentity("conference", "queue.a", "text"));
+ answer.getIdentity().add(createIdentity("conference", "queue.b", "text"));
+ }
+ else if (to.equals("topics")) {
+ answer.getIdentity().add(createIdentity("conference", "topic.x", "text"));
+ answer.getIdentity().add(createIdentity("conference", "topic.y", "text"));
+ answer.getIdentity().add(createIdentity("conference", "topic.z", "text"));
+ }
+ else {
+ // lets reply to an actual room
+ answer.getIdentity().add(createIdentity("conference", to, "text"));
+ answer.getFeature().add(createFeature("http://jabber.org/protocol/muc"));
+ answer.getFeature().add(createFeature("muc-open"));
+ }
+ }
+
+ result.setAny(answer);
+ transport.marshall(result);
+ }
+
+ protected void onPresence(Presence presence) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug("Presence: " + presence.getFrom() + " id: " + presence.getId() + " to: " + presence.getTo() + " type: " + presence.getType()
+ + " showOrStatusOrPriority: " + presence.getShowOrStatusOrPriority() + " any: " + presence.getAny());
+ }
+ Presence answer = new Presence();
+ answer.setFrom(presence.getTo());
+ answer.setType(presence.getType());
+ answer.setTo(presence.getFrom());
+ X x = new X();
+ org.jabber.protocol.muc_user.Item item = new org.jabber.protocol.muc_user.Item();
+ item.setAffiliation("owner");
+ item.setRole("moderator");
+ item.setNick("broker");
+ x.getDeclineOrDestroyOrInvite().add(item);
+ answer.getShowOrStatusOrPriority().add(x);
+ transport.marshall(answer);
+ }
+
+
+ protected Item createItem(String jid, String name, String node) {
+ Item answer = new Item();
+ answer.setJid(jid);
+ answer.setName(name);
+ answer.setNode(node);
+ return answer;
+ }
+
+ protected Identity createIdentity(String category, String type, String name) {
+ Identity answer = new Identity();
+ answer.setCategory(category);
+ answer.setName(name);
+ answer.setType(type);
+ return answer;
+ }
+
+ protected Feature createFeature(String var) {
+ Feature feature = new Feature();
+ feature.setVar(var);
+ return feature;
}
/**
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=467586&r1=467585&r2=467586
==============================================================================
--- 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 Wed Oct 25 02:15:35 2006
@@ -255,6 +255,8 @@
+ ":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"
+ + ":org.jabber.protocol.muc" + ":org.jabber.protocol.muc_admin"
+ + ":org.jabber.protocol.muc_unique" + ":org.jabber.protocol.muc_user"
+ ":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/muc-admin.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd?view=auto&rev=467586
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd Wed Oct 25 02:15:35 2006
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/muc#admin'
+ xmlns='http://jabber.org/protocol/muc#admin'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ JEP-0045: http://www.jabber.org/jeps/jep-0045.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='query'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='item' maxOccurs='unbounded'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='item'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='actor' minOccurs='0'/>
+ <xs:element ref='reason' minOccurs='0'/>
+ </xs:sequence>
+ <xs:attribute name='affiliation' use='optional'>
+ <xs:simpleType>
+ <xs:restriction base='xs:NCName'>
+ <xs:enumeration value='admin'/>
+ <xs:enumeration value='member'/>
+ <xs:enumeration value='none'/>
+ <xs:enumeration value='outcast'/>
+ <xs:enumeration value='owner'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name='jid' type='xs:string' use='optional'/>
+ <xs:attribute name='nick' type='xs:string' use='optional'/>
+ <xs:attribute name='role' use='optional'>
+ <xs:simpleType>
+ <xs:restriction base='xs:NCName'>
+ <xs:enumeration value='moderator'/>
+ <xs:enumeration value='none'/>
+ <xs:enumeration value='participant'/>
+ <xs:enumeration value='visitor'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='actor'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='jid' type='xs:string' use='required'/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='reason' type='xs:string'/>
+
+ <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/muc-admin.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-admin.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd?view=auto&rev=467586
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd Wed Oct 25 02:15:35 2006
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/muc#unique'
+ xmlns='http://jabber.org/protocol/muc#unique'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ XEP-0045: http://www.xmpp.org/extensions/xep-0045.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='unique' type='xs:string'/>
+
+</xs:schema>
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-unique.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd?view=auto&rev=467586
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd Wed Oct 25 02:15:35 2006
@@ -0,0 +1,121 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/muc#user'
+ xmlns='http://jabber.org/protocol/muc#user'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ JEP-0045: http://www.jabber.org/jeps/jep-0045.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='x'>
+ <xs:complexType>
+ <xs:choice minOccurs='0' maxOccurs='unbounded'>
+ <xs:element ref='decline' minOccurs='0'/>
+ <xs:element ref='destroy' minOccurs='0'/>
+ <xs:element ref='invite' minOccurs='0' maxOccurs='unbounded'/>
+ <xs:element ref='item' minOccurs='0'/>
+ <xs:element name='password' type='xs:string' minOccurs='0'/>
+ <xs:element ref='status' minOccurs='0'/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='decline'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='reason' minOccurs='0'/>
+ </xs:sequence>
+ <xs:attribute name='from' type='xs:string' use='optional'/>
+ <xs:attribute name='to' type='xs:string' use='optional'/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='destroy'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='reason' minOccurs='0'/>
+ </xs:sequence>
+ <xs:attribute name='jid' type='xs:string' use='optional'/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='invite'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='reason' minOccurs='0'/>
+ </xs:sequence>
+ <xs:attribute name='from' type='xs:string' use='optional'/>
+ <xs:attribute name='to' type='xs:string' use='optional'/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='item'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='actor' minOccurs='0'/>
+ <xs:element ref='reason' minOccurs='0'/>
+ <xs:element name='continue' type='empty' minOccurs='0'/>
+ </xs:sequence>
+ <xs:attribute name='affiliation' use='optional'>
+ <xs:simpleType>
+ <xs:restriction base='xs:NCName'>
+ <xs:enumeration value='admin'/>
+ <xs:enumeration value='member'/>
+ <xs:enumeration value='none'/>
+ <xs:enumeration value='outcast'/>
+ <xs:enumeration value='owner'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name='jid' type='xs:string' use='optional'/>
+ <xs:attribute name='nick' type='xs:string' use='optional'/>
+ <xs:attribute name='role' use='optional'>
+ <xs:simpleType>
+ <xs:restriction base='xs:NCName'>
+ <xs:enumeration value='moderator'/>
+ <xs:enumeration value='none'/>
+ <xs:enumeration value='participant'/>
+ <xs:enumeration value='visitor'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='actor'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='jid' type='xs:string' use='required'/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='status'>
+ <xs:complexType>
+ <xs:attribute name='code' use='required'>
+ <xs:simpleType>
+ <xs:restriction base='xs:int'>
+ <xs:length value='3'/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='reason' type='xs:string'/>
+
+ <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/muc-user.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc-user.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd
URL: http://svn.apache.org/viewvc/incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd?view=auto&rev=467586
==============================================================================
--- incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd (added)
+++ incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd Wed Oct 25 02:15:35 2006
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<xs:schema
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://jabber.org/protocol/muc'
+ xmlns='http://jabber.org/protocol/muc'
+ elementFormDefault='qualified'>
+
+ <xs:annotation>
+ <xs:documentation>
+ The protocol documented by this schema is defined in
+ JEP-0045: http://www.jabber.org/jeps/jep-0045.html
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name='x'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref='history' minOccurs='0'/>
+ <xs:element name='password' type='xs:string' minOccurs='0'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name='history'>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base='empty'>
+ <xs:attribute name='maxchars' type='xs:int' use='optional'/>
+ <xs:attribute name='maxstanzas' type='xs:int' use='optional'/>
+ <xs:attribute name='seconds' type='xs:int' use='optional'/>
+ <xs:attribute name='since' type='xs:dateTime' 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/muc.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/activemq/sandbox/activemq-xmpp/src/main/resources/muc.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml