Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r20207 - in
 search/trunk/hibernate-search/src:
 main/java/org/hibernate/search/jmx and 2 other directories.

hibernate-commits

2010-08-20


Author LoginPost Reply
Author: hardy.ferentschik
Date: 2010-08-20 09:31:16 -0400 (Fri, 20 Aug 2010)
New Revision: 20207

Modified:
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/ImmutableSearchFactory.java
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryBuilder.java
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/IndexingProgressMonitor.java
 search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/JMXRegistrar.java
 search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/SearchTestCase.java
 search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java
Log:
HSEARCH-278 This the SearchFactory is mutable we have to be a more devensive when registring an MBean and check first whether a bean is registered.

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/ImmutableSearchFactory.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/ImmutableSearchFactory.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/ImmutableSearchFactory.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@
   }

   if ( isJMXEnabled() ) {
+      // since the SearchFactory is mutable we might have an already existing MBean which we have to unregister first
+      if(JMXRegistrar.isNameRegistered( StatisticsInfoMBean.STATISTICS_MBEAN_OBJECT_NAME)) {
+        JMXRegistrar.unRegisterMBean( StatisticsInfoMBean.STATISTICS_MBEAN_OBJECT_NAME );
+      }
     JMXRegistrar.registerMBean(
         new StatisticsInfo( statistics ), StatisticsInfoMBean.STATISTICS_MBEAN_OBJECT_NAME
     );

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryBuilder.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryBuilder.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/SearchFactoryBuilder.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@

   String enableJMX = configurationProperties.getProperty( Environment.JMX_ENABLED );
   if ( "true".equalsIgnoreCase( enableJMX ) ) {
-      enableIndexCrtlBean( searchFactoryImplementor );
+      enableIndexControlBean( searchFactoryImplementor );
   }
   return searchFactoryImplementor;
 }

-  private void enableIndexCrtlBean(SearchFactoryImplementor searchFactoryImplementor) {
+  private void enableIndexControlBean(SearchFactoryImplementor searchFactoryImplementor) {
   if ( !searchFactoryImplementor.isJMXEnabled() ) {
     return;
   }

-    // if we have a JNDI bound SessionFactory we can also enable the index control bean
-    if ( StringHelper.isNotEmpty( configurationProperties.getProperty( "hibernate.session_factory_name" ) ) ) {
-      IndexControl indexCtrlBean = new IndexControl( configurationProperties );
-      JMXRegistrar.registerMBean( indexCtrlBean, IndexControl.INDEX_CTRL_MBEAN_OBJECT_NAME );
+    // if we don't have a JNDI bound SessionFactory we cannot enable the index control bean
+    if ( StringHelper.isEmpty( configurationProperties.getProperty( "hibernate.session_factory_name" ) ) ) {
+      log.debug(
+          "In order to bind the IndexControlMBean the Hibernate SessionFactory has to be available via JNDI"
+      );
+      return;
   }
+
+    // since the SearchFactory is mutable we might have an already existing MBean which we have to unregister first
+    if ( JMXRegistrar.isNameRegistered( IndexControl.INDEX_CTRL_MBEAN_OBJECT_NAME ) ) {
+      JMXRegistrar.unRegisterMBean( IndexControl.INDEX_CTRL_MBEAN_OBJECT_NAME );
+    }
+
+    IndexControl indexCtrlBean = new IndexControl( configurationProperties );
+    JMXRegistrar.registerMBean( indexCtrlBean, IndexControl.INDEX_CTRL_MBEAN_OBJECT_NAME );
 }

 private SearchFactoryImplementor buildIncrementalSearchFactory() {

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/IndexingProgressMonitor.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/IndexingProgressMonitor.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/IndexingProgressMonitor.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@
package org.hibernate.search.jmx;

import java.util.concurrent.atomic.AtomicLong;
-import javax.management.ObjectName;

import org.slf4j.Logger;

@@(protected) @@
 private final AtomicLong totalCounter = new AtomicLong();
 private final AtomicLong entitiesLoadedCounter = new AtomicLong();

-  private final ObjectName registeredName;
+  private final String registeredName;

 public IndexingProgressMonitor() {
   String name = IndexingProgressMonitorMBean.INDEXING_PROGRESS_MONITOR_MBEAN_OBJECT_NAME;
@@(protected) @@
   registeredName = JMXRegistrar.registerMBean( this, name );
 }

-  public void documentsAdded(long increment) {
+  public final void documentsAdded(long increment) {
   documentsDoneCounter.addAndGet( increment );
 }

-  public void documentsBuilt(int number) {
+  public final void documentsBuilt(int number) {
   documentsBuiltCounter.addAndGet( number );
 }

-  public void entitiesLoaded(int size) {
+  public final void entitiesLoaded(int size) {
   entitiesLoadedCounter.addAndGet( size );
 }

-  public void addToTotalCount(long count) {
+  public final void addToTotalCount(long count) {
   totalCounter.addAndGet( count );
 }

-  public void indexingCompleted() {
+  public final void indexingCompleted() {
   log.info( "Indexing completed. Reindexed {} entities. Unregistering MBean from server", totalCounter.get() );
   JMXRegistrar.unRegisterMBean( registeredName );
 }

-  public long getLoadedEntitiesCount() {
+  public final long getLoadedEntitiesCount() {
   return entitiesLoadedCounter.get();
 }

-  public long getDocumentsAddedCount() {
+  public final long getDocumentsAddedCount() {
   return documentsDoneCounter.get();
 }

-  public long getNumberOfEntitiesToIndex() {
+  public final long getNumberOfEntitiesToIndex() {
   return totalCounter.get();
 }
}

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/JMXRegistrar.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/JMXRegistrar.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/jmx/JMXRegistrar.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@
  *
  * @return The registered object name
  */
-  public static ObjectName registerMBean(Object object, String name) {
+  public static String registerMBean(Object object, String name) {
   ObjectName objectName = createObjectName( name );
   MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
   try {
@@(protected) @@
   catch ( Exception e ) {
     throw new SearchException( "Unable to enable MBean for Hibernate Search", e );
   }
-    return objectName;
+    return objectName.toString();
 }

 /**
  * Unregister the MBean with the specified name.
  *
-   * @param name The object name of the bean to unregister. The {@(protected)}
+   * @param name The name of the bean to unregister. The {@(protected)}
  *
  * @throws IllegalArgumentException In case the object name is {@(protected)}
  */
-  public static void unRegisterMBean(ObjectName name) {
+  public static void unRegisterMBean(String name) {
   if ( name == null ) {
     throw new IllegalArgumentException( "The object name cannot be null" );
   }
+    ObjectName objectName = createObjectName( name );
   MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-    if ( mbs.isRegistered( name ) ) {
+    if ( mbs.isRegistered( objectName ) ) {
     try {
-        mbs.unregisterMBean( name );
+        mbs.unregisterMBean( objectName );
     }
     catch ( Exception e ) {
       log.warn( "Unable to un-register existing MBean: " + name, e );

Modified: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/SearchTestCase.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/SearchTestCase.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/SearchTestCase.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@
  *
  * @return the target directory of the build
  */
-  public File getTargetDir() {
+  public static File getTargetDir() {
   ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
   // get a URL reference to something we now is part of the classpath (us)
   URL myUrl = contextClassLoader.getResource( SearchTestCase.class.getName().replace( '.', '/' ) + ".class" );

Modified: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java  2010-08-20 11:01:35 UTC (rev 20206)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/configuration/mutablefactory/MutableFactoryTest.java  2010-08-20 13:31:16 UTC (rev 20207)
@@(protected) @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat, Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program 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 distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
package org.hibernate.search.test.configuration.mutablefactory;

import java.io.File;

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