From 4d0c9b14cc32e4ccf9ee75fdc1c00a8d480bd559 Mon Sep 17 00:00:00 2001 From: yenerm Date: Sun, 30 Dec 2018 11:17:58 -0800 Subject: [PATCH] Migrating from markdown to asciidoc --- examples/connector-war/README.adoc | 362 +++++++++++++++++++++++++ examples/connector-war/README.md | 344 ------------------------ examples/decorators/README.adoc | 411 +++++++++++++++++++++++++++++ examples/decorators/README.md | 393 --------------------------- 4 files changed, 773 insertions(+), 737 deletions(-) create mode 100644 examples/connector-war/README.adoc delete mode 100644 examples/connector-war/README.md create mode 100644 examples/decorators/README.adoc delete mode 100644 examples/decorators/README.md diff --git a/examples/connector-war/README.adoc b/examples/connector-war/README.adoc new file mode 100644 index 00000000000..b5d75e9cc5d --- /dev/null +++ b/examples/connector-war/README.adoc @@ -0,0 +1,362 @@ +index-group=Unrevised +type=page +status=published + += Movies Complete + + +== AddInterceptor + +[source,java] +---- +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class AddInterceptor { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + // Log Add + return context.proceed(); + } +} +---- + +== DeleteInterceptor + +[source,java] +---- +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class DeleteInterceptor { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + // Log Delete + return context.proceed(); + } +} +---- + +== Movie + +[source,java] +---- +package org.superbiz.injection.tx; + +import javax.persistence.Entity; + +@Entity +public class Movie { + + private String director; + private String title; + private int year; + + public Movie() { + } + + public Movie(String director, String title, int year) { + this.director = director; + this.title = title; + this.year = year; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + +} +---- + +== Movies + +[source,java] +---- +package org.superbiz.injection.tx; + +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; +import javax.ejb.Stateful; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.interceptor.Interceptors; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +//START SNIPPET: code +@Stateful +public class Movies { + + @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) + private EntityManager entityManager; + + @RolesAllowed({"Employee", "Manager"}) + @TransactionAttribute(TransactionAttributeType.REQUIRED) + @Interceptors(AddInterceptor.class) + public void addMovie(Movie movie) throws Exception { + entityManager.persist(movie); + } + + @RolesAllowed({"Manager"}) + @TransactionAttribute(TransactionAttributeType.MANDATORY) + @Interceptors(DeleteInterceptor.class) + public void deleteMovie(Movie movie) throws Exception { + entityManager.remove(movie); + } + + @PermitAll + @TransactionAttribute(TransactionAttributeType.SUPPORTS) + public List getMovies() throws Exception { + Query query = entityManager.createQuery("SELECT m from Movie as m"); + return query.getResultList(); + } +} +---- + +== ReadInterceptor + +[source,java] +---- +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class ReadInterceptor { + + @AroundInvoke + public Object invoke(InvocationContext context) throws Exception { + // Log Delete + return context.proceed(); + } +} +.... + +== persistence.xml + +[source,xml] +---- + + + + movieDatabase + movieDatabaseUnmanaged + org.superbiz.injection.tx.Movie + + + + + + +---- + +== MoviesTest + +[source,java] +---- +package org.superbiz.injection.tx; + +import junit.framework.TestCase; + +import javax.annotation.security.RunAs; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.ejb.embeddable.EJBContainer; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.Callable; + +import static javax.ejb.TransactionAttributeType.REQUIRES_NEW; + +/** + * See the transaction-rollback example as it does the same thing + * via UserTransaction and shows more techniques for rollback + */ +//START SNIPPET: code +public class MoviesTest extends TestCase { + + @EJB + private Movies movies; + + @EJB(beanName = "TransactionBean") + private Caller transactionalCaller; + + @EJB(beanName = "NoTransactionBean") + private Caller nonTransactionalCaller; + + protected void setUp() throws Exception { + final Properties p = new Properties(); + p.put("movieDatabase", "new://Resource?type=DataSource"); + p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); + p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); + + EJBContainer.createEJBContainer(p).getContext().bind("inject", this); + } + + private void doWork() throws Exception { + + movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992)); + movies.addMovie(new Movie("Joel Coen", "Fargo", 1996)); + movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998)); + + List list = movies.getMovies(); + assertEquals("List.size()", 3, list.size()); + + for (Movie movie : list) { + movies.deleteMovie(movie); + } + + assertEquals("Movies.getMovies()", 0, movies.getMovies().size()); + } + + public void testWithTransaction() throws Exception { + transactionalCaller.call(new Callable() { + public Object call() throws Exception { + doWork(); + return null; + } + }); + } + + public void testWithoutTransaction() throws Exception { + try { + nonTransactionalCaller.call(new Callable() { + public Object call() throws Exception { + doWork(); + return null; + } + }); + fail("The Movies bean should be using TransactionAttributeType.MANDATORY"); + } catch (javax.ejb.EJBException e) { + // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want + } + } + + + public static interface Caller { + public V call(Callable callable) throws Exception; + } + + /** + * This little bit of magic allows our test code to execute in + * the scope of a container controlled transaction. + */ + @Stateless + @RunAs("Manager") + @TransactionAttribute(REQUIRES_NEW) + public static class TransactionBean implements Caller { + + public V call(Callable callable) throws Exception { + return callable.call(); + } + } + + @Stateless + @RunAs("Manager") + @TransactionAttribute(TransactionAttributeType.NEVER) + public static class NoTransactionBean implements Caller { + + public V call(Callable callable) throws Exception { + return callable.call(); + } + } +} +---- + +== Running + +---- +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running org.superbiz.injection.tx.MoviesTest +Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/movies-complete +INFO - openejb.base = /Users/dblevins/examples/movies-complete +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/classes +INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/test-classes +INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/classes +INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/test-classes +INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete +INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container) +INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container) +INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) +INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container) +INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) +INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container) +INFO - Configuring PersistenceUnit(name=movie-unit) +INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'. +INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase) +INFO - Adjusting PersistenceUnit movie-unit to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged' +INFO - Enterprise application "/Users/dblevins/examples/movies-complete" loaded. +INFO - Assembling app: /Users/dblevins/examples/movies-complete +INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 402ms +INFO - Jndi(name="java:global/movies-complete/Movies!org.superbiz.injection.tx.Movies") +INFO - Jndi(name="java:global/movies-complete/Movies") +INFO - Jndi(name="java:global/movies-complete/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller") +INFO - Jndi(name="java:global/movies-complete/TransactionBean") +INFO - Jndi(name="java:global/movies-complete/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller") +INFO - Jndi(name="java:global/movies-complete/NoTransactionBean") +INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest") +INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest") +INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container) +INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container) +INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container) +INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container) +INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container) +INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container) +INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete) +INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.418 sec + +Results : + +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 +.... diff --git a/examples/connector-war/README.md b/examples/connector-war/README.md deleted file mode 100644 index add4c7e3047..00000000000 --- a/examples/connector-war/README.md +++ /dev/null @@ -1,344 +0,0 @@ -index-group=Unrevised -type=page -status=published -title=Movies Complete -~~~~~~ - -*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* - -[![Try it out in Codenvy](https://tomitribe.github.io/codenvy/tryitout.svg)](https://codenvy.com/f?id=9er0fn1kh832sa35) - -## AddInterceptor - - package org.superbiz.injection.tx; - - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - /** - * @version $Revision$ $Date$ - */ - public class AddInterceptor { - - @AroundInvoke - public Object invoke(InvocationContext context) throws Exception { - // Log Add - return context.proceed(); - } - } - -## DeleteInterceptor - - package org.superbiz.injection.tx; - - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - /** - * @version $Revision$ $Date$ - */ - public class DeleteInterceptor { - - @AroundInvoke - public Object invoke(InvocationContext context) throws Exception { - // Log Delete - return context.proceed(); - } - } - -## Movie - - package org.superbiz.injection.tx; - - import javax.persistence.Entity; - - @Entity - public class Movie { - - private String director; - private String title; - private int year; - - public Movie() { - } - - public Movie(String director, String title, int year) { - this.director = director; - this.title = title; - this.year = year; - } - - public String getDirector() { - return director; - } - - public void setDirector(String director) { - this.director = director; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getYear() { - return year; - } - - public void setYear(int year) { - this.year = year; - } - - } - -## Movies - - package org.superbiz.injection.tx; - - import javax.annotation.security.PermitAll; - import javax.annotation.security.RolesAllowed; - import javax.ejb.Stateful; - import javax.ejb.TransactionAttribute; - import javax.ejb.TransactionAttributeType; - import javax.interceptor.Interceptors; - import javax.persistence.EntityManager; - import javax.persistence.PersistenceContext; - import javax.persistence.PersistenceContextType; - import javax.persistence.Query; - import java.util.List; - - //START SNIPPET: code - @Stateful - public class Movies { - - @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) - private EntityManager entityManager; - - @RolesAllowed({"Employee", "Manager"}) - @TransactionAttribute(TransactionAttributeType.REQUIRED) - @Interceptors(AddInterceptor.class) - public void addMovie(Movie movie) throws Exception { - entityManager.persist(movie); - } - - @RolesAllowed({"Manager"}) - @TransactionAttribute(TransactionAttributeType.MANDATORY) - @Interceptors(DeleteInterceptor.class) - public void deleteMovie(Movie movie) throws Exception { - entityManager.remove(movie); - } - - @PermitAll - @TransactionAttribute(TransactionAttributeType.SUPPORTS) - public List getMovies() throws Exception { - Query query = entityManager.createQuery("SELECT m from Movie as m"); - return query.getResultList(); - } - } - -## ReadInterceptor - - package org.superbiz.injection.tx; - - import javax.interceptor.AroundInvoke; - import javax.interceptor.InvocationContext; - - /** - * @version $Revision$ $Date$ - */ - public class ReadInterceptor { - - @AroundInvoke - public Object invoke(InvocationContext context) throws Exception { - // Log Delete - return context.proceed(); - } - } - -## persistence.xml - - - - - movieDatabase - movieDatabaseUnmanaged - org.superbiz.injection.tx.Movie - - - - - - - -## MoviesTest - - package org.superbiz.injection.tx; - - import junit.framework.TestCase; - - import javax.annotation.security.RunAs; - import javax.ejb.EJB; - import javax.ejb.Stateless; - import javax.ejb.TransactionAttribute; - import javax.ejb.TransactionAttributeType; - import javax.ejb.embeddable.EJBContainer; - import java.util.List; - import java.util.Properties; - import java.util.concurrent.Callable; - - import static javax.ejb.TransactionAttributeType.REQUIRES_NEW; - - /** - * See the transaction-rollback example as it does the same thing - * via UserTransaction and shows more techniques for rollback - */ - //START SNIPPET: code - public class MoviesTest extends TestCase { - - @EJB - private Movies movies; - - @EJB(beanName = "TransactionBean") - private Caller transactionalCaller; - - @EJB(beanName = "NoTransactionBean") - private Caller nonTransactionalCaller; - - protected void setUp() throws Exception { - final Properties p = new Properties(); - p.put("movieDatabase", "new://Resource?type=DataSource"); - p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); - p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); - - EJBContainer.createEJBContainer(p).getContext().bind("inject", this); - } - - private void doWork() throws Exception { - - movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992)); - movies.addMovie(new Movie("Joel Coen", "Fargo", 1996)); - movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998)); - - List list = movies.getMovies(); - assertEquals("List.size()", 3, list.size()); - - for (Movie movie : list) { - movies.deleteMovie(movie); - } - - assertEquals("Movies.getMovies()", 0, movies.getMovies().size()); - } - - public void testWithTransaction() throws Exception { - transactionalCaller.call(new Callable() { - public Object call() throws Exception { - doWork(); - return null; - } - }); - } - - public void testWithoutTransaction() throws Exception { - try { - nonTransactionalCaller.call(new Callable() { - public Object call() throws Exception { - doWork(); - return null; - } - }); - fail("The Movies bean should be using TransactionAttributeType.MANDATORY"); - } catch (javax.ejb.EJBException e) { - // good, our Movies bean is using TransactionAttributeType.MANDATORY as we want - } - } - - - public static interface Caller { - public V call(Callable callable) throws Exception; - } - - /** - * This little bit of magic allows our test code to execute in - * the scope of a container controlled transaction. - */ - @Stateless - @RunAs("Manager") - @TransactionAttribute(REQUIRES_NEW) - public static class TransactionBean implements Caller { - - public V call(Callable callable) throws Exception { - return callable.call(); - } - } - - @Stateless - @RunAs("Manager") - @TransactionAttribute(TransactionAttributeType.NEVER) - public static class NoTransactionBean implements Caller { - - public V call(Callable callable) throws Exception { - return callable.call(); - } - } - } - -# Running - - - ------------------------------------------------------- - T E S T S - ------------------------------------------------------- - Running org.superbiz.injection.tx.MoviesTest - Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06 - http://tomee.apache.org/ - INFO - openejb.home = /Users/dblevins/examples/movies-complete - INFO - openejb.base = /Users/dblevins/examples/movies-complete - INFO - Using 'javax.ejb.embeddable.EJBContainer=true' - INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) - INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) - INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database) - INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/classes - INFO - Found EjbModule in classpath: /Users/dblevins/examples/movies-complete/target/test-classes - INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/classes - INFO - Beginning load: /Users/dblevins/examples/movies-complete/target/test-classes - INFO - Configuring enterprise application: /Users/dblevins/examples/movies-complete - INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container) - INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container) - INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) - INFO - Auto-creating a container for bean TransactionBean: Container(type=STATELESS, id=Default Stateless Container) - INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) - INFO - Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default Managed Container) - INFO - Configuring PersistenceUnit(name=movie-unit) - INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'. - INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase) - INFO - Adjusting PersistenceUnit movie-unit to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged' - INFO - Enterprise application "/Users/dblevins/examples/movies-complete" loaded. - INFO - Assembling app: /Users/dblevins/examples/movies-complete - INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 402ms - INFO - Jndi(name="java:global/movies-complete/Movies!org.superbiz.injection.tx.Movies") - INFO - Jndi(name="java:global/movies-complete/Movies") - INFO - Jndi(name="java:global/movies-complete/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller") - INFO - Jndi(name="java:global/movies-complete/TransactionBean") - INFO - Jndi(name="java:global/movies-complete/NoTransactionBean!org.superbiz.injection.tx.MoviesTest$Caller") - INFO - Jndi(name="java:global/movies-complete/NoTransactionBean") - INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest") - INFO - Jndi(name="java:global/EjbModule1013462002/org.superbiz.injection.tx.MoviesTest") - INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container) - INFO - Created Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container) - INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container) - INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container) - INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container) - INFO - Started Ejb(deployment-id=NoTransactionBean, ejb-name=NoTransactionBean, container=Default Stateless Container) - INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, container=Default Stateless Container) - INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed Container) - INFO - Deployed Application(path=/Users/dblevins/examples/movies-complete) - INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization - Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.418 sec - - Results : - - Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 - diff --git a/examples/decorators/README.adoc b/examples/decorators/README.adoc new file mode 100644 index 00000000000..b2be25f5454 --- /dev/null +++ b/examples/decorators/README.adoc @@ -0,0 +1,411 @@ +index-group=CDI +type=page +status=published + += Decorators + +== AccessDeniedException + +[source,java] +---- +package org.superbiz.cdi.decorators; + +import javax.ejb.ApplicationException; + +/** + * @version $Revision$ $Date$ + */ +@ApplicationException +public class AccessDeniedException extends RuntimeException { + public AccessDeniedException(String s) { + super(s); + } +} +---- + +== Calculator + +[source,java] +---- +package org.superbiz.cdi.decorators; + +/** + * @version $Revision$ $Date$ + */ +public interface Calculator { + + public int add(int a, int b); + + public int subtract(int a, int b); + + public int multiply(int a, int b); + + public int divide(int a, int b); + + public int remainder(int a, int b); +} +---- + +== CalculatorBean + +[source,java] +---- +package org.superbiz.cdi.decorators; + +import javax.annotation.Resource; +import javax.ejb.SessionContext; +import javax.ejb.Stateless; +import javax.enterprise.inject.Produces; + +@Stateless +public class CalculatorBean implements Calculator { + + @Produces + @Resource + private SessionContext sessionContext; + + public int add(int a, int b) { + return a + b; + } + + public int subtract(int a, int b) { + return a - b; + } + + public int multiply(int a, int b) { + return a * b; + } + + public int divide(int a, int b) { + return a / b; + } + + public int remainder(int a, int b) { + return a % b; + } +} +---- + +== CalculatorLogging + +[source,java] +---- +package org.superbiz.cdi.decorators; + +import javax.decorator.Decorator; +import javax.decorator.Delegate; +import javax.inject.Inject; +import java.util.logging.Logger; + +@Decorator +public class CalculatorLogging implements Calculator { + + private Logger logger = Logger.getLogger("Calculator"); + + @Inject + @Delegate + private Calculator calculator; + + @Override + public int add(int a, int b) { + logger.fine(String.format("add(%s, %s)", a, b)); + return calculator.add(a, b); + } + + @Override + public int subtract(int a, int b) { + return calculator.subtract(a, b); + } + + @Override + public int multiply(int a, int b) { + logger.finest(String.format("multiply(%s, %s)", a, b)); + return calculator.multiply(a, b); + } + + @Override + public int divide(int a, int b) { + return calculator.divide(a, b); + } + + @Override + public int remainder(int a, int b) { + logger.info(String.format("remainder(%s, %s)", a, b)); + return calculator.remainder(a, b); + } +} +---- + +== CalculatorSecurity + +[source,java] +---- +package org.superbiz.cdi.decorators; + +import javax.decorator.Decorator; +import javax.decorator.Delegate; +import javax.ejb.SessionContext; +import javax.inject.Inject; + +@Decorator +public class CalculatorSecurity implements Calculator { + + @Inject + @Delegate + private Calculator calculator; + + @Inject + private SessionContext sessionContext; + + @Override + public int add(int a, int b) { + return calculator.add(a, b); + } + + @Override + public int subtract(int a, int b) { + // Caller must pass a security check to call subtract + if (!sessionContext.isCallerInRole("Manager")) throw new AccessDeniedException(sessionContext.getCallerPrincipal().getName()); + + return calculator.subtract(a, b); + } + + @Override + public int multiply(int a, int b) { + return calculator.multiply(a, b); + } + + @Override + public int divide(int a, int b) { + return calculator.divide(a, b); + } + + @Override + public int remainder(int a, int b) { + return calculator.remainder(a, b); + } +} +---- + +== beans.xml + +[source,java] +---- + + + + org.superbiz.cdi.decorators.CalculatorSecurity + org.superbiz.cdi.decorators.CalculatorLogging + + +---- + +== CalculatorTest + +[source,java] +---- +package org.superbiz.cdi.decorators; + +import junit.framework.TestCase; + +import javax.annotation.security.RunAs; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.ejb.embeddable.EJBContainer; +import java.util.concurrent.Callable; + +public class CalculatorTest extends TestCase { + + @EJB + private Calculator calculator; + + @EJB + private ManagerBean manager; + + /** + * Bootstrap the Embedded EJB Container + * + * @throws Exception + */ + protected void setUp() throws Exception { + EJBContainer.createEJBContainer().getContext().bind("inject", this); + } + + /** + * Test Add method + */ + public void testAdd() { + + assertEquals(10, calculator.add(4, 6)); + } + + /** + * Test Subtract method + */ + public void testSubtract() { + + try { + calculator.subtract(4, 6); + + fail("AccessDeniedException should have been thrown for unauthenticated access"); + } catch (AccessDeniedException expected) { + // pass + } + + final int result = manager.call(new Callable() { + public Integer call() { + return calculator.subtract(4, 6); + } + }); + + assertEquals(-2, result); + } + + /** + * Test Multiply method + */ + public void testMultiply() { + + assertEquals(24, calculator.multiply(4, 6)); + } + + /** + * Test Divide method + */ + public void testDivide() { + + assertEquals(2, calculator.divide(12, 6)); + } + + /** + * Test Remainder method + */ + public void testRemainder() { + + assertEquals(4, calculator.remainder(46, 6)); + } + + @Stateless + @RunAs("Manager") + public static class ManagerBean { + + public V call(Callable callable) { + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } +} +---- + +== Running + +---- +------------------------------------------------------- + T E S T S +------------------------------------------------------- +Running org.superbiz.cdi.decorators.CalculatorTest +Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/decorators +INFO - openejb.base = /Users/dblevins/examples/decorators +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/classes +INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/test-classes +INFO - Beginning load: /Users/dblevins/examples/decorators/target/classes +INFO - Beginning load: /Users/dblevins/examples/decorators/target/test-classes +INFO - Configuring enterprise application: /Users/dblevins/examples/decorators +WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime. +INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) +INFO - Auto-creating a container for bean decorators.Comp: Container(type=MANAGED, id=Default Managed Container) +INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) +INFO - Auto-creating a container for bean CalculatorBean: Container(type=STATELESS, id=Default Stateless Container) +INFO - Enterprise application "/Users/dblevins/examples/decorators" loaded. +INFO - Assembling app: /Users/dblevins/examples/decorators +INFO - Jndi(name="java:global/decorators/decorators.Comp!org.apache.openejb.BeanContext$Comp") +INFO - Jndi(name="java:global/decorators/decorators.Comp") +INFO - Jndi(name="java:global/decorators/CalculatorBean!org.superbiz.cdi.decorators.Calculator") +INFO - Jndi(name="java:global/decorators/CalculatorBean") +INFO - Jndi(name="java:global/decorators/ManagerBean!org.superbiz.cdi.decorators.CalculatorTest$ManagerBean") +INFO - Jndi(name="java:global/decorators/ManagerBean") +INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest!org.superbiz.cdi.decorators.CalculatorTest") +INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest") +INFO - Created Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container) +INFO - Created Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container) +INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container) +INFO - Created Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container) +INFO - Started Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container) +INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container) +INFO - Deployed Application(path=/Users/dblevins/examples/decorators) +INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization +Oct 29, 2011 11:41:04 AM org.apache.webbeans.decorator.DelegateHandler invoke +SEVERE: Exception in calling method : [subtract] in decorator class : [org.superbiz.cdi.decorators.CalculatorSecurity]. Look in the log for target checked exception. +org.superbiz.cdi.decorators.AccessDeniedException: guest + at org.superbiz.cdi.decorators.CalculatorSecurity.subtract(CalculatorSecurity.java:43) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) + at java.lang.reflect.Method.invoke(Method.java:597) + at org.apache.webbeans.decorator.DelegateHandler.invoke(DelegateHandler.java:98) + at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:127) + at org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:45) + at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:66) + at org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:72) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) + at java.lang.reflect.Method.invoke(Method.java:597) + at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181) + at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163) + at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:130) + at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:226) + at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:178) + at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:255) + at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:235) + at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92) + at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284) + at $Proxy44.subtract(Unknown Source) + at org.superbiz.cdi.decorators.CalculatorTest.testSubtract(CalculatorTest.java:59) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) + at java.lang.reflect.Method.invoke(Method.java:597) + at junit.framework.TestCase.runTest(TestCase.java:168) + at junit.framework.TestCase.runBare(TestCase.java:134) + at junit.framework.TestResult$1.protect(TestResult.java:110) + at junit.framework.TestResult.runProtected(TestResult.java:128) + at junit.framework.TestResult.run(TestResult.java:113) + at junit.framework.TestCase.run(TestCase.java:124) + at junit.framework.TestSuite.runTest(TestSuite.java:232) + at junit.framework.TestSuite.run(TestSuite.java:227) + at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) + at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) + at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) + at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) + at java.lang.reflect.Method.invoke(Method.java:597) + at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) + at $Proxy0.invoke(Unknown Source) + at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) + at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) + at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) +INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization +INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization +INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.338 sec + +Results : + +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0 +.... diff --git a/examples/decorators/README.md b/examples/decorators/README.md deleted file mode 100644 index f548d800b34..00000000000 --- a/examples/decorators/README.md +++ /dev/null @@ -1,393 +0,0 @@ -index-group=CDI -type=page -status=published -title=Decorators -~~~~~~ - -*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* - -## AccessDeniedException - - package org.superbiz.cdi.decorators; - - import javax.ejb.ApplicationException; - - /** - * @version $Revision$ $Date$ - */ - @ApplicationException - public class AccessDeniedException extends RuntimeException { - public AccessDeniedException(String s) { - super(s); - } - } - -## Calculator - - package org.superbiz.cdi.decorators; - - /** - * @version $Revision$ $Date$ - */ - public interface Calculator { - - public int add(int a, int b); - - public int subtract(int a, int b); - - public int multiply(int a, int b); - - public int divide(int a, int b); - - public int remainder(int a, int b); - } - -## CalculatorBean - - package org.superbiz.cdi.decorators; - - import javax.annotation.Resource; - import javax.ejb.SessionContext; - import javax.ejb.Stateless; - import javax.enterprise.inject.Produces; - - @Stateless - public class CalculatorBean implements Calculator { - - @Produces - @Resource - private SessionContext sessionContext; - - public int add(int a, int b) { - return a + b; - } - - public int subtract(int a, int b) { - return a - b; - } - - public int multiply(int a, int b) { - return a * b; - } - - public int divide(int a, int b) { - return a / b; - } - - public int remainder(int a, int b) { - return a % b; - } - } - -## CalculatorLogging - - package org.superbiz.cdi.decorators; - - import javax.decorator.Decorator; - import javax.decorator.Delegate; - import javax.inject.Inject; - import java.util.logging.Logger; - - @Decorator - public class CalculatorLogging implements Calculator { - - private Logger logger = Logger.getLogger("Calculator"); - - @Inject - @Delegate - private Calculator calculator; - - @Override - public int add(int a, int b) { - logger.fine(String.format("add(%s, %s)", a, b)); - return calculator.add(a, b); - } - - @Override - public int subtract(int a, int b) { - return calculator.subtract(a, b); - } - - @Override - public int multiply(int a, int b) { - logger.finest(String.format("multiply(%s, %s)", a, b)); - return calculator.multiply(a, b); - } - - @Override - public int divide(int a, int b) { - return calculator.divide(a, b); - } - - @Override - public int remainder(int a, int b) { - logger.info(String.format("remainder(%s, %s)", a, b)); - return calculator.remainder(a, b); - } - } - -## CalculatorSecurity - - package org.superbiz.cdi.decorators; - - import javax.decorator.Decorator; - import javax.decorator.Delegate; - import javax.ejb.SessionContext; - import javax.inject.Inject; - - @Decorator - public class CalculatorSecurity implements Calculator { - - @Inject - @Delegate - private Calculator calculator; - - @Inject - private SessionContext sessionContext; - - @Override - public int add(int a, int b) { - return calculator.add(a, b); - } - - @Override - public int subtract(int a, int b) { - // Caller must pass a security check to call subtract - if (!sessionContext.isCallerInRole("Manager")) throw new AccessDeniedException(sessionContext.getCallerPrincipal().getName()); - - return calculator.subtract(a, b); - } - - @Override - public int multiply(int a, int b) { - return calculator.multiply(a, b); - } - - @Override - public int divide(int a, int b) { - return calculator.divide(a, b); - } - - @Override - public int remainder(int a, int b) { - return calculator.remainder(a, b); - } - } - -## beans.xml - - - - - org.superbiz.cdi.decorators.CalculatorSecurity - org.superbiz.cdi.decorators.CalculatorLogging - - - - -## CalculatorTest - - package org.superbiz.cdi.decorators; - - import junit.framework.TestCase; - - import javax.annotation.security.RunAs; - import javax.ejb.EJB; - import javax.ejb.Stateless; - import javax.ejb.embeddable.EJBContainer; - import java.util.concurrent.Callable; - - public class CalculatorTest extends TestCase { - - @EJB - private Calculator calculator; - - @EJB - private ManagerBean manager; - - /** - * Bootstrap the Embedded EJB Container - * - * @throws Exception - */ - protected void setUp() throws Exception { - EJBContainer.createEJBContainer().getContext().bind("inject", this); - } - - /** - * Test Add method - */ - public void testAdd() { - - assertEquals(10, calculator.add(4, 6)); - } - - /** - * Test Subtract method - */ - public void testSubtract() { - - try { - calculator.subtract(4, 6); - - fail("AccessDeniedException should have been thrown for unauthenticated access"); - } catch (AccessDeniedException expected) { - // pass - } - - final int result = manager.call(new Callable() { - public Integer call() { - return calculator.subtract(4, 6); - } - }); - - assertEquals(-2, result); - } - - /** - * Test Multiply method - */ - public void testMultiply() { - - assertEquals(24, calculator.multiply(4, 6)); - } - - /** - * Test Divide method - */ - public void testDivide() { - - assertEquals(2, calculator.divide(12, 6)); - } - - /** - * Test Remainder method - */ - public void testRemainder() { - - assertEquals(4, calculator.remainder(46, 6)); - } - - @Stateless - @RunAs("Manager") - public static class ManagerBean { - - public V call(Callable callable) { - try { - return callable.call(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - } - -# Running - - - ------------------------------------------------------- - T E S T S - ------------------------------------------------------- - Running org.superbiz.cdi.decorators.CalculatorTest - Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06 - http://tomee.apache.org/ - INFO - openejb.home = /Users/dblevins/examples/decorators - INFO - openejb.base = /Users/dblevins/examples/decorators - INFO - Using 'javax.ejb.embeddable.EJBContainer=true' - INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) - INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) - INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/classes - INFO - Found EjbModule in classpath: /Users/dblevins/examples/decorators/target/test-classes - INFO - Beginning load: /Users/dblevins/examples/decorators/target/classes - INFO - Beginning load: /Users/dblevins/examples/decorators/target/test-classes - INFO - Configuring enterprise application: /Users/dblevins/examples/decorators - WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime. - INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) - INFO - Auto-creating a container for bean decorators.Comp: Container(type=MANAGED, id=Default Managed Container) - INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) - INFO - Auto-creating a container for bean CalculatorBean: Container(type=STATELESS, id=Default Stateless Container) - INFO - Enterprise application "/Users/dblevins/examples/decorators" loaded. - INFO - Assembling app: /Users/dblevins/examples/decorators - INFO - Jndi(name="java:global/decorators/decorators.Comp!org.apache.openejb.BeanContext$Comp") - INFO - Jndi(name="java:global/decorators/decorators.Comp") - INFO - Jndi(name="java:global/decorators/CalculatorBean!org.superbiz.cdi.decorators.Calculator") - INFO - Jndi(name="java:global/decorators/CalculatorBean") - INFO - Jndi(name="java:global/decorators/ManagerBean!org.superbiz.cdi.decorators.CalculatorTest$ManagerBean") - INFO - Jndi(name="java:global/decorators/ManagerBean") - INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest!org.superbiz.cdi.decorators.CalculatorTest") - INFO - Jndi(name="java:global/EjbModule628834558/org.superbiz.cdi.decorators.CalculatorTest") - INFO - Created Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container) - INFO - Created Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container) - INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container) - INFO - Created Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container) - INFO - Started Ejb(deployment-id=CalculatorBean, ejb-name=CalculatorBean, container=Default Stateless Container) - INFO - Started Ejb(deployment-id=decorators.Comp, ejb-name=decorators.Comp, container=Default Managed Container) - INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, container=Default Stateless Container) - INFO - Started Ejb(deployment-id=org.superbiz.cdi.decorators.CalculatorTest, ejb-name=org.superbiz.cdi.decorators.CalculatorTest, container=Default Managed Container) - INFO - Deployed Application(path=/Users/dblevins/examples/decorators) - INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization - Oct 29, 2011 11:41:04 AM org.apache.webbeans.decorator.DelegateHandler invoke - SEVERE: Exception in calling method : [subtract] in decorator class : [org.superbiz.cdi.decorators.CalculatorSecurity]. Look in the log for target checked exception. - org.superbiz.cdi.decorators.AccessDeniedException: guest - at org.superbiz.cdi.decorators.CalculatorSecurity.subtract(CalculatorSecurity.java:43) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) - at java.lang.reflect.Method.invoke(Method.java:597) - at org.apache.webbeans.decorator.DelegateHandler.invoke(DelegateHandler.java:98) - at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:127) - at org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:45) - at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:66) - at org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:72) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) - at java.lang.reflect.Method.invoke(Method.java:597) - at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181) - at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163) - at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:130) - at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:226) - at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:178) - at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:255) - at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:235) - at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92) - at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284) - at $Proxy44.subtract(Unknown Source) - at org.superbiz.cdi.decorators.CalculatorTest.testSubtract(CalculatorTest.java:59) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) - at java.lang.reflect.Method.invoke(Method.java:597) - at junit.framework.TestCase.runTest(TestCase.java:168) - at junit.framework.TestCase.runBare(TestCase.java:134) - at junit.framework.TestResult$1.protect(TestResult.java:110) - at junit.framework.TestResult.runProtected(TestResult.java:128) - at junit.framework.TestResult.run(TestResult.java:113) - at junit.framework.TestCase.run(TestCase.java:124) - at junit.framework.TestSuite.runTest(TestSuite.java:232) - at junit.framework.TestSuite.run(TestSuite.java:227) - at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) - at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) - at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) - at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) - at java.lang.reflect.Method.invoke(Method.java:597) - at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) - at $Proxy0.invoke(Unknown Source) - at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) - at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) - at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) - INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization - INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization - INFO - EJBContainer already initialized. Call ejbContainer.close() to allow reinitialization - Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.338 sec - - Results : - - Tests run: 5, Failures: 0, Errors: 0, Skipped: 0 -