Repository: activemq Updated Branches: refs/heads/master 12c649c2d -> 8c77e9553
[AMQ-6880] fix filter match logic when transport connector updateClusterFilter is in play Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/8c77e955 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/8c77e955 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/8c77e955 Branch: refs/heads/master Commit: 8c77e9553eaf2062b937c68737a5128d0f9a4347 Parents: 12c649c Author: gtully <[email protected]> Authored: Wed Jan 3 16:06:25 2018 +0000 Committer: gtully <[email protected]> Committed: Wed Jan 3 16:07:06 2018 +0000 ---------------------------------------------------------------------- .../activemq/broker/TransportConnector.java | 5 +- .../activemq/broker/TransportConnectorTest.java | 93 ++++++++++++++++++++ 2 files changed, 96 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/8c77e955/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java index ac96619..f8425ad 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java @@ -455,8 +455,9 @@ public class TransportConnector implements Connector, BrokerServiceAware { if (filter != null) { filter = filter.trim(); if (filter.length() > 0) { + result = false; StringTokenizer tokenizer = new StringTokenizer(filter, ","); - while (result && tokenizer.hasMoreTokens()) { + while (!result && tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken(); result = isMatchesClusterFilter(brokerName, token); } @@ -467,7 +468,7 @@ public class TransportConnector implements Connector, BrokerServiceAware { } private boolean isMatchesClusterFilter(String brokerName, String match) { - boolean result = true; + boolean result = false; if (brokerName != null && match != null && brokerName.length() > 0 && match.length() > 0) { result = Pattern.matches(match, brokerName); } http://git-wip-us.apache.org/repos/asf/activemq/blob/8c77e955/activemq-broker/src/test/java/org/apache/activemq/broker/TransportConnectorTest.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/test/java/org/apache/activemq/broker/TransportConnectorTest.java b/activemq-broker/src/test/java/org/apache/activemq/broker/TransportConnectorTest.java new file mode 100644 index 0000000..7b72bc4 --- /dev/null +++ b/activemq-broker/src/test/java/org/apache/activemq/broker/TransportConnectorTest.java @@ -0,0 +1,93 @@ +/** + * 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.activemq.broker; + +import org.apache.activemq.command.BrokerInfo; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +public class TransportConnectorTest { + + TransportConnector underTest; + + @Before + public void init() throws Exception { + underTest = new TransportConnector(); + underTest.setBrokerService(new BrokerService()); + } + + @Test + public void addPeerBrokerWithFilter() throws Exception { + underTest.setUpdateClusterFilter("e.*,w.*"); + + final String validName = "west"; + + BrokerInfo brokerInfo = new BrokerInfo(); + brokerInfo.setBrokerURL(validName); + brokerInfo.setBrokerName(validName); + + assertFalse(underTest.getPeerBrokers().contains(validName)); + underTest.addPeerBroker(brokerInfo); + assertTrue(underTest.getPeerBrokers().contains(validName)); + + final String validName2 = "east"; + brokerInfo = new BrokerInfo(); + brokerInfo.setBrokerURL(validName2); + brokerInfo.setBrokerName(validName2); + + assertFalse(underTest.getPeerBrokers().contains(validName2)); + underTest.addPeerBroker(brokerInfo); + assertTrue(underTest.getPeerBrokers().contains(validName2)); + + + final String inValidName = "boo"; + brokerInfo = new BrokerInfo(); + brokerInfo.setBrokerURL(inValidName); + brokerInfo.setBrokerName(inValidName); + assertFalse(underTest.getPeerBrokers().contains(inValidName)); + underTest.addPeerBroker(brokerInfo); + assertFalse(underTest.getPeerBrokers().contains(inValidName)); + } + + @Test + public void addPeerBrokerWithoutFilter() throws Exception { + underTest.setBrokerService(new BrokerService()); + + final String validName = "west"; + BrokerInfo brokerInfo = new BrokerInfo(); + brokerInfo.setBrokerURL(validName); + brokerInfo.setBrokerName(validName); + + assertFalse(underTest.getPeerBrokers().contains(validName)); + underTest.addPeerBroker(brokerInfo); + assertTrue(underTest.getPeerBrokers().contains(validName)); + + final String validName2 = "east"; + brokerInfo = new BrokerInfo(); + brokerInfo.setBrokerURL(validName2); + brokerInfo.setBrokerName(validName2); + + assertFalse(underTest.getPeerBrokers().contains(validName2)); + underTest.addPeerBroker(brokerInfo); + assertTrue(underTest.getPeerBrokers().contains(validName2)); + } + +}
