You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by al...@apache.org on 2016/08/29 18:14:57 UTC
svn commit: r1758278 - in /aries/trunk/blueprint/blueprint-maven-plugin/src:
main/java/org/apache/aries/blueprint/plugin/
main/java/org/apache/aries/blueprint/plugin/javax/
main/java/org/apache/aries/blueprint/plugin/model/
main/java/org/apache/aries/b...
Author: alien11689
Date: Mon Aug 29 18:14:56 2016
New Revision: 1758278
URL: http://svn.apache.org/viewvc?rev=1758278&view=rev
Log:
[ARIES-1602] Refactor @Transactional to Bean and Method annotation handlers
Added:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/BlueprintConfigurationImpl.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/Activation.java
- copied, changed from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintConfiguration.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/XmlWriter.java
- copied, changed from r1758211, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintWriter.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java
Removed:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/AbstractTransactionalFactory.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ExtensionTransactionFactory.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintWriter.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/TransactionalFactory.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.TransactionalFactory
Modified:
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/JavaxTransactionFactory.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PostConstructHandler.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PreDestroyHandler.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceHandler.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanEnricher.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/ContextEnricher.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/MethodAnnotationHandler.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spring/SpringTransactionalFactory.java
aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
Added: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/BlueprintConfigurationImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/BlueprintConfigurationImpl.java?rev=1758278&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/BlueprintConfigurationImpl.java (added)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/BlueprintConfigurationImpl.java Mon Aug 29 18:14:56 2016
@@ -0,0 +1,31 @@
+package org.apache.aries.blueprint.plugin;
+
+import org.apache.aries.blueprint.plugin.spi.Activation;
+import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.apache.aries.blueprint.plugin.Generator.NS_JPA2;
+import static org.apache.aries.blueprint.plugin.Generator.NS_TX2;
+
+public class BlueprintConfigurationImpl implements BlueprintConfiguration {
+ private final Set<String> namespaces;
+ private final Activation defaultActivation;
+
+ public BlueprintConfigurationImpl(Set<String> namespaces, Activation defaultActivation) {
+ this.namespaces = namespaces != null ? namespaces : new HashSet<>(Arrays.asList(NS_TX2, NS_JPA2));
+ this.defaultActivation = defaultActivation;
+ }
+
+ @Override
+ public Set<String> getNamespaces() {
+ return namespaces;
+ }
+
+ @Override
+ public Activation getDefaultActivation() {
+ return defaultActivation;
+ }
+}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Extensions.java Mon Aug 29 18:14:56 2016
@@ -18,8 +18,6 @@
*/
package org.apache.aries.blueprint.plugin;
-import org.apache.aries.blueprint.plugin.model.AbstractTransactionalFactory;
-import org.apache.aries.blueprint.plugin.model.ExtensionTransactionFactory;
import org.apache.aries.blueprint.plugin.spi.BeanFinder;
import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler;
@@ -27,7 +25,6 @@ import org.apache.aries.blueprint.plugin
import org.apache.aries.blueprint.plugin.spi.InjectLikeHandler;
import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.NamedLikeHandler;
-import org.apache.aries.blueprint.plugin.spi.TransactionalFactory;
import org.apache.aries.blueprint.plugin.spi.ValueInjectionHandler;
import java.lang.annotation.Annotation;
@@ -38,7 +35,6 @@ import java.util.ServiceLoader;
public class Extensions {
public static final List<Class<? extends Annotation>> beanMarkingAnnotationClasses = new ArrayList<>();
public static final List<Class<? extends Annotation>> singletons = new ArrayList<>();
- public static final List<AbstractTransactionalFactory> transactionalFactories = new ArrayList<>();
public static final List<InjectLikeHandler<? extends Annotation>> beanInjectLikeHandlers = new ArrayList<>();
public static final List<NamedLikeHandler> namedLikeHandlers = new ArrayList<>();
public static final List<ValueInjectionHandler<? extends Annotation>> valueInjectionHandlers = new ArrayList<>();
@@ -55,10 +51,6 @@ public class Extensions {
}
}
- for (TransactionalFactory transactionalFactory : ServiceLoader.load(TransactionalFactory.class)) {
- transactionalFactories.add(new ExtensionTransactionFactory(transactionalFactory));
- }
-
for (InjectLikeHandler<? extends Annotation> injectLikeHandler : ServiceLoader.load(InjectLikeHandler.class)) {
beanInjectLikeHandlers.add(injectLikeHandler);
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java Mon Aug 29 18:14:56 2016
@@ -19,6 +19,8 @@
package org.apache.aries.blueprint.plugin;
import org.apache.aries.blueprint.plugin.model.Context;
+import org.apache.aries.blueprint.plugin.spi.Activation;
+import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
@@ -99,17 +101,20 @@ public class GenerateMojo extends Abstra
ClassFinder finder = createProjectScopeFinder();
Set<Class<?>> classes = FilteredClassFinder.findClasses(finder, scanPaths);
- Context context = new Context(classes);
+
+ BlueprintConfiguration blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, defaultActivation);
+
+ Context context = new Context(blueprintConfiguration, classes);
context.resolve();
if (context.getBeans().size() > 0) {
- writeBlueprint(context);
+ writeBlueprint(context, blueprintConfiguration);
}
} catch (Exception e) {
throw new MojoExecutionException("Error building commands help", e);
}
}
- private void writeBlueprint(Context context) throws Exception {
+ private void writeBlueprint(Context context, BlueprintConfiguration blueprintConfiguration) throws Exception {
String buildDir = project.getBuild().getDirectory();
String generatedBaseDir = buildDir + "/generated-sources/blueprint";
Resource resource = new Resource();
@@ -122,7 +127,7 @@ public class GenerateMojo extends Abstra
System.out.println("Generating blueprint to " + file);
OutputStream fos = buildContext.newFileOutputStream(file);
- new Generator(context, fos, namespaces, defaultActivation).generate();
+ new Generator(context, fos, blueprintConfiguration).generate();
fos.close();
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Generator.java Mon Aug 29 18:14:56 2016
@@ -25,8 +25,8 @@ import org.apache.aries.blueprint.plugin
import org.apache.aries.blueprint.plugin.model.ProducedBean;
import org.apache.aries.blueprint.plugin.model.Property;
import org.apache.aries.blueprint.plugin.model.PropertyWriter;
-import org.apache.aries.blueprint.plugin.model.TransactionalDef;
-import org.apache.aries.blueprint.plugin.spi.BlueprintWriter;
+import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceUnit;
@@ -35,11 +35,8 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamWriter;
import java.io.OutputStream;
import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
public class Generator implements PropertyWriter, ArgumentWriter {
private static final String NS_BLUEPRINT = "http://www.osgi.org/xmlns/blueprint/v1.0.0";
@@ -50,14 +47,12 @@ public class Generator implements Proper
public static final String NS_TX2 = "http://aries.apache.org/xmlns/transactions/v2.0.0";
private final Context context;
+ private final BlueprintConfiguration blueprintConfiguration;
private final XMLStreamWriter writer;
- private final Set<String> namespaces;
- private final Activation defaultActivation;
- public Generator(Context context, OutputStream os, Set<String> namespaces, Activation defaultActivation) throws XMLStreamException {
+ public Generator(Context context, OutputStream os, BlueprintConfiguration blueprintConfiguration) throws XMLStreamException {
this.context = context;
- this.namespaces = namespaces != null ? namespaces : new HashSet<>(Arrays.asList(NS_TX2, NS_JPA2));
- this.defaultActivation = defaultActivation;
+ this.blueprintConfiguration = blueprintConfiguration;
XMLOutputFactory factory = XMLOutputFactory.newInstance();
writer = factory.createXMLStreamWriter(os);
}
@@ -69,18 +64,10 @@ public class Generator implements Proper
writeBlueprint();
writer.writeCharacters("\n");
- if (namespaces.contains(NS_JPA2) && isJpaUsed()) {
+ if (blueprintConfiguration.getNamespaces().contains(NS_JPA2) && isJpaUsed()) {
writer.writeEmptyElement(NS_JPA2, "enable");
writer.writeCharacters("\n");
}
- if (namespaces.contains(NS_TX) && isJtaUsed()) {
- writer.writeEmptyElement(NS_TX, "enable-annotations");
- writer.writeCharacters("\n");
- }
- if (namespaces.contains(NS_TX2) && isJtaUsed()) {
- writer.writeEmptyElement(NS_TX2, "enable");
- writer.writeCharacters("\n");
- }
for (Bean bean : context.getBeans()) {
writeBeanStart(bean);
bean.writeArguments(this);
@@ -89,7 +76,7 @@ public class Generator implements Proper
writer.writeCharacters("\n");
}
- for (BlueprintWriter bw : context.getBlueprintWriters().values()) {
+ for (XmlWriter bw : context.getBlueprintWriters().values()) {
bw.write(writer);
}
@@ -113,25 +100,16 @@ public class Generator implements Proper
return jpaUsed;
}
- private boolean isJtaUsed() {
- for (Bean bean : context.getBeans()) {
- if (!bean.transactionDefs.isEmpty()) {
- return true;
- }
- }
- return false;
- }
-
private void writeBlueprint() throws XMLStreamException {
writer.writeStartElement("blueprint");
writer.writeDefaultNamespace(NS_BLUEPRINT);
writer.writeNamespace("ext", NS_EXT);
- for (String namespace : namespaces) {
+ for (String namespace : blueprintConfiguration.getNamespaces()) {
String prefix = getPrefixForNamesapace(namespace);
writer.writeNamespace(prefix, namespace);
}
- if (defaultActivation != null) {
- writer.writeAttribute("default-activation", defaultActivation.name().toLowerCase());
+ if (blueprintConfiguration.getDefaultActivation() != null) {
+ writer.writeAttribute("default-activation", blueprintConfiguration.getDefaultActivation().name().toLowerCase());
}
}
@@ -165,12 +143,10 @@ public class Generator implements Proper
}
writer.writeCharacters("\n");
- if (namespaces.contains(NS_TX)) {
- for (TransactionalDef transactionalDef : bean.transactionDefs) {
- writeTransactional(transactionalDef);
- }
+ for (XmlWriter xmlWriter : bean.beanContentWriters.values()) {
+ xmlWriter.write(writer);
}
- if (namespaces.contains(NS_JPA)) {
+ if (blueprintConfiguration.getNamespaces().contains(NS_JPA)) {
writePersistenceFields(bean.persistenceFields);
}
}
@@ -180,18 +156,6 @@ public class Generator implements Proper
writer.writeAttribute("factory-method", bean.factoryMethod);
}
- private void writeTransactional(TransactionalDef transactionDef)
- throws XMLStreamException {
- if (transactionDef != null) {
- writer.writeCharacters(" ");
- writer.writeEmptyElement("tx", "transaction", NS_TX);
- writer.writeAttribute("method", transactionDef.getMethod());
- writer.writeAttribute("value", transactionDef.getType());
- writer.writeCharacters("\n");
- }
- }
-
-
private void writePersistenceFields(List<Field> fields) throws XMLStreamException {
for (Field field : fields) {
writePersistenceField(field);
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/JavaxTransactionFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/JavaxTransactionFactory.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/JavaxTransactionFactory.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/JavaxTransactionFactory.java Mon Aug 29 18:14:56 2016
@@ -19,29 +19,92 @@
package org.apache.aries.blueprint.plugin.javax;
import com.google.common.base.CaseFormat;
-import org.apache.aries.blueprint.plugin.model.TransactionalDef;
-import org.apache.aries.blueprint.plugin.spi.TransactionalFactory;
+import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
+import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import javax.transaction.Transactional;
-import javax.transaction.Transactional.TxType;
-import java.util.HashMap;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+import java.util.List;
-public class JavaxTransactionFactory implements TransactionalFactory<Transactional> {
- private static HashMap<TxType, String> txTypeNames;
-
- static {
- txTypeNames = new HashMap<TxType, String>();
- txTypeNames.put(TxType.REQUIRED, TransactionalDef.TYPE_REQUIRED);
- txTypeNames.put(TxType.REQUIRES_NEW, TransactionalDef.TYPE_REQUIRES_NEW);
+public class JavaxTransactionFactory implements BeanAnnotationHandler<Transactional>, MethodAnnotationHandler<Transactional> {
+ private static final String NS_TX = "http://aries.apache.org/xmlns/transactions/v1.2.0";
+ private static final String NS_TX2 = "http://aries.apache.org/xmlns/transactions/v2.0.0";
+ private String getTransactionTypeName(Transactional transactional) {
+ return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, transactional.value().name());
}
@Override
- public String getTransactionTypeName(Transactional transactional) {
- return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, transactional.value().name());
+ public Class<Transactional> getAnnotation() {
+ return Transactional.class;
}
@Override
- public Class<Transactional> getTransactionalClass() {
- return Transactional.class;
+ public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
+
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX)) {
+ enableAnnotations(contextEnricher);
+ for (final Method method : methods) {
+ final Transactional transactional = method.getAnnotation(Transactional.class);
+ final String transactionTypeName = getTransactionTypeName(transactional);
+ final String name = method.getName();
+ beanEnricher.addBeanContentWriter("javax.transactional.method/" + clazz.getName() + "/" + name + "/" + transactionTypeName, new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "transaction");
+ writer.writeAttribute("method", name);
+ writer.writeAttribute("value", transactionTypeName);
+ writer.writeCharacters("\n");
+ }
+ });
+ }
+ }
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX2)) {
+ enableTransactionsTx2(contextEnricher);
+ }
+ }
+
+ private void enableAnnotations(ContextEnricher contextEnricher) {
+ contextEnricher.addBlueprintContentWriter("transaction/ennable-annotation", new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "enable-annotations");
+ }
+ });
+ }
+
+ @Override
+ public void handleBeanAnnotation(AnnotatedElement annotatedElement, String id, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX)) {
+ enableAnnotations(contextEnricher);
+ final Transactional transactional = annotatedElement.getAnnotation(Transactional.class);
+ final String transactionTypeName = getTransactionTypeName(transactional);
+ beanEnricher.addBeanContentWriter("javax.transactional.method/" + annotatedElement + "/*/" + transactionTypeName, new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "transaction");
+ writer.writeAttribute("method", "*");
+ writer.writeAttribute("value", transactionTypeName);
+ writer.writeCharacters("\n");
+ }
+ });
+ }
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX2)) {
+ enableTransactionsTx2(contextEnricher);
+ }
+ }
+
+ private void enableTransactionsTx2(ContextEnricher contextEnricher) {
+ contextEnricher.addBlueprintContentWriter("transaction/ennable-annotation", new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX2, "enable");
+ }
+ });
}
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PostConstructHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PostConstructHandler.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PostConstructHandler.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PostConstructHandler.java Mon Aug 29 18:14:56 2016
@@ -19,6 +19,7 @@
package org.apache.aries.blueprint.plugin.javax;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
import javax.annotation.PostConstruct;
@@ -32,7 +33,7 @@ public class PostConstructHandler implem
}
@Override
- public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, BeanEnricher beanEnricher) {
+ public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
if(methods.size() > 1){
throw new IllegalArgumentException("There can be only one method annotated with @PostConstruct in bean");
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PreDestroyHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PreDestroyHandler.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PreDestroyHandler.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/javax/PreDestroyHandler.java Mon Aug 29 18:14:56 2016
@@ -19,6 +19,7 @@
package org.apache.aries.blueprint.plugin.javax;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
import javax.annotation.PreDestroy;
@@ -32,7 +33,7 @@ public class PreDestroyHandler implement
}
@Override
- public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, BeanEnricher beanEnricher) {
+ public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
if(methods.size() > 1){
throw new IllegalArgumentException("There can be only one method annotated with @PreDestroy in bean");
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Bean.java Mon Aug 29 18:14:56 2016
@@ -19,14 +19,14 @@
package org.apache.aries.blueprint.plugin.model;
import org.apache.aries.blueprint.plugin.Extensions;
+import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.BlueprintWriter;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.InjectLikeHandler;
import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.NamedLikeHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceUnit;
@@ -46,22 +46,21 @@ import java.util.TreeSet;
import static org.apache.aries.blueprint.plugin.model.AnnotationHelper.findValue;
-public class Bean extends BeanRef implements ContextEnricher, BeanEnricher {
+public class Bean extends BeanRef implements BeanEnricher {
public SortedSet<Property> properties = new TreeSet<>();
public List<Argument> constructorArguments = new ArrayList<>();
public List<Field> persistenceFields;
- public Set<TransactionalDef> transactionDefs = new HashSet<>();
public boolean isPrototype;
public final Map<String, String> attributes = new HashMap<>();
public final Set<BeanRef> refs = new HashSet<>();
- public final Map<String, BlueprintWriter> blueprintWriters = new HashMap<>();
+ public final Map<String, XmlWriter> beanContentWriters = new HashMap<>();
+ protected final ContextEnricher contextEnricher;
- public Bean(Class<?> clazz) {
+ public Bean(Class<?> clazz, ContextEnricher contextEnricher) {
super(clazz, BeanRef.getBeanName(clazz));
+ this.contextEnricher = contextEnricher;
Introspector introspector = new Introspector(clazz);
- interpretTransactionalMethods(clazz);
-
this.isPrototype = isPrototype(clazz);
this.persistenceFields = findPersistenceFields(introspector);
@@ -72,11 +71,17 @@ public class Bean extends BeanRef implem
handleMethodsAnnotation(introspector);
}
+ public void resolve(BlueprinRegister blueprinRegister) {
+ resolveArguments(blueprinRegister);
+ resolveFields(blueprinRegister);
+ resolveMethods(blueprinRegister);
+ }
+
private void handleMethodsAnnotation(Introspector introspector) {
for (MethodAnnotationHandler methodAnnotationHandler : Extensions.methodAnnotationHandlers) {
List<Method> methods = introspector.methodsWith(methodAnnotationHandler.getAnnotation());
if (methods.size() > 0) {
- methodAnnotationHandler.handleMethodAnnotation(clazz, methods, this);
+ methodAnnotationHandler.handleMethodAnnotation(clazz, methods, contextEnricher, this);
}
}
}
@@ -85,7 +90,7 @@ public class Bean extends BeanRef implem
for (BeanAnnotationHandler beanAnnotationHandler : Extensions.BEAN_ANNOTATION_HANDLERs) {
Object annotation = AnnotationHelper.findAnnotation(clazz.getAnnotations(), beanAnnotationHandler.getAnnotation());
if (annotation != null) {
- beanAnnotationHandler.handleBeanAnnotation(clazz, id, this, this);
+ beanAnnotationHandler.handleBeanAnnotation(clazz, id, contextEnricher, this);
}
}
}
@@ -94,12 +99,6 @@ public class Bean extends BeanRef implem
return introspector.fieldsWith(PersistenceContext.class, PersistenceUnit.class);
}
- private void interpretTransactionalMethods(Class<?> clazz) {
- for (AbstractTransactionalFactory transactionalFactory : Extensions.transactionalFactories) {
- transactionDefs.addAll(transactionalFactory.create(clazz));
- }
- }
-
private boolean isPrototype(Class<?> clazz) {
return !findSingleton(clazz);
}
@@ -113,11 +112,6 @@ public class Bean extends BeanRef implem
return false;
}
- public void resolve(BlueprinRegister matcher) {
- resolveArguments(matcher);
- resolveFields(matcher);
- resolveMethods(matcher);
- }
private void resolveMethods(BlueprinRegister blueprinRegister) {
for (Method method : new Introspector(clazz).methodsWith(AnnotationHelper.injectDependencyAnnotations)) {
@@ -233,17 +227,12 @@ public class Bean extends BeanRef implem
}
@Override
- public void addBean(String id, Class<?> clazz) {
- refs.add(new BeanRef(clazz, id));
- }
-
- @Override
- public void addBlueprintWriter(String id, BlueprintWriter blueprintWriter) {
- blueprintWriters.put(id, blueprintWriter);
+ public void addAttribute(String key, String value) {
+ attributes.put(key, value);
}
@Override
- public void addAttribute(String key, String value) {
- attributes.put(key, value);
+ public void addBeanContentWriter(String id, XmlWriter blueprintWriter) {
+ beanContentWriters.put(id, blueprintWriter);
}
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BlueprinRegister.java Mon Aug 29 18:14:56 2016
@@ -20,6 +20,6 @@ package org.apache.aries.blueprint.plugi
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
-public interface BlueprinRegister extends ContextEnricher{
+public interface BlueprinRegister extends ContextEnricher {
BeanRef getMatching(BeanRef template);
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/Context.java Mon Aug 29 18:14:56 2016
@@ -19,9 +19,10 @@
package org.apache.aries.blueprint.plugin.model;
import org.apache.aries.blueprint.plugin.Extensions;
-import org.apache.aries.blueprint.plugin.spi.BlueprintWriter;
+import org.apache.aries.blueprint.plugin.spi.BlueprintConfiguration;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.CustomFactoryMethodAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.container.BlueprintContainer;
@@ -39,13 +40,15 @@ import java.util.TreeSet;
public class Context implements BlueprinRegister, ContextEnricher {
SortedSet<BeanRef> reg = new TreeSet<BeanRef>();
- private final Map<String, BlueprintWriter> blueprintWriters = new HashMap<>();
+ private final Map<String, XmlWriter> blueprintWriters = new HashMap<>();
+ private final BlueprintConfiguration blueprintConfiguration;
- public Context(Class<?>... beanClasses) {
- this(Arrays.asList(beanClasses));
+ public Context(BlueprintConfiguration blueprintConfiguration, Class<?>... beanClasses) {
+ this(blueprintConfiguration, Arrays.asList(beanClasses));
}
- public Context(Collection<Class<?>> beanClasses) {
+ public Context(BlueprintConfiguration blueprintConfiguration, Collection<Class<?>> beanClasses) {
+ this.blueprintConfiguration = blueprintConfiguration;
addBlueprintRefs();
addBeans(beanClasses);
}
@@ -64,10 +67,9 @@ public class Context implements Blueprin
}
private void addBean(Class<?> clazz) {
- Bean bean = new Bean(clazz);
+ Bean bean = new Bean(clazz, this);
reg.add(bean);
reg.addAll(bean.refs);
- blueprintWriters.putAll(bean.blueprintWriters);
addProducedBeans(bean);
}
@@ -79,9 +81,9 @@ public class Context implements Blueprin
Class<?> producedClass = method.getReturnType();
ProducedBean producedBean;
if (name != null) {
- producedBean = new ProducedBean(producedClass, name, factoryBean, method);
+ producedBean = new ProducedBean(producedClass, name, factoryBean, method, this);
} else {
- producedBean = new ProducedBean(producedClass, factoryBean, method);
+ producedBean = new ProducedBean(producedClass, factoryBean, method, this);
}
if (AnnotationHelper.findSingletons(method.getAnnotations())) {
producedBean.setSingleton();
@@ -121,7 +123,7 @@ public class Context implements Blueprin
return beans;
}
- public Map<String, BlueprintWriter> getBlueprintWriters() {
+ public Map<String, XmlWriter> getBlueprintWriters() {
return blueprintWriters;
}
@@ -132,7 +134,12 @@ public class Context implements Blueprin
}
@Override
- public void addBlueprintWriter(String id, BlueprintWriter blueprintWriter) {
+ public void addBlueprintContentWriter(String id, XmlWriter blueprintWriter) {
blueprintWriters.put(id, blueprintWriter);
}
+
+ @Override
+ public BlueprintConfiguration getBlueprintConfiguration() {
+ return blueprintConfiguration;
+ }
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ProducedBean.java Mon Aug 29 18:14:56 2016
@@ -21,6 +21,7 @@ package org.apache.aries.blueprint.plugi
import org.apache.aries.blueprint.plugin.Extensions;
import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import java.lang.reflect.Method;
@@ -29,12 +30,12 @@ public class ProducedBean extends Bean {
public BeanRef factoryBean;
private Method producingMethod;
- public ProducedBean(Class<?> clazz, BeanRef factoryBean, Method factoryMethod) {
- this(clazz, null, factoryBean, factoryMethod);
+ public ProducedBean(Class<?> clazz, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) {
+ this(clazz, null, factoryBean, factoryMethod, contextEnricher);
}
- public ProducedBean(Class<?> clazz, String id, BeanRef factoryBean, Method factoryMethod) {
- super(clazz);
+ public ProducedBean(Class<?> clazz, String id, BeanRef factoryBean, Method factoryMethod, ContextEnricher contextEnricher) {
+ super(clazz, contextEnricher);
if (id != null) {
this.id = id;
}
@@ -48,7 +49,7 @@ public class ProducedBean extends Bean {
for (BeanAnnotationHandler beanAnnotationHandler : Extensions.BEAN_ANNOTATION_HANDLERs) {
Object annotation = AnnotationHelper.findAnnotation(producingMethod.getAnnotations(), beanAnnotationHandler.getAnnotation());
if (annotation != null) {
- beanAnnotationHandler.handleBeanAnnotation(producingMethod, id, this, this);
+ beanAnnotationHandler.handleBeanAnnotation(producingMethod, id, contextEnricher, this);
}
}
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceHandler.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceHandler.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceHandler.java Mon Aug 29 18:14:56 2016
@@ -18,9 +18,9 @@
*/
package org.apache.aries.blueprint.plugin.pax;
-import org.apache.aries.blueprint.plugin.spi.BlueprintWriter;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.CustomDependencyAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import org.ops4j.pax.cdi.api.OsgiService;
import javax.xml.stream.XMLStreamException;
@@ -42,7 +42,7 @@ public class OsgiServiceHandler implemen
final Class<?> clazz = getClass(annotatedElement);
contextEnricher.addBean(id, getClass(annotatedElement));
- contextEnricher.addBlueprintWriter(id, new BlueprintWriter() {
+ contextEnricher.addBlueprintContentWriter("osgiService/" + clazz.getName() + "/" + id, new XmlWriter() {
@Override
public void write(XMLStreamWriter writer) throws XMLStreamException {
writer.writeEmptyElement("reference");
@@ -66,7 +66,7 @@ public class OsgiServiceHandler implemen
final String id = name != null ? name : generateReferenceId(clazz, serviceFilter);
contextEnricher.addBean(id, clazz);
- contextEnricher.addBlueprintWriter(id, new BlueprintWriter() {
+ contextEnricher.addBlueprintContentWriter("osgiService/" + clazz.getName() + "/" + id, new XmlWriter() {
@Override
public void write(XMLStreamWriter writer) throws XMLStreamException {
writer.writeEmptyElement("reference");
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/pax/OsgiServiceProviderHandler.java Mon Aug 29 18:14:56 2016
@@ -21,7 +21,7 @@ package org.apache.aries.blueprint.plugi
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
-import org.apache.aries.blueprint.plugin.spi.BlueprintWriter;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
import org.apache.aries.blueprint.plugin.spi.CustomFactoryMethodAnnotationHandler;
@@ -60,7 +60,7 @@ public class OsgiServiceProviderHandler
final Map<String, String> propertiesAsMap = extractProperties(properties);
- contextEnricher.addBlueprintWriter("OsgiServiceProvider/" + annotatedElement + "/" + id, new BlueprintWriter() {
+ contextEnricher.addBlueprintContentWriter("OsgiServiceProvider/" + annotatedElement + "/" + id, new XmlWriter() {
@Override
public void write(XMLStreamWriter writer) throws XMLStreamException {
writeService(writer, propertiesAsMap, interfaceNames, id);
Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/Activation.java (from r1757990, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java)
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/Activation.java?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/Activation.java&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java&r1=1757990&r2=1758278&rev=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/Activation.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/Activation.java Mon Aug 29 18:14:56 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.blueprint.plugin;
+package org.apache.aries.blueprint.plugin.spi;
public enum Activation {
EAGER,
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanEnricher.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanEnricher.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanEnricher.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BeanEnricher.java Mon Aug 29 18:14:56 2016
@@ -20,4 +20,5 @@ package org.apache.aries.blueprint.plugi
public interface BeanEnricher {
void addAttribute(String key, String value);
+ void addBeanContentWriter(String id, XmlWriter blueprintWriter);
}
Added: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintConfiguration.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintConfiguration.java?rev=1758278&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintConfiguration.java (added)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintConfiguration.java Mon Aug 29 18:14:56 2016
@@ -0,0 +1,8 @@
+package org.apache.aries.blueprint.plugin.spi;
+
+import java.util.Set;
+
+public interface BlueprintConfiguration {
+ Set<String> getNamespaces();
+ Activation getDefaultActivation();
+}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/ContextEnricher.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/ContextEnricher.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/ContextEnricher.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/ContextEnricher.java Mon Aug 29 18:14:56 2016
@@ -20,5 +20,6 @@ package org.apache.aries.blueprint.plugi
public interface ContextEnricher {
void addBean(String id, Class<?> clazz);
- void addBlueprintWriter(String id, BlueprintWriter blueprintWriter);
+ void addBlueprintContentWriter(String id, XmlWriter blueprintWriter);
+ BlueprintConfiguration getBlueprintConfiguration();
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/MethodAnnotationHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/MethodAnnotationHandler.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/MethodAnnotationHandler.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/MethodAnnotationHandler.java Mon Aug 29 18:14:56 2016
@@ -6,9 +6,9 @@
* 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
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
* 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
@@ -25,5 +25,5 @@ import java.util.List;
public interface MethodAnnotationHandler<A extends Annotation> {
Class<A> getAnnotation();
- void handleMethodAnnotation(Class<?> clazz, List<Method> methods, BeanEnricher beanEnricher);
+ void handleMethodAnnotation(Class<?> clazz, List<Method> methods, ContextEnricher contextEnricher, BeanEnricher beanEnricher);
}
Copied: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/XmlWriter.java (from r1758211, aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintWriter.java)
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/XmlWriter.java?p2=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/XmlWriter.java&p1=aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintWriter.java&r1=1758211&r2=1758278&rev=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/BlueprintWriter.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spi/XmlWriter.java Mon Aug 29 18:14:56 2016
@@ -3,6 +3,6 @@ package org.apache.aries.blueprint.plugi
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-public interface BlueprintWriter {
+public interface XmlWriter {
void write(XMLStreamWriter xmlStreamWriter) throws XMLStreamException;
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spring/SpringTransactionalFactory.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spring/SpringTransactionalFactory.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spring/SpringTransactionalFactory.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/spring/SpringTransactionalFactory.java Mon Aug 29 18:14:56 2016
@@ -6,9 +6,9 @@
* 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
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
* 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
@@ -19,13 +19,25 @@
package org.apache.aries.blueprint.plugin.spring;
import com.google.common.base.CaseFormat;
-import org.apache.aries.blueprint.plugin.spi.TransactionalFactory;
+import org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.BeanEnricher;
+import org.apache.aries.blueprint.plugin.spi.ContextEnricher;
+import org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler;
+import org.apache.aries.blueprint.plugin.spi.XmlWriter;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
-public class SpringTransactionalFactory implements TransactionalFactory<Transactional> {
- @Override
- public String getTransactionTypeName(Transactional transactional) {
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+import java.util.List;
+
+public class SpringTransactionalFactory implements BeanAnnotationHandler<Transactional>, MethodAnnotationHandler<Transactional> {
+ private static final String NS_TX = "http://aries.apache.org/xmlns/transactions/v1.2.0";
+ private static final String NS_TX2 = "http://aries.apache.org/xmlns/transactions/v2.0.0";
+
+ private String getTransactionTypeName(Transactional transactional) {
Propagation propagation = transactional.propagation();
if (propagation == Propagation.NESTED) {
throw new UnsupportedOperationException("Nested transactions not supported");
@@ -34,7 +46,70 @@ public class SpringTransactionalFactory
}
@Override
- public Class<Transactional> getTransactionalClass() {
+ public Class<Transactional> getAnnotation() {
return Transactional.class;
}
+
+ @Override
+ public void handleMethodAnnotation(Class<?> clazz, List<Method> methods, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX)) {
+ enableAnnotations(contextEnricher);
+ for (final Method method : methods) {
+ final Transactional transactional = method.getAnnotation(Transactional.class);
+ final String transactionTypeName = getTransactionTypeName(transactional);
+ final String name = method.getName();
+ beanEnricher.addBeanContentWriter("javax.transactional.method/" + clazz.getName() + "/" + name + "/" + transactionTypeName, new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "transaction");
+ writer.writeAttribute("method", name);
+ writer.writeAttribute("value", transactionTypeName);
+ writer.writeCharacters("\n");
+ }
+ });
+ }
+ }
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX2)) {
+ enableTransactionsTx2(contextEnricher);
+ }
+ }
+
+ private void enableAnnotations(ContextEnricher contextEnricher) {
+ contextEnricher.addBlueprintContentWriter("transaction/ennable-annotation", new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "enable-annotations");
+ }
+ });
+ }
+
+ @Override
+ public void handleBeanAnnotation(AnnotatedElement annotatedElement, String id, ContextEnricher contextEnricher, BeanEnricher beanEnricher) {
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX)) {
+ enableAnnotations(contextEnricher);
+ final Transactional transactional = annotatedElement.getAnnotation(Transactional.class);
+ final String transactionTypeName = getTransactionTypeName(transactional);
+ beanEnricher.addBeanContentWriter("javax.transactional.method/" + annotatedElement + "/*/" + transactionTypeName, new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX, "transaction");
+ writer.writeAttribute("method", "*");
+ writer.writeAttribute("value", transactionTypeName);
+ writer.writeCharacters("\n");
+ }
+ });
+ }
+ if (contextEnricher.getBlueprintConfiguration().getNamespaces().contains(NS_TX2)) {
+ enableTransactionsTx2(contextEnricher);
+ }
+ }
+
+ private void enableTransactionsTx2(ContextEnricher contextEnricher) {
+ contextEnricher.addBlueprintContentWriter("transaction/ennable-annotation", new XmlWriter() {
+ @Override
+ public void write(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEmptyElement(NS_TX2, "enable");
+ }
+ });
+ }
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.BeanAnnotationHandler Mon Aug 29 18:14:56 2016
@@ -17,4 +17,6 @@
org.apache.aries.blueprint.plugin.pax.OsgiServiceProviderHandler
org.apache.aries.blueprint.plugin.spring.LazyAttributeResolver
-org.apache.aries.blueprint.plugin.spring.DependsOnAttributeResolver
\ No newline at end of file
+org.apache.aries.blueprint.plugin.spring.DependsOnAttributeResolver
+org.apache.aries.blueprint.plugin.spring.SpringTransactionalFactory
+org.apache.aries.blueprint.plugin.javax.JavaxTransactionFactory
\ No newline at end of file
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/main/resources/META-INF/services/org.apache.aries.blueprint.plugin.spi.MethodAnnotationHandler Mon Aug 29 18:14:56 2016
@@ -16,4 +16,6 @@
#
org.apache.aries.blueprint.plugin.javax.PostConstructHandler
-org.apache.aries.blueprint.plugin.javax.PreDestroyHandler
\ No newline at end of file
+org.apache.aries.blueprint.plugin.javax.PreDestroyHandler
+org.apache.aries.blueprint.plugin.spring.SpringTransactionalFactory
+org.apache.aries.blueprint.plugin.javax.JavaxTransactionFactory
\ No newline at end of file
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java Mon Aug 29 18:14:56 2016
@@ -62,11 +62,12 @@ public class GeneratorTest {
ClassFinder classFinder = new ClassFinder(GeneratorTest.class.getClassLoader());
String packageName = MyBean1.class.getPackage().getName();
Set<Class<?>> beanClasses = findClasses(classFinder, Collections.singletonList(packageName));
- Context context = new Context(beanClasses);
+ Set<String> namespaces = new HashSet<String>(Arrays.asList(Generator.NS_JPA, Generator.NS_TX));
+ BlueprintConfigurationImpl blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, null);
+ Context context = new Context(blueprintConfiguration, beanClasses);
context.resolve();
ByteArrayOutputStream os = new ByteArrayOutputStream();
- Set<String> namespaces = new HashSet<String>(Arrays.asList(Generator.NS_JPA, Generator.NS_TX));
- new Generator(context, os, namespaces, null).generate();
+ new Generator(context, os, blueprintConfiguration).generate();
System.out.println(os.toString("UTF-8"));
document = readToDocument(os);
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/BeanTest.java Mon Aug 29 18:14:56 2016
@@ -19,6 +19,8 @@
package org.apache.aries.blueprint.plugin.model;
import com.google.common.collect.Sets;
+import org.apache.aries.blueprint.plugin.BlueprintConfigurationImpl;
+import org.apache.aries.blueprint.plugin.Generator;
import org.apache.aries.blueprint.plugin.bad.BadBean1;
import org.apache.aries.blueprint.plugin.bad.BadBean2;
import org.apache.aries.blueprint.plugin.bad.BadBean3;
@@ -31,25 +33,29 @@ import org.apache.aries.blueprint.plugin
import org.apache.aries.blueprint.plugin.test.MyBean4;
import org.apache.aries.blueprint.plugin.test.MyBean5;
import org.apache.aries.blueprint.plugin.test.ServiceAImpl1;
-import org.junit.Assert;
import org.junit.Test;
import javax.inject.Named;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.Set;
+import static junit.framework.Assert.assertFalse;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class BeanTest {
+ private final Set<String> namespaces = new HashSet<String>(Arrays.asList(Generator.NS_JPA, Generator.NS_TX));
+ private final BlueprintConfigurationImpl blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, null);
+ private final Context context = new Context(blueprintConfiguration);
@Test
public void testParseMyBean1() {
- Bean bean = new Bean(MyBean1.class);
- bean.resolve(new Context());
+ Bean bean = new Bean(MyBean1.class, context);
+ bean.resolve(context);
assertEquals(MyBean1.class, bean.clazz);
assertEquals("myBean1", bean.id); // Name derived from class name
- Assert.assertEquals(2, bean.persistenceFields.size());
+ assertEquals(2, bean.persistenceFields.size());
assertEquals("em", bean.persistenceFields.get(0).getName());
assertEquals("emf", bean.persistenceFields.get(1).getName());
assertEquals(1, bean.properties.size());
@@ -59,19 +65,19 @@ public class BeanTest {
assertEquals("serviceA", prop.ref);
Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("*", "RequiresNew"),
- new TransactionalDef("txNotSupported", "NotSupported"),
- new TransactionalDef("txMandatory", "Mandatory"),
- new TransactionalDef("txNever", "Never"),
- new TransactionalDef("txRequired", "Required"),
- new TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
- new TransactionalDef("txSupports", "Supports"));
- assertEquals(expectedTxs, bean.transactionDefs);
+ new TransactionalDef("txNotSupported", "NotSupported"),
+ new TransactionalDef("txMandatory", "Mandatory"),
+ new TransactionalDef("txNever", "Never"),
+ new TransactionalDef("txRequired", "Required"),
+ new TransactionalDef("txOverridenWithRequiresNew", "RequiresNew"),
+ new TransactionalDef("txSupports", "Supports"));
+ assertEquals(expectedTxs, getTransactionalDefs(bean));
}
@Test
public void testParseMyBean3() {
- Bean bean = new Bean(MyBean3.class);
- bean.resolve(new Context());
+ Bean bean = new Bean(MyBean3.class, context);
+ bean.resolve(context);
assertEquals(MyBean3.class, bean.clazz);
assertEquals("myBean3", bean.id); // Name derived from class name
assertEquals("There should be no persistence fields", 0, bean.persistenceFields.size());
@@ -79,80 +85,93 @@ public class BeanTest {
assertTrue(bean.isPrototype);
Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("*", "RequiresNew"),
- new TransactionalDef("txNotSupported", "NotSupported"),
- new TransactionalDef("txMandatory", "Mandatory"),
- new TransactionalDef("txNever", "Never"),
- new TransactionalDef("txRequired", "Required"),
- new TransactionalDef("txRequiresNew", "RequiresNew"),
- new TransactionalDef("txSupports", "Supports"));
- assertEquals(expectedTxs, bean.transactionDefs);
+ new TransactionalDef("txNotSupported", "NotSupported"),
+ new TransactionalDef("txMandatory", "Mandatory"),
+ new TransactionalDef("txNever", "Never"),
+ new TransactionalDef("txRequired", "Required"),
+ new TransactionalDef("txRequiresNew", "RequiresNew"),
+ new TransactionalDef("txSupports", "Supports"));
+ assertEquals(expectedTxs, getTransactionalDefs(bean));
}
@Test
public void testParseNamedBean() {
- Bean bean = new Bean(ServiceAImpl1.class);
- bean.resolve(new Context());
+ Bean bean = new Bean(ServiceAImpl1.class, context);
+ bean.resolve(context);
String definedName = ServiceAImpl1.class.getAnnotation(Named.class).value();
assertEquals("my1", definedName);
assertEquals("Name should be defined using @Named", definedName, bean.id);
assertEquals("There should be no persistence fields", 0, bean.persistenceFields.size());
- assertTrue("There should be no transaction definition", bean.transactionDefs.isEmpty());
+ assertTrue("There should be no transaction definition", getTransactionalDefs(bean).isEmpty());
assertEquals("There should be no properties", 0, bean.properties.size());
assertTrue(bean.isPrototype);
}
@Test
public void testBlueprintBundleContext() {
- Bean bean = new Bean(MyBean4.class);
- bean.resolve(new Context());
+ Bean bean = new Bean(MyBean4.class, context);
+ bean.resolve(context);
Property bcProp = bean.properties.iterator().next();
assertEquals("bundleContext", bcProp.name);
assertEquals("blueprintBundleContext", bcProp.ref);
assertFalse(bean.isPrototype);
Set<TransactionalDef> expectedTxs = Sets.newHashSet(new TransactionalDef("txWithoutClassAnnotation", "Supports"));
- assertEquals(expectedTxs, bean.transactionDefs);
+ assertEquals(expectedTxs, getTransactionalDefs(bean));
}
+ private Set<TransactionalDef> getTransactionalDefs(Bean bean) {
+ Set<String> beanWriters = bean.beanContentWriters.keySet();
+ Set<TransactionalDef> transactionalDefs = new HashSet<>();
+ for (String beanWriter : beanWriters) {
+ if (beanWriter.startsWith("javax.transactional.method/")) {
+ String[] splitId = beanWriter.split("/");
+ transactionalDefs.add(new TransactionalDef(splitId[2], splitId[3]));
+ }
+ }
+ return transactionalDefs;
+ }
+
+
@Test(expected = IllegalArgumentException.class)
public void testMultipleInitMethods() {
- new Bean(BadBean1.class);
+ new Bean(BadBean1.class, context);
}
@Test(expected = IllegalArgumentException.class)
public void testMultipleDestroyMethods() {
- new Bean(BadBean2.class);
+ new Bean(BadBean2.class, context);
}
@Test(expected = UnsupportedOperationException.class)
public void testSpringNestedTransactionNotSupported() {
- new Bean(BadBean3.class);
+ new Bean(BadBean3.class, context);
}
@Test(expected = UnsupportedOperationException.class)
public void testBadFieldBean1() {
- new Context(BadFieldBean1.class).resolve();
+ new Context(blueprintConfiguration, BadFieldBean1.class).resolve();
}
@Test(expected = UnsupportedOperationException.class)
public void testBadFieldBean2() {
- new Context(BadFieldBean2.class).resolve();
+ new Context(blueprintConfiguration, BadFieldBean2.class).resolve();
}
@Test(expected = UnsupportedOperationException.class)
public void testBadFieldBean3() {
- new Context(BadFieldBean3.class).resolve();
+ new Context(blueprintConfiguration, BadFieldBean3.class).resolve();
}
@Test
public void testFieldBean4() {
- new Context(FieldBean4.class).resolve();
+ new Context(blueprintConfiguration, FieldBean4.class).resolve();
}
@Test
public void testParseBeanWithConstructorInject() {
- Bean bean = new Bean(MyBean5.class);
- bean.resolve(new Context());
+ Bean bean = new Bean(MyBean5.class, context);
+ bean.resolve(context);
assertEquals(MyBean5.class, bean.clazz);
assertEquals("myBean5", bean.id); // Name derived from class name
assertTrue("There should be no persistenceUnit", bean.persistenceFields.isEmpty());
@@ -167,5 +186,4 @@ public class BeanTest {
assertEquals("serviceA", bean.constructorArguments.get(6).getRef());
assertEquals("produced2", bean.constructorArguments.get(7).getRef());
}
-
}
Modified: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java?rev=1758278&r1=1758277&r2=1758278&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java (original)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/ContextTest.java Mon Aug 29 18:14:56 2016
@@ -6,9 +6,9 @@
* 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
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
* 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
@@ -18,8 +18,12 @@
*/
package org.apache.aries.blueprint.plugin.model;
+import org.apache.aries.blueprint.plugin.BlueprintConfigurationImpl;
+import org.apache.aries.blueprint.plugin.Generator;
+import org.apache.aries.blueprint.plugin.test.MyBean3;
import org.apache.aries.blueprint.plugin.test.MyFactoryBean;
import org.apache.aries.blueprint.plugin.test.MyProduced;
+import org.apache.aries.blueprint.plugin.test.ServiceReferences;
import org.junit.Assert;
import org.junit.Test;
import org.osgi.framework.Bundle;
@@ -27,35 +31,44 @@ import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.container.BlueprintContainer;
import org.osgi.service.blueprint.container.Converter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
import static org.junit.Assert.assertEquals;
public class ContextTest {
+ private final Set<String> namespaces = new HashSet<String>(Arrays.asList(Generator.NS_JPA, Generator.NS_TX));
+ private final BlueprintConfigurationImpl blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, null);
-// @Test
-// public void testLists() {
-// Context context = new Context(MyBean3.class);
-// Assert.assertEquals(1, context.getBeans().size());
-// Assert.assertEquals(0, context.getServiceRefs().size());
-// }
-//
-// @Test
-// public void testLists2() {
-// Context context = new Context(ServiceReferences.class);
-// Assert.assertEquals(1, context.getBeans().size());
-// Assert.assertEquals(3, context.getServiceRefs().size());
-// }
-
-// @Test
-// public void testMatching() throws NoSuchFieldException, SecurityException {
-// Context context = new Context(ServiceReferences.class);
-// BeanRef matching = context.getMatching(new BeanRef(ServiceReferencesParent.class.getDeclaredField("serviceB")));
-// Assert.assertEquals(OsgiServiceRef.class, matching.getClass());
-// Assert.assertEquals(ServiceB.class, matching.clazz);
-// Assert.assertEquals("serviceB-typeB1", matching.id);
-// }
+ @Test
+ public void testLists() {
+ Context context = new Context(blueprintConfiguration, MyBean3.class);
+ Assert.assertEquals(1, context.getBeans().size());
+ Assert.assertEquals(0, getOsgiServices(context).size());
+ }
+
+ @Test
+ public void testLists2() {
+ Context context = new Context(blueprintConfiguration, ServiceReferences.class);
+ context.resolve();
+ Assert.assertEquals(1, context.getBeans().size());
+ Assert.assertEquals(3, getOsgiServices(context).size());
+ }
+
+ private Set<String> getOsgiServices(Context context) {
+ Set<String> blueprintWritersKeys = context.getBlueprintWriters().keySet();
+ Set<String> osgiServices = new HashSet<>();
+ for (String blueprintWritersKey : blueprintWritersKeys) {
+ if (blueprintWritersKey.startsWith("osgiService/")) {
+ osgiServices.add(blueprintWritersKey);
+ }
+ }
+ return osgiServices;
+ }
private void assertSpecialRef(String expectedId, Class<?> clazz) {
- Context context = new Context();
+ Context context = new Context(blueprintConfiguration);
BeanRef ref = context.getMatching(new BeanRef(clazz));
assertEquals(expectedId, ref.id);
}
@@ -69,10 +82,10 @@ public class ContextTest {
}
@Test
- public void testProduced() throws NoSuchFieldException, SecurityException {
- Context context = new Context(MyFactoryBean.class);
+ public void testProduced() throws NoSuchFieldException, SecurityException {
+ Context context = new Context(blueprintConfiguration, MyFactoryBean.class);
context.resolve();
- ProducedBean matching = (ProducedBean)context.getMatching(new BeanRef(MyProduced.class));
+ ProducedBean matching = (ProducedBean) context.getMatching(new BeanRef(MyProduced.class));
Assert.assertEquals(MyProduced.class, matching.clazz);
Assert.assertEquals("myFactoryBean", matching.factoryBean.id);
Assert.assertEquals("create", matching.factoryMethod);
Added: aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java?rev=1758278&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java (added)
+++ aries/trunk/blueprint/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/model/TransactionalDef.java Mon Aug 29 18:14:56 2016
@@ -0,0 +1,30 @@
+package org.apache.aries.blueprint.plugin.model;
+
+public class TransactionalDef {
+ final String method;
+ final String type;
+
+ public TransactionalDef(String method, String type) {
+ this.method = method;
+ this.type = type;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TransactionalDef)) return false;
+
+ TransactionalDef that = (TransactionalDef) o;
+
+ if (method != null ? !method.equals(that.method) : that.method != null) return false;
+ return type != null ? type.equals(that.type) : that.type == null;
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = method != null ? method.hashCode() : 0;
+ result = 31 * result + (type != null ? type.hashCode() : 0);
+ return result;
+ }
+}