Author: cschneider
Date: Tue Apr 7 11:35:17 2015
New Revision: 1671811
URL: http://svn.apache.org/r1671811
Log:
[ARIES-1310] Use enumeration instead of String for transaction propagation type
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/AnnotationParser.java
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationEnablingNameSpaceHandlerTest.java
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationParserTest.java
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BundleWideNameSpaceHandlerTest.java
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/NameSpaceHandlerTest.java
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/TranStrategyTest.java
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxData.java
Tue Apr 7 11:35:17 2015
@@ -22,16 +22,18 @@ import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
public final class BundleWideTxData
{
- private String value;
+ private TransactionPropagationType value;
private final List<Pattern> methodList = new ArrayList<Pattern>();
private final List<Pattern> beanList = new ArrayList<Pattern>();
- public BundleWideTxData(String value,
+ public BundleWideTxData(TransactionPropagationType value,
String method, String bean) {
- if(value == null || value.length() == 0)
- this.value = "Required";
+ if (value == null)
+ this.value = TransactionPropagationType.Required;
else
this.value = value;
setupPatterns(method, bean);
@@ -60,7 +62,7 @@ public final class BundleWideTxData
this.beanList.add(p);
}
}
- public String getValue() {
+ public TransactionPropagationType getValue() {
return this.value;
}
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/BundleWideTxDataUtil.java
Tue Apr 7 11:35:17 2015
@@ -23,6 +23,8 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
public class BundleWideTxDataUtil {
@@ -36,14 +38,14 @@ public class BundleWideTxDataUtil {
* @param bundleData
* @return
*/
- public static String getAttribute(String compId, String method,
List<BundleWideTxData> bundleData) {
+ public static TransactionPropagationType getAttribute(String compId,
String method, List<BundleWideTxData> bundleData) {
BundleWideTxData txData = null;
if (bundleData.size() == 1) {
txData = bundleData.get(0);
List<Pattern> beans = txData.getBean();
List<Pattern> mtds = txData.getMethod();
- String value = txData.getValue();
+ TransactionPropagationType value = txData.getValue();
if (!beans.isEmpty() && !mtds.isEmpty()) {
for (Pattern bean : beans) {
@@ -81,7 +83,7 @@ public class BundleWideTxDataUtil {
return null;
}
- private static String getTransactionAttribute(List<BundleWideTxData>
bundleData, String compId, String method) {
+ private static TransactionPropagationType
getTransactionAttribute(List<BundleWideTxData> bundleData, String compId,
String method) {
List<BundleWideTxData> bundleDataBothMethodAndBean = new
ArrayList<BundleWideTxData>();
List<BundleWideTxData> bundleDataOnlyBean = new
ArrayList<BundleWideTxData>();
List<BundleWideTxData> bundleDataOnlyMethod = new
ArrayList<BundleWideTxData>();
@@ -107,7 +109,7 @@ public class BundleWideTxDataUtil {
for (BundleWideTxData txData : bundleDataBothMethodAndBean) {
List<Pattern> beans = txData.getBean();
List<Pattern> mtds = txData.getMethod();
- String value = txData.getValue();
+ TransactionPropagationType value = txData.getValue();
for (Pattern bean : beans) {
if (bean.matcher(compId).matches()) {
@@ -128,7 +130,7 @@ public class BundleWideTxDataUtil {
// let's then check bundle data that has bean only next
for (BundleWideTxData txData : bundleDataOnlyBean) {
List<Pattern> beans = txData.getBean();
- String value = txData.getValue();
+ TransactionPropagationType value = txData.getValue();
for (Pattern bean : beans) {
if (bean.matcher(compId).matches()) {
@@ -144,7 +146,7 @@ public class BundleWideTxDataUtil {
// let's then check bundle data that has method only next
for (BundleWideTxData txData : bundleDataOnlyMethod) {
List<Pattern> mtds = txData.getMethod();
- String value = txData.getValue();
+ TransactionPropagationType value = txData.getValue();
for (Pattern mtd : mtds) {
if (mtd.matcher(method).matches()) {
@@ -175,7 +177,7 @@ public class BundleWideTxDataUtil {
}
// this method assume matchedTxData isn't empty.
- private static String findBestMatch(List<MatchedTxData> matchedTxData) {
+ private static TransactionPropagationType
findBestMatch(List<MatchedTxData> matchedTxData) {
if (matchedTxData.size() == 1) {
return matchedTxData.get(0).getValue();
@@ -209,7 +211,7 @@ public class BundleWideTxDataUtil {
}
// this method assume matchedTxData isn't empty.
- private static String findBestMatchBeanOnly(List<MatchedTxData>
matchedTxData) {
+ private static TransactionPropagationType
findBestMatchBeanOnly(List<MatchedTxData> matchedTxData) {
if (matchedTxData.size() == 1) {
return matchedTxData.get(0).getValue();
@@ -232,7 +234,7 @@ public class BundleWideTxDataUtil {
}
// this method assume matchedTxData isn't empty.
- private static String findBestMatchMethodOnly(List<MatchedTxData>
matchedTxData) {
+ private static TransactionPropagationType
findBestMatchMethodOnly(List<MatchedTxData> matchedTxData) {
if (matchedTxData.size() == 1) {
return matchedTxData.get(0).getValue();
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/MatchedTxData.java
Tue Apr 7 11:35:17 2015
@@ -20,20 +20,22 @@ package org.apache.aries.transaction;
import java.util.regex.Pattern;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
public final class MatchedTxData
{
- private String value;
+ private TransactionPropagationType value;
private Pattern method;
private Pattern bean;
- public MatchedTxData(String value,
+ public MatchedTxData(TransactionPropagationType value,
Pattern method, Pattern bean) {
this.value = value;
this.method = method;
this.bean = bean;
}
- public String getValue() {
+ public TransactionPropagationType getValue() {
return this.value;
}
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionAttribute.java
Tue Apr 7 11:35:17 2015
@@ -28,6 +28,8 @@ import javax.transaction.SystemException
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
+
public enum TransactionAttribute {
MANDATORY
{
@@ -101,27 +103,18 @@ public enum TransactionAttribute {
public TransactionToken begin(TransactionManager man) throws
SystemException, NotSupportedException,
InvalidTransactionException, IllegalStateException
{
- TransactionToken tranToken;
- if (man.getStatus() == Status.STATUS_ACTIVE) {
- tranToken = new TransactionToken(null, man.suspend(), REQUIRESNEW);
- } else {
- tranToken = new TransactionToken(null, null, REQUIRESNEW);
- }
+ Transaction suspendedTransaction = (man.getStatus() ==
Status.STATUS_ACTIVE) ? man.suspend() : null;
try {
man.begin();
} catch (SystemException e) {
- man.resume(tranToken.getSuspendedTransaction());
+ man.resume(suspendedTransaction);
throw e;
} catch (NotSupportedException e) {
- man.resume(tranToken.getSuspendedTransaction());
+ man.resume(suspendedTransaction);
throw e;
}
-
- tranToken.setActiveTransaction(man.getTransaction());
- tranToken.setCompletionAllowed(true);
-
- return tranToken;
+ return new TransactionToken(man.getTransaction(),
suspendedTransaction, REQUIRESNEW, true);
}
public void finish(TransactionManager man, TransactionToken tranToken)
throws SystemException,
@@ -155,9 +148,9 @@ public enum TransactionAttribute {
}
};
- public static TransactionAttribute fromValue(String value)
+ public static TransactionAttribute fromValue(TransactionPropagationType
type)
{
- return valueOf(value.toUpperCase());
+ return valueOf(type.name().toUpperCase());
}
public TransactionToken begin(TransactionManager man) throws
SystemException, NotSupportedException,
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TransactionToken.java
Tue Apr 7 11:35:17 2015
@@ -20,7 +20,7 @@ package org.apache.aries.transaction;
import javax.transaction.Transaction;
-class TransactionToken
+public class TransactionToken
{
private Transaction activeTransaction;
private Transaction suspendedTransaction;
@@ -46,31 +46,15 @@ class TransactionToken
return activeTransaction;
}
- public void setActiveTransaction(Transaction activeTransaction) {
- this.activeTransaction = activeTransaction;
- }
-
public Transaction getSuspendedTransaction() {
return suspendedTransaction;
}
- public void setSuspendedTransaction(Transaction suspendedTransaction) {
- this.suspendedTransaction = suspendedTransaction;
- }
-
public TransactionAttribute getTransactionAttribute() {
return transactionAttribute;
}
- public void setTransactionStrategy(TransactionAttribute
transactionAttribute) {
- this.transactionAttribute = transactionAttribute;
- }
-
public boolean isCompletionAllowed() {
return isCompletionAllowed;
}
-
- public void setCompletionAllowed(boolean isCompletionAllowed) {
- this.isCompletionAllowed = isCompletionAllowed;
- }
}
\ No newline at end of file
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelper.java
Tue Apr 7 11:35:17 2015
@@ -19,17 +19,18 @@
package org.apache.aries.transaction;
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
public interface TxComponentMetaDataHelper {
public void setComponentTransactionData(ComponentDefinitionRegistry
registry,
- ComponentMetadata component, String value, String method);
+ ComponentMetadata component, TransactionPropagationType type,
String method);
- public String getComponentMethodTxAttribute(
+ public TransactionPropagationType getComponentMethodTxAttribute(
ComponentMetadata component, String methodName);
- public void populateBundleWideTransactionData(ComponentDefinitionRegistry
cdr, String value,
+ public void populateBundleWideTransactionData(ComponentDefinitionRegistry
cdr, TransactionPropagationType value,
String method, String bean);
public void unregister(ComponentDefinitionRegistry registry);
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxComponentMetaDataHelperImpl.java
Tue Apr 7 11:35:17 2015
@@ -30,6 +30,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,54 +50,58 @@ public class TxComponentMetaDataHelperIm
cache = new ConcurrentHashMap<String, String>();
}
- public void add(Pattern pattern, String txAttribute) {
- map.put(pattern, txAttribute);
+ public void add(Pattern pattern, TransactionPropagationType txAttribute)
{
+ map.put(pattern, txAttribute.name());
}
- public String getAttribute(String name)
- {
+ public TransactionPropagationType getAttribute(String name) {
String txAttribute = cache.get(name);
-
- if (txAttribute == null) {
- List<Pattern> matches = findMatches(name);
- int size = matches.size();
-
- if (size == 0) {
- // we should default to no transaction since we cannot find a
match
- txAttribute = null;
- }
- else if (size == 1) {
+
+ if (txAttribute != null) {
+ return getType(txAttribute);
+ }
+ List<Pattern> matches = findMatches(name);
+ int size = matches.size();
+
+ if (size == 0) {
+ // we should default to no transaction since we cannot find a match
+ return null;
+ }
+
+ if (size == 1) {
+ txAttribute = map.get(matches.get(0));
+ } else {
+ matches = selectPatternsWithFewestWildcards(matches);
+ size = matches.size();
+
+ if (size == 1) {
txAttribute = map.get(matches.get(0));
- }
- else {
- matches = selectPatternsWithFewestWildcards(matches);
+ } else {
+ matches = selectLongestPatterns(matches);
size = matches.size();
if (size == 1) {
txAttribute = map.get(matches.get(0));
+ } else {
+ throw new IllegalStateException(
+ Constants.MESSAGES
+
.getMessage("unable.to.apply.patterns", matches));
}
- else {
- matches = selectLongestPatterns(matches);
- size = matches.size();
-
- if (size == 1) {
- txAttribute = map.get(matches.get(0));
- }
- else {
- throw new
IllegalStateException(Constants.MESSAGES.getMessage("unable.to.apply.patterns",
matches));
- }
- }
- }
-
- if (txAttribute != null) {
- cache.put(name, txAttribute);
}
}
-
- return txAttribute;
- }
-
- private List<Pattern> findMatches(String name)
+
+ if (txAttribute != null) {
+ cache.put(name, txAttribute);
+ }
+
+ return getType(txAttribute);
+ }
+
+ private TransactionPropagationType getType(String typeSt) {
+ return typeSt == null || typeSt.length() == 0 ? null :
TransactionPropagationType.valueOf(typeSt);
+ }
+
+ private List<Pattern> findMatches(String name)
{
List<Pattern> matches = new ArrayList<Pattern>();
for (Pattern p : map.keySet()) {
@@ -173,7 +178,7 @@ public class TxComponentMetaDataHelperIm
}
}
- public synchronized void
setComponentTransactionData(ComponentDefinitionRegistry registry,
ComponentMetadata component, String value, String method)
+ public synchronized void
setComponentTransactionData(ComponentDefinitionRegistry registry,
ComponentMetadata component, TransactionPropagationType value, String method)
{
TranData td = data.get(component);
@@ -188,8 +193,8 @@ public class TxComponentMetaDataHelperIm
if (method == null || method.length() == 0) {
method = "*";
}
- if(value == null || value.length() == 0) {
- value = "Required";
+ if(value == null) {
+ value = TransactionPropagationType.Required;
}
String[] names = method.split("[, \t]");
@@ -200,13 +205,13 @@ public class TxComponentMetaDataHelperIm
}
}
- public String getComponentMethodTxAttribute(ComponentMetadata component,
String methodName)
+ public TransactionPropagationType
getComponentMethodTxAttribute(ComponentMetadata component, String methodName)
{
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Getting the txAttribute for the component {0} and
method {1}", component.getId(), methodName);
}
TranData td = data.get(component);
- String result = null;
+ TransactionPropagationType result = null;
if (td != null) {
// bean level transaction always overwrite bundle wide transaction
@@ -242,7 +247,7 @@ public class TxComponentMetaDataHelperIm
return result;
}
- public void populateBundleWideTransactionData(ComponentDefinitionRegistry
cdr, String value,
+ public void populateBundleWideTransactionData(ComponentDefinitionRegistry
cdr, TransactionPropagationType value,
String method, String bean) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Start populating bundle wide transaction data value
{0} method {1} bean {2} per component definition registry", new Object[]{value,
method, bean});
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/TxInterceptorImpl.java
Tue Apr 7 11:35:17 2015
@@ -24,6 +24,7 @@ import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import org.apache.aries.blueprint.Interceptor;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.apache.aries.transaction.exception.TransactionRollbackException;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
import org.slf4j.Logger;
@@ -99,13 +100,13 @@ public class TxInterceptorImpl implement
public Object preCall(ComponentMetadata cm, Method m,
Object... parameters) throws Throwable {
final String methodName = m.getName();
- final String attribute =
metaDataHelper.getComponentMethodTxAttribute(cm, methodName);
+ final TransactionPropagationType type =
metaDataHelper.getComponentMethodTxAttribute(cm, methodName);
// attribute could be null here which means no transaction
- if (attribute == null) {
+ if (type == null) {
return null;
}
- TransactionAttribute txAttribute =
TransactionAttribute.fromValue(attribute);
+ TransactionAttribute txAttribute = TransactionAttribute.fromValue(type);
if (LOGGER.isDebugEnabled())
LOGGER.debug("Method: " + m + ", has transaction strategy: " +
txAttribute);
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/AnnotationParser.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/AnnotationParser.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/AnnotationParser.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/AnnotationParser.java
Tue Apr 7 11:35:17 2015
@@ -25,7 +25,6 @@ import org.apache.aries.blueprint.Compon
import org.apache.aries.blueprint.Interceptor;
import org.apache.aries.transaction.Constants;
import org.apache.aries.transaction.TxComponentMetaDataHelper;
-import org.apache.aries.transaction.TxInterceptorImpl;
import org.apache.aries.transaction.annotations.Transaction;
import org.osgi.service.blueprint.reflect.BeanMetadata;
@@ -68,7 +67,7 @@ public class AnnotationParser implements
throw new
IllegalArgumentException(Constants.MESSAGES.getMessage("private.or.static.method",
m));
Transaction t = m.getAnnotation(Transaction.class);
if(t != null &&
helper.getComponentMethodTxAttribute(arg3, m.getName()) == null) {
- helper.setComponentTransactionData(cdr, arg3,
t.value().toString(), m.getName());
+ helper.setComponentTransactionData(cdr, arg3,
t.value(), m.getName());
outer: if(!!!interceptorAssigned) {
for(Interceptor i :
cdr.getInterceptors(arg3)) {
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java
Tue Apr 7 11:35:17 2015
@@ -39,6 +39,7 @@ import org.apache.aries.blueprint.mutabl
import org.apache.aries.transaction.BundleWideTxData;
import org.apache.aries.transaction.Constants;
import org.apache.aries.transaction.TxComponentMetaDataHelper;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.osgi.framework.Bundle;
import org.osgi.service.blueprint.container.BlueprintContainer;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
@@ -78,7 +79,8 @@ public class TxElementHandler implements
// don't register components if we have no bundle (= dry parse)
if (blueprintBundle != null) {
registered.put(cdr, blueprintBundle);
-
+ TransactionPropagationType value =
getType(elt.getAttribute(Constants.VALUE));
+ String method = elt.getAttribute(Constants.METHOD);
if (cm == null) {
// if the enclosing component is null, then we assume this
is the top element
@@ -86,15 +88,13 @@ public class TxElementHandler implements
registerComponentsWithInterceptor(cdr, bean);
metaDataHelper.populateBundleWideTransactionData(pc.getComponentDefinitionRegistry(),
- elt.getAttribute(Constants.VALUE),
elt.getAttribute(Constants.METHOD), bean);
+ value, method, bean);
} else {
cdr.registerInterceptorWithComponent(cm, interceptor);
if (LOGGER.isDebugEnabled())
- LOGGER.debug("parser setting comp trans data for " +
elt.getAttribute(Constants.VALUE) + " "
- + elt.getAttribute(Constants.METHOD));
+ LOGGER.debug("parser setting comp trans data for " +
value + " " + method);
- metaDataHelper.setComponentTransactionData(cdr, cm,
elt.getAttribute(Constants.VALUE), elt
- .getAttribute(Constants.METHOD));
+ metaDataHelper.setComponentTransactionData(cdr, cm, value,
method);
}
}
} else if ("enable-annotations".equals(elt.getLocalName())) {
@@ -115,6 +115,10 @@ public class TxElementHandler implements
LOGGER.debug("parser done with " + elt);
}
+ private TransactionPropagationType getType(String typeSt) {
+ return typeSt == null || typeSt.length() == 0 ? null :
TransactionPropagationType.valueOf(typeSt);
+ }
+
public ComponentMetadata decorate(Node node, ComponentMetadata cm,
ParserContext pc)
{
if (node instanceof Element) {
Modified:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationEnablingNameSpaceHandlerTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationEnablingNameSpaceHandlerTest.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationEnablingNameSpaceHandlerTest.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationEnablingNameSpaceHandlerTest.java
Tue Apr 7 11:35:17 2015
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNul
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
import org.apache.aries.blueprint.PassThroughMetadata;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.apache.aries.transaction.parsing.AnnotationParser;
import org.apache.aries.transaction.pojo.AnnotatedPojo;
import org.junit.Test;
@@ -49,7 +50,7 @@ public class AnnotationEnablingNameSpace
AnnotationParser parser = (AnnotationParser) pmd.getObject();
parser.beforeInit(new AnnotatedPojo(), "top", null, compTop);
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compTop, "increment"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compTop, "increment"));
assertEquals(1, cdr.getInterceptors(compTop).size());
}
Modified:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationParserTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationParserTest.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationParserTest.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/AnnotationParserTest.java
Tue Apr 7 11:35:17 2015
@@ -18,12 +18,17 @@
*/
package org.apache.aries.transaction;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.Mandatory;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.Required;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.Supports;
+
import java.util.Arrays;
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
import org.apache.aries.blueprint.Interceptor;
import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
import org.apache.aries.blueprint.reflect.BeanMetadataImpl;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.apache.aries.transaction.parsing.AnnotationParser;
import org.apache.aries.transaction.pojo.AnnotatedPojo;
import org.apache.aries.transaction.pojo.BadlyAnnotatedPojo1;
@@ -63,11 +68,11 @@ public class AnnotationParserTest {
"getComponentMethodTxAttribute", mbm, String.class), 3);
Skeleton.getSkeleton(helper).assertCalledExactNumberOfTimes(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Required",
"increment"), 1);
+ "setComponentTransactionData", cdr, mbm, Required,
"increment"), 1);
Skeleton.getSkeleton(helper).assertCalledExactNumberOfTimes(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Supports",
"checkValue"), 1);
+ "setComponentTransactionData", cdr, mbm, Supports,
"checkValue"), 1);
Skeleton.getSkeleton(helper).assertCalledExactNumberOfTimes(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Mandatory",
"getRealObject"), 1);
+ "setComponentTransactionData", cdr, mbm, Mandatory,
"getRealObject"), 1);
Skeleton.getSkeleton(cdr).assertCalledExactNumberOfTimes(new
MethodCall(ComponentDefinitionRegistry.class,
"registerInterceptorWithComponent", mbm, i), 1);
@@ -85,7 +90,7 @@ public class AnnotationParserTest {
public Object handle(MethodCall arg0,
Skeleton arg1) throws Exception {
if(arg0.getArguments()[1].equals("increment"))
- return "Never";
+ return
TransactionPropagationType.Never;
return null;
}
@@ -100,11 +105,11 @@ public class AnnotationParserTest {
"getComponentMethodTxAttribute", mbm, String.class), 3);
Skeleton.getSkeleton(helper).assertNotCalled(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Required",
"increment"));
+ "setComponentTransactionData", cdr, mbm, Required,
"increment"));
Skeleton.getSkeleton(helper).assertCalledExactNumberOfTimes(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Supports",
"checkValue"), 1);
+ "setComponentTransactionData", cdr, mbm, Supports,
"checkValue"), 1);
Skeleton.getSkeleton(helper).assertCalledExactNumberOfTimes(new
MethodCall(TxComponentMetaDataHelper.class,
- "setComponentTransactionData", cdr, mbm, "Mandatory",
"getRealObject"), 1);
+ "setComponentTransactionData", cdr, mbm,
TransactionPropagationType.Mandatory, "getRealObject"), 1);
Skeleton.getSkeleton(cdr).assertNotCalled(new
MethodCall(ComponentDefinitionRegistry.class,
"registerInterceptorWithComponent", mbm, i));
Modified:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BundleWideNameSpaceHandlerTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BundleWideNameSpaceHandlerTest.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BundleWideNameSpaceHandlerTest.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BundleWideNameSpaceHandlerTest.java
Tue Apr 7 11:35:17 2015
@@ -18,10 +18,14 @@
*/
package org.apache.aries.transaction;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.NotSupported;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.Required;
+import static
org.apache.aries.transaction.annotations.TransactionPropagationType.RequiresNew;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.junit.Test;
import org.osgi.service.blueprint.reflect.BeanMetadata;
@@ -41,8 +45,8 @@ public class BundleWideNameSpaceHandlerT
assertEquals(1, cdr.getInterceptors(compTop).size());
assertEquals(1, cdr.getInterceptors(compDown).size());
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
- assertEquals("Never", txenhancer.getComponentMethodTxAttribute(compDown,
"doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(compDown, "doSomething"));
}
@@ -72,12 +76,12 @@ public class BundleWideNameSpaceHandlerT
assertEquals(1, cdr.getInterceptors(compDown).size());
assertEquals(0, cdr.getInterceptors(compMiddle).size());
- assertEquals("RequiresNew",
txenhancer.getComponentMethodTxAttribute(compTop, "update1234"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compTop, "update"));
- assertEquals("NotSupported",
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
+ assertEquals(RequiresNew,
txenhancer.getComponentMethodTxAttribute(compTop, "update1234"));
+ assertEquals(Required, txenhancer.getComponentMethodTxAttribute(compTop,
"update"));
+ assertEquals(NotSupported,
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compDown, "doSomething"));
- assertEquals("NotSupported",
txenhancer.getComponentMethodTxAttribute(compDown, "update1234"));
+ assertEquals(Required,
txenhancer.getComponentMethodTxAttribute(compDown, "doSomething"));
+ assertEquals(NotSupported,
txenhancer.getComponentMethodTxAttribute(compDown, "update1234"));
assertEquals(null, txenhancer.getComponentMethodTxAttribute(compMiddle,
"doSomething"));
@@ -109,14 +113,14 @@ public class BundleWideNameSpaceHandlerT
assertEquals(1, cdr.getInterceptors(compDown).size());
assertEquals(1, cdr.getInterceptors(compMiddle).size());
- assertEquals("RequiresNew",
txenhancer.getComponentMethodTxAttribute(compTop, "update1234"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compTop, "update"));
- assertEquals("NotSupported",
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
+ assertEquals(TransactionPropagationType.RequiresNew,
txenhancer.getComponentMethodTxAttribute(compTop, "update1234"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compTop, "update"));
+ assertEquals(TransactionPropagationType.NotSupported,
txenhancer.getComponentMethodTxAttribute(compTop, "doSomething"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compDown, "doSomething"));
- assertEquals("NotSupported",
txenhancer.getComponentMethodTxAttribute(compDown, "update1234"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compDown, "doSomething"));
+ assertEquals(TransactionPropagationType.NotSupported,
txenhancer.getComponentMethodTxAttribute(compDown, "update1234"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compMiddle, "doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compMiddle, "doSomething"));
}
Modified:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/NameSpaceHandlerTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/NameSpaceHandlerTest.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/NameSpaceHandlerTest.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/NameSpaceHandlerTest.java
Tue Apr 7 11:35:17 2015
@@ -21,6 +21,7 @@ package org.apache.aries.transaction;
import static org.junit.Assert.*;
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
+import org.apache.aries.transaction.annotations.TransactionPropagationType;
import org.apache.aries.transaction.parsing.TxBlueprintListener;
import org.apache.aries.unittest.mocks.Skeleton;
import org.junit.Test;
@@ -39,8 +40,8 @@ public class NameSpaceHandlerTest extend
BeanMetadata anon = (BeanMetadata)
(comp.getProperties().get(0)).getValue();
BeanMetadata anonToo = (BeanMetadata)
(comp.getProperties().get(1)).getValue();
- assertEquals("Required", txenhancer.getComponentMethodTxAttribute(anon,
"doSomething"));
- assertEquals("Never", txenhancer.getComponentMethodTxAttribute(anonToo,
"doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(anon, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(anonToo, "doSomething"));
}
@Test
@@ -70,8 +71,8 @@ public class NameSpaceHandlerTest extend
BeanMetadata anon = (BeanMetadata)
(comp.getProperties().get(0)).getValue();
BeanMetadata anonToo = (BeanMetadata)
(comp.getProperties().get(1)).getValue();
- assertEquals("Required", txenhancer.getComponentMethodTxAttribute(anon,
"doSomething"));
- assertEquals("Never", txenhancer.getComponentMethodTxAttribute(anonToo,
"doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(anon, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(anonToo, "doSomething"));
}
@@ -102,9 +103,9 @@ public class NameSpaceHandlerTest extend
BeanMetadata anon = (BeanMetadata)
(comp.getProperties().get(0)).getValue();
BeanMetadata anonToo = (BeanMetadata)
(comp.getProperties().get(1)).getValue();
- assertEquals("Required", txenhancer.getComponentMethodTxAttribute(anon,
"doSomething"));
- assertEquals("Never", txenhancer.getComponentMethodTxAttribute(anonToo,
"doSomething"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(anonToo, "require"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(anon, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(anonToo, "doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(anonToo, "require"));
}
@Test
@@ -134,12 +135,12 @@ public class NameSpaceHandlerTest extend
BeanMetadata compSomeTx = (BeanMetadata)
cdr.getComponentDefinition("someTx");
BeanMetadata compAnotherBean = (BeanMetadata)
cdr.getComponentDefinition("anotherBean");
- assertEquals("RequiresNew",
txenhancer.getComponentMethodTxAttribute(compRequiresNew, "doSomething"));
- assertEquals("Never", txenhancer.getComponentMethodTxAttribute(compNoTx,
"doSomething"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compSomeTx, "doSomething"));
- assertEquals("Mandatory",
txenhancer.getComponentMethodTxAttribute(compSomeTx, "getRows"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "doSomething"));
- assertEquals("Supports",
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "getWhatever"));
+ assertEquals(TransactionPropagationType.RequiresNew,
txenhancer.getComponentMethodTxAttribute(compRequiresNew, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(compNoTx, "doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compSomeTx, "doSomething"));
+ assertEquals(TransactionPropagationType.Mandatory,
txenhancer.getComponentMethodTxAttribute(compSomeTx, "getRows"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "doSomething"));
+ assertEquals(TransactionPropagationType.Supports,
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "getWhatever"));
}
@Test
@@ -162,8 +163,8 @@ public class NameSpaceHandlerTest extend
BeanMetadata anon = (BeanMetadata)
(comp.getProperties().get(0)).getValue();
BeanMetadata anonToo = (BeanMetadata)
(comp.getProperties().get(1)).getValue();
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(anon, "doSomething"));
- assertEquals("Never",
txenhancer.getComponentMethodTxAttribute(anonToo, "doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(anon, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(anonToo, "doSomething"));
assertTrue(namespaceHandler.isRegistered(cdr));
@@ -201,12 +202,12 @@ public class NameSpaceHandlerTest extend
BeanMetadata compSomeTx = (BeanMetadata)
cdr.getComponentDefinition("someTx");
BeanMetadata compAnotherBean = (BeanMetadata)
cdr.getComponentDefinition("anotherBean");
- assertEquals("RequiresNew",
txenhancer.getComponentMethodTxAttribute(compRequiresNew, "doSomething"));
- assertEquals("Never",
txenhancer.getComponentMethodTxAttribute(compNoTx, "doSomething"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compSomeTx, "doSomething"));
- assertEquals("Mandatory",
txenhancer.getComponentMethodTxAttribute(compSomeTx, "getRows"));
- assertEquals("Required",
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "doSomething"));
- assertEquals("Supports",
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "getWhatever"));
+ assertEquals(TransactionPropagationType.RequiresNew,
txenhancer.getComponentMethodTxAttribute(compRequiresNew, "doSomething"));
+ assertEquals(TransactionPropagationType.Never,
txenhancer.getComponentMethodTxAttribute(compNoTx, "doSomething"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compSomeTx, "doSomething"));
+ assertEquals(TransactionPropagationType.Mandatory,
txenhancer.getComponentMethodTxAttribute(compSomeTx, "getRows"));
+ assertEquals(TransactionPropagationType.Required,
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "doSomething"));
+ assertEquals(TransactionPropagationType.Supports,
txenhancer.getComponentMethodTxAttribute(compAnotherBean, "getWhatever"));
// cleanup
Modified:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/TranStrategyTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/TranStrategyTest.java?rev=1671811&r1=1671810&r2=1671811&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/TranStrategyTest.java
(original)
+++
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/TranStrategyTest.java
Tue Apr 7 11:35:17 2015
@@ -34,7 +34,6 @@ import javax.transaction.TransactionMana
import org.junit.Before;
import org.junit.Test;
-
import org.apache.aries.transaction.TransactionAttribute;
import org.apache.aries.unittest.mocks.MethodCall;
import org.apache.aries.unittest.mocks.Skeleton;