[jboss-svn-commits] JBL Code SVN: r15855 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools/integrationtests and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 16 12:37:39 EDT 2007
Author: tirelli
Date: 2007-10-16 12:37:39 -0400 (Tue, 16 Oct 2007)
New Revision: 15855
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemoryError.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/StatefulSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AsyncFireAllRulesRuleBaseUpdateListener.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
Log:
JBRULES-1279: fixing memory leak
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -50,6 +50,7 @@
import org.drools.Guess;
import org.drools.IndexedNumber;
import org.drools.InsertedObject;
+import org.drools.Message;
import org.drools.Order;
import org.drools.OrderItem;
import org.drools.Person;
@@ -97,7 +98,6 @@
import org.drools.event.WorkingMemoryEventListener;
import org.drools.facttemplates.Fact;
import org.drools.facttemplates.FactTemplate;
-import org.drools.Message;
import org.drools.lang.DrlDumper;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.PackageDescr;
@@ -3609,24 +3609,6 @@
}
}
- public void testOutOfMemory() throws Exception {
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_OutOfMemory.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
- workingMemory.insert( new Cheese( "stilton",
- 1 ) );
-
- workingMemory.fireAllRules( 3000000 );
-
- // just for profiling
- //Thread.currentThread().wait();
- }
-
public void testBindingsOnConnectiveExpressions() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_bindings.drl" ) ) );
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -0,0 +1,89 @@
+package org.drools.integrationtests;
+
+/*
+ * Copyright 2005 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.
+ */
+
+import java.io.InputStreamReader;
+
+import junit.framework.TestCase;
+
+import org.drools.Cheese;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+
+/** Run all the tests with the ReteOO engine implementation */
+public class OutOfMemoryTest extends TestCase {
+
+ protected RuleBase getRuleBase() throws Exception {
+
+ return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+ null );
+ }
+
+ protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
+
+ return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+ config );
+ }
+
+ public void testStatefulSessionsCreation() throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_OutOfMemoryError.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+
+ int i = 0;
+
+ try {
+ for( i = 0; i < 300000; i++ ) {
+ final StatefulSession session = ruleBase.newStatefulSession( true );
+ session.dispose();
+ }
+ } catch ( Throwable e ) {
+ System.out.println("Error at: "+i);
+ e.printStackTrace();
+ fail("Should not raise any error or exception.");
+ }
+
+ }
+
+ public void testAgendaLoop() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_OutOfMemory.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ workingMemory.insert( new Cheese( "stilton",
+ 1 ) );
+
+ workingMemory.fireAllRules( 3000000 );
+
+ // just for profiling
+ //Thread.currentThread().wait();
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemoryError.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemoryError.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemoryError.drl 2007-10-16 16:37:39 UTC (rev 15855)
@@ -0,0 +1,6 @@
+package org.drools
+
+rule "empty rule"
+when
+then
+end
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -29,7 +29,6 @@
import org.drools.concurrent.ExecutorService;
import org.drools.spi.ConflictResolver;
import org.drools.spi.ConsequenceExceptionHandler;
-import org.drools.spi.RuleBaseUpdateListener;
import org.drools.util.ChainedProperties;
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/StatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/StatefulSession.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/StatefulSession.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -70,5 +70,6 @@
* to check on the status of the task.
*/
Future asyncFireAllRules(AgendaFilter agendaFilter);
-
+
+ public List getRuleBaseUpdateListeners();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AsyncFireAllRulesRuleBaseUpdateListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AsyncFireAllRulesRuleBaseUpdateListener.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/AsyncFireAllRulesRuleBaseUpdateListener.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -4,6 +4,7 @@
package org.drools.base;
import org.drools.StatefulSession;
+import org.drools.common.InternalWorkingMemory;
import org.drools.event.BeforeRuleBaseUnlockedEvent;
import org.drools.event.DefaultRuleBaseEventListener;
import org.drools.spi.RuleBaseUpdateListener;
@@ -17,7 +18,7 @@
}
public void setSession(StatefulSession session) {
- this.session = session;
+ this.session = (StatefulSession) session;
}
public void beforeRuleBaseUnlocked(BeforeRuleBaseUnlockedEvent event) {
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 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -261,6 +261,9 @@
public synchronized void disposeStatefulSession(final StatefulSession statefulSession) {
this.statefulSessions.remove( statefulSession );
+ for( Iterator it = statefulSession.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+ this.removeEventListener( (RuleBaseEventListener) it.next() );
+ }
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -87,69 +87,69 @@
// ------------------------------------------------------------
// Constants
// ------------------------------------------------------------
- protected static final Class[] ADD_REMOVE_PROPERTY_CHANGE_LISTENER_ARG_TYPES = new Class[]{PropertyChangeListener.class};
+ protected static final Class[] ADD_REMOVE_PROPERTY_CHANGE_LISTENER_ARG_TYPES = new Class[]{PropertyChangeListener.class};
// ------------------------------------------------------------
// Instance members
// ------------------------------------------------------------
- protected final long id;
+ protected final long id;
/** The arguments used when adding/removing a property change listener. */
- protected final Object[] addRemovePropertyChangeListenerArgs = new Object[]{this};
+ protected final Object[] addRemovePropertyChangeListenerArgs = new Object[]{this};
/** The actual memory for the <code>JoinNode</code>s. */
- protected final PrimitiveLongMap nodeMemories = new PrimitiveLongMap( 32,
- 8 );
+ protected final PrimitiveLongMap nodeMemories = new PrimitiveLongMap( 32,
+ 8 );
/** Object-to-handle mapping. */
- private final ObjectHashMap assertMap;
- private final ObjectHashMap identityMap;
+ private final ObjectHashMap assertMap;
+ private final ObjectHashMap identityMap;
- protected Map queryResults = Collections.EMPTY_MAP;
+ protected Map queryResults = Collections.EMPTY_MAP;
/** Global values which are associated with this memory. */
- protected GlobalResolver globalResolver;
+ protected GlobalResolver globalResolver;
- protected static final Object NULL = new Serializable() {
- private static final long serialVersionUID = 400L;
- };
+ protected static final Object NULL = new Serializable() {
+ private static final long serialVersionUID = 400L;
+ };
/** The eventSupport */
- protected WorkingMemoryEventSupport workingMemoryEventSupport = new WorkingMemoryEventSupport();
+ protected WorkingMemoryEventSupport workingMemoryEventSupport = new WorkingMemoryEventSupport();
- protected AgendaEventSupport agendaEventSupport = new AgendaEventSupport();
+ protected AgendaEventSupport agendaEventSupport = new AgendaEventSupport();
- protected RuleFlowEventSupport ruleFlowEventSupport = new RuleFlowEventSupport();
+ protected RuleFlowEventSupport ruleFlowEventSupport = new RuleFlowEventSupport();
/** The <code>RuleBase</code> with which this memory is associated. */
- protected transient InternalRuleBase ruleBase;
+ protected transient InternalRuleBase ruleBase;
- protected final FactHandleFactory handleFactory;
+ protected final FactHandleFactory handleFactory;
- protected final TruthMaintenanceSystem tms;
+ protected final TruthMaintenanceSystem tms;
/** Rule-firing agenda. */
- protected DefaultAgenda agenda;
+ protected DefaultAgenda agenda;
- protected final List actionQueue = new ArrayList();
+ protected final List actionQueue = new ArrayList();
- protected final ReentrantLock lock = new ReentrantLock();
+ protected final ReentrantLock lock = new ReentrantLock();
- protected final boolean discardOnLogicalOverride;
+ protected final boolean discardOnLogicalOverride;
- protected long propagationIdCounter;
+ protected long propagationIdCounter;
- private final boolean maintainTms;
+ private final boolean maintainTms;
- private final boolean sequential;
+ private final boolean sequential;
- private List liaPropagations = Collections.EMPTY_LIST;
+ private List liaPropagations = Collections.EMPTY_LIST;
/** Flag to determine if a rule is currently being fired. */
- protected boolean firing;
+ protected boolean firing;
- protected boolean halt;
+ protected boolean halt;
- private int processCounter;
+ private int processCounter;
// ------------------------------------------------------------
// Constructors
@@ -566,7 +566,7 @@
}
}
-
+
public ObjectHashMap getAssertMap() {
return this.assertMap;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -23,7 +23,6 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
import org.drools.reteoo.Rete;
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.rule.CompositePackageClassLoader;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -1,7 +1,5 @@
package org.drools.common;
-import java.util.Map;
-
import org.drools.FactException;
import org.drools.FactHandle;
import org.drools.WorkingMemory;
@@ -60,4 +58,5 @@
public boolean isSequential();
public void addLIANodePropagation(LIANodePropagation liaNodePropagation);
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -16,6 +16,9 @@
*
*/
public class CommandExecutor implements Runnable, Serializable {
+
+ private static final long serialVersionUID = 5924295088331461167L;
+
private WorkingMemory workingMemory;
private BlockingQueue queue;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -3,9 +3,10 @@
*/
package org.drools.concurrent;
-import org.drools.WorkingMemory;
public class DefaultExecutorService implements ExecutorService {
+
+ private static final long serialVersionUID = 7860812696865293690L;
private Thread thread;
private CommandExecutor executor;
private boolean running;
@@ -27,6 +28,7 @@
public void shutDown() {
this.executor.shutdown();
this.running = false;
+ this.thread = null;
}
public Future submit(Command command) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -20,8 +20,7 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
-import java.util.HashMap;
-import java.util.WeakHashMap;
+import java.util.Iterator;
import org.drools.FactException;
import org.drools.FactHandle;
@@ -29,26 +28,19 @@
import org.drools.RuleBaseConfiguration;
import org.drools.StatefulSession;
import org.drools.StatelessSession;
-import org.drools.base.FireAllRulesRuleBaseUpdateListener;
import org.drools.common.AbstractRuleBase;
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.concurrent.CommandExecutor;
-import org.drools.concurrent.DefaultExecutorService;
import org.drools.concurrent.ExecutorService;
-import org.drools.rule.CompositePackageClassLoader;
+import org.drools.event.RuleBaseEventListener;
+import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.Rule;
-import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.PropagationContext;
-import org.drools.spi.RuleBaseUpdateListener;
-import org.drools.spi.RuleBaseUpdateListenerFactory;
-import org.drools.util.ObjectHashSet;
-import sun.security.x509.IssuerAlternativeNameExtension;
-
/**
* Implementation of <code>RuleBase</code>.
*
@@ -69,8 +61,6 @@
private ReteooBuilder reteooBuilder;
- private transient RuleBaseUpdateListenerFactory updateListenerFactory;
-
// ------------------------------------------------------------
// Constructors
// ------------------------------------------------------------
@@ -241,6 +231,9 @@
if ( keepReference ) {
super.addStatefulSession( session );
+ for( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+ addEventListener( (RuleBaseEventListener) it.next() );
+ }
}
final InitialFactHandle handle = new InitialFactHandle( session.getFactHandleFactory().newFactHandle( new InitialFactHandleDummyObject() ) );
@@ -252,16 +245,6 @@
null ) );
}
- if ( this.updateListenerFactory == null ) {
- this.updateListenerFactory = new RuleBaseUpdateListenerFactory();
- }
-
- String listenerName = this.config.getRuleBaseUpdateHandler();
- if ( listenerName != null && listenerName.length() > 0 ) {
- RuleBaseUpdateListener listener = this.updateListenerFactory.createListener( listenerName, session );
- addEventListener( listener );
- }
-
return session;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -1,6 +1,7 @@
package org.drools.reteoo;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.drools.FactHandle;
@@ -11,15 +12,22 @@
import org.drools.concurrent.ExecutorService;
import org.drools.concurrent.FireAllRules;
import org.drools.concurrent.Future;
+import org.drools.concurrent.RetractObject;
import org.drools.concurrent.UpdateObject;
-import org.drools.concurrent.RetractObject;
import org.drools.spi.AgendaFilter;
+import org.drools.spi.RuleBaseUpdateListener;
+import org.drools.spi.RuleBaseUpdateListenerFactory;
public class ReteooStatefulSession extends ReteooWorkingMemory
implements
StatefulSession {
- private final ExecutorService executor;
+ private static final long serialVersionUID = -5360554247241558374L;
+ private ExecutorService executor;
+
+ private transient List ruleBaseListeners;
+ private transient RuleBaseUpdateListenerFactory updateListenerFactory;
+
public ReteooStatefulSession(final int id,
final InternalRuleBase ruleBase,
final ExecutorService executorService) {
@@ -70,5 +78,24 @@
public void dispose() {
this.ruleBase.disposeStatefulSession( this );
- }
+ this.executor.shutDown();
+ }
+
+ public List getRuleBaseUpdateListeners() {
+ if ( this.ruleBaseListeners == null || this.ruleBaseListeners == Collections.EMPTY_LIST ) {
+ String listenerName = this.ruleBase.getConfiguration().getRuleBaseUpdateHandler();
+ if ( listenerName != null && listenerName.length() > 0 ) {
+ if ( this.updateListenerFactory == null ) {
+ this.updateListenerFactory = new RuleBaseUpdateListenerFactory();
+ }
+ RuleBaseUpdateListener listener = this.updateListenerFactory.createListener( listenerName,
+ this );
+ this.ruleBaseListeners = Collections.singletonList( listener );
+ } else {
+ this.ruleBaseListeners = Collections.EMPTY_LIST;
+ }
+ }
+ return this.ruleBaseListeners;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-10-16 16:14:42 UTC (rev 15854)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-10-16 16:37:39 UTC (rev 15855)
@@ -382,6 +382,11 @@
// TODO Auto-generated method stub
}
+
+ public List getRuleBaseUpdateListeners() {
+ // TODO Auto-generated method stub
+ return null;
+ }
};
}
}
More information about the jboss-svn-commits
mailing list