Author: chetanm
Date: Tue Nov 24 11:29:17 2015
New Revision: 1716109

URL: http://svn.apache.org/viewvc?rev=1716109&view=rev
Log:
OAK-3673 - NotCompliantMBeanException for QueryEngineSettings, 
QueryStatManager, RepositoryStatsMBean

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/package-info.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1716109&r1=1716108&r2=1716109&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
(original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
Tue Nov 24 11:29:17 2015
@@ -46,6 +46,7 @@ import javax.jcr.NoSuchWorkspaceExceptio
 import javax.management.JMException;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
+import javax.management.StandardMBean;
 import javax.security.auth.login.LoginException;
 
 import com.google.common.base.Function;
@@ -278,7 +279,15 @@ public class Oak {
                     } else {
                         objectName = new ObjectName(String.valueOf(name));
                     }
-                    mbeanServer.registerMBean(service, objectName);
+
+                    if 
(type.getName().equals(service.getClass().getName().concat("MBean"))
+                            || service instanceof StandardMBean){
+                        mbeanServer.registerMBean(service, objectName);
+                    } else {
+                        //Wrap the MBean in std MBean
+                        mbeanServer.registerMBean(new StandardMBean(service, 
type), objectName);
+                    }
+
                 } catch (JMException e) {
                     LOG.warn("Unexpected exception while registering MBean of 
type [{}] " +
                             "against name [{}]", type, objectName, e);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java?rev=1716109&r1=1716108&r2=1716109&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettings.java
 Tue Nov 24 11:29:17 2015
@@ -19,11 +19,12 @@
 package org.apache.jackrabbit.oak.query;
 
 import org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean;
+import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
 
 /**
  * Settings of the query engine.
  */
-public class QueryEngineSettings implements QueryEngineSettingsMBean {
+public class QueryEngineSettings extends AnnotatedStandardMBean implements 
QueryEngineSettingsMBean {
     
     /**
      * the flag used to turn on/off the optimisations on top of the {@link 
Query} object.
@@ -48,7 +49,11 @@ public class QueryEngineSettings impleme
             DEFAULT_FULL_TEXT_COMPARISON_WITHOUT_INDEX;
     
     private boolean sql2Optimisation = 
Boolean.parseBoolean(System.getProperty(SQL2_OPTIMISATION_FLAG, "true"));
-    
+
+    public QueryEngineSettings() {
+        super(QueryEngineSettingsMBean.class);
+    }
+
     /**
      * Get the limit on how many nodes a query may read at most into memory, 
for
      * "order by" and "distinct" queries. If this limit is exceeded, the query

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/package-info.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/package-info.java?rev=1716109&r1=1716108&r2=1716109&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/package-info.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/package-info.java
 Tue Nov 24 11:29:17 2015
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("3.0")
+@Version("4.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.query;
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java?rev=1716109&r1=1716108&r2=1716109&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java
 Tue Nov 24 11:29:17 2015
@@ -40,14 +40,16 @@ import javax.management.openmbean.Compos
 import org.apache.jackrabbit.api.stats.RepositoryStatistics;
 import org.apache.jackrabbit.api.stats.TimeSeries;
 import org.apache.jackrabbit.oak.api.jmx.RepositoryStatsMBean;
+import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
 import org.apache.jackrabbit.stats.TimeSeriesStatsUtil;
 
-public class RepositoryStats implements RepositoryStatsMBean {
+public class RepositoryStats extends AnnotatedStandardMBean implements 
RepositoryStatsMBean {
 
     private final RepositoryStatistics repoStats;
     private final TimeSeries maxQueueLength;
 
     public RepositoryStats(RepositoryStatistics repoStats, TimeSeries 
maxQueueLength) {
+        super(RepositoryStatsMBean.class);
         this.repoStats = repoStats;
         this.maxQueueLength = maxQueueLength;
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java?rev=1716109&r1=1716108&r2=1716109&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtilsTest.java
 Tue Nov 24 11:29:17 2015
@@ -27,6 +27,8 @@ import javax.management.ObjectName;
 
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean;
+import org.apache.jackrabbit.oak.query.QueryEngineSettings;
 import org.junit.After;
 import org.junit.Test;
 
@@ -72,6 +74,26 @@ public class WhiteboardUtilsTest {
         
assertTrue(WhiteboardUtils.quoteIfRequired("text*with?chars").startsWith("\""));
     }
 
+    @Test
+    public void stdMBean() throws Exception{
+        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+        Oak oak = new Oak().with(server);
+        Whiteboard wb = oak.getWhiteboard();
+        Hello hello = new HelloTest();
+        regs.add(WhiteboardUtils.registerMBean(wb, HelloMBean.class, hello, 
"test", "hello"));
+        assertNotNull(server.getObjectInstance(new 
ObjectName("org.apache.jackrabbit.oak:type=test,name=hello")));
+    }
+
+    @Test
+    public void queryMBean() throws Exception{
+        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+        Oak oak = new Oak().with(server);
+        Whiteboard wb = oak.getWhiteboard();
+        QueryEngineSettings settings = new QueryEngineSettings();
+        regs.add(WhiteboardUtils.registerMBean(wb, 
QueryEngineSettingsMBean.class, settings, "query", "settings"));
+        assertNotNull(server.getObjectInstance(new 
ObjectName("org.apache.jackrabbit.oak:type=query,name=settings")));
+    }
+
     private interface HelloMBean {
         boolean isRunning();
         int getCount();
@@ -91,4 +113,8 @@ public class WhiteboardUtilsTest {
             return count;
         }
     }
+
+    private static class HelloTest extends Hello {
+
+    }
 }


Reply via email to