You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2011/02/16 19:19:54 UTC
svn commit: r1071355 - in /aries/trunk/transaction/transaction-blueprint/src:
main/java/org/apache/aries/transaction/parsing/
main/resources/OSGI-INF/blueprint/ test/java/org/apache/aries/transaction/
Author: mahrwald
Date: Wed Feb 16 18:19:53 2011
New Revision: 1071355
URL: http://svn.apache.org/viewvc?rev=1071355&view=rev
Log:
ARIES-578: Plug-point for different transaction interceptors.
Added:
aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BaseNameSpaceHandlerSetup.java
Modified:
aries/trunk/transaction/transaction-blueprint/src/main/java/org/apache/aries/transaction/parsing/TxElementHandler.java
aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
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
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=1071355&r1=1071354&r2=1071355&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 Wed Feb 16 18:19:53 2011
@@ -18,8 +18,11 @@
*/
package org.apache.aries.transaction.parsing;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.util.HashSet;
+import java.util.Properties;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -30,6 +33,7 @@ import org.apache.aries.blueprint.Namesp
import org.apache.aries.blueprint.ParserContext;
import org.apache.aries.transaction.Constants;
import org.apache.aries.transaction.TxComponentMetaDataHelper;
+import org.osgi.service.blueprint.container.BlueprintContainer;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
import org.osgi.service.blueprint.reflect.Metadata;
import org.slf4j.Logger;
@@ -38,6 +42,9 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class TxElementHandler implements NamespaceHandler {
+ public static final String DEFAULT_INTERCEPTOR_ID = "txinterceptor";
+ public static final String INTERCEPTOR_BLUEPRINT_ID = "interceptor.blueprint.id";
+
private static final Logger LOGGER =
LoggerFactory.getLogger(TxElementHandler.class);
@@ -110,14 +117,32 @@ public class TxElementHandler implements
this.metaDataHelper = transactionEnhancer;
}
- public final void setTransactionInterceptor(Interceptor itx)
+ public final void setBlueprintContainer(BlueprintContainer container)
{
- if (LOGGER.isDebugEnabled())
- LOGGER.debug("parser having interceptor set " + itx);
+ String id = DEFAULT_INTERCEPTOR_ID;
+ InputStream is = TxElementHandler.class.getResourceAsStream("/provider.properties");
- this.interceptor = itx;
+ if (is != null) {
+ try {
+ Properties props = new Properties();
+ props.load(is);
+ if (props.containsKey(INTERCEPTOR_BLUEPRINT_ID)) {
+ id = props.getProperty(INTERCEPTOR_BLUEPRINT_ID);
+ }
+ } catch (IOException e) {
+ LOGGER.error("IOException while loading provider properties. Using default provider", e);
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e2) {
+ LOGGER.error("Unexpected exception while closing stream", e2);
+ }
+ }
+ }
+
+ this.interceptor = (Interceptor) container.getComponentInstance(id);
}
-
+
public Set<Class> getManagedClasses()
{
// TODO Auto-generated method stub
Modified: aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml?rev=1071355&r1=1071354&r2=1071355&view=diff
==============================================================================
--- aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml (original)
+++ aries/trunk/transaction/transaction-blueprint/src/main/resources/OSGI-INF/blueprint/transaction.xml Wed Feb 16 18:19:53 2011
@@ -33,7 +33,7 @@
</service-properties>
<bean class="org.apache.aries.transaction.parsing.TxElementHandler">
<property ref="txenhancer" name="txMetaDataHelper"/>
- <property ref="txinterceptor" name="transactionInterceptor"/>
+ <property name="blueprintContainer" ref="blueprintContainer" />
</bean>
</service>
Added: aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BaseNameSpaceHandlerSetup.java
URL: http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BaseNameSpaceHandlerSetup.java?rev=1071355&view=auto
==============================================================================
--- aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BaseNameSpaceHandlerSetup.java (added)
+++ aries/trunk/transaction/transaction-blueprint/src/test/java/org/apache/aries/transaction/BaseNameSpaceHandlerSetup.java Wed Feb 16 18:19:53 2011
@@ -0,0 +1,77 @@
+/*
+ * 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.aries.transaction;
+
+import java.util.Properties;
+
+import javax.transaction.TransactionManager;
+
+import org.apache.aries.blueprint.NamespaceHandler;
+import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
+import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
+import org.apache.aries.mocks.BundleMock;
+import org.apache.aries.transaction.parsing.TxElementHandler;
+import org.apache.aries.unittest.mocks.MethodCall;
+import org.apache.aries.unittest.mocks.Skeleton;
+import org.junit.After;
+import org.junit.Before;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+public class BaseNameSpaceHandlerSetup {
+ protected Bundle b;
+ protected NamespaceHandlerRegistry nhri;
+ protected TxComponentMetaDataHelperImpl txenhancer;
+
+ @Before
+ public void setUp() {
+ b = Skeleton.newMock(new BundleMock("org.apache.aries.tx", new Properties()), Bundle.class);
+ BundleContext ctx = b.getBundleContext();
+ nhri = new NamespaceHandlerRegistryImpl(ctx);
+
+ TransactionManager tm = Skeleton.newMock(TransactionManager.class);
+
+ txenhancer = new TxComponentMetaDataHelperImpl();
+
+ TxInterceptorImpl txinterceptor = new TxInterceptorImpl();
+ txinterceptor.setTransactionManager(tm);
+ txinterceptor.setTxMetaDataHelper(txenhancer);
+
+ TxElementHandler namespaceHandler = new TxElementHandler();
+
+ BlueprintContainer container = Skeleton.newMock(BlueprintContainer.class);
+ Skeleton.getSkeleton(container).setReturnValue(
+ new MethodCall(BlueprintContainer.class, "getComponentInstance", TxElementHandler.DEFAULT_INTERCEPTOR_ID),
+ txinterceptor);
+ namespaceHandler.setBlueprintContainer(container);
+ namespaceHandler.setTxMetaDataHelper(txenhancer);
+
+ Properties props = new Properties();
+ props.put("osgi.service.blueprint.namespace", new String[]{"http://aries.apache.org/xmlns/transactions/v1.0.0", "http://aries.apache.org/xmlns/transactions/v1.1.0"});
+ ctx.registerService(NamespaceHandler.class.getName(), namespaceHandler, props);
+ }
+
+ @After
+ public void tearDown() throws Exception{
+ b = null;
+ nhri = null;
+ txenhancer = null;
+ }
+}
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=1071355&r1=1071354&r2=1071355&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 Wed Feb 16 18:19:53 2011
@@ -25,63 +25,16 @@ import java.net.URI;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;
-import java.util.Properties;
import java.util.Set;
-import javax.transaction.TransactionManager;
-
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
-import org.apache.aries.blueprint.NamespaceHandler;
-import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
import org.apache.aries.blueprint.container.Parser;
import org.apache.aries.blueprint.container.NamespaceHandlerRegistry.NamespaceHandlerSet;
import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
-import org.apache.aries.mocks.BundleMock;
-import org.apache.aries.transaction.parsing.TxElementHandler;
-import org.apache.aries.unittest.mocks.Skeleton;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.reflect.BeanMetadata;
-public class BundleWideNameSpaceHandlerTest {
-
- Bundle b;
- private NamespaceHandlerRegistry nhri;
- private TxComponentMetaDataHelperImpl txenhancer;
-
- @Before
- public void setUp() {
- b = Skeleton.newMock(new BundleMock("org.apache.aries.tx", new Properties()), Bundle.class);
- BundleContext ctx = b.getBundleContext();
- nhri = new NamespaceHandlerRegistryImpl(ctx);
-
- TransactionManager tm = Skeleton.newMock(TransactionManager.class);
-
- txenhancer = new TxComponentMetaDataHelperImpl();
-
- TxInterceptorImpl txinterceptor = new TxInterceptorImpl();
- txinterceptor.setTransactionManager(tm);
- txinterceptor.setTxMetaDataHelper(txenhancer);
-
- TxElementHandler namespaceHandler = new TxElementHandler();
- namespaceHandler.setTransactionInterceptor(txinterceptor);
- namespaceHandler.setTxMetaDataHelper(txenhancer);
-
- Properties props = new Properties();
- props.put("osgi.service.blueprint.namespace", new String[]{"http://aries.apache.org/xmlns/transactions/v1.0.0", "http://aries.apache.org/xmlns/transactions/v1.1.0"});
- ctx.registerService(NamespaceHandler.class.getName(), namespaceHandler, props);
- }
-
- @After
- public void tearDown() throws Exception{
- b = null;
- nhri = null;
- txenhancer = null;
- }
+public class BundleWideNameSpaceHandlerTest extends BaseNameSpaceHandlerSetup {
@Test
public void testMultipleElements() throws Exception
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=1071355&r1=1071354&r2=1071355&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 Wed Feb 16 18:19:53 2011
@@ -24,68 +24,16 @@ import java.net.URI;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;
-import java.util.Properties;
import java.util.Set;
-import javax.transaction.TransactionManager;
-
-import org.apache.aries.mocks.BundleMock;
-
import org.apache.aries.blueprint.ComponentDefinitionRegistry;
-import org.apache.aries.blueprint.NamespaceHandler;
-import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
import org.apache.aries.blueprint.container.Parser;
import org.apache.aries.blueprint.container.NamespaceHandlerRegistry.NamespaceHandlerSet;
import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.reflect.BeanMetadata;
-import org.osgi.service.blueprint.reflect.BeanProperty;
-
-import org.apache.aries.transaction.TxComponentMetaDataHelperImpl;
-import org.apache.aries.transaction.TxInterceptorImpl;
-import org.apache.aries.transaction.parsing.TxElementHandler;
-import org.apache.aries.unittest.mocks.Skeleton;
-public class NameSpaceHandlerTest {
-
- Bundle b;
- private NamespaceHandlerRegistry nhri;
- private TxComponentMetaDataHelperImpl txenhancer;
-
- @Before
- public void setUp() {
- b = Skeleton.newMock(new BundleMock("org.apache.aries.tx", new Properties()), Bundle.class);
- BundleContext ctx = b.getBundleContext();
- nhri = new NamespaceHandlerRegistryImpl(ctx);
-
- TransactionManager tm = Skeleton.newMock(TransactionManager.class);
-
- txenhancer = new TxComponentMetaDataHelperImpl();
-
- TxInterceptorImpl txinterceptor = new TxInterceptorImpl();
- txinterceptor.setTransactionManager(tm);
- txinterceptor.setTxMetaDataHelper(txenhancer);
-
- TxElementHandler namespaceHandler = new TxElementHandler();
- namespaceHandler.setTransactionInterceptor(txinterceptor);
- namespaceHandler.setTxMetaDataHelper(txenhancer);
-
- Properties props = new Properties();
- props.put("osgi.service.blueprint.namespace", new String[]{"http://aries.apache.org/xmlns/transactions/v1.0.0", "http://aries.apache.org/xmlns/transactions/v1.1.0"});
- ctx.registerService(NamespaceHandler.class.getName(), namespaceHandler, props);
- }
-
- @After
- public void tearDown() throws Exception{
- b = null;
- nhri = null;
- txenhancer = null;
- }
+public class NameSpaceHandlerTest extends BaseNameSpaceHandlerSetup {
@Test
public void testMultipleElements_100() throws Exception
@@ -106,8 +54,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));
@@ -133,8 +81,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));
@@ -160,8 +108,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));
@@ -187,8 +135,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));
@@ -214,8 +162,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));
@@ -241,8 +189,8 @@ public class NameSpaceHandlerTest {
BeanMetadata comp = (BeanMetadata) cdr.getComponentDefinition("top");
- BeanMetadata anon = (BeanMetadata) ((BeanProperty) comp.getProperties().get(0)).getValue();
- BeanMetadata anonToo = (BeanMetadata) ((BeanProperty) comp.getProperties().get(1)).getValue();
+ 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"));