Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2006, Red Hat Middleware LLC, and individual contributors
   * as indicated by the @author tags. See the copyright.txt file 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.resource.connectionmanager;
 
 import java.util.Set;
 
 
CachedConnectionInterceptor

Author(s):
David Jencks
Erwin Guib
Adrian Brock
Version:
$Revision: 76129 $
 
 {
    private final CachedConnectionManager ccm;
 
    private final Logger log = Logger.getLogger(getClass());
 
    private Container container;
 
    private EntityPersistenceManager pm;
 
    // contains the JNDI names of unshareable resources
    private Set unsharableResources = new HashSet();
 
    public CachedConnectionInterceptor() throws Exception
    {
       try
       {
          MBeanServer server = MBeanServerLocator.locateJBoss();
           = (CachedConnectionManagerserver.getAttribute(."Instance");
       }
       catch (Exception e)
       {
          JMXExceptionDecoder.rethrow(e);
          throw e;
       }
    }
 
    @SuppressWarnings("deprecation")
    public void start() throws Exception
    {
       .debug("start called in CachedConnectionInterceptor");
       if ( == null)
       {
          .warn("container is null, can't steal persistence manager");
          return;
       }
       if ( instanceof EntityContainer)
       {
          EntityContainer ec = (EntityContainer;
 
          if (ec.getPersistenceManager() == null)
          {
             .info("no persistence manager in container!");
            return;
         }
         if (ec.getPersistenceManager() == this)
         {
            .info(" persistence manager in container already set!");
            return;
         }
          = ec.getPersistenceManager();
         ec.setPersistenceManager(this);
      }
      // get the JNDI names for all resources that are referenced "Unshareable"
      org.jboss.metadata.BeanMetaData bmd = .getBeanMetaData();
      org.jboss.metadata.ApplicationMetaData appMetaData = bmd.getApplicationMetaData();
      org.jboss.metadata.ResourceRefMetaData resRefMetaData;
      String jndiName;
      for (Iterator iter = bmd.getResourceReferences(); iter.hasNext();)
      {
         resRefMetaData = (org.jboss.metadata.ResourceRefMetaData) iter.next();
         jndiName = resRefMetaData.getJndiName();
         if (jndiName == null)
         {
            jndiName = appMetaData.getResourceByName(resRefMetaData.getResourceName());
         }
         if (jndiName != null && resRefMetaData.isShareable() == false)
         {
            int i = jndiName.indexOf(':');
            if (jndiName.charAt(i + 1) == '/')
            {
               i++;
            }
            .add(jndiName.substring(i + 1));
         }
      }
   }
   public void stop()
   {
      if ( != null &&  != null && ((EntityContainer).getPersistenceManager() == this)
      {
          = null;
      }
   }
   public Object invoke(Invocation mithrows Exception
   {
      try
      {
         try
         {
            return getNext().invoke(mi);
         }
         finally
         {
         }
      }
      catch (ResourceException e)
      {
         InvocationType type = mi.getType();
         boolean isLocal = (type == . || type == .);
         if (isLocal)
            throw new EJBException("Resource problem during invoke"e);
         else
            throw new RemoteException("Resource problem during invoke"e);
      }
   }
   public Object invokeHome(Invocation mithrows Exception
   {
      if (ctx == null)
         return getNext().invokeHome(mi);
      else
      {
         Object key = ctx.getInstance();
         try
         {
            .pushMetaAwareObject(key);
            try
            {
               return getNext().invokeHome(mi);
            }
            finally
            {
               .popMetaAwareObject();
            }
         }
         catch (ResourceException e)
         {
            InvocationType type = mi.getType();
            boolean isLocal = (type == . || type == .);
            if (isLocal)
               throw new EJBException("Resource problem during invokeHome"e);
            else
               throw new RemoteException("Resource problem during invokeHome"e);
         }
      }
   }
   public void setContainer(Container container)
   {
      this. = container;
   }
   public Container getContainer()
   {
      return ;
   }
   public Object createBeanClassInstance() throws Exception
   {
      return .createBeanClassInstance();
   }
   public void createEntity(Method mObject[] argsEntityEnterpriseContext instancethrows Exception
   {
      .createEntity(margsinstance);
   }
   public void postCreateEntity(Method mObject[] argsEntityEnterpriseContext instancethrows Exception
   {
      .postCreateEntity(margsinstance);
   }
   public Object findEntity(Method finderMethodObject[] argsEntityEnterpriseContext instance,
         GenericEntityObjectFactory factorythrows Exception
   {
      return .findEntity(finderMethodargsinstancefactory);
   }
   public Collection findEntities(Method finderMethodObject[] argsEntityEnterpriseContext instance,
         GenericEntityObjectFactory factorythrows Exception
   {
      return .findEntities(finderMethodargsinstancefactory);
   }
   public void activateEntity(EntityEnterpriseContext instancethrows RemoteException
   {
      .activateEntity(instance);
   }
   public void loadEntity(EntityEnterpriseContext instancethrows RemoteException
   {
      .loadEntity(instance);
   }
   public boolean isStoreRequired(EntityEnterpriseContext instancethrows Exception
   {
      return .isStoreRequired(instance);
   }
   public boolean isModified(EntityEnterpriseContext ctxthrows Exception
   {
      return .isModified(ctx);
   }
   public void storeEntity(EntityEnterpriseContext ctxthrows RemoteException
   {
      Object key = ctx.getInstance();
      try
      {
         try
         {
            .storeEntity(ctx);
         }
         finally
         {
         }
      }
      catch (ResourceException e)
      {
         throw new RemoteException("Could not store!: "e);
      }
   }
   public void invokeEjbStore(EntityEnterpriseContext ctxthrows RemoteException
   {
      Object key = ctx.getInstance();
      try
      {
         try
         {
            .invokeEjbStore(ctx);
         }
         finally
         {
         }
      }
      catch (ResourceException e)
      {
         throw new RemoteException("Could not store!: "e);
      }
   }
   public void passivateEntity(EntityEnterpriseContext instancethrows RemoteException
   {
      .passivateEntity(instance);
   }
   {
      .removeEntity(instance);
   }

   
Return the real EntityPersistenceManager to which this interceptor delegates.

Returns:
the real EntityPersistenceManager
   {
      return ;
   }
New to GrepCode? Check out our FAQ X