Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2008, 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.serialization;
 
 import static org.jboss.weld.util.reflection.Reflections.cast;
 
 
 
Implementation of org.jboss.weld.serialization.spi.ContextualStore

Author(s):
Pete Muir
 
 public class ContextualStoreImpl implements ContextualStore {
 
     private static final String GENERATED_ID_PREFIX = ContextualStoreImpl.class.getName();
 
     // The map containing container-local contextuals
     private final ConcurrentMap<Contextual<?>, BeanIdentifiercontextuals;
     // Inverse mapping of container-local contextuals
 
     // The map containing passivation capable contextuals
 
     private final AtomicInteger idGenerator;
 
     private final String contextId;
 
     private final BeanIdentifierIndex beanIdentifierIndex;
 
     public ContextualStoreImpl(String contextIdBeanIdentifierIndex beanIdentifierIndex) {
         this. = contextId;
         this. = beanIdentifierIndex;
         this. = new AtomicInteger(0);
         this. = new ConcurrentHashMap<Contextual<?>, BeanIdentifier>();
         this. = new ConcurrentHashMap<BeanIdentifierContextual<?>>();
     }

    
Given a particular id, return the correct contextual. For contextuals which aren't passivation capable, the contextual can't be found in another container, and null will be returned.

Parameters:
id An identifier for the contextual
Returns:
the contextual
 
     public <C extends Contextual<I>, I> C getContextual(String id) {
         return this.<C, I>getContextual(new StringBeanIdentifier(id));
     }
 
     @Override
     @SuppressWarnings("unchecked")
     public <C extends Contextual<I>, I> C getContextual(BeanIdentifier identifier) {
         if (identifier.asString().startsWith()) {
             return (C) .get(identifier);
         } else {
             return (C) .get(identifier);
         }
     }

    
Add a contextual (if not already present) to the store, and return it's id. If the contextual is passivation capable, it's id will be used, otherwise an id will be generated

Parameters:
contextual the contextual to add
Returns:
the current id for the contextual
    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = "RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED", justification = "Using non-standard semantics of putIfAbsent")
    public BeanIdentifier putIfAbsent(Contextual<?> contextual) {
        if (contextual instanceof CommonBean<?>) {
            // this is a Bean<?> created by Weld
            CommonBean<?> bean = (CommonBean<?>) contextual;
            .putIfAbsent(bean.getIdentifier(), contextual);
            return bean.getIdentifier();
        }
        if (contextual instanceof PassivationCapable) {
            // this is an extension-provided passivation capable bean
            PassivationCapable passivationCapable = (PassivationCapablecontextual;
            String id = passivationCapable.getId();
            BeanIdentifier identifier = new StringBeanIdentifier(id);
            .putIfAbsent(identifiercontextual);
            return identifier;
        } else {
            BeanIdentifier id = .get(contextual);
            if (id != null) {
                return id;
            } else {
                synchronized (contextual) {
                    id = .get(contextual);
                    if (id == null) {
                        id = new StringBeanIdentifier(new StringBuilder().append().append(.incrementAndGet()).toString());
                        .put(contextualid);
                        .put(idcontextual);
                    }
                    return id;
                }
            }
        }
    }
    public <C extends Contextual<I>, I> SerializableContextual<C, I> getSerializableContextual(Contextual<I> contextual) {
        if (contextual instanceof SerializableContextual<?, ?>) {
            return cast(contextual);
        }
        return SerializableContextualFactory.create(, Reflections.<C> cast(contextual), this);
    }
    public <C extends Contextual<I>, I> SerializableContextualInstance<C, I> getSerializableContextualInstance(Contextual<I> contextual, I instanceCreationalContext<I> creationalContext) {
        return new SerializableContextualInstanceImpl<C, I>(Reflections.<C>cast(contextual), instancecreationalContextthis);
    }
    public void cleanup() {
        .clear();
        .clear();
    }
New to GrepCode? Check out our FAQ X