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 {
+
+ }
}