001 /*****************************************************************************
002 * Copyright (c) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 *****************************************************************************/
009
010 package org.picocontainer.gems.jndi;
011
012 import java.util.Properties;
013
014 import javax.naming.NamingException;
015
016 import org.picocontainer.ComponentAdapter;
017 import org.picocontainer.ComponentMonitor;
018 import org.picocontainer.LifecycleStrategy;
019 import org.picocontainer.Parameter;
020 import org.picocontainer.PicoCompositionException;
021 import org.picocontainer.behaviors.AbstractBehaviorFactory;
022
023 /**
024 * produce JNDI exposing behaviour
025 *
026 * @author k.pribluda
027 *
028 * @param <T>
029 */
030 @SuppressWarnings("serial")
031 public class JNDIExposing extends AbstractBehaviorFactory {
032
033 @Override
034 public <T> ComponentAdapter<T> addComponentAdapter(
035 final ComponentMonitor componentMonitor,
036 final LifecycleStrategy lifecycleStrategy,
037 final Properties componentProperties, final ComponentAdapter<T> adapter) {
038 try {
039 return new JNDIExposed<T>(super.addComponentAdapter(
040 componentMonitor, lifecycleStrategy, componentProperties,
041 adapter));
042 } catch (NamingException e) {
043 throw new PicoCompositionException(
044 "unable to create JNDI behaviour", e);
045 }
046 }
047
048 @Override
049 public <T> ComponentAdapter<T> createComponentAdapter(
050 final ComponentMonitor componentMonitor,
051 final LifecycleStrategy lifecycleStrategy,
052 final Properties componentProperties, final Object componentKey,
053 final Class<T> componentImplementation, final Parameter... parameters)
054 throws PicoCompositionException {
055 // TODO Auto-generated method stub
056 ComponentAdapter<T> componentAdapter = super.createComponentAdapter(
057 componentMonitor, lifecycleStrategy, componentProperties,
058 componentKey, componentImplementation, parameters);
059
060 try {
061 return new JNDIExposed<T>(componentAdapter);
062 } catch (NamingException e) {
063 throw new PicoCompositionException(
064 "unable to create JNDI behaviour", e);
065 }
066 }
067
068 }