Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 54552 invoked from network); 5 Sep 2007 15:39:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 5 Sep 2007 15:39:59 -0000 Received: (qmail 11735 invoked by uid 500); 5 Sep 2007 15:39:54 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 11711 invoked by uid 500); 5 Sep 2007 15:39:53 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 11700 invoked by uid 99); 5 Sep 2007 15:39:53 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Sep 2007 08:39:53 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Sep 2007 15:39:58 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 0D0941A9832; Wed, 5 Sep 2007 08:39:38 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r572972 - in /activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter: AnyChildDestinationNode.java DestinationNode.java Date: Wed, 05 Sep 2007 15:39:37 -0000 To: commits@activemq.apache.org From: chirino@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070905153938.0D0941A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: chirino Date: Wed Sep 5 08:39:36 2007 New Revision: 572972 URL: http://svn.apache.org/viewvc?rev=572972&view=rev Log: Adding missing files that did not get commited in last patch applicaiton. Added: activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/AnyChildDestinationNode.java activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/DestinationNode.java Added: activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/AnyChildDestinationNode.java URL: http://svn.apache.org/viewvc/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/AnyChildDestinationNode.java?rev=572972&view=auto ============================================================================== --- activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/AnyChildDestinationNode.java (added) +++ activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/AnyChildDestinationNode.java Wed Sep 5 08:39:36 2007 @@ -0,0 +1,140 @@ +/** + * + * 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.filter; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; + +/** + * An implementation of {@link DestinationNode} which navigates all the children of the given node + * ignoring the name of the current path (so for navigating using * in a wildcard). + * + * @version $Revision: 478324 $ + */ +public class AnyChildDestinationNode implements DestinationNode { + private DestinationNode node; + + public AnyChildDestinationNode(DestinationNode node) { + this.node = node; + } + + public void appendMatchingValues(Set answer, String[] paths, int startIndex) { + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + child.appendMatchingValues(answer, paths, startIndex); + } + } + + + public void appendMatchingWildcards(Set answer, String[] paths, int startIndex) { + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + child.appendMatchingWildcards(answer, paths, startIndex); + } + } + + + public void appendDescendantValues(Set answer) { + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + child.appendDescendantValues(answer); + } + } + + public DestinationNode getChild(String path) { + final Collection list = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + DestinationNode answer = child.getChild(path); + if (answer != null) { + list.add(answer); + } + } + if (!list.isEmpty()) { + return new AnyChildDestinationNode(this) { + protected Collection getChildNodes() { + return list; + } + }; + } + return null; + } + + public Collection getDesendentValues() { + Collection answer = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + answer.addAll(child.getDesendentValues()); + } + return answer; + } + + public Collection getValues() { + Collection answer = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + answer.addAll(child.getValues()); + } + return answer; + } + + + public Collection getChildren() { + Collection answer = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + answer.addAll(child.getChildren()); + } + return answer; + } + + public Collection removeDesendentValues() { + Collection answer = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + answer.addAll(child.removeDesendentValues()); + } + return answer; + } + + public Collection removeValues() { + Collection answer = new ArrayList(); + Iterator iter = getChildNodes().iterator(); + while (iter.hasNext()) { + DestinationNode child = (DestinationNode) iter.next(); + answer.addAll(child.removeValues()); + } + return answer; + } + + protected Collection getChildNodes() { + return node.getChildren(); + } +} + + Added: activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/DestinationNode.java URL: http://svn.apache.org/viewvc/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/DestinationNode.java?rev=572972&view=auto ============================================================================== --- activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/DestinationNode.java (added) +++ activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/filter/DestinationNode.java Wed Sep 5 08:39:36 2007 @@ -0,0 +1,46 @@ +/** + * + * 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.filter; + +import java.util.Collection; +import java.util.Set; + +/** + * Represents a node in the {@link DestinationMap} tree + * + * @version $Revision: 478324 $ + */ +public interface DestinationNode { + void appendMatchingValues(Set answer, String[] paths, int startIndex); + + void appendMatchingWildcards(Set answer, String[] paths, int startIndex); + + void appendDescendantValues(Set answer); + + Collection getDesendentValues(); + + DestinationNode getChild(String path); + + Collection getValues(); + + Collection getChildren(); + + Collection removeDesendentValues(); + + Collection removeValues(); +}