Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/com.sun.jersey.source/com/sun/jersey/server/impl/resource/PerRequestFactory.java')
-rw-r--r--plugins/com.sun.jersey.source/com/sun/jersey/server/impl/resource/PerRequestFactory.java276
1 files changed, 0 insertions, 276 deletions
diff --git a/plugins/com.sun.jersey.source/com/sun/jersey/server/impl/resource/PerRequestFactory.java b/plugins/com.sun.jersey.source/com/sun/jersey/server/impl/resource/PerRequestFactory.java
deleted file mode 100644
index 1c15bf551b1..00000000000
--- a/plugins/com.sun.jersey.source/com/sun/jersey/server/impl/resource/PerRequestFactory.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License"). You
- * may not use this file except in compliance with the License. You can
- * obtain a copy of the License at
- * http://glassfish.java.net/public/CDDL+GPL_1_1.html
- * or packager/legal/LICENSE.txt. See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at packager/legal/LICENSE.txt.
- *
- * GPL Classpath Exception:
- * Oracle designates this particular file as subject to the "Classpath"
- * exception as provided by Oracle in the GPL Version 2 section of the License
- * file that accompanied this code.
- *
- * Modifications:
- * If applicable, add the following below the License Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyright [year] [name of copyright owner]"
- *
- * Contributor(s):
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license." If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above. However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.jersey.server.impl.resource;
-
-import com.sun.jersey.api.container.ContainerException;
-import com.sun.jersey.api.container.MappableContainerException;
-import com.sun.jersey.api.core.HttpContext;
-import com.sun.jersey.api.model.AbstractResource;
-import com.sun.jersey.core.spi.component.ioc.IoCComponentProvider;
-import com.sun.jersey.core.spi.component.ioc.IoCInstantiatedComponentProvider;
-import com.sun.jersey.core.spi.component.ioc.IoCProxiedComponentProvider;
-import com.sun.jersey.server.impl.inject.ServerInjectableProviderContext;
-import com.sun.jersey.server.spi.component.ResourceComponentConstructor;
-import com.sun.jersey.server.spi.component.ResourceComponentInjector;
-import com.sun.jersey.server.spi.component.ResourceComponentProvider;
-import com.sun.jersey.server.spi.component.ResourceComponentProviderFactory;
-import com.sun.jersey.core.spi.component.ComponentScope;
-import com.sun.jersey.core.spi.component.ioc.IoCDestroyable;
-import com.sun.jersey.server.spi.component.ResourceComponentDestructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-
-/**
- *
- * @author Paul.Sandoz@Sun.Com
- */
-public final class PerRequestFactory implements ResourceComponentProviderFactory {
- private static final Logger LOGGER = Logger.getLogger(PerRequestFactory.class.getName());
-
- private final ServerInjectableProviderContext sipc;
-
- private final HttpContext threadLocalHc;
-
- public static void destroy(HttpContext hc) {
- Map<AbstractPerRequest, Object> m = (Map<AbstractPerRequest, Object>)hc.getProperties().
- get(SCOPE_PER_REQUEST);
- if (m != null) {
- for (Map.Entry<AbstractPerRequest, Object> e : m.entrySet()) {
- try {
- e.getKey().destroy(e.getValue());
- } catch (ContainerException ex) {
- LOGGER.log(Level.SEVERE, "Unable to destroy resource", ex);
- }
- }
- }
- }
-
- public PerRequestFactory(
- @Context ServerInjectableProviderContext sipc,
- @Context HttpContext threadLocalHc) {
- this.sipc = sipc;
- this.threadLocalHc = threadLocalHc;
- }
-
- public ComponentScope getScope(Class c) {
- return ComponentScope.PerRequest;
- }
-
- public ResourceComponentProvider getComponentProvider(Class c) {
- return new PerRequest();
- }
-
- public ResourceComponentProvider getComponentProvider(IoCComponentProvider icp, Class c) {
- if (icp instanceof IoCInstantiatedComponentProvider) {
- return new PerRequestInstantiated((IoCInstantiatedComponentProvider)icp);
- } else if (icp instanceof IoCProxiedComponentProvider) {
- return new PerRequestProxied((IoCProxiedComponentProvider)icp);
- }
- throw new IllegalStateException();
- }
-
- private static final String SCOPE_PER_REQUEST = "com.sun.jersey.scope.PerRequest";
-
- private abstract class AbstractPerRequest implements ResourceComponentProvider {
-
- private ResourceComponentDestructor rcd;
-
- public final Object getInstance() {
- return getInstance(threadLocalHc);
- }
-
- public final ComponentScope getScope() {
- return ComponentScope.PerRequest;
- }
-
- public void init(AbstractResource abstractResource) {
- rcd = new ResourceComponentDestructor(abstractResource);
- }
-
- public final Object getInstance(HttpContext hc) {
- Map<AbstractPerRequest, Object> m = (Map<AbstractPerRequest, Object>)hc.getProperties().
- get(SCOPE_PER_REQUEST);
- if (m == null) {
- m = new HashMap<AbstractPerRequest, Object>();
- hc.getProperties().put(SCOPE_PER_REQUEST, m);
- } else {
- Object o = m.get(this);
- if (o != null) return o;
- }
-
- Object o = _getInstance(hc);
- m.put(this, o);
- return o;
- }
-
- public final void destroy() {
- }
-
- protected abstract Object _getInstance(HttpContext hc);
-
- public void destroy(Object o) {
- try {
- rcd.destroy(o);
- } catch (IllegalAccessException ex) {
- throw new ContainerException("Unable to destroy resource", ex);
- } catch (InvocationTargetException ex) {
- throw new ContainerException("Unable to destroy resource", ex);
- } catch (RuntimeException ex) {
- throw new ContainerException("Unable to destroy resource", ex);
- }
- }
- }
-
- private final class PerRequest extends AbstractPerRequest {
- private ResourceComponentConstructor rcc;
-
- @Override
- public void init(AbstractResource abstractResource) {
- super.init(abstractResource);
-
- this.rcc = new ResourceComponentConstructor(
- sipc,
- ComponentScope.PerRequest,
- abstractResource);
- }
-
- protected Object _getInstance(HttpContext hc) {
- try {
- return rcc.construct(hc);
- } catch (InstantiationException ex) {
- throw new ContainerException("Unable to create resource " + rcc.getResourceClass(), ex);
- } catch (IllegalAccessException ex) {
- throw new ContainerException("Unable to create resource " + rcc.getResourceClass(), ex);
- } catch (InvocationTargetException ex) {
- // Propagate the target exception so it may be mapped to a response
- throw new MappableContainerException(ex.getTargetException());
- } catch (WebApplicationException ex) {
- throw ex;
- } catch (RuntimeException ex) {
- throw new ContainerException("Unable to create resource " + rcc.getResourceClass(), ex);
- }
- }
- }
-
- private final class PerRequestInstantiated extends AbstractPerRequest {
- private final IoCInstantiatedComponentProvider iicp;
-
- private final IoCDestroyable destroyable;
-
- private ResourceComponentInjector rci;
-
- PerRequestInstantiated(IoCInstantiatedComponentProvider iicp) {
- this.iicp = iicp;
- this.destroyable = (iicp instanceof IoCDestroyable)
- ? (IoCDestroyable) iicp : null;
- }
-
- @Override
- public void init(AbstractResource abstractResource) {
- super.init(abstractResource);
- if (destroyable == null) {
- this.rci = new ResourceComponentInjector(
- sipc,
- ComponentScope.PerRequest,
- abstractResource);
- }
- }
-
- public Object _getInstance(HttpContext hc) {
- Object o = iicp.getInstance();
- if (destroyable == null) {
- rci.inject(hc, iicp.getInjectableInstance(o));
- }
- return o;
- }
-
- @Override
- public void destroy(Object o) {
- if (destroyable != null) {
- destroyable.destroy(o);
- } else {
- super.destroy(o);
- }
- }
- }
-
- private final class PerRequestProxied extends AbstractPerRequest {
- private final IoCProxiedComponentProvider ipcp;
-
- private ResourceComponentConstructor rcc;
-
- PerRequestProxied(IoCProxiedComponentProvider ipcp) {
- this.ipcp = ipcp;
- }
-
- @Override
- public void init(AbstractResource abstractResource) {
- super.init(abstractResource);
-
- this.rcc = new ResourceComponentConstructor(
- sipc,
- ComponentScope.PerRequest,
- abstractResource);
- }
-
- public Object _getInstance(HttpContext hc) {
- try {
- return ipcp.proxy(rcc.construct(hc));
- } catch (InstantiationException ex) {
- throw new ContainerException("Unable to create resource", ex);
- } catch (IllegalAccessException ex) {
- throw new ContainerException("Unable to create resource", ex);
- } catch (InvocationTargetException ex) {
- // Propagate the target exception so it may be mapped to a response
- throw new MappableContainerException(ex.getTargetException());
- } catch (WebApplicationException ex) {
- throw ex;
- } catch (RuntimeException ex) {
- throw new ContainerException("Unable to create resource", ex);
- }
- }
- }
-} \ No newline at end of file

Back to the top