diff --git a/examples/jaxrs/pom.xml b/examples/jaxrs/pom.xml index 05537f0..bcb92f4 100644 --- a/examples/jaxrs/pom.xml +++ b/examples/jaxrs/pom.xml @@ -31,6 +31,11 @@ + + org.jboss.seam.xml + seam-xml-config + ${seam.xml.version} + org.jboss.logging jboss-logging diff --git a/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/db/ManagedPeristenceContextProducer.java b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/db/ManagedPeristenceContextProducer.java index 759fc76..b0b8e52 100644 --- a/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/db/ManagedPeristenceContextProducer.java +++ b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/db/ManagedPeristenceContextProducer.java @@ -24,7 +24,7 @@ import org.jboss.seam.persistence.SeamManaged; -import javax.enterprise.context.RequestScoped; +import javax.enterprise.context.ConversationScoped; import javax.enterprise.inject.Produces; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; @@ -32,7 +32,7 @@ public class ManagedPeristenceContextProducer { @PersistenceUnit(unitName = "libraryDatabase") - @RequestScoped + @ConversationScoped @Produces @SeamManaged EntityManagerFactory emf; diff --git a/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/CatchBridge.java b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/CatchBridge.java index 290b66e..c1fb3ba 100644 --- a/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/CatchBridge.java +++ b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/CatchBridge.java @@ -25,9 +25,10 @@ import org.jboss.seam.exception.control.ExceptionToCatchEvent; import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.RequestScoped; +import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.event.Event; -import javax.enterprise.inject.Produces; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; import javax.inject.Inject; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; @@ -37,22 +38,24 @@ @ApplicationScoped public class CatchBridge implements ExceptionMapper { - @Inject @RestCatch - private Response.ResponseBuilder responseBuilder; +// @Inject @RestCatch +// private Response.ResponseBuilder responseBuilder; @Inject Event event; - @Produces - @RequestScoped - @RestCatch - public Response.ResponseBuilder createErrorResponseBuilder() - { - return Response.serverError(); - } + @Inject BeanManager bm; public Response toResponse(Throwable exception) { + final Class responseBuilderType = Response.ResponseBuilder.class; + + final Bean bean = this.bm.resolve(this.bm.getBeans(responseBuilderType, RestCatchLiteral.INSTANCE)); + final CreationalContext ctx = this.bm.createCreationalContext(bean); + final Response.ResponseBuilder responseBuilder = (Response.ResponseBuilder) this.bm.getReference(bean, + responseBuilderType, + ctx); + event.fire(new ExceptionToCatchEvent(exception, RestCatchLiteral.INSTANCE)); - return this.responseBuilder.build(); + return responseBuilder.build(); } } diff --git a/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/RequestBuilderProducer.java b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/RequestBuilderProducer.java new file mode 100644 index 0000000..92bc707 --- /dev/null +++ b/examples/jaxrs/src/main/java/org/jboss/seam/exception/control/example/jaxrs/handler/RequestBuilderProducer.java @@ -0,0 +1,38 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2010, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.seam.exception.control.example.jaxrs.handler; + +import javax.enterprise.context.RequestScoped; +import javax.enterprise.inject.Produces; +import javax.ws.rs.core.Response; + +public class RequestBuilderProducer +{ + @Produces + @RequestScoped + @RestCatch + public Response.ResponseBuilder createErrorResponseBuilder() + { + return Response.serverError(); + } +} diff --git a/examples/jaxrs/src/main/resources/META-INF/persistence.xml b/examples/jaxrs/src/main/resources/META-INF/persistence.xml index 1fade34..5bca86d 100644 --- a/examples/jaxrs/src/main/resources/META-INF/persistence.xml +++ b/examples/jaxrs/src/main/resources/META-INF/persistence.xml @@ -29,6 +29,8 @@ jdbc/__default + +