Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r14674 - in search/trunk:
 src/java/org/hibernate/search and 11 other directories.

hibernate-commits

2008-05-17


Author LoginPost Reply
Author: epbernard
Date: 2008-05-17 08:54:06 -0400 (Sat, 17 May 2008)
New Revision: 14674

Modified:
 search/trunk/ivy.xml
 search/trunk/pom.xml
 search/trunk/src/java/org/hibernate/search/Version.java
 search/trunk/src/java/org/hibernate/search/backend/LuceneIndexingParameters.java
 search/trunk/src/java/org/hibernate/search/backend/Workspace.java
 search/trunk/src/java/org/hibernate/search/backend/impl/jms/AbstractJMSHibernateSearchController.java
 search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java
 search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneWorker.java
 search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
 search/trunk/src/java/org/hibernate/search/engine/ObjectLoader.java
 search/trunk/src/java/org/hibernate/search/engine/QueryLoader.java
 search/trunk/src/java/org/hibernate/search/event/FullTextIndexCollectionEventListener.java
 search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java
 search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
 search/trunk/src/java/org/hibernate/search/query/ScrollableResultsImpl.java
 search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java
 search/trunk/src/java/org/hibernate/search/store/DirectoryProviderHelper.java
 search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
 search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
 search/trunk/src/java/org/hibernate/search/store/optimization/IncrementalOptimizerStrategy.java
 search/trunk/src/test/org/hibernate/search/test/embedded/doubleinsert/Contact.java
 search/trunk/src/test/org/hibernate/search/test/query/LuceneQuerySortTest.java
 search/trunk/src/test/org/hibernate/search/test/query/TermVectorTest.java
Log:
HSEARCH-197 move to slf4j

Modified: search/trunk/ivy.xml
===================================================================
--- search/trunk/ivy.xml  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/ivy.xml  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
     <!-- compile time dependencies -->
     <dependency name="ejb3-persistence" rev="1.0.2.GA" conf="default->default"/>
     <dependency name="commons-annotations" rev="latest" conf="default->default"/>
+     <dependency org="org.slf4j" name="slf4j-api" rev="1.4.2" conf="default->default"/>    
     <dependency org="org.hibernate" name="hibernate-core" rev="3.3.0.CR1" conf="default->default"/>
-     <dependency org="commons-logging" name="commons-logging" rev="1.0.4" conf="default->default"/>
     <dependency org="javax.transaction" name="jta" rev="1.1" conf="default->default"/>
     <dependency org="org.apache.lucene" name="lucene-core" rev="2.3.1" conf="default->default"/>
     <dependency org="javax.jms" name="jms" rev="1.1" conf="default->default"/> <!-- optional -->
@@(protected) @@
     <dependency org="org.hibernate.apache.lucene.solr" name="apache-solr-analyzer" rev="1.2.0" conf="default->default"/> <!-- optional -->

     <!-- transitive dependencies -->
-     <dependency org="org.slf4j" name="slf4j-api" rev="1.4.2" conf="test->default"/>
     <dependency org="antlr" name="antlr" rev="2.7.6" conf="test->default"/>
     <dependency org="commons-collections" name="commons-collections" rev="3.1" conf="test->default"/>
     <dependency org="dom4j" name="dom4j" rev="1.6.1" conf="test->default"/>

Modified: search/trunk/pom.xml
===================================================================
--- search/trunk/pom.xml  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/pom.xml  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
        <version>2.3.1</version>
     </dependency>
     <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-      <version>1.0.4</version>
-    </dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>1.4.2</version>
+     </dependency>
     <dependency>
     <groupId>javax.transaction</groupId>
     <artifactId>jta</artifactId>

Modified: search/trunk/src/java/org/hibernate/search/Version.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/Version.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/Version.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@

import java.util.Date;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

+
/**
* @author Emmanuel Bernard
*/
public class Version {
 public static final String VERSION = "3.1.x." + new Date();
-  private static Log log = LogFactory.getLog( Version.class );
+  private static Logger log = LoggerFactory.getLogger( Version.class );

 static {
-    log.info( "Hibernate Search " + VERSION );
+    log.info( "Hibernate Search {}", VERSION );
 }

 public static void touch() {

Modified: search/trunk/src/java/org/hibernate/search/backend/LuceneIndexingParameters.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/LuceneIndexingParameters.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/backend/LuceneIndexingParameters.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.Map;
import java.util.Properties;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.index.IndexWriter;
import org.hibernate.search.SearchException;
import org.hibernate.search.backend.configuration.IndexWriterSetting;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Wrapper class around the Lucene indexing parameters <i>mergeFactor</i>, <i>maxMergeDocs</i>,
@@(protected) @@
*/
public class LuceneIndexingParameters implements Serializable {

-  private static final Log log = LogFactory.getLog( LuceneIndexingParameters.class );
-
 // value keyword
 public static final String EXPLICIT_DEFAULT_VALUE = "default";
 // property path keywords

Modified: search/trunk/src/java/org/hibernate/search/backend/Workspace.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/Workspace.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/backend/Workspace.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.index.IndexReader;
@@(protected) @@
import org.hibernate.search.engine.SearchFactoryImplementor;
import org.hibernate.search.store.DirectoryProvider;
import org.hibernate.search.store.optimization.OptimizerStrategy;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;

/**
* Lucene workspace.
@@(protected) @@
*/
//TODO introduce the notion of read only IndexReader? We cannot enforce it because Lucene use abstract classes, not interfaces
public class Workspace {
-  private static Log log = LogFactory.getLog( Workspace.class );
+  private final Logger log = LoggerFactory.getLogger( Workspace.class );
 private Map<DirectoryProvider, IndexReader> readers = new HashMap<DirectoryProvider, IndexReader>();
 private Map<DirectoryProvider, IndexWriter> writers = new HashMap<DirectoryProvider, IndexWriter>();
 private List<DirectoryProvider> lockedProviders = new ArrayList<DirectoryProvider>();

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/jms/AbstractJMSHibernateSearchController.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/jms/AbstractJMSHibernateSearchController.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/jms/AbstractJMSHibernateSearchController.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.util.ContextHelper;
import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Implement the Hibernate Search controller responsible for processing the
@@(protected) @@
* @author Emmanuel Bernard
*/
public abstract class AbstractJMSHibernateSearchController implements MessageListener {
-  private static Log log = LogFactory.getLog( AbstractJMSHibernateSearchController.class );
+  private static Logger log = LoggerFactory.getLogger( AbstractJMSHibernateSearchController.class );

 /**
  * return the current or give a new session
@@(protected) @@
  */
 public void onMessage(Message message) {
   if ( !( message instanceof ObjectMessage ) ) {
-      log.error( "Incorrect message type: " + message.getClass() );
+      log.error( "Incorrect message type: {}", message.getClass() );
     return;
   }
   ObjectMessage objectMessage = (ObjectMessage) message;

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.List;
import java.util.ArrayList;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.search.backend.AddLuceneWork;
import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.backend.Workspace;
@@(protected) @@
import org.hibernate.search.store.DirectoryProvider;
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.annotations.common.AssertionFailure;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Apply the operations to Lucene directories avoiding deadlocks.
@@(protected) @@
 /**
  * Class logger.
  */
-  private static Log log = LogFactory.getLog( LuceneBackendQueueProcessor.class );
+  private static Logger log = LoggerFactory.getLogger( LuceneBackendQueueProcessor.class );
 
 private List<LuceneWork> queue;
 private SearchFactoryImplementor searchFactoryImplementor;

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneWorker.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneWorker.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneWorker.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.io.IOException;
import java.io.Serializable;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
@@(protected) @@
import org.hibernate.search.backend.PurgeAllLuceneWork;
import org.hibernate.search.engine.DocumentBuilder;
import org.hibernate.search.store.DirectoryProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Stateless implementation that performs a unit of work.
@@(protected) @@
*/
public class LuceneWorker {
 private Workspace workspace;
-  private static Log log = LogFactory.getLog( LuceneWorker.class );
+  private static final Logger log = LoggerFactory.getLogger( LuceneWorker.class );

 public LuceneWorker(Workspace workspace) {
   this.workspace = workspace;
@@(protected) @@
 }

 private void add(Class entity, Serializable id, Document document, DirectoryProvider provider) {
-    if ( log.isTraceEnabled() )
-      log.trace( "add to Lucene index: " + entity + "#" + id + ": " + document );
+    log.trace( "add to Lucene index: {}#{}:{}", new Object[] { entity, id, document } );
   IndexWriter writer = workspace.getIndexWriter( provider, entity, true );
   try {
     writer.addDocument( document );
@@(protected) @@
    * We can only delete by term, and the index doesn't have a termt that
    * uniquely identify the entry. See logic below
    */
-    log.trace( "remove from Lucene index: " + entity + "#" + id );
+    log.trace( "remove from Lucene index: {}#{}", entity, id );
   DocumentBuilder builder = workspace.getDocumentBuilder( entity );
   Term term = builder.getTerm( id );
   IndexReader reader = workspace.getIndexReader( provider, entity );
@@(protected) @@

 public void performWork(OptimizeLuceneWork work, DirectoryProvider provider) {
   Class entity = work.getEntityClass();
-    if ( log.isTraceEnabled() )
-      log.trace( "optimize Lucene index: " + entity );
+    log.trace( "optimize Lucene index: {}", entity );
   IndexWriter writer = workspace.getIndexWriter( provider, entity, false );
   try {
     writer.optimize();
@@(protected) @@

 public void performWork(PurgeAllLuceneWork work, DirectoryProvider provider) {
   Class entity = work.getEntityClass();
-    if ( log.isTraceEnabled() )
-      log.trace( "purgeAll Lucene index: " + entity );
+    log.trace( "purgeAll Lucene index: {}", entity );
   IndexReader reader = workspace.getIndexReader( provider, entity );
   try {
     Term term = new Term( DocumentBuilder.CLASS_FIELDNAME, entity.getName() );

Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.Map;
import java.util.Set;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@(protected) @@
import org.hibernate.search.store.IndexShardingStrategy;
import org.hibernate.search.util.BinderHelper;
import org.hibernate.search.util.ScopedAnalyzer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Set up and provide a manager for indexes classes
@@(protected) @@
* @author Hardy Ferentschik
*/
public class DocumentBuilder<T> {
-  private static final Log log = LogFactory.getLog( DocumentBuilder.class );
+  private static final Logger log = LoggerFactory.getLogger( DocumentBuilder.class );

 private final PropertiesMetadata rootPropertiesMetadata;
 private final XClass beanClass;
@@(protected) @@
       similarity = (Similarity) similarityClass.newInstance();
     }
     catch (Exception e) {
-        log.error( "Exception attempting to instantiate Similarity '" + similarityClass.getName()
-            + "' set for " + beanClass.getName() );
+        log.error( "Exception attempting to instantiate Similarity '{}' set for {}",
+            similarityClass.getName(), beanClass.getName() );
     }
   }
 }
@@(protected) @@
     }
     else if ( log.isTraceEnabled() ) {
       String localPrefix = buildEmbeddedPrefix( prefix, embeddedAnn, member );
-        log.trace( "depth reached, ignoring " + localPrefix );
+        log.trace( "depth reached, ignoring {}", localPrefix );
     }

     level--;
@@(protected) @@
     if ( store != Field.Store.NO && TwoWayFieldBridge.class.isAssignableFrom( fieldBridge.getClass() ) ) {
       result[matchingPosition] = ( (TwoWayFieldBridge) fieldBridge ).get( fieldName, document );
       if ( log.isTraceEnabled() ) {
-          log.trace( "Field " + fieldName + " projected as " + result[matchingPosition] );
+          log.trace( "Field {} projected as {}", fieldName, result[matchingPosition] );
       }
     }
     else {

Modified: search/trunk/src/java/org/hibernate/search/engine/ObjectLoader.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/ObjectLoader.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/engine/ObjectLoader.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.ArrayList;
import java.util.List;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.Session;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* @author Emmanuel Bernard
*/
public class ObjectLoader implements Loader {
-  private static final Log log = LogFactory.getLog( ObjectLoader.class );
+  private static final Logger log = LoggerFactory.getLogger( ObjectLoader.class );
 private Session session;

 public void init(Session session, SearchFactoryImplementor searchFactoryImplementor) {
@@(protected) @@
   }
   catch (RuntimeException e) {
     if ( LoaderHelper.isObjectNotFoundException( e ) ) {
-        log.debug( "Object found in Search index but not in database: "
-            + entityInfo.clazz + " wih id " + entityInfo.id );
+        log.debug( "Object found in Search index but not in database: {} with id {}",
+            entityInfo.clazz, entityInfo.id );
       maybeProxy = null;
     }
     else {
@@(protected) @@
     }
     catch (RuntimeException e) {
       if ( LoaderHelper.isObjectNotFoundException( e ) ) {
-          log.debug( "Object found in Search index but not in database: "
-              + entityInfo.clazz + " wih id " + entityInfo.id );
+          log.debug( "Object found in Search index but not in database: {} with id {}",
+              entityInfo.clazz, entityInfo.id );
       }
       else {
         throw e;

Modified: search/trunk/src/java/org/hibernate/search/engine/QueryLoader.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/QueryLoader.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/engine/QueryLoader.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.ArrayList;
import java.util.List;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.annotations.common.AssertionFailure;
import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.Restrictions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* @author Emmanuel Bernard
@@(protected) @@
public class QueryLoader implements Loader {
 private static final int MAX_IN_CLAUSE = 500;
 private static final List EMPTY_LIST = new ArrayList( 0 );
-  private static Log log = LogFactory.getLog( QueryLoader.class );
+  private final Logger log = LoggerFactory.getLogger( QueryLoader.class );

 private Session session;
 private Class entityType;
@@(protected) @@
   }
   catch (RuntimeException e) {
     if ( LoaderHelper.isObjectNotFoundException( e ) ) {
-        log.debug( "Object found in Search index but not in database: "
-            + entityInfo.clazz + " wih id " + entityInfo.id );
+        log.debug( "Object found in Search index but not in database: {} with id {}",
+            entityInfo.clazz, entityInfo.id );
       maybeProxy = null;
     }
     else {
@@(protected) @@
     }
     else {
       if ( log.isDebugEnabled() ) {
-          log.debug( "Object found in Search index but not in database: "
-            + entityInfo.clazz + " wih id " + entityInfo.id );
+          log.debug( "Object found in Search index but not in database: {} with {}",
+            entityInfo.clazz, entityInfo.id );
       }
     }
   }

Modified: search/trunk/src/java/org/hibernate/search/event/FullTextIndexCollectionEventListener.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/event/FullTextIndexCollectionEventListener.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/event/FullTextIndexCollectionEventListener.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import org.hibernate.event.PostCollectionRecreateEvent;
import org.hibernate.event.PostCollectionRemoveEvent;
import org.hibernate.event.PostCollectionUpdateEvent;
-import org.hibernate.event.AbstractEvent;
import org.hibernate.event.AbstractCollectionEvent;
import org.hibernate.search.backend.WorkType;
import org.hibernate.engine.EntityEntry;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Support collection event listening (starts from hibernate core 3.2.6)
@@(protected) @@
   implements PostCollectionRecreateEventListener,
   PostCollectionRemoveEventListener,
   PostCollectionUpdateEventListener {
-  private static Log log = LogFactory.getLog( FullTextIndexCollectionEventListener.class );
+  private final Logger log = LoggerFactory.getLogger( FullTextIndexCollectionEventListener.class );

 public void onPostRecreateCollection(PostCollectionRecreateEvent event) {
   processCollectionEvent( event );
@@(protected) @@
   if ( used && searchFactoryImplementor.getDocumentBuilders().containsKey( entity.getClass() ) ) {
     Serializable id = getId( entity, event );
     if (id == null) {
-        log.warn( "Unable to reindex entity on collection change, id cannot be extracted: " + event.getAffectedOwnerEntityName() );
+        log.warn(
+            "Unable to reindex entity on collection change, id cannot be extracted: {}",
+            event.getAffectedOwnerEntityName()
+        );
       return;
     }
     processWork( entity, id, WorkType.COLLECTION, event );

Modified: search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@

import java.io.Serializable;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.event.AbstractEvent;
import org.hibernate.event.Initializable;

Modified: search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.Map;
import java.util.Set;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
@@(protected) @@
import org.hibernate.search.store.DirectoryProvider;
import org.hibernate.search.util.ContextHelper;
import org.hibernate.transform.ResultTransformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Implementation of {@(protected)}
@@(protected) @@
*/
//TODO implements setParameter()
public class FullTextQueryImpl extends AbstractQueryImpl implements FullTextQuery {
-  private static final Log log = LogFactory.getLog( FullTextQueryImpl.class );
+  private final Logger log = LoggerFactory.getLogger( FullTextQueryImpl.class );
 private org.apache.lucene.search.Query luceneQuery;
 private Class[] classes;
 private Set<Class> classesAndSubclasses;

Modified: search/trunk/src/java/org/hibernate/search/query/ScrollableResultsImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/ScrollableResultsImpl.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/query/ScrollableResultsImpl.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.Map;
import java.util.TimeZone;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.hibernate.HibernateException;
@@(protected) @@
import org.hibernate.search.engine.EntityInfo;
import org.hibernate.search.engine.Loader;
import org.hibernate.type.Type;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Implements scollable and paginated resultsets.
@@(protected) @@
* @author John Griffin
*/
public class ScrollableResultsImpl implements ScrollableResults {
-  private static Log log = LogFactory.getLog( ScrollableResultsImpl.class );
+  private static Logger log = LoggerFactory.getLogger( ScrollableResultsImpl.class );
 private final IndexSearcher searcher;
 private final SearchFactory searchFactory;
 private final Hits hits;

Modified: search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
import org.hibernate.annotations.common.AssertionFailure;
@@(protected) @@
import static org.hibernate.search.reader.ReaderProviderHelper.buildMultiReader;
import static org.hibernate.search.reader.ReaderProviderHelper.clean;
import org.hibernate.search.store.DirectoryProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Share readers per SearchFactory, reusing them iff they are still valid.
@@(protected) @@
*/
public class SharedReaderProvider implements ReaderProvider {
 private static Field subReadersField;
-  private static Log log = LogFactory.getLog( SharedReaderProvider.class );
+  private final Logger log = LoggerFactory.getLogger ( SharedReaderProvider.class );
 /**
  * nonfair lock. Need to be acquired on indexReader acquisition or release (semaphore)
  */
@@(protected) @@
   boolean trace = log.isTraceEnabled();
   int length = directoryProviders.length;
   IndexReader[] readers = new IndexReader[length];
-    if ( trace ) log.trace( "Opening IndexReader for directoryProviders: " + length );
+    if ( trace ) log.trace( "Opening IndexReader for directoryProviders: {}", length );

   for (int index = 0; index < length; index++) {
     DirectoryProvider directoryProvider = directoryProviders[index];
     IndexReader reader;
     Lock directoryProviderLock = perDirectoryProviderManipulationLocks.get( directoryProvider );
-      if ( trace ) log.trace( "Opening IndexReader from " + directoryProvider.getDirectory().toString() );
+      if ( trace ) log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
     directoryProviderLock.lock(); //needed for same problem as the double-checked locking
     try {
       reader = activeSearchIndexReaders.get( directoryProvider );
@@(protected) @@
     }
     if ( reader == null ) {
       if ( trace )
-          log.trace( "No shared IndexReader, opening a new one: " + directoryProvider.getDirectory().toString() );
+          log.trace( "No shared IndexReader, opening a new one: {}", directoryProvider.getDirectory() );
       reader = replaceActiveReader( null, directoryProviderLock, directoryProvider, readers );
     }
     else {
@@(protected) @@
         throw new SearchException( "Unable to read current status of Lucene IndexReader", e );
       }
       if ( !isCurrent ) {
-          if ( trace )
-            log.trace( "Out of date shared IndexReader found, opening a new one: " + directoryProvider.getDirectory().toString() );
+          if ( trace ) {
+            log.trace( "Out of date shared IndexReader found, opening a new one: {}",
+                directoryProvider.getDirectory() );
+          }
         IndexReader outOfDateReader = reader;
         reader = replaceActiveReader( outOfDateReader, directoryProviderLock, directoryProvider, readers );
       }
       else {
         if ( trace )
-            log.trace( "Valid shared IndexReader: " + directoryProvider.getDirectory().toString() );
+            log.trace( "Valid shared IndexReader: {}" + directoryProvider.getDirectory() );
         directoryProviderLock.lock();
         try {
           //read the latest active one, the current one could be out of date and closed already
@@(protected) @@
             //TODO if readerData is null????
             readerData.semaphore++;
             searchIndexReaderSemaphores.put( reader, readerData ); //not necessary
-              if ( trace ) log.trace( "Semaphore increased: " + readerData.semaphore + " for " + reader );
+              if ( trace ) log.trace( "Semaphore increased: {} for {}", readerData.semaphore, reader );
           }
           finally {
             semaphoreIndexReaderLock.unlock();
@@(protected) @@
     semaphoreIndexReaderLock.lock();
     try {
       searchIndexReaderSemaphores.put( reader, new ReaderData( 1, directoryProvider ) );
-        if ( trace ) log.trace( "Semaphore: 1 for " + reader );
+        if ( trace ) log.trace( "Semaphore: 1 for {}", reader );
       if ( outOfDateReader != null ) {
         ReaderData readerData = searchIndexReaderSemaphores.get( outOfDateReader );
         if ( readerData == null ) {
@@(protected) @@
     directoryProviderLock.unlock();
   }
   if ( closeOutOfDateReader ) {
-      if ( trace ) log.trace( "Closing out of date IndexReader " + outOfDateReader );
+      if ( trace ) log.trace( "Closing out of date IndexReader {}", outOfDateReader );
     try {
       outOfDateReader.close();
     }
@@(protected) @@
     }
   }
   if ( closeOldReader ) {
-      if ( trace ) log.trace( "Closing old IndexReader " + oldReader );
+      if ( trace ) log.trace( "Closing old IndexReader {}", oldReader );
     try {
       oldReader.close();
     }
@@(protected) @@
     catch (IllegalAccessException e) {
       throw new SearchException( "Incompatible version of Lucene: MultiReader.subReaders not accessible", e );
     }
-      if ( trace ) log.trace( "Closing MultiReader: " + reader );
+      if ( trace ) log.trace( "Closing MultiReader: {}", reader );
   }
   else {
     throw new AssertionFailure( "Everything should be wrapped in a MultiReader" );
@@(protected) @@
     }

     if ( readerData == null ) {
-        log.error( "Trying to close a Lucene IndexReader not present: " + subReader.directory().toString() );
+        log.error( "Trying to close a Lucene IndexReader not present: {}", subReader.directory() );
       //TODO should we try to close?
       continue;
     }
@@(protected) @@
     try {
       boolean isActive;
       isActive = activeSearchIndexReaders.get( readerData.provider ) == subReader;
-        if ( trace ) log.trace( "Indexreader not active: " + subReader );
+        if ( trace ) log.trace( "Indexreader not active: {}", subReader );
       semaphoreIndexReaderLock.lock();
       try {
         readerData = searchIndexReaderSemaphores.get( subReader );
         if ( readerData == null ) {
-            log.error( "Trying to close a Lucene IndexReader not present: " + subReader.directory().toString() );
+            log.error( "Trying to close a Lucene IndexReader not present: {}" + subReader.directory() );
           //TODO should we try to close?
           continue;
         }
         readerData.semaphore--;
-          if ( trace ) log.trace( "Semaphore decreased to: " + readerData.semaphore + " for " + subReader );
+          if ( trace ) log.trace( "Semaphore decreased to: {} for {}", readerData.semaphore, subReader );
         if ( readerData.semaphore < 0 )
-            log.error( "Semaphore negative: " + subReader.directory().toString() );
+            log.error( "Semaphore negative: {}", subReader.directory() );
         if ( ( !isActive ) && readerData.semaphore == 0 ) {
           searchIndexReaderSemaphores.remove( subReader );
           closeReader = true;
@@(protected) @@
     }

     if ( closeReader ) {
-        if ( trace ) log.trace( "Closing IndexReader: " + subReader );
+        if ( trace ) log.trace( "Closing IndexReader: {}", subReader );
       try {
         subReader.close();
       }

Modified: search/trunk/src/java/org/hibernate/search/store/DirectoryProviderHelper.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/DirectoryProviderHelper.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/store/DirectoryProviderHelper.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@

import org.hibernate.search.SearchException;
import org.hibernate.annotations.common.util.StringHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.FSDirectory;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;

/**
* @author Emmanuel Bernard
@@(protected) @@
*/
public class DirectoryProviderHelper {
 
-  private static final Log log = LogFactory.getLog( DirectoryProviderHelper.class );
+  private static final Logger log = LoggerFactory.getLogger( DirectoryProviderHelper.class );
 private static final String ROOTINDEX_PROP_NAME = "sourceBase";
 private static final String RELATIVEINDEX_PROP_NAME = "source";

@@(protected) @@
   File sourceDirectory;
   if ( log.isTraceEnabled() ) {
     log.trace(
-          "Guess source directory from " + ROOTINDEX_PROP_NAME + " " + ( root != null ? root : "<null>" )
-              + " and " + RELATIVEINDEX_PROP_NAME + " " + (relative != null ? relative : "<null>")
+          "Guess source directory from {} {} and {} {}", new Object[] {
+            ROOTINDEX_PROP_NAME,
+            ( root != null ? root : "<null>" ),
+            RELATIVEINDEX_PROP_NAME,
+          (relative != null ? relative : "<null>") }
     );
   }
   if ( relative == null ) relative = directoryProviderName;
@@(protected) @@
 public static FSDirectory createFSIndex(File indexDir) throws IOException {
   FSDirectory fsDirectory = FSDirectory.getDirectory( indexDir );
   if ( ! IndexReader.indexExists( fsDirectory ) ) {
-      log.debug( "Initialize index: '" + indexDir.getAbsolutePath() + "'" );
+      log.debug( "Initialize index: '{}'", indexDir.getAbsolutePath() );
     IndexWriter iw = new IndexWriter( fsDirectory, new StandardAnalyzer(), true );
     iw.close();
   }
@@(protected) @@
   } catch (NumberFormatException nfe) {
     throw new SearchException( "Unable to initialize index: " + directoryProviderName +"; refresh period is not numeric.", nfe );
   }
-    log.debug( "Refresh period " + period + " seconds" );
+    log.debug( "Refresh period: {} seconds", period );
   return period * 1000; //per second
 }
 

Modified: search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.io.IOException;

import org.apache.lucene.store.FSDirectory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.search.SearchException;
import org.hibernate.search.util.FileHelper;
import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;

/**
* File based DirectoryProvider that takes care of index copy
@@(protected) @@
//TODO rename copy?
public class FSMasterDirectoryProvider implements DirectoryProvider<FSDirectory> {
 
-  private static Log log = LogFactory.getLog( FSMasterDirectoryProvider.class );
+  private final Logger log = LoggerFactory.getLogger( FSMasterDirectoryProvider.class );
 
 private FSDirectory directory;
 private int current;
@@(protected) @@
   this.directoryProviderName = directoryProviderName;
   //source guessing
   sourceDir = DirectoryProviderHelper.getSourceDirectory( directoryProviderName, properties, true );
-    log.debug( "Source directory: " + sourceDir.getPath() );
+    log.debug( "Source directory: {}", sourceDir.getPath() );
   indexDir = DirectoryProviderHelper.getVerifiedIndexDir( directoryProviderName, properties, true );
-    log.debug( "Index directory: " + indexDir.getPath() );
+    log.debug( "Index directory: {}", indexDir.getPath() );
   try {
     indexName = indexDir.getCanonicalPath();
     directory = DirectoryProviderHelper.createFSIndex( indexDir );
@@(protected) @@
       current = 1;
     }
     else {
-        log.debug( "Source directory for '" + indexName + "' will be initialized");
+        log.debug( "Source directory for '{}' will be initialized", indexName);
       current = 1;
     }
     String currentString = Integer.valueOf( current ).toString();
@@(protected) @@
     new File( sourceDir, "current2" ).delete();
     //TODO small hole, no file can be found here
     new File( sourceDir, "current" + currentString ).createNewFile();
-      log.debug( "Current directory: " + current );
+      log.debug( "Current directory: {}", current );
   }
   catch (IOException e) {
     throw new SearchException( "Unable to initialize index: " + directoryProviderName, e );
@@(protected) @@
       executor.execute( copyTask );
     }
     else {
-        log.info( "Skipping directory synchronization, previous work still in progress: " + indexName );
+        log.info( "Skipping directory synchronization, previous work still in progress: {}", indexName );
     }
   }
 }
@@(protected) @@
       File destinationFile = new File(destination, Integer.valueOf(index).toString() );
       //TODO make smart a parameter
       try {
-          log.trace( "Copying " + source + " into " + destinationFile );
+          log.trace( "Copying {} into {}", source, destinationFile );
         FileHelper.synchronize( source, destinationFile, true );
         current = index;
       }
@@(protected) @@
         return;
       }
       if ( ! new File( destination, "current" + oldIndex ).delete() ) {
-          log.warn( "Unable to remove previous marker file from source of " + indexName );
+          log.warn( "Unable to remove previous marker file from source of {}", indexName );
       }
       try {
         new File( destination, "current" + index ).createNewFile();
@@(protected) @@
       directoryProviderLock.unlock();
       inProgress = false;
     }
-      log.trace( "Copy for " + indexName + " took " + (System.currentTimeMillis() - start) + " ms" );
+      log.trace( "Copy for {} took {} ms", indexName, (System.currentTimeMillis() - start) );
   }
 }


Modified: search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.io.IOException;

import org.apache.lucene.store.FSDirectory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.AssertionFailure;
import org.hibernate.search.SearchException;
import org.hibernate.search.util.FileHelper;
import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* File based directory provider that takes care of getting a version of the index
@@(protected) @@
*/
public class FSSlaveDirectoryProvider implements DirectoryProvider<FSDirectory> {
 
-  private static Log log = LogFactory.getLog( FSSlaveDirectoryProvider.class );
+  private final Logger log = LoggerFactory.getLogger( FSSlaveDirectoryProvider.class );
 
 private FSDirectory directory1;
 private FSDirectory directory2;
@@(protected) @@
   if ( ! new File( sourceIndexDir, "current1" ).exists() && ! new File( sourceIndexDir, "current2" ).exists() ) {
     throw new IllegalStateException( "No current marker in source directory" );
   }
-    log.debug( "Source directory: " + sourceIndexDir.getPath() );
+    log.debug( "Source directory: {}", sourceIndexDir.getPath() );
   indexDir = DirectoryProviderHelper.getVerifiedIndexDir( directoryProviderName, properties, true );
-    log.debug( "Index directory: " + indexDir.getPath() );
+    log.debug( "Index directory: {}", indexDir.getPath() );
   try {
     indexName = indexDir.getCanonicalPath();
   }
@@(protected) @@
         throw new SearchException( "Unable to create the directory marker file: " + indexName );
       }
     }
-      log.debug( "Current directory: " + current);
+      log.debug( "Current directory: {}", current);
   }
   catch (IOException e) {
     throw new SearchException( "Unable to initialize index: " + directoryProviderName, e );
@@(protected) @@
       executor.execute( copyTask );
     }
     else {
-        log.trace( "Skipping directory synchronization, previous work still in progress: " + indexName);
+        log.trace( "Skipping directory synchronization, previous work still in progress: {}", indexName);
     }
   }
 }
@@(protected) @@
       File destinationFile = new File( destination, Integer.valueOf( index ).toString() );
       //TODO make smart a parameter
       try {
-          log.trace( "Copying " + sourceFile + " into " + destinationFile );
+          log.trace( "Copying {} into {}", sourceFile, destinationFile );
         FileHelper.synchronize( sourceFile, destinationFile, true );
         current = index;
       }
@@(protected) @@
     finally {
       inProgress = false;
     }
-      log.trace( "Copy for " + indexName + " took " + (System.currentTimeMillis() - start) + " ms" );
+      log.trace( "Copy for {} took {} ms", indexName, (System.currentTimeMillis() - start) );
   }
 }


Modified: search/trunk/src/java/org/hibernate/search/store/optimization/IncrementalOptimizerStrategy.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/store/optimization/IncrementalOptimizerStrategy.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/java/org/hibernate/search/store/optimization/IncrementalOptimizerStrategy.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import org.hibernate.search.SearchException;
import org.hibernate.annotations.common.util.StringHelper;
import org.apache.lucene.index.IndexWriter;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;

/**
* Optimization strategy triggered after a certain amount of operations
@@(protected) @@
 private long operations = 0;
 private long transactions = 0;
 private DirectoryProvider directoryProvider;
-  private Log log = LogFactory.getLog( IncrementalOptimizerStrategy.class );
+  private final Logger log = LoggerFactory.getLogger( IncrementalOptimizerStrategy.class );

 public void initialize(DirectoryProvider directoryProvider, Properties indexProperties, SearchFactoryImplementor searchFactoryImplementor) {
   this.directoryProvider = directoryProvider;
@@(protected) @@

 public void optimize(Workspace workspace) {
   if ( needOptimization() ) {
-      if ( log.isDebugEnabled() ) {
-        log.debug( "Optimize "
-          + directoryProvider.getDirectory().toString()
-          +" after " + operations + " operations and " + transactions + " transactions");
-      }
+      log.debug( "Optimize {} after {} operations and {} transactions",
+        new Object[] { directoryProvider.getDirectory(), operations, transactions });
     IndexWriter writer = workspace.getIndexWriter( directoryProvider );
     try {
       writer.optimize();

Modified: search/trunk/src/test/org/hibernate/search/test/embedded/doubleinsert/Contact.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/embedded/doubleinsert/Contact.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/test/org/hibernate/search/test/embedded/doubleinsert/Contact.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
@@(protected) @@

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
import org.hibernate.annotations.Type;
import org.hibernate.search.annotations.ContainedIn;
import org.hibernate.search.annotations.DocumentId;
@@(protected) @@
@Indexed
public class Contact implements Serializable {

-  private static Log logger = LogFactory.getLog(Contact.class);
-
  private static final long serialVersionUID = 1L;

  @Id @GeneratedValue(strategy=GenerationType.AUTO)

Modified: search/trunk/src/test/org/hibernate/search/test/query/LuceneQuerySortTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/query/LuceneQuerySortTest.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/test/org/hibernate/search/test/query/LuceneQuerySortTest.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
import java.util.List;
import java.util.Calendar;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
@@(protected) @@
import org.hibernate.Transaction;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
-import org.hibernate.search.Version;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.test.SearchTestCase;

@@(protected) @@
public class LuceneQuerySortTest extends SearchTestCase {

 /**
-   * Class logger.
-   */
-  private static Log log = LogFactory.getLog( Version.class );
-
-  /**
  * Test that we can change the default sort order of the lucene search result.
  *
  * @throws Exception in case the test fails.

Modified: search/trunk/src/test/org/hibernate/search/test/query/TermVectorTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/query/TermVectorTest.java  2008-05-17 12:52:14 UTC (rev 14673)
+++ search/trunk/src/test/org/hibernate/search/test/query/TermVectorTest.java  2008-05-17 12:54:06 UTC (rev 14674)
@@(protected) @@
package org.hibernate.search.test.query;

-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.index.TermVectorOffsetInfo;
@@(protected) @@
* @author John Griffin
*/
public class TermVectorTest extends SearchTestCase {
-  private static Log log = LogFactory.getLog(TermVectorTest.class);
-
+  
  public void testPositionOffsets() throws Exception {
    FullTextSession s = Search.createFullTextSession(openSession());
    createIndex(s);

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.