[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Gavin King gavin.king at jboss.com
Fri Jun 15 01:16:23 EDT 2007


  User: gavin   
  Date: 07/06/15 01:16:23

  Modified:    src/main/org/jboss/seam/core    HibernateSessionFactory.java
  Removed:     src/main/org/jboss/seam/core    Ejb.java Microcontainer.java
  Log:
  migrate to jboss embedded
  
  Revision  Changes    Path
  1.8       +199 -6    jboss-seam/src/main/org/jboss/seam/core/HibernateSessionFactory.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HibernateSessionFactory.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/HibernateSessionFactory.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- HibernateSessionFactory.java	12 Feb 2007 08:05:34 -0000	1.7
  +++ HibernateSessionFactory.java	15 Jun 2007 05:16:23 -0000	1.8
  @@ -1,7 +1,19 @@
  -//$Id: HibernateSessionFactory.java,v 1.7 2007/02/12 08:05:34 sbryzak2 Exp $
  +//$Id: HibernateSessionFactory.java,v 1.8 2007/06/15 05:16:23 gavin Exp $
   package org.jboss.seam.core;
  +
   import static org.jboss.seam.InterceptionType.NEVER;
  +
  +import java.io.File;
  +import java.util.Hashtable;
  +import java.util.List;
  +import java.util.Map;
  +import java.util.Properties;
  +
   import org.hibernate.SessionFactory;
  +import org.hibernate.cfg.AnnotationConfiguration;
  +import org.hibernate.cfg.Environment;
  +import org.hibernate.cfg.NamingStrategy;
  +import org.hibernate.util.ReflectHelper;
   import org.jboss.seam.ScopeType;
   import org.jboss.seam.annotations.Create;
   import org.jboss.seam.annotations.Destroy;
  @@ -9,24 +21,135 @@
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.Startup;
   import org.jboss.seam.annotations.Unwrap;
  -import org.jboss.seam.microcontainer.HibernateFactory;
  +import org.jboss.seam.security.HibernateSecurityInterceptor;
  +import org.jboss.seam.util.Naming;
  +
   /**
    * A Seam component that boostraps a Hibernate SessionFactory
    * 
  + * <p>
  + * Loads Hibernate configuration options by checking:
  + * <li>hibernate.properties in root of the classpath
  + * <li>hibernate.cfg.xml in root of the classpath
  + * <li>cfgResourceName as location of a cfg.xml file
  + * <li>factory-suplied cfgProperties options
  + * <p>
  + * Note that this factory only supports cfg.xml files <b>or</b> programmatic
  + * <tt>cfgProperties</tt> supplied to the factory. Any
  + * <tt>hibernate.properties</tt> are always loaded from the classpath.
  + * <p>
  + * Mapping metadata can be supplied through:
  + * <li>mappingClasses: equivalent to &lt;mapping class="..."/>
  + * <li>mappingFiles: equivalent to &lt;mapping file="..."/>
  + * <li>mappingJars: equivalent to &lt;mapping jar="..."/>
  + * <li>mappingPackages: equivalent to &lt;mapping package="..."/>
  + * <li>mappingResources: equivalent to &lt;mapping resource="..."/>
  + * <p>
  + * or through cfg.xml files.
  + * <p>
  + * The <tt>jndiProperties</tt> are convenience, the factory will automatically
  + * prefix regular JNDI properties for use as Hibernate configuration properties.
  + * 
    * @author Gavin King
  + * @author Christian Bauer
    */
   @Scope(ScopeType.APPLICATION)
   @Intercept(NEVER)
   @Startup(depends="org.jboss.seam.core.microcontainer")
  -public class HibernateSessionFactory extends HibernateFactory
  +public class HibernateSessionFactory
   {
      private SessionFactory sessionFactory;
      
  +   private String cfgResourceName;
  +   private Map<String, String> cfgProperties;
  +   private List<String> mappingClasses;
  +   private List<String> mappingFiles;
  +   private List<String> mappingJars;
  +   private List<String> mappingPackages;
  +   private List<String> mappingResources;
  +   private NamingStrategy namingStrategy;
  +   
      @Unwrap
  -   @Override
  -   public SessionFactory getSessionFactory()
  +   public SessionFactory getSessionFactory() throws Exception
  +   {
  +      return createSessionFactory();
  +   }
  +   
  +   protected SessionFactory createSessionFactory() throws ClassNotFoundException
  +   {
  +      AnnotationConfiguration configuration = new AnnotationConfiguration();
  +      
  +      // setup non-default naming strategy
  +      if (namingStrategy != null)
  +      {
  +         configuration.setNamingStrategy(namingStrategy);
  +      }
  +      
  +      // Programmatic configuration
  +      if (cfgProperties != null)
  +      {
  +         Properties props = new Properties();
  +         props.putAll(cfgProperties);
  +         configuration.setProperties(props);
  +      }
  +      Hashtable<String, String> jndiProperties = Naming.getInitialContextProperties();
  +      if ( jndiProperties!=null )
  +      {
  +         // Prefix regular JNDI properties for Hibernate
  +         for (Map.Entry<String, String> entry : jndiProperties.entrySet())
  +         {
  +            configuration.setProperty( Environment.JNDI_PREFIX + "." + entry.getKey(), entry.getValue() );
  +         }
  +      }
  +      // hibernate.cfg.xml configuration
  +      if (cfgProperties==null && cfgResourceName==null)
  +      {
  +         configuration.configure();
  +      } 
  +      else if (cfgProperties==null && cfgResourceName!=null)
  +      {
  +         configuration.configure(cfgResourceName);
  +      }
  +      // Mapping metadata
  +      if (mappingClasses!=null)
  +      {
  +         for (String className: mappingClasses) 
  +         {
  +            configuration.addAnnotatedClass(ReflectHelper.classForName(className));
  +         }
  +      }
  +      if (mappingFiles!=null)
  +      {
  +         for (String fileName: mappingFiles) 
  +         {
  +            configuration.addFile(fileName);
  +         }
  +      }
  +      if (mappingJars!=null)
      {
  -      return sessionFactory;
  +         for (String jarName: mappingJars) 
  +         {
  +            configuration.addJar(new File(jarName));
  +         }
  +      }
  +      if (mappingPackages!= null)
  +      {
  +         for (String packageName: mappingPackages) 
  +         {
  +            configuration.addPackage(packageName);
  +         }
  +      }
  +      if (mappingResources!= null)
  +      {
  +         for (String resourceName : mappingResources) 
  +         {
  +            configuration.addResource(resourceName);
  +         }
  +      }
  +      
  +      configuration.setInterceptor(new HibernateSecurityInterceptor(configuration.getInterceptor()));
  +      
  +      return configuration.buildSessionFactory();
      }
      
      @Create
  @@ -40,4 +163,74 @@
      {
         sessionFactory.close();
      }
  +
  +   public String getCfgResourceName()
  +   {
  +      return cfgResourceName;
  +   }
  +   
  +   public void setCfgResourceName(String cfgFileName)
  +   {
  +      this.cfgResourceName = cfgFileName;
  +   }
  +   
  +   public NamingStrategy getNamingStrategy()
  +   {
  +      return namingStrategy;
  +   }
  +   
  +   public void setNamingStrategy(NamingStrategy namingStrategy)
  +   {
  +      this.namingStrategy = namingStrategy;
  +   }
  +   
  +   public Map<String, String> getCfgProperties()
  +   {
  +      return cfgProperties;
  +   }
  +   public void setCfgProperties(Map<String, String> cfgProperties)
  +   {
  +      this.cfgProperties = cfgProperties;
  +   }
  +   public List<String> getMappingClasses()
  +   {
  +      return mappingClasses;
  +   }
  +   public void setMappingClasses(List<String> mappingClasses)
  +   {
  +      this.mappingClasses = mappingClasses;
  +   }
  +   public List<String> getMappingFiles()
  +   {
  +      return mappingFiles;
  +   }
  +   public void setMappingFiles(List<String> mappingFiles)
  +   {
  +      this.mappingFiles = mappingFiles;
  +   }
  +   public List<String> getMappingJars()
  +   {
  +      return mappingJars;
  +   }
  +   public void setMappingJars(List<String> mappingJars)
  +   {
  +      this.mappingJars = mappingJars;
  +   }
  +   public List<String> getMappingPackages()
  +   {
  +      return mappingPackages;
  +   }
  +   public void setMappingPackages(List<String> mappingPackages)
  +   {
  +      this.mappingPackages = mappingPackages;
  +   }
  +   public List<String> getMappingResources()
  +   {
  +      return mappingResources;
  +   }
  +   public void setMappingResources(List<String> mappingResources)
  +   {
  +      this.mappingResources = mappingResources;
  +   }
  +   
   }
  
  
  



More information about the jboss-cvs-commits mailing list