[jboss-svn-commits] JBL Code SVN: r28955 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/common and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 16 21:41:41 EDT 2009


Author: tirelli
Date: 2009-08-16 21:41:40 -0400 (Sun, 16 Aug 2009)
New Revision: 28955

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/KBaseConfigurationMonitorMBean.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KBaseConfigurationMonitor.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/ObjectTypeNodeMonitorMBean.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeBaseMonitoring.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/ObjectTypeNodeMonitor.java
Log:
JBRULES-2247: Adding support to monitoring through MBeans

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/KBaseConfigurationMonitorMBean.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/KBaseConfigurationMonitorMBean.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/KBaseConfigurationMonitorMBean.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -0,0 +1,37 @@
+package org.drools.management;
+
+public interface KBaseConfigurationMonitorMBean {
+
+    public int getAlphaNodeHashingThreshold();
+
+    public String getAssertBehaviour();
+
+    public int getCompositeKeyDepth();
+
+    public String getEventProcessingMode();
+
+    public int getMaxThreads();
+
+    public String getSequentialAgenda();
+
+    public boolean isAdvancedProcessRuleIntegration();
+
+    public boolean isIndexLeftBetaMemory();
+
+    public boolean isIndexRightBetaMemory();
+
+    public boolean isMaintainTms();
+
+    public boolean isMBeansEnabled();
+
+    public boolean isMultithreadEvaluation();
+
+    public boolean isRemoveIdentities();
+
+    public boolean isSequential();
+
+    public boolean isShareAlphaNodes();
+
+    public boolean isShareBetaNodes();
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/ObjectTypeNodeMonitorMBean.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/ObjectTypeNodeMonitorMBean.java	2009-08-17 00:35:57 UTC (rev 28954)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/management/ObjectTypeNodeMonitorMBean.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -1,17 +1,54 @@
 package org.drools.management;
 
+/**
+ * An interface for OTN MBean
+ * 
+ * @author etirelli
+ */
 public interface ObjectTypeNodeMonitorMBean {
 
+    /**
+     * The ID of the node
+     * 
+     * @return
+     */
     public int getId();
 
+    /**
+     * The entry point for the node
+     * 
+     * @return
+     */
     public String getEntryPoint();
 
+    /**
+     * The Object Type of the node
+     * 
+     * @return
+     */
     public String getObjectType();
 
+    /**
+     * The partition the node belongs to
+     * 
+     * @return
+     */
     public String getPartitionId();
 
+    /**
+     * True if this node corresponds to an event type
+     * 
+     * @return
+     */
     public boolean isEvent();
 
+    /**
+     * The calculated expiration offset for this node
+     * in case it is an event. -1 means it does not
+     * expires.
+     * 
+     * @return
+     */
     public long getExpirationOffset();
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-08-17 00:35:57 UTC (rev 28954)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -167,14 +167,14 @@
     }
 
     private void createRulebaseId(final String id) {
-        String key = ""; 
-        if( config.isMBeansEnabled() ) {
-            DroolsManagementAgent agent = DroolsManagementAgent.getInstance();
-            key = String.valueOf( agent.getNextKnowledgeBaseId() );
-        }
-        if ( id != null ) {
-            this.id = id+key;
+        if( id != null ) {
+            this.id = id;
         } else {
+            String key = ""; 
+            if( config.isMBeansEnabled() ) {
+                DroolsManagementAgent agent = DroolsManagementAgent.getInstance();
+                key = String.valueOf( agent.getNextKnowledgeBaseId() );
+            }
             this.id = "default"+key;
         }
     }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KBaseConfigurationMonitor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KBaseConfigurationMonitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KBaseConfigurationMonitor.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2008 Red Hat
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.drools.management;
+
+import org.drools.RuleBaseConfiguration;
+
+/**
+ * An mbean monitor class for the knowledgebase configuration
+ * 
+ * @author etirelli
+ */
+public class KBaseConfigurationMonitor implements KBaseConfigurationMonitorMBean {
+    
+    private RuleBaseConfiguration conf;
+
+    public KBaseConfigurationMonitor(RuleBaseConfiguration conf) {
+        this.conf = conf;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getAlphaNodeHashingThreshold()
+     */
+    public int getAlphaNodeHashingThreshold() {
+        return conf.getAlphaNodeHashingThreshold();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getAssertBehaviour()
+     */
+    public String getAssertBehaviour() {
+        return conf.getAssertBehaviour().toExternalForm();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getCompositeKeyDepth()
+     */
+    public int getCompositeKeyDepth() {
+        return conf.getCompositeKeyDepth();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getEventProcessingMode()
+     */
+    public String getEventProcessingMode() {
+        return conf.getEventProcessingMode().toExternalForm();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getMaxThreads()
+     */
+    public int getMaxThreads() {
+        return conf.getMaxThreads();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#getSequentialAgenda()
+     */
+    public String getSequentialAgenda() {
+        return conf.getSequentialAgenda().toExternalForm();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isAdvancedProcessRuleIntegration()
+     */
+    public boolean isAdvancedProcessRuleIntegration() {
+        return conf.isAdvancedProcessRuleIntegration();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isIndexLeftBetaMemory()
+     */
+    public boolean isIndexLeftBetaMemory() {
+        return conf.isIndexLeftBetaMemory();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isIndexRightBetaMemory()
+     */
+    public boolean isIndexRightBetaMemory() {
+        return conf.isIndexRightBetaMemory();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isMaintainTms()
+     */
+    public boolean isMaintainTms() {
+        return conf.isMaintainTms();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isMBeansEnabled()
+     */
+    public boolean isMBeansEnabled() {
+        return conf.isMBeansEnabled();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isMultithreadEvaluation()
+     */
+    public boolean isMultithreadEvaluation() {
+        return conf.isMultithreadEvaluation();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isRemoveIdentities()
+     */
+    public boolean isRemoveIdentities() {
+        return conf.isRemoveIdentities();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isSequential()
+     */
+    public boolean isSequential() {
+        return conf.isSequential();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isShareAlphaNodes()
+     */
+    public boolean isShareAlphaNodes() {
+        return conf.isShareAlphaNodes();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.management.KBaseConfigurationMonitorMBean#isShareBetaNodes()
+     */
+    public boolean isShareBetaNodes() {
+        return conf.isShareBetaNodes();
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeBaseMonitoring.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeBaseMonitoring.java	2009-08-17 00:35:57 UTC (rev 28954)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeBaseMonitoring.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -32,14 +32,14 @@
     implements
     KnowledgeBaseMonitoringMBean {
 
-    private static final String KBASE_PREFIX = "org.drools.kbases.";
+    private static final String KBASE_PREFIX = "org.drools.kbases";
     
     private ReteooRuleBase kbase;
     private ObjectName name;
     
     public KnowledgeBaseMonitoring(ReteooRuleBase kbase) {
         this.kbase = kbase;
-        this.name = DroolsManagementAgent.createObjectName(KBASE_PREFIX + kbase.getId() + ":type=KnowledgeBase");
+        this.name = DroolsManagementAgent.createObjectName(KBASE_PREFIX + ":id="+kbase.getId());
     }
     
     public ObjectName getName() {
@@ -75,14 +75,23 @@
     }
     
     public String getEntryPoints() {
+        // the dependent mbeans are created here in order to delay their creating 
+        // until the this kbase is actually inspected 
+        createDependentMBeans();
+        return kbase.getRete().getEntryPointNodes().keySet().toString();
+    }
+
+    private void createDependentMBeans() {
         for( EntryPointNode epn : kbase.getRete().getEntryPointNodes().values() ) {
             for( ObjectTypeNode otn : epn.getObjectTypeNodes().values() ) {
                 ObjectTypeNodeMonitor otnm = new ObjectTypeNodeMonitor( otn );
-                ObjectName name = DroolsManagementAgent.createObjectName( this.name.getDomain() + ":type=EntryPoints,EntryPoint=" + otnm.getNameSufix() + ",ObjectType="+((ClassObjectType)otn.getObjectType()).getClassName() );
+                ObjectName name = DroolsManagementAgent.createObjectName( this.name.getCanonicalName() + ",type=EntryPoints,EntryPoint=" + otnm.getNameSufix() + ",ObjectType="+((ClassObjectType)otn.getObjectType()).getClassName() );
                 DroolsManagementAgent.getInstance().registerMBean( kbase, otnm, name );
             }
         }
-        return kbase.getRete().getEntryPointNodes().keySet().toString();
+        KBaseConfigurationMonitor kbcm = new KBaseConfigurationMonitor( kbase.getConfiguration() );
+        ObjectName name = DroolsManagementAgent.createObjectName( this.name.getCanonicalName() + ",type=Configuration" );
+        DroolsManagementAgent.getInstance().registerMBean( kbase, kbcm, name );
     }
     
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/ObjectTypeNodeMonitor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/ObjectTypeNodeMonitor.java	2009-08-17 00:35:57 UTC (rev 28954)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/ObjectTypeNodeMonitor.java	2009-08-17 01:41:40 UTC (rev 28955)
@@ -76,7 +76,7 @@
     public String getNameSufix() {
         char[] name = node.getEntryPoint().getEntryPointId().toCharArray();
         for( int i = 0; i < name.length; i++ ) {
-            if( ! Character.isLetter( name[i] ) ) {
+            if( ! Character.isLetter( name[i] ) && name[i] != ' ' ) {
                 name[i] = '_';
             }
         }



More information about the jboss-svn-commits mailing list