Author: ngn
Date: Sat Aug 28 08:53:33 2010
New Revision: 990326
URL: http://svn.apache.org/viewvc?rev=990326&view=rev
Log:
Some additional refactorings based on EntityUtils (VYSPER-246)
Added:
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/addressing/EntityUtilsTestCase.java
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInboundStanzaRelay.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
Sat Aug 28 08:53:33 2010
@@ -76,11 +76,9 @@ public class StanzaRelayBroker implement
//return;
}
- String domain = receiver.getDomain();
-
boolean relayToExternal =
serverRuntimeContext.getServerFeatures().isRelayingToFederationServers();
- if
(domain.endsWith(serverRuntimeContext.getServerEnitity().getDomain())) {
+ if (EntityUtils.isAddressingServerComponent(receiver,
serverRuntimeContext.getServerEnitity()) || toComponent) {
internalRelay.relay(receiver, stanza, deliveryFailureStrategy);
} else {
if (!relayToExternal)
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInboundStanzaRelay.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInboundStanzaRelay.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInboundStanzaRelay.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInboundStanzaRelay.java
Sat Aug 28 08:53:33 2010
@@ -179,7 +179,7 @@ public class DeliveringInboundStanzaRela
return new RelayResult(new
ServiceNotAvailableException("unsupported domain " + receiverDomain));
}
- StanzaProcessor processor =
serverRuntimeContext.getComponentStanzaProcessor(receiverDomain);
+ StanzaProcessor processor =
serverRuntimeContext.getComponentStanzaProcessor(receiver);
if (processor == null) {
return new RelayResult(new
ServiceNotAvailableException(
"cannot retrieve component stanza processor
for" + receiverDomain));
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
Sat Aug 28 08:53:33 2010
@@ -90,7 +90,7 @@ public class RelayingIQHandler extends I
serverRuntimeContext.getStanzaRelay().relay(to,
forwardedStanza,
new
ReturnErrorToSenderFailureStrategy(serverRuntimeContext.getStanzaRelay()));
} catch (DeliveryException e) {
- final Logger logger =
LoggerFactory.getLogger(RelayingIQHandler.class);
+ // TODO how to handle this exception?
}
} else {
// write inbound stanza to the user
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
Sat Aug 28 08:53:33 2010
@@ -95,7 +95,7 @@ public class DiscoInfoIQHandler extends
Entity serviceEntity = serverRuntimeContext.getServerEnitity();
if (to == null || to.equals(serviceEntity)) {
isServerInfoRequest = true; // this can only be meant to query the
server
- } else if
(serverRuntimeContext.getComponentStanzaProcessor(to.getDomain()) != null) {
+ } else if (serverRuntimeContext.getComponentStanzaProcessor(to) !=
null) {
isComponentInfoRequest = true; // this is a query to a component
} else if (!to.isNodeSet()) {
isServerInfoRequest = serviceEntity.equals(to);
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
Sat Aug 28 08:53:33 2010
@@ -89,7 +89,7 @@ public class DiscoItemIQHandler extends
isServerInfoRequest = true; // this can only be meant to query the
server
} else if (!to.isNodeSet()) {
isServerInfoRequest =
serverRuntimeContext.getServerEnitity().equals(to);
- isComponentInfoRequest =
serverRuntimeContext.getComponentStanzaProcessor(to.getDomain()) != null;
+ isComponentInfoRequest =
serverRuntimeContext.getComponentStanzaProcessor(to) != null;
if (!isServerInfoRequest && !isComponentInfoRequest) {
return
ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.ITEM_NOT_FOUND,
stanza,
StanzaErrorType.CANCEL,
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
Sat Aug 28 08:53:33 2010
@@ -30,6 +30,7 @@ import org.apache.vysper.storage.OpenSto
import org.apache.vysper.storage.StorageProvider;
import org.apache.vysper.storage.StorageProviderRegistry;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityUtils;
import org.apache.vysper.xmpp.authorization.UserAuthorization;
import org.apache.vysper.xmpp.cryptography.TLSContextFactory;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
@@ -339,11 +340,12 @@ public class DefaultServerRuntimeContext
componentMap.put(component.getSubdomain(), component);
}
- public StanzaProcessor getComponentStanzaProcessor(String domain) {
+ public StanzaProcessor getComponentStanzaProcessor(Entity entity) {
String serverDomain = getServerEnitity().getDomain();
- if (!domain.endsWith(serverDomain)) {
+ if (!EntityUtils.isAddressingServerComponent(entity,
getServerEnitity())) {
return null;
}
+ String domain = entity.getDomain();
String subdomain = domain.replace("." + serverDomain, "");
Component component = componentMap.get(subdomain);
if (component == null)
Modified:
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java?rev=990326&r1=990325&r2=990326&view=diff
==============================================================================
---
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
(original)
+++
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
Sat Aug 28 08:53:33 2010
@@ -70,5 +70,5 @@ public interface ServerRuntimeContext {
void registerComponent(Component component);
- StanzaProcessor getComponentStanzaProcessor(String domain);
+ StanzaProcessor getComponentStanzaProcessor(Entity entity);
}
Added:
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/addressing/EntityUtilsTestCase.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/addressing/EntityUtilsTestCase.java?rev=990326&view=auto
==============================================================================
---
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/addressing/EntityUtilsTestCase.java
(added)
+++
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/addressing/EntityUtilsTestCase.java
Sat Aug 28 08:53:33 2010
@@ -0,0 +1,64 @@
+/*
+ * 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.vysper.xmpp.addressing;
+
+import junit.framework.TestCase;
+
+public class EntityUtilsTestCase extends TestCase {
+
+ private Entity server = EntityImpl.parseUnchecked("vysper.org");
+
+ public void testIsComponent() {
+ assertAddressingServerComponent("foo.vysper.org");
+ assertAddressingServerComponent("[email protected]");
+ assertAddressingServerComponent("[email protected]/xyz");
+ assertAddressingServerComponent("bar.foo.vysper.org");
+ assertNotAddressingServerComponent("vysper.org");
+ assertNotAddressingServerComponent("foovysper.org");
+ assertNotAddressingServerComponent("foo.org");
+ }
+
+ public void testIsInternal() {
+ assertAddressingServer("vysper.org");
+ assertNotAddressingServer("foo.vysper.org");
+ assertAddressingServer("[email protected]");
+ assertAddressingServer("[email protected]/xyz");
+ assertNotAddressingServer("foovysper.org");
+ assertNotAddressingServer("foo.org");
+ }
+
+
+ private void assertAddressingServerComponent(String entity) {
+
assertTrue(EntityUtils.isAddressingServerComponent(EntityImpl.parseUnchecked(entity),
server));
+ }
+
+ private void assertNotAddressingServerComponent(String entity) {
+
assertFalse(EntityUtils.isAddressingServerComponent(EntityImpl.parseUnchecked(entity),
server));
+ }
+
+ private void assertAddressingServer(String entity) {
+
assertTrue(EntityUtils.isAddressingServer(EntityImpl.parseUnchecked(entity),
server));
+ }
+
+ private void assertNotAddressingServer(String entity) {
+
assertFalse(EntityUtils.isAddressingServer(EntityImpl.parseUnchecked(entity),
server));
+ }
+
+}