[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 <mapping class="..."/>
+ * <li>mappingFiles: equivalent to <mapping file="..."/>
+ * <li>mappingJars: equivalent to <mapping jar="..."/>
+ * <li>mappingPackages: equivalent to <mapping package="..."/>
+ * <li>mappingResources: equivalent to <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