Author: jstrachan
Date: Tue Oct 10 04:52:46 2006
New Revision: 454713
URL: http://svn.apache.org/viewvc?view=rev&rev=454713
Log:
working system test for working with Jabber
Added:
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/UriConfigurationTest.java
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/GroupChatEndpoint.java
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberComponent.java
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberEndpoint.java
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberMarshaler.java
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/PrivateChatEndpoint.java
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/SpringComponentTest.java
incubator/servicemix/trunk/servicemix-jabber/src/test/resources/spring.xml
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/GroupChatEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/GroupChatEndpoint.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/GroupChatEndpoint.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/GroupChatEndpoint.java
Tue Oct 10 04:52:46 2006
@@ -88,7 +88,9 @@
//-------------------------------------------------------------------------
protected void processInOnly(MessageExchange exchange, NormalizedMessage
normalizedMessage) throws Exception {
Message message = chat.createMessage();
- getMarshaler().fromNMS(message, normalizedMessage);
+ message.setTo(room);
+ message.setFrom(getUser());
+ getMarshaler().fromNMS(message, exchange, normalizedMessage);
chat.sendMessage(message);
done(exchange);
}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberComponent.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberComponent.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberComponent.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberComponent.java
Tue Oct 10 04:52:46 2006
@@ -20,6 +20,7 @@
import org.apache.servicemix.common.DefaultComponent;
import org.apache.servicemix.common.Endpoint;
import org.apache.servicemix.common.ResolvedEndpoint;
+import org.apache.servicemix.jbi.util.IntrospectionSupport;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
@@ -28,6 +29,7 @@
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.xml.namespace.QName;
import java.net.URI;
+import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
@@ -47,6 +49,8 @@
private JabberEndpoint[] endpoints;
private BeanFactory beanFactory;
+ private String user;
+ private String password;
public JabberEndpoint[] getEndpoints() {
@@ -57,6 +61,22 @@
this.endpoints = endpoints;
}
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
public BeanFactory getBeanFactory() {
return beanFactory;
}
@@ -82,11 +102,22 @@
}
protected Endpoint getResolvedEPR(ServiceEndpoint ep) throws Exception {
+ JabberEndpoint endpoint = createEndpoint(ep);
+ endpoint.activate();
+ return endpoint;
+ }
+
+ /**
+ * A factory method for creating endpoints from a service endpoint
+ * which is public so that it can be easily unit tested
+ */
+ public JabberEndpoint createEndpoint(ServiceEndpoint ep) throws
URISyntaxException {
URI uri = new URI(ep.getEndpointName());
Map map = URISupport.parseQuery(uri.getQuery());
JabberEndpoint endpoint = null;
- // TODO how do we decide whether to use group or private chat from the
URI??
+
+ // TODO how do we decide whether to use group or private chat from the
URI in a nicer way?
String room = (String) map.get("room");
if (room != null) {
endpoint = new GroupChatEndpoint(this, ep, room);
@@ -95,15 +126,14 @@
endpoint = new PrivateChatEndpoint(this, ep);
}
+ IntrospectionSupport.setProperties(endpoint, map);
+ IntrospectionSupport.setProperties(endpoint.getMarshaler(), map,
"marshal.");
+
// TODO
//endpoint.setRole(MessageExchange.Role.PROVIDER);
endpoint.setUri(uri);
- // TODO
- // IntrospectionSupport.setProperties(endpoint.getBean(), map);
-
- endpoint.activate();
return endpoint;
}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberEndpoint.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberEndpoint.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberEndpoint.java
Tue Oct 10 04:52:46 2006
@@ -17,17 +17,22 @@
package org.apache.servicemix.jabber;
import org.apache.servicemix.common.ProviderEndpoint;
+import org.apache.servicemix.common.ServiceUnit;
import org.jivesoftware.smack.AccountManager;
-import org.jivesoftware.smack.PacketListener;
+import org.jivesoftware.smack.*;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smack.packet.Presence;
+import org.jivesoftware.smack.packet.RosterPacket;
+import org.jivesoftware.smack.packet.Message;
import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.jbi.servicedesc.ServiceEndpoint;
import java.net.URI;
+import java.util.Iterator;
/**
* Represents a base Jabber endpoint
@@ -44,12 +49,14 @@
private String resource = "ServiceMix";
private boolean login = true;
private PacketFilter filter;
+ private boolean createAccount;
public JabberEndpoint() {
}
public JabberEndpoint(JabberComponent component, ServiceEndpoint
serviceEndpoint) {
super(component, serviceEndpoint);
+ init(component);
}
public void stop() throws Exception {
@@ -73,27 +80,68 @@
getConnection().addPacketListener(this, filter);
if (login && !connection.isAuthenticated()) {
if (user != null) {
- AccountManager accountManager = new AccountManager(connection);
- accountManager.createAccount(user, password);
-
logger.info("Logging in to Jabber as user: " + user + " on
connection: " + connection);
- connection.login(user, password, resource);
+ if (password == null) {
+ logger.warn("No password configured for user: " + user);
+ }
+
+ if (createAccount) {
+ AccountManager accountManager = new
AccountManager(connection);
+ accountManager.createAccount(user, password);
+ }
+ if (resource != null) {
+ connection.login(user, password, resource);
+ }
+ else {
+ connection.login(user, password);
+ }
}
else {
logger.info("Logging in anonymously to Jabber on connection: "
+ connection);
connection.loginAnonymously();
}
+
+ // now lets send a presence
+
+ connection.sendPacket(new Presence(Presence.Type.AVAILABLE));
}
}
+ public void setServiceUnit(ServiceUnit serviceUnit) {
+ super.setServiceUnit(serviceUnit);
+ init((JabberComponent) serviceUnit.getComponent());
+ }
+
public void processPacket(Packet packet) {
try {
+ System.out.println("Received packet: " + packet);
+ Iterator iter = packet.getPropertyNames();
+ while (iter.hasNext()) {
+ String property = (String) iter.next();
+ System.out.println("Packet header: " + property + " value: " +
packet.getProperty(property));
+ }
+ if (packet instanceof Message) {
+ Message message = (Message) packet;
+ System.out.println("Received message: " + message + " with " +
message.getBody());
+
+ }
+ else if (packet instanceof RosterPacket) {
+ RosterPacket rosterPacket = (RosterPacket) packet;
+ System.out.println("Roster packet with : " +
rosterPacket.getRosterItemCount());
+ Iterator rosterItems = rosterPacket.getRosterItems();
+ while (rosterItems.hasNext()) {
+ Object item = rosterItems.next();
+ System.out.println("Roster item: " + item);
+ }
+
+ }
InOnly exchange = getExchangeFactory().createInOnlyExchange();
NormalizedMessage in = exchange.createMessage();
exchange.setInMessage(in);
marshaler.toNMS(in, packet);
- done(exchange);
+ System.out.println("Exchange: " + exchange);
+ //send(exchange);
}
catch (MessagingException e) {
throw new JabberListenerException(e, packet);
@@ -109,11 +157,8 @@
public void setUri(URI uri) {
setHost(uri.getHost());
setPort(uri.getPort());
- setUser(uri.getUserInfo());
- setPassword(uri.getAuthority());
- String path = uri.getPath();
- if (path != null) {
- setResource(path);
+ if (uri.getUserInfo() != null) {
+ setUser(uri.getUserInfo());
}
}
@@ -181,6 +226,14 @@
this.login = login;
}
+ public boolean isCreateAccount() {
+ return createAccount;
+ }
+
+ public void setCreateAccount(boolean createAccount) {
+ this.createAccount = createAccount;
+ }
+
public PacketFilter getFilter() {
return filter;
}
@@ -188,4 +241,15 @@
public void setFilter(PacketFilter filter) {
this.filter = filter;
}
+
+
+ protected void init(JabberComponent component) {
+ if (user == null) {
+ user = component.getUser();
+ }
+ if (password == null) {
+ password = component.getPassword();
+ }
+ }
+
}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberMarshaler.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberMarshaler.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberMarshaler.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/JabberMarshaler.java
Tue Oct 10 04:52:46 2006
@@ -20,10 +20,13 @@
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
+import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
+import javax.jbi.servicedesc.ServiceEndpoint;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
+import javax.xml.namespace.QName;
import java.util.Date;
import java.util.Iterator;
@@ -34,6 +37,8 @@
*/
public class JabberMarshaler {
private SourceMarshaler sourceMarshaler;
+ private String messageBodyOpenTag = "<message>";
+ private String messageBodyCloseTag = "</message>";
public JabberMarshaler() {
this(new SourceMarshaler());
@@ -53,8 +58,11 @@
addNmsProperties(normalizedMessage, packet);
if (packet instanceof Message) {
Message message = (Message) packet;
- Source source = sourceMarshaler.asSource(message.getBody());
- normalizedMessage.setContent(source);
+ String text = message.getBody();
+ if (text != null) {
+ Source source = sourceMarshaler.asSource(messageBodyOpenTag +
text + messageBodyCloseTag);
+ normalizedMessage.setContent(source);
+ }
}
// lets add the packet to the NMS
@@ -65,15 +73,14 @@
* Marshals from the Jabber message to the normalized message
*
* @param message
- * @param normalizedMessage
- * @throws javax.xml.transform.TransformerException
- *
+ * @param exchange
+ * @param normalizedMessage @throws
javax.xml.transform.TransformerException
*/
- public void fromNMS(Message message, NormalizedMessage normalizedMessage)
throws TransformerException {
+ public void fromNMS(Message message, MessageExchange exchange,
NormalizedMessage normalizedMessage) throws TransformerException {
// lets create a text message
String xml = messageAsString(normalizedMessage);
message.setBody(xml);
- addJabberProperties(message, normalizedMessage);
+ addJabberProperties(message, exchange, normalizedMessage);
}
// Properties
@@ -106,6 +113,28 @@
this.sourceMarshaler = sourceMarshaler;
}
+ public String getMessageBodyOpenTag() {
+ return messageBodyOpenTag;
+ }
+
+ /**
+ * Sets the XML open tag used to wrap inbound Jabber text messages
+ */
+ public void setMessageBodyOpenTag(String messageBodyOpenTag) {
+ this.messageBodyOpenTag = messageBodyOpenTag;
+ }
+
+ public String getMessageBodyCloseTag() {
+ return messageBodyCloseTag;
+ }
+
+ /**
+ * Sets the XML close tag used to wrap inbound Jabber text messages
+ */
+ public void setMessageBodyCloseTag(String messageBodyCloseTag) {
+ this.messageBodyCloseTag = messageBodyCloseTag;
+ }
+
// Implementation methods
//-------------------------------------------------------------------------
@@ -119,13 +148,29 @@
/**
* Appends properties on the NMS to the JMS Message
*/
- protected void addJabberProperties(Message message, NormalizedMessage
normalizedMessage) {
+ protected void addJabberProperties(Message message, MessageExchange
exchange, NormalizedMessage normalizedMessage) {
for (Iterator iter = normalizedMessage.getPropertyNames().iterator();
iter.hasNext();) {
String name = (String) iter.next();
Object value = normalizedMessage.getProperty(name);
if (shouldIncludeHeader(normalizedMessage, name, value)) {
message.setProperty(name, value);
}
+ }
+ message.setProperty("exchangeId", exchange.getExchangeId());
+ setProperty(message, "interface", exchange.getInterfaceName());
+ setProperty(message, "operation", exchange.getOperation());
+ setProperty(message, "service", exchange.getService());
+ //message.setProperty("pattern", exchange.getPattern());
+ //message.setProperty("role", exchange.getRole());
+ ServiceEndpoint endpoint = exchange.getEndpoint();
+ if (endpoint != null) {
+ message.setProperty("endpointName", endpoint.getEndpointName());
+ }
+ }
+
+ protected void setProperty(Message message, String name, QName qName) {
+ if (qName != null) {
+ message.setProperty(name, qName.toString());
}
}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/PrivateChatEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/PrivateChatEndpoint.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/PrivateChatEndpoint.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/main/java/org/apache/servicemix/jabber/PrivateChatEndpoint.java
Tue Oct 10 04:52:46 2006
@@ -22,6 +22,7 @@
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
import javax.jbi.servicedesc.ServiceEndpoint;
+import java.net.URI;
/**
* Represents an endpoint for chatting to a single individual
@@ -41,14 +42,10 @@
super(component, serviceEndpoint);
}
- public PrivateChatEndpoint(JabberComponent component, ServiceEndpoint
serviceEndpoint, String participant) {
- super(component, serviceEndpoint);
- this.participant = participant;
- }
-
public void start() throws Exception {
super.start();
if (chat == null) {
+ String participant = getParticipant();
if (participant == null) {
throw new IllegalArgumentException("No participant property
specified");
}
@@ -80,12 +77,29 @@
this.participant = participant;
}
+
+ public void setUri(URI uri) {
+ super.setUri(uri);
+ String path = uri.getPath();
+ if (path != null) {
+ // lets strip the leading slash to make an XMPP resource
+ if (path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ setParticipant(path);
+ }
+ }
+
+
// Implementation methods
//-------------------------------------------------------------------------
protected void processInOnly(MessageExchange exchange, NormalizedMessage
normalizedMessage) throws Exception {
Message message = chat.createMessage();
- getMarshaler().fromNMS(message, normalizedMessage);
+ getMarshaler().fromNMS(message, exchange, normalizedMessage);
+ message.setTo(getParticipant());
+ message.setFrom(getUser());
+ message.setThread(exchange.getExchangeId());
+ message.setType(Message.Type.NORMAL);
chat.sendMessage(message);
- done(exchange);
}
}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/SpringComponentTest.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/SpringComponentTest.java?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/SpringComponentTest.java
(original)
+++
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/SpringComponentTest.java
Tue Oct 10 04:52:46 2006
@@ -17,6 +17,7 @@
package org.apache.servicemix.jabber;
import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.client.ServiceMixClient;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.apache.servicemix.tck.SpringTestSupport;
@@ -28,11 +29,40 @@
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.namespace.QName;
+import java.util.Map;
+import java.util.Set;
+import java.net.InetAddress;
public class SpringComponentTest extends SpringTestSupport {
+ public static void main(String[] args) {
+ Set<Map.Entry<Object,Object>> entries =
System.getProperties().entrySet();
+ for (Map.Entry<Object, Object> entry : entries) {
+ System.out.println(entry.getKey() + " = " + entry.getValue());
+ }
+
+ try {
+ SpringComponentTest test = new SpringComponentTest();
+ test.setUp();
+ test.testSendingToStaticEndpoint();
+
+ System.out.println();
+ System.out.println("Waiting for incoming messages");
+ System.out.println("Press any key to terminate");
+ System.out.println();
+
+ System.in.read();
+
+ test.tearDown();
+ }
+ catch (Exception e) {
+ System.err.println("Caught: " + e);
+ e.printStackTrace();
+ }
+
+ }
public void testSendingToStaticEndpoint() throws Exception {
- DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
+ ServiceMixClient client = new DefaultServiceMixClient(jbi);
InOnly me = client.createInOnlyExchange();
me.setService(new QName("urn:test", "service"));
NormalizedMessage message = me.getInMessage();
@@ -44,6 +74,12 @@
assertExchangeWorked(me);
}
+
+ protected void setUp() throws Exception {
+ String host = InetAddress.getLocalHost().getHostName();
+ System.setProperty("host", host);
+ super.setUp();
+ }
protected void assertExchangeWorked(MessageExchange me) throws Exception {
if (me.getStatus() == ExchangeStatus.ERROR) {
Added:
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/UriConfigurationTest.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/UriConfigurationTest.java?view=auto&rev=454713
==============================================================================
---
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/UriConfigurationTest.java
(added)
+++
incubator/servicemix/trunk/servicemix-jabber/src/test/java/org/apache/servicemix/jabber/UriConfigurationTest.java
Tue Oct 10 04:52:46 2006
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.jabber;
+
+import junit.framework.TestCase;
+import org.apache.servicemix.common.ResolvedEndpoint;
+
+import javax.jbi.servicedesc.ServiceEndpoint;
+import javax.xml.namespace.QName;
+
+/**
+ * @version $Revision: $
+ */
+public class UriConfigurationTest extends TestCase {
+
+
+ public void testUriConfiguration() throws Exception {
+ ServiceEndpoint serviceEndpoint = new
ResolvedEndpoint("jabber://[EMAIL PROTECTED]/[EMAIL PROTECTED]", new
QName("test"));
+
+ JabberComponent component = new JabberComponent();
+ PrivateChatEndpoint endpoint = (PrivateChatEndpoint)
component.createEndpoint(serviceEndpoint);
+ assertNotNull("Should have created an endpoint", endpoint);
+
+ assertEquals("localhost", endpoint.getHost());
+ assertEquals("servicemix-user", endpoint.getUser());
+ assertEquals("[EMAIL PROTECTED]", endpoint.getResource());
+ }
+}
Modified:
incubator/servicemix/trunk/servicemix-jabber/src/test/resources/spring.xml
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jabber/src/test/resources/spring.xml?view=diff&rev=454713&r1=454712&r2=454713
==============================================================================
--- incubator/servicemix/trunk/servicemix-jabber/src/test/resources/spring.xml
(original)
+++ incubator/servicemix/trunk/servicemix-jabber/src/test/resources/spring.xml
Tue Oct 10 04:52:46 2006
@@ -20,6 +20,8 @@
<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
xmlns:jabber="http://servicemix.apache.org/jabber/1.0"
xmlns:test="urn:test">
+
+ <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<sm:container id="jbi" embedded="true" createMBeanServer="false">
@@ -27,9 +29,18 @@
<sm:activationSpec>
<sm:component>
- <jabber:component>
+
+ <jabber:component user="servicemix-user" password="servicemix-pwd">
+
<jabber:endpoints>
- <jabber:groupChatEndpoint service="test:service"
endpoint="endpoint" uri="jabber://im.google.com/servicemix" room="foo"/>
+
+ <jabber:privateChatEndpoint service="test:service"
endpoint="endpoint"
+ uri="jabber://${host}/[EMAIL
PROTECTED]"/>
+
+
+ <!--<jabber:groupChatEndpoint service="test:groupChat"
endpoint="endpoint2"-->
+ <!--uri="jabber://${host}"
room="conference"/>-->
+
</jabber:endpoints>
</jabber:component>
</sm:component>