Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id F2297200C3C for ; Mon, 3 Apr 2017 14:31:07 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id F085A160B8F; Mon, 3 Apr 2017 12:31:07 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4045C160B76 for ; Mon, 3 Apr 2017 14:31:07 +0200 (CEST) Received: (qmail 79048 invoked by uid 500); 3 Apr 2017 12:31:06 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 79037 invoked by uid 99); 3 Apr 2017 12:31:06 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Apr 2017 12:31:06 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id AB6BF3A04FA for ; Mon, 3 Apr 2017 12:31:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1789981 - /aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java Date: Mon, 03 Apr 2017 12:31:05 -0000 To: commits@aries.apache.org From: cschneider@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20170403123105.AB6BF3A04FA@svn01-us-west.apache.org> archived-at: Mon, 03 Apr 2017 12:31:08 -0000 Author: cschneider Date: Mon Apr 3 12:31:05 2017 New Revision: 1789981 URL: http://svn.apache.org/viewvc?rev=1789981&view=rev Log: [ARIES-1708] Fix parsing of duplicate patterns Modified: aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java Modified: aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java URL: http://svn.apache.org/viewvc/aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java?rev=1789981&r1=1789980&r2=1789981&view=diff ============================================================================== --- aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java (original) +++ aries/branches/org.apache.aries.transaction.blueprint-1.x/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java Mon Apr 3 12:31:05 2017 @@ -41,16 +41,16 @@ public class TxComponentMetaDataHelperIm private static class TranData { - private final Map map; + private final Map map; private final Map cache; public TranData() { - map = new ConcurrentHashMap(); + map = new ConcurrentHashMap(); cache = new ConcurrentHashMap(); } public void add(Pattern pattern, TransactionPropagationType txAttribute) { - map.put(pattern, txAttribute.name()); + map.put(pattern.pattern(), new PatternDTO(pattern, txAttribute.name())); } public TransactionPropagationType getAttribute(String name) { @@ -68,19 +68,19 @@ public class TxComponentMetaDataHelperIm } if (size == 1) { - txAttribute = map.get(matches.get(0)); + txAttribute = map.get(matches.get(0).pattern()).getTxAttributeName(); } else { matches = selectPatternsWithFewestWildcards(matches); size = matches.size(); if (size == 1) { - txAttribute = map.get(matches.get(0)); + txAttribute = map.get(matches.get(0).pattern()).getTxAttributeName(); } else { matches = selectLongestPatterns(matches); size = matches.size(); - if (size == 1) { - txAttribute = map.get(matches.get(0)); + if (size >= 1) { + txAttribute = map.get(matches.get(0).pattern()).getTxAttributeName(); } else { throw new IllegalStateException( Constants.MESSAGES @@ -103,9 +103,9 @@ public class TxComponentMetaDataHelperIm private List findMatches(String name) { List matches = new ArrayList(); - for (Pattern p : map.keySet()) { - if (p.matcher(name).matches()) { - matches.add(p); + for (PatternDTO patternDTO : map.values()) { + if (patternDTO.getPattern().matcher(name).matches()) { + matches.add(patternDTO.getPattern()); } } return matches; @@ -158,7 +158,29 @@ public class TxComponentMetaDataHelperIm return remainingMatches; } } - + + private static class PatternDTO { + private Pattern pattern; + private String txAttributeName; + + public PatternDTO(Pattern pattern, String txAttributeName) { + this.pattern = pattern; + this.txAttributeName = txAttributeName; + } + + public Pattern getPattern() { + return pattern; + } + + public String getTxAttributeName() { + return txAttributeName; + } + + public String toString() { + return pattern + ";" + txAttributeName; + } + } + private static final Map data = new ConcurrentHashMap(); // bundle transaction map keeps track of the default transaction behavior for the bundle at the bundle-wide level. // this is configured via top level tx:transaction element for the blueprint managed bundle