[hibernate-commits] Hibernate SVN: r14986 - search/trunk/src/java/org/hibernate/search/cfg.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Jul 29 13:32:59 EDT 2008
Author: hardy.ferentschik
Date: 2008-07-29 13:32:59 -0400 (Tue, 29 Jul 2008)
New Revision: 14986
Added:
search/trunk/src/java/org/hibernate/search/cfg/SearchConfiguration.java
search/trunk/src/java/org/hibernate/search/cfg/SearchConfigurationFromHibernateCore.java
Log:
Resurrected SearchConfiguration and SearchConfigurationFromHibernateCore
Added: search/trunk/src/java/org/hibernate/search/cfg/SearchConfiguration.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/cfg/SearchConfiguration.java (rev 0)
+++ search/trunk/src/java/org/hibernate/search/cfg/SearchConfiguration.java 2008-07-29 17:32:59 UTC (rev 14986)
@@ -0,0 +1,57 @@
+// $Id: SearchConfiguration.java 14954 2008-07-17 20:43:10Z sannegrinovero $
+package org.hibernate.search.cfg;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+import org.hibernate.annotations.common.reflection.ReflectionManager;
+
+/**
+ * Provides configuration to Hibernate Search
+ *
+ * @author Navin Surtani - navin at surtani.org
+ */
+public interface SearchConfiguration {
+ /**
+ * Returns an iterator over the list of indexed classes
+ *
+ * @return iterator of indexed classes.
+ */
+ Iterator<Class<?>> getClassMappings();
+
+ /**
+ * Returns a {@link java.lang.Class} from a String parameter.
+ * TODO: should it be Iteratable
+ * @param name
+ * @return java.lang.Class
+ */
+
+ Class<?> getClassMapping(String name);
+
+ /**
+ * Gets a configuration property from its name
+ * or null if not present
+ *
+ * @param propertyName - as a String.
+ * @return the property as a String
+ */
+ String getProperty(String propertyName);
+
+ /**
+ * Gets properties as a java.util.Properties object.
+ *
+ * @return a java.util.Properties object.
+ * @see java.util.Properties object
+ */
+ Properties getProperties();
+
+ /**
+ * Returns a reflection manager if already available in the environment
+ * null otherwise
+ *
+ * @return ReflectionManager
+ */
+ ReflectionManager getReflectionManager();
+
+
+}
Property changes on: search/trunk/src/java/org/hibernate/search/cfg/SearchConfiguration.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: search/trunk/src/java/org/hibernate/search/cfg/SearchConfigurationFromHibernateCore.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/cfg/SearchConfigurationFromHibernateCore.java (rev 0)
+++ search/trunk/src/java/org/hibernate/search/cfg/SearchConfigurationFromHibernateCore.java 2008-07-29 17:32:59 UTC (rev 14986)
@@ -0,0 +1,95 @@
+// $Id: SearchConfigurationFromHibernateCore.java 14954 2008-07-17 20:43:10Z sannegrinovero $
+package org.hibernate.search.cfg;
+
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.NoSuchElementException;
+
+import org.hibernate.annotations.common.reflection.ReflectionManager;
+import org.hibernate.annotations.common.reflection.java.JavaReflectionManager;
+import org.hibernate.mapping.PersistentClass;
+
+/**
+ * Search configuration implementation wrapping an Hibernate Core configuration
+ *
+ * @author Emmanuel Bernard
+ */
+public class SearchConfigurationFromHibernateCore implements SearchConfiguration {
+ private final org.hibernate.cfg.Configuration cfg;
+ private ReflectionManager reflectionManager;
+
+ public SearchConfigurationFromHibernateCore(org.hibernate.cfg.Configuration cfg) {
+ if ( cfg == null ) throw new NullPointerException( "Configuration is null" );
+ this.cfg = cfg;
+ }
+
+ public Iterator<Class<?>> getClassMappings() {
+ return new ClassIterator( cfg.getClassMappings() );
+ }
+
+ public Class<?> getClassMapping(String name) {
+ return cfg.getClassMapping( name ).getMappedClass();
+ }
+
+ public String getProperty(String propertyName) {
+ return cfg.getProperty( propertyName );
+ }
+
+ public Properties getProperties() {
+ return cfg.getProperties();
+ }
+
+ public ReflectionManager getReflectionManager() {
+ if ( reflectionManager == null ) {
+ try {
+ //TODO introduce a ReflectionManagerHolder interface to avoid reflection
+ //I want to avoid hard link between HAN and Validator for such a simple need
+ //reuse the existing reflectionManager one when possible
+ reflectionManager =
+ (ReflectionManager) cfg.getClass().getMethod( "getReflectionManager" ).invoke( cfg );
+
+ }
+ catch (Exception e) {
+ reflectionManager = new JavaReflectionManager();
+ }
+ }
+ return reflectionManager;
+ }
+
+ private static class ClassIterator implements Iterator<Class<?>> {
+ private Iterator hibernatePersistentClassIterator;
+ private Class<?> future;
+ private Class<?> current;
+
+ private ClassIterator(Iterator hibernatePersistentClassIterator) {
+ this.hibernatePersistentClassIterator = hibernatePersistentClassIterator;
+ }
+
+ public boolean hasNext() {
+ //we need to read the next non null one. getMappedClass() can return null and should be ignored
+ if ( future != null) return true;
+ do {
+ if ( ! hibernatePersistentClassIterator.hasNext() ) {
+ future = null;
+ return false;
+ }
+ final PersistentClass pc = (PersistentClass) hibernatePersistentClassIterator.next();
+ future = pc.getMappedClass();
+ }
+ while ( future == null );
+ return true;
+ }
+
+ public Class<?> next() {
+ //run hasNext to init the next element
+ if ( ! hasNext() ) throw new NoSuchElementException();
+ Class<?> result = future;
+ future = null;
+ return result;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException( "Cannot modify Hibenrate Core metadata" );
+ }
+ }
+}
Property changes on: search/trunk/src/java/org/hibernate/search/cfg/SearchConfigurationFromHibernateCore.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the hibernate-commits
mailing list