diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-12-02 16:28:25 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-12-02 16:28:25 +0000 |
| commit | 3c3b3e59b3baec7341e977052642797b72dff6e9 (patch) | |
| tree | 7b43dab049d3abca5ee7bb59c1dbacdf9da1e0e5 /qpid/java | |
| parent | f0adf25971f8f0c6dbcc243477c0eb58cf9b8d0a (diff) | |
| download | qpid-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')
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; |
