You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/01/04 00:06:39 UTC

svn commit: r1054817 [2/2] - in /mina/vysper/trunk: ./ server/core-inttest/ server/core-inttest/src/test/java/org/apache/vysper/xmpp/server/ server/core-inttest/src/test/java/org/apache/vysper/xmpp/server/s2s/ server/core-inttest/src/test/resources/ se...

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java Mon Jan  3 23:06:37 2011
@@ -29,6 +29,7 @@ import org.apache.vysper.xml.fragment.Ab
 import org.apache.vysper.xml.fragment.Attribute;
 import org.apache.vysper.xml.fragment.XMLElement;
 import org.apache.vysper.xml.fragment.XMLFragment;
+import org.apache.vysper.xml.fragment.XMLText;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
@@ -211,6 +212,44 @@ public class StanzaBuilder extends Abstr
     public static Stanza createForwardStanza(Stanza original, Entity from, Entity to) {
         return createForward(original, from, to).build();
     }
+    
+    public static Stanza rewriteNamespace(Stanza stanza, String fromNamespaceUri, String toNamespaceUri) {
+        StanzaBuilder builder = new StanzaBuilder(stanza.getName(), toNamespaceUri, stanza.getNamespacePrefix());
+        for(Attribute attribute : stanza.getAttributes()) {
+            builder.addAttribute(attribute);
+        }
+        
+        for(XMLFragment fragment : stanza.getInnerFragments()) {
+            if(fragment instanceof XMLElement) {
+                rewriteNamespace((XMLElement) fragment, builder, fromNamespaceUri, toNamespaceUri);
+            } else {
+                // XMLText
+                builder.addText(((XMLText)fragment).getText());
+            }
+        }
+        
+        return builder.build();
+    }
+    
+    private static void rewriteNamespace(XMLElement element, StanzaBuilder builder, String fromNamespaceUri, String toNamespaceUri) {
+        if(fromNamespaceUri.equals(element.getNamespaceURI())) {
+            builder.startInnerElement(element.getName(), toNamespaceUri);
+            for(Attribute attribute : element.getAttributes()) {
+                builder.addAttribute(attribute);
+            }
+            for(XMLFragment fragment : element.getInnerFragments()) {
+                if(fragment instanceof XMLElement) {
+                    rewriteNamespace((XMLElement) fragment, builder, fromNamespaceUri, toNamespaceUri);
+                } else {
+                    // XMLText
+                    builder.addText(((XMLText)fragment).getText());
+                }
+            }
+            builder.endInnerElement();
+        } else {
+            builder.addPreparedElement(element);
+        }
+    }
 
     class ElementStruct {
         public ElementStruct parentElement = null;

Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java Mon Jan  3 23:06:37 2011
@@ -26,7 +26,7 @@ import junit.framework.TestCase;
 
 import org.apache.vysper.xmpp.addressing.EntityImpl;
 import org.apache.vysper.xmpp.delivery.StanzaRelayBroker;
-import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
+import org.apache.vysper.xmpp.protocol.HandlerDictionary;
 import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
 import org.apache.vysper.xmpp.server.ServerFeatures;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -44,7 +44,7 @@ public class StanzaSessionTestCase exten
     protected void setUp() throws Exception {
         StanzaRelayBroker relay = new StanzaRelayBroker();
 
-        List<NamespaceHandlerDictionary> dictionaries = new ArrayList<NamespaceHandlerDictionary>();
+        List<HandlerDictionary> dictionaries = new ArrayList<HandlerDictionary>();
         dictionaries.add(new org.apache.vysper.xmpp.modules.core.base.BaseStreamStanzaDictionary());
         dictionaries.add(new org.apache.vysper.xmpp.modules.core.starttls.StartTLSStanzaDictionary());
         dictionaries.add(new org.apache.vysper.xmpp.modules.core.sasl.SASLStanzaDictionary());

Copied: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java (from r1054813, mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java)
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java?p2=mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java&p1=mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java&r1=1054813&r2=1054817&rev=1054817&view=diff
==============================================================================
--- mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java Mon Jan  3 23:06:37 2011
@@ -55,6 +55,10 @@ public class DeliveringInteralInboundSta
         public boolean verifyAccountExists(Entity jid) {
             return true;
         }
+
+        public void changePassword(String username, String password) throws AccountCreationException {
+            ; // empty
+        }
     }
 
     @Override

Propchange: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan  3 23:06:37 2011
@@ -0,0 +1 @@
+/mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java:1050957-1054813

Propchange: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan  3 23:06:37 2011
@@ -0,0 +1 @@
+/mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java:1050957-1054813

Propchange: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan  3 23:06:37 2011
@@ -0,0 +1 @@
+/mina/vysper/branches/s2s/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java:1050957-1054813

Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java Mon Jan  3 23:06:37 2011
@@ -166,7 +166,7 @@ public class TestSessionContext extends 
         return this;
     }
 
-    public void switchToTLS() {
+    public void switchToTLS(boolean delayed, boolean clientTls) {
         switchToTLSCalled = true;
     }
 

Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/StanzaBuilderTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/StanzaBuilderTestCase.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/StanzaBuilderTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/StanzaBuilderTestCase.java Mon Jan  3 23:06:37 2011
@@ -19,16 +19,28 @@
  */
 package org.apache.vysper.xmpp.stanza;
 
+import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.apache.derby.tools.sysinfo;
+import org.apache.vysper.xml.fragment.Renderer;
 import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLSemanticError;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 
 /**
  */
 public class StanzaBuilderTestCase extends TestCase {
 
-    public void testInnerElementNamespace() {
+    private static final Entity FROM = EntityImpl.parseUnchecked("from@vysper.org");
+    private static final Entity TO = EntityImpl.parseUnchecked("to@vysper.org");
+    private static final String LANG = "en";
+    private static final String BODY = "Hello world";
 
+    
+    public void testInnerElementNamespace() {
         StanzaBuilder builder = new StanzaBuilder("iq");
         builder.startInnerElement("foo", "urn:bar");
         builder.endInnerElement();
@@ -41,4 +53,38 @@ public class StanzaBuilderTestCase exten
         assertEquals("urn:bar", innerElm.getNamespaceURI());
 
     }
+    
+    public void testRewriteNamespace() throws XMLSemanticError {
+        Stanza stanza = StanzaBuilder.createMessageStanza(FROM, TO, LANG, BODY)
+            .startInnerElement("foo", "http://someothernamespace")
+            .startInnerElement("bar", NamespaceURIs.JABBER_CLIENT)
+            .addAttribute("inner", "attribute")
+            .addText("inner text")
+            .endInnerElement()
+            .endInnerElement()
+            .addText("some text")
+            .build();
+        
+        Stanza rewritten = StanzaBuilder.rewriteNamespace(stanza, NamespaceURIs.JABBER_CLIENT, NamespaceURIs.JABBER_SERVER);
+
+        System.out.println(new Renderer(rewritten).getComplete());
+        Assert.assertEquals("message", rewritten.getName());
+        Assert.assertEquals(NamespaceURIs.JABBER_SERVER, rewritten.getNamespaceURI());
+        Assert.assertEquals(FROM, rewritten.getFrom());
+        Assert.assertEquals(TO, rewritten.getTo());
+        
+        XMLElement body = rewritten.getSingleInnerElementsNamed("body", NamespaceURIs.JABBER_SERVER);
+        Assert.assertNotNull(body);
+        Assert.assertEquals(BODY, body.getInnerText().getText());
+        
+        XMLElement foo = rewritten.getSingleInnerElementsNamed("foo", "http://someothernamespace");
+        Assert.assertNotNull(foo);
+        
+        // wrapped elements must not be rewritten
+        XMLElement bar = foo.getSingleInnerElementsNamed("bar", NamespaceURIs.JABBER_CLIENT);
+        Assert.assertNotNull(bar);
+        
+        Assert.assertEquals("attribute", bar.getAttributeValue("inner"));
+        Assert.assertEquals("inner text", bar.getInnerText().getText());
+    }
 }

Modified: mina/vysper/trunk/server/core/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/resources/log4j.properties?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/resources/log4j.properties (original)
+++ mina/vysper/trunk/server/core/src/test/resources/log4j.properties Mon Jan  3 23:06:37 2011
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-log4j.rootLogger=DEBUG, C
+log4j.rootLogger=INFO, C
 
 log4j.logger.org.apache.vysper.mina.XmppIoHandlerAdapter=WARN,C
 log4j.logger.org.apache.mina.filter.executor.ExecutorFilter=WARN,C

Propchange: mina/vysper/trunk/server/extensions/xep0045-muc/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Jan  3 23:06:37 2011
@@ -0,0 +1 @@
+/mina/vysper/branches/s2s/server/extensions/xep0045-muc:1050957-1054813

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java Mon Jan  3 23:06:37 2011
@@ -170,7 +170,7 @@ public class TestSessionContext extends 
         return this;
     }
 
-    public void switchToTLS() {
+    public void switchToTLS(boolean delayed, boolean clientTls) {
         switchToTLSCalled = true;
     }
 

Modified: mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java Mon Jan  3 23:06:37 2011
@@ -170,7 +170,7 @@ public class TestSessionContext extends 
         return this;
     }
 
-    public void switchToTLS() {
+    public void switchToTLS(boolean delayed, boolean clientTls) {
         switchToTLSCalled = true;
     }
 

Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java?rev=1054817&r1=1054816&r2=1054817&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java Mon Jan  3 23:06:37 2011
@@ -295,7 +295,7 @@ public class BoshBackedSessionContext ex
         LOGGER.info("BOSH session {} closed", getSessionId());
     }
 
-    public void switchToTLS() {
+    public void switchToTLS(boolean delayed, boolean clientTls) {
         // BOSH cannot switch dynamically (because STARTTLS cannot be used with HTTP),
         // SSL can be enabled/disabled in BoshEndpoint#setSSLEnabled()
     }