Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2012, Red Hat, Inc., and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
  * http://www.apache.org/licenses/LICENSE-2.0
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.jboss.weld.context;
 
 
Wraps a passivating context with a wrapper that guarantees that each call to the context is done with serializable javax.enterprise.context.spi.Contextual. The wrapper uses org.jboss.weld.serialization.spi.helpers.SerializableContextual if necessary.

Author(s):
Jozef Hartinger
 
 public class PassivatingContextWrapper {
 
     private PassivatingContextWrapper() {
     }
 
     public static Context wrap(Context contextContextualStore store) {
         if (context instanceof AlterableContext) {
             return new AlterableContextWrapper((AlterableContextcontextstore);
         } else {
             return new ContextWrapper(contextstore);
         }
     }
 
     public static Context unwrap(Context context) {
         if (context instanceof AbstractPassivatingContextWrapper<?>) {
             AbstractPassivatingContextWrapper<?> wrapper = (AbstractPassivatingContextWrapper<?>) context;
             return wrapper.delegate();
         } else {
             return context;
         }
     }
 
     private abstract static class AbstractPassivatingContextWrapper<C extends Contextextends ForwardingContext {
 
         private final C context;
         protected final ContextualStore store;
 
         public AbstractPassivatingContextWrapper(C contextContextualStore store) {
             this. = context;
             this. = store;
         }
 
         @Override
         public <T> T get(Contextual<T> contextual) {
             contextual = .getSerializableContextual(contextual);
             return .get(contextual);
         }
 
         @Override
         public <T> T get(Contextual<T> contextualCreationalContext<T> creationalContext) {
             contextual = .getSerializableContextual(contextual);
             return .get(contextualcreationalContext);
         }
 
         @Override
         protected C delegate() {
             return ;
         }
     }
 
     private static class ContextWrapper extends AbstractPassivatingContextWrapper<Context> {
 
         public ContextWrapper(Context contextContextualStore store) {
             super(contextstore);
         }
     }
 
     private static class AlterableContextWrapper extends AbstractPassivatingContextWrapper<AlterableContextimplements AlterableContext {
 
         public AlterableContextWrapper(AlterableContext contextContextualStore store) {
             super(contextstore);
         }
 
         @Override
         public void destroy(Contextual<?> contextual) {
            contextual = .getSerializableContextual(contextual);
            delegate().destroy(contextual);
        }
    }
New to GrepCode? Check out our FAQ X