[jboss-svn-commits] JBL Code SVN: r19038 - in labs/jbossrules/branches/4.0.x/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
Mon Mar 17 14:39:29 EDT 2008
Author: tirelli
Date: 2008-03-17 14:39:28 -0400 (Mon, 17 Mar 2008)
New Revision: 19038
Added:
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ObjenesisFactory.java
Modified:
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
Log:
JBRULES-1507: adding option for statically caching objenesis
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-03-17 17:22:29 UTC (rev 19037)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-03-17 18:39:28 UTC (rev 19038)
@@ -65,6 +65,7 @@
* drools.conflictResolver = <qualified class name>
* drools.consequenceExceptionHandler = <qualified class name>
* drools.ruleBaseUpdateHandler = <qualified class name>
+ * drools.useStaticObjenesis = <false|true>
*
*/
public class RuleBaseConfiguration
@@ -98,6 +99,8 @@
private boolean shadowProxy;
private Map shadowProxyExcludes;
+ private boolean useStaticObjenesis;
+
private static final String STAR = "*";
private transient ClassLoader classLoader;
@@ -229,6 +232,10 @@
setShadowProxyExcludes( this.chainedProperties.getProperty( "drools.shadowProxyExcludes",
"" ) );
+
+ setUseStaticObjenesis( Boolean.valueOf( this.chainedProperties.getProperty( "drools.useStaticObjenesis",
+ "false" ) ).booleanValue() );
+
}
/**
@@ -473,6 +480,15 @@
return this.shadowProxy;
}
+ public boolean isUseStaticObjenesis() {
+ return useStaticObjenesis;
+ }
+
+ public void setUseStaticObjenesis(boolean useStaticObjenesis) {
+ checkCanChange(); // throws an exception if a change isn't possible;
+ this.useStaticObjenesis = useStaticObjenesis;
+ }
+
public ClassLoader getClassLoader() {
return classLoader;
}
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-17 17:22:29 UTC (rev 19037)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-17 18:39:28 UTC (rev 19038)
@@ -44,9 +44,7 @@
import org.drools.concurrent.ExecutorService;
import org.drools.event.RuleBaseEventListener;
import org.drools.event.RuleBaseEventSupport;
-import org.drools.reteoo.ReteooStatefulSession;
import org.drools.objenesis.Objenesis;
-import org.drools.objenesis.ObjenesisStd;
import org.drools.rule.CompositePackageClassLoader;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.MapBackedClassLoader;
@@ -57,6 +55,7 @@
import org.drools.spi.ExecutorServiceFactory;
import org.drools.spi.FactHandleFactory;
import org.drools.util.ObjectHashSet;
+import org.drools.util.ObjenesisFactory;
import org.drools.util.concurrent.locks.ReentrantLock;
/**
@@ -91,7 +90,7 @@
protected MapBackedClassLoader classLoader;
private transient Objenesis objenesis;
-
+
/** The fact handle factory. */
protected FactHandleFactory factHandleFactory;
@@ -185,11 +184,11 @@
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final ObjectOutput out = new ObjectOutputStream( bos );
out.writeObject( this.id );
+ out.writeObject( this.config );
out.writeObject( this.processes );
out.writeObject( this.agendaGroupRuleTotals );
out.writeObject( this.factHandleFactory );
out.writeObject( this.globals );
- out.writeObject( this.config );
this.eventSupport.removeEventListener( RuleBaseEventListener.class );
out.writeObject( this.eventSupport );
@@ -225,7 +224,6 @@
}
this.packageClassLoader.addClassLoader( this.classLoader );
- this.objenesis = createObjenesis();
for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
@@ -240,13 +238,16 @@
childStream.setRuleBase( this );
this.id = (String) childStream.readObject();
+
+ this.config = (RuleBaseConfiguration) childStream.readObject();
+ this.config.setClassLoader( childStream.getClassLoader() );
+ this.objenesis = createObjenesis();
+
this.processes = (Map) childStream.readObject();
this.agendaGroupRuleTotals = (Map) childStream.readObject();
this.factHandleFactory = (FactHandleFactory) childStream.readObject();
this.globals = (Map) childStream.readObject();
- this.config = (RuleBaseConfiguration) childStream.readObject();
- this.config.setClassLoader( childStream.getClassLoader() );
this.eventSupport = (RuleBaseEventSupport) childStream.readObject();
this.eventSupport.setRuleBase( this );
@@ -262,7 +263,11 @@
* @return a standart Objenesis instanse with caching turned on.
*/
protected Objenesis createObjenesis() {
- return new ObjenesisStd(true);
+ if( this.config.isUseStaticObjenesis() ) {
+ return ObjenesisFactory.getStaticObjenesis();
+ } else {
+ return ObjenesisFactory.getDefaultObjenesis();
+ }
}
/**
Added: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ObjenesisFactory.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ObjenesisFactory.java (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/util/ObjenesisFactory.java 2008-03-17 18:39:28 UTC (rev 19038)
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ *
+ * Created on Mar 17, 2008
+ */
+package org.drools.util;
+
+import java.io.Serializable;
+
+import org.drools.objenesis.Objenesis;
+import org.drools.objenesis.ObjenesisStd;
+
+/**
+ * A factory interface for Objenesis instances
+ *
+ * @author etirelli
+ */
+public class ObjenesisFactory implements Serializable {
+
+ private static final long serialVersionUID = 969174504278340793L;
+ private static final Objenesis OBJENESIS_INSTANCE = null;
+
+ private ObjenesisFactory() {}
+
+ /**
+ * Returns a statically cached objenesis instance
+ */
+ public static Objenesis getStaticObjenesis() {
+ if( OBJENESIS_INSTANCE == null ) {
+ new ObjenesisStd(true);
+ }
+ return OBJENESIS_INSTANCE;
+ }
+
+ /**
+ * Returns a newly instantiated objenesis instance
+ */
+ public static Objenesis getDefaultObjenesis() {
+ return new ObjenesisStd(true);
+ }
+
+}
More information about the jboss-svn-commits
mailing list