summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-12-02 16:28:25 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-12-02 16:28:25 +0000
commit3c3b3e59b3baec7341e977052642797b72dff6e9 (patch)
tree7b43dab049d3abca5ee7bb59c1dbacdf9da1e0e5 /qpid/java
parentf0adf25971f8f0c6dbcc243477c0eb58cf9b8d0a (diff)
downloadqpid-python-3c3b3e59b3baec7341e977052642797b72dff6e9.tar.gz
QPID-6161 : Address comments from ~kwall
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1642935 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/HostNameAliasImpl.java21
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java35
2 files changed, 52 insertions, 4 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/HostNameAliasImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/HostNameAliasImpl.java
index 9abeac5f31..e9390703c7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/HostNameAliasImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/HostNameAliasImpl.java
@@ -35,6 +35,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
+import org.apache.log4j.Logger;
+
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.HostNameAlias;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
@@ -47,6 +49,8 @@ public class HostNameAliasImpl
implements HostNameAlias<HostNameAliasImpl>
{
+ private static final Logger LOG = Logger.getLogger(HostNameAliasImpl.class);
+
private final Set<InetAddress> _localAddresses = new CopyOnWriteArraySet<>();
private final Set<String> _localAddressNames = new CopyOnWriteArraySet<>();
private final Lock _addressLock = new ReentrantLock();
@@ -62,7 +66,12 @@ public class HostNameAliasImpl
protected void onOpen()
{
super.onOpen();
- Thread thread = new Thread(new NetworkAddressResolver(), "Network Address Resolver");
+ String bindingAddress = ((AmqpPort) getPort()).getBindingAddress();
+ Thread thread = new Thread(new NetworkAddressResolver(),
+ "Network Address Resolver (Port: "
+ + (useAllAddresses(bindingAddress) ? "" : bindingAddress)
+ + ":" + getPort().getPort() +")");
+ thread.setDaemon(true);
thread.start();
}
@@ -138,7 +147,7 @@ public class HostNameAliasImpl
try
{
Collection<InetAddress> inetAddresses;
- if(bindingAddress == null || bindingAddress.trim().equals("") || bindingAddress.trim().equals("*"))
+ if(useAllAddresses(bindingAddress))
{
inetAddresses = getAllInetAddresses();
}
@@ -168,7 +177,8 @@ public class HostNameAliasImpl
}
catch (SocketException | UnknownHostException e)
{
- // ignore
+ LOG.error("Unable to correctly calculate host name aliases for port " + getPort().getName()
+ + ". This may lead to connection failures.", e);
}
finally
{
@@ -190,4 +200,9 @@ public class HostNameAliasImpl
return addresses;
}
}
+
+ private boolean useAllAddresses(final String bindingAddress)
+ {
+ return bindingAddress == null || bindingAddress.trim().equals("") || bindingAddress.trim().equals("*");
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java
index df47b1a94e..0f4399ae62 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostalias/PatternMatchingAliasImpl.java
@@ -21,11 +21,16 @@
package org.apache.qpid.server.virtualhostalias;
import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.PatternMatchingAlias;
+import org.apache.qpid.server.model.Port;
public final class PatternMatchingAliasImpl
extends AbstractFixedVirtualHostNodeAlias<PatternMatchingAliasImpl>
@@ -47,6 +52,34 @@ public final class PatternMatchingAliasImpl
}
@Override
+ public void onValidate()
+ {
+ super.onValidate();
+ validatePattern(getPattern());
+
+ }
+
+ @Override
+ protected void validateChange(final ConfiguredObject<?> proxyForValidation, final Set<String> changedAttributes)
+ {
+ super.validateChange(proxyForValidation, changedAttributes);
+ validatePattern(((PatternMatchingAlias)proxyForValidation).getPattern());
+ }
+
+ private void validatePattern(final String pattern)
+ {
+ try
+ {
+ Pattern p = Pattern.compile(pattern);
+ }
+ catch (PatternSyntaxException e)
+ {
+ throw new IllegalConfigurationException("'"+pattern+"' is not a valid Java regex pattern", e);
+ }
+
+ }
+
+ @Override
public String getPattern()
{
return _pattern;