[jboss-svn-commits] JBL Code SVN: r18812 - in labs/jbossrules/branches/temporal_rete: drools-compiler/src/main/java/org/drools/compiler and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Mar 10 16:34:15 EDT 2008
Author: tirelli
Date: 2008-03-10 16:34:14 -0400 (Mon, 10 Mar 2008)
New Revision: 18812
Added:
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl
Modified:
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java
labs/jbossrules/branches/temporal_rete/pom.xml
Log:
JBRULES-1390: improving support for streams
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -371,6 +371,37 @@
this.dialectRegistry.addImport( importDecl.getTarget() );
}
+ processTypeDeclarations( packageDescr );
+
+ for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
+ String importEntry = ((FunctionImportDescr) it.next()).getTarget();
+ this.dialectRegistry.addStaticImport( importEntry );
+ this.pkg.addStaticImport( importEntry );
+ }
+
+ final List globals = packageDescr.getGlobals();
+ for ( final Iterator it = globals.iterator(); it.hasNext(); ) {
+ final GlobalDescr global = (GlobalDescr) it.next();
+ final String identifier = global.getIdentifier();
+ final String className = global.getType();
+
+ Class clazz;
+ try {
+ clazz = typeResolver.resolveType( className );
+ this.pkg.addGlobal( identifier,
+ clazz );
+ } catch ( final ClassNotFoundException e ) {
+ this.results.add( new GlobalError( identifier,
+ global.getLine() ) );
+ }
+ }
+
+ }
+
+ /**
+ * @param packageDescr
+ */
+ private void processTypeDeclarations(final PackageDescr packageDescr) {
for ( TypeDeclarationDescr typeDescr : packageDescr.getTypeDeclarations() ) {
TypeDeclaration type = new TypeDeclaration( typeDescr.getTypeName() );
@@ -422,30 +453,6 @@
this.pkg.addTypeDeclaration( type );
}
-
- for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
- String importEntry = ((FunctionImportDescr) it.next()).getTarget();
- this.dialectRegistry.addStaticImport( importEntry );
- this.pkg.addStaticImport( importEntry );
- }
-
- final List globals = packageDescr.getGlobals();
- for ( final Iterator it = globals.iterator(); it.hasNext(); ) {
- final GlobalDescr global = (GlobalDescr) it.next();
- final String identifier = global.getIdentifier();
- final String className = global.getType();
-
- Class clazz;
- try {
- clazz = typeResolver.resolveType( className );
- this.pkg.addGlobal( identifier,
- clazz );
- } catch ( final ClassNotFoundException e ) {
- this.results.add( new GlobalError( identifier,
- global.getLine() ) );
- }
- }
-
}
private void addFunction(final FunctionDescr functionDescr) {
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel 2008-03-10 20:34:14 UTC (rev 18812)
@@ -30,7 +30,7 @@
public @{className}() {
}
- public void init(@foreach{declarationTypes, declarations as type, declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ public void init(@foreach{declarationTypes, declarations as type, declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globalTypes, globals as type, identifier} @{type} @{identifier} @end{","}
) throws Exception {
@{initCode}
@@ -56,7 +56,7 @@
@{reverseCode}
}
- public Object getResult(@foreach{declarationTypes, declarations as type, declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ public Object getResult(@foreach{declarationTypes, declarations as type, declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globalTypes, globals as type, identifier}@{type} @{identifier} @end{","}
) throws Exception {
return ( @{resultCode} );
Modified: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -110,6 +110,70 @@
}
+ public void FIXME_testEventAssertionWithDuration() throws Exception {
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleEventAssertionWithDuration.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm = ruleBase.newTemporalSession( ClockType.PSEUDO_CLOCK );
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+
+ StockTick tick1 = new StockTick( 1,
+ "DROO",
+ 50,
+ System.currentTimeMillis(),
+ 5 );
+ StockTick tick2 = new StockTick( 2,
+ "ACME",
+ 10,
+ System.currentTimeMillis(),
+ 10 );
+ StockTick tick3 = new StockTick( 3,
+ "ACME",
+ 10,
+ System.currentTimeMillis(),
+ 8 );
+ StockTick tick4 = new StockTick( 4,
+ "DROO",
+ 50,
+ System.currentTimeMillis(),
+ 7);
+
+ InternalFactHandle handle1 = (InternalFactHandle) wm.insert( tick1 );
+ InternalFactHandle handle2 = (InternalFactHandle) wm.insert( tick2 );
+ InternalFactHandle handle3 = (InternalFactHandle) wm.insert( tick3 );
+ InternalFactHandle handle4 = (InternalFactHandle) wm.insert( tick4 );
+
+ assertNotNull( handle1 );
+ assertNotNull( handle2 );
+ assertNotNull( handle3 );
+ assertNotNull( handle4 );
+
+ assertTrue( handle1.isEvent() );
+ assertTrue( handle2.isEvent() );
+ assertTrue( handle3.isEvent() );
+ assertTrue( handle4.isEvent() );
+
+ EventFactHandle eh1 = (EventFactHandle) handle1;
+ EventFactHandle eh2 = (EventFactHandle) handle2;
+ EventFactHandle eh3 = (EventFactHandle) handle3;
+ EventFactHandle eh4 = (EventFactHandle) handle4;
+
+ assertEquals( tick1.getDuration(), eh1.getDuration() );
+ assertEquals( tick2.getDuration(), eh2.getDuration() );
+ assertEquals( tick3.getDuration(), eh3.getDuration() );
+ assertEquals( tick4.getDuration(), eh4.getDuration() );
+
+ wm.fireAllRules();
+
+ assertEquals( 2,
+ results.size() );
+
+ }
+
public void FIXME_testTimeRelationalOperators() throws Exception {
// read in the source
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_TimeRelationalOperators.drl" ) );
Added: labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl (rev 0)
+++ labs/jbossrules/branches/temporal_rete/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl 2008-03-10 20:34:14 UTC (rev 18812)
@@ -0,0 +1,17 @@
+package org.drools;
+
+import org.drools.StockTick;
+
+declare StockTick {
+ role event,
+ duration_attribute duration
+}
+
+global java.util.List results;
+
+rule "Check event"
+when
+ $st : StockTick( company == "ACME" )
+then
+ results.add( $st );
+end
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -45,7 +45,6 @@
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.process.core.Process;
@@ -56,6 +55,7 @@
import org.drools.rule.Package;
import org.drools.rule.PackageCompilationData;
import org.drools.rule.Rule;
+import org.drools.rule.TypeDeclaration;
import org.drools.spi.ExecutorServiceFactory;
import org.drools.spi.FactHandleFactory;
import org.drools.util.ObjectHashSet;
@@ -75,51 +75,53 @@
// ------------------------------------------------------------
// Instance members
// ------------------------------------------------------------
- protected String id;
+ protected String id;
- protected int workingMemoryCounter;
+ protected int workingMemoryCounter;
- protected RuleBaseConfiguration config;
+ protected RuleBaseConfiguration config;
- protected Map<String, Package> pkgs;
+ protected Map<String, Package> pkgs;
- protected Map processes;
+ protected Map processes;
- protected Map agendaGroupRuleTotals;
+ protected Map agendaGroupRuleTotals;
- protected transient CompositePackageClassLoader packageClassLoader;
+ protected transient CompositePackageClassLoader packageClassLoader;
- protected transient MapBackedClassLoader classLoader;
+ protected transient MapBackedClassLoader classLoader;
- private transient Objenesis objenesis;
+ private transient Objenesis objenesis;
- /** The fact handle factory. */
- protected FactHandleFactory factHandleFactory;
+ /** The fact handle factory. */
+ protected FactHandleFactory factHandleFactory;
- protected Map globals;
+ protected Map globals;
- private ReloadPackageCompilationData reloadPackageCompilationData = null;
+ private ReloadPackageCompilationData reloadPackageCompilationData = null;
- private RuleBaseEventSupport eventSupport = new RuleBaseEventSupport( this );
+ private RuleBaseEventSupport eventSupport = new RuleBaseEventSupport( this );
/**
* WeakHashMap to keep references of WorkingMemories but allow them to be
* garbage collected
*/
- protected transient ObjectHashSet statefulSessions;
+ protected transient ObjectHashSet statefulSessions;
// wms used for lock list during dynamic updates
- InternalWorkingMemory[] wms;
+ InternalWorkingMemory[] wms;
// indexed used to track invariant lock
- int lastAquiredLock;
+ int lastAquiredLock;
// lock for entire rulebase, used for dynamic updates
- protected final ReentrantLock lock = new ReentrantLock();
+ protected final ReentrantLock lock = new ReentrantLock();
- private int additionsSinceLock;
- private int removalsSinceLock;
+ private int additionsSinceLock;
+ private int removalsSinceLock;
+ private transient Map<Class< ? >, TypeDeclaration> classTypeDeclaration;
+
/**
* Default constructor - for Externalizable. This should never be used by a user, as it
* will result in an invalid state for the instance.
@@ -161,9 +163,11 @@
this.processes = new HashMap();
this.globals = new HashMap();
this.statefulSessions = new ObjectHashSet();
- this.objenesis = createObjenesis();
- }
+ this.objenesis = createObjenesis();
+ this.classTypeDeclaration = new HashMap<Class< ? >, TypeDeclaration>();
+ }
+
// ------------------------------------------------------------
// Instance methods
// ------------------------------------------------------------
@@ -200,7 +204,7 @@
*
*/
public void doReadExternal(final ObjectInput stream) throws IOException,
- ClassNotFoundException {
+ ClassNotFoundException {
// PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
this.pkgs = (Map) stream.readObject();
@@ -215,9 +219,9 @@
}
this.packageClassLoader.addClassLoader( this.classLoader );
- this.objenesis = createObjenesis();
+ this.objenesis = createObjenesis();
- for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
+ for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
}
@@ -237,21 +241,33 @@
this.config = (RuleBaseConfiguration) childStream.readObject();
this.config.setClassLoader( childStream.getClassLoader() );
+
this.eventSupport = (RuleBaseEventSupport) childStream.readObject();
this.eventSupport.setRuleBase( this );
this.statefulSessions = new ObjectHashSet();
+
+ this.populateTypeDeclarationMaps();
}
- /**
- * Creates Objenesis instance for the RuleBase.
- * @return a standart Objenesis instanse with caching turned on.
- */
- protected Objenesis createObjenesis() {
- return new ObjenesisStd(true);
- }
+ private void populateTypeDeclarationMaps() {
+ this.classTypeDeclaration = new HashMap<Class<?>, TypeDeclaration>();
+ for( Package pkg : this.pkgs.values() ) {
+ for( TypeDeclaration type : pkg.getTypeDeclarations().values() ) {
+ this.classTypeDeclaration.put( type.getTypeClass(), type );
+ }
+ }
+ }
- /**
+ /**
+ * Creates Objenesis instance for the RuleBase.
+ * @return a standart Objenesis instanse with caching turned on.
+ */
+ protected Objenesis createObjenesis() {
+ return new ObjenesisStd( true );
+ }
+
+ /**
* @return the id
*/
public String getId() {
@@ -272,7 +288,7 @@
public synchronized void disposeStatefulSession(final StatefulSession statefulSession) {
this.statefulSessions.remove( statefulSession );
- for( Iterator it = statefulSession.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+ for ( Iterator it = statefulSession.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
this.removeEventListener( (RuleBaseEventListener) it.next() );
}
}
@@ -411,6 +427,15 @@
}
this.globals.putAll( newGlobals );
+ // Add type declarations
+ for ( TypeDeclaration type : newPkg.getTypeDeclarations().values() ) {
+ // should we allow overrides?
+ if ( !this.classTypeDeclaration.containsKey( type.getTypeClass() ) ) {
+ this.classTypeDeclaration.put( type.getTypeClass(),
+ type );
+ }
+ }
+
final Rule[] rules = newPkg.getRules();
for ( int i = 0; i < rules.length; ++i ) {
@@ -485,6 +510,18 @@
}
globals.putAll( newPkg.getGlobals() );
+ // add type declarations
+ for ( TypeDeclaration type : newPkg.getTypeDeclarations().values() ) {
+ // should we allow overrides?
+ if ( !this.classTypeDeclaration.containsKey( type.getTypeClass() ) ) {
+ this.classTypeDeclaration.put( type.getTypeClass(),
+ type );
+ }
+ if ( !pkg.getTypeDeclarations().containsKey( type.getTypeName() ) ) {
+ pkg.addTypeDeclaration( type );
+ }
+ }
+
//Add rules into the RuleBase package
//as this is needed for individual rule removal later on
final Rule[] newRules = newPkg.getRules();
@@ -504,6 +541,10 @@
}
}
}
+
+ public TypeDeclaration getTypeDeclaration(Class< ? > clazz) {
+ return this.classTypeDeclaration.get( clazz );
+ }
private synchronized void addRule(final Package pkg,
final Rule rule) throws InvalidPatternException {
@@ -677,11 +718,11 @@
return process;
}
- public Objenesis getObjenesis() {
- return objenesis;
- }
+ public Objenesis getObjenesis() {
+ return objenesis;
+ }
- protected synchronized void addStatefulSession(final StatefulSession statefulSession) {
+ protected synchronized void addStatefulSession(final StatefulSession statefulSession) {
this.statefulSessions.add( statefulSession );
}
@@ -723,15 +764,15 @@
synchronized ( this.pkgs ) {
((InternalWorkingMemory) session).setRuleBase( this );
- ((InternalWorkingMemory) session).setId( ( nextWorkingMemoryCounter() ) );
+ ((InternalWorkingMemory) session).setId( (nextWorkingMemoryCounter()) );
- ExecutorService executor = ExecutorServiceFactory.createExecutorService( this.config.getExecutorService() );
+ ExecutorService executor = ExecutorServiceFactory.createExecutorService( this.config.getExecutorService() );
executor.setCommandExecutor( new CommandExecutor( session ) );
if ( keepReference ) {
addStatefulSession( session );
- for( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
+ for ( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
addEventListener( (RuleBaseEventListener) it.next() );
}
}
@@ -778,10 +819,10 @@
// since the event support is thread-safe, no need for locks... right?
return this.eventSupport.getEventListeners();
}
-
- public boolean isEvent( Class clazz ) {
- for( Package pkg : this.pkgs.values() ) {
- if( pkg.isEvent( clazz ) ) {
+
+ public boolean isEvent(Class clazz) {
+ for ( Package pkg : this.pkgs.values() ) {
+ if ( pkg.isEvent( clazz ) ) {
return true;
}
}
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -1566,10 +1566,8 @@
objectTypeConf = map.get( cls );
if ( objectTypeConf == null ) {
- final boolean isEvent = this.ruleBase.isEvent( cls );
objectTypeConf = new ClassObjectTypeConf( entrypoint,
cls,
- isEvent,
this.ruleBase );
this.addObjectTypeConf( entrypoint,
cls,
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -30,6 +30,7 @@
import org.drools.rule.CompositePackageClassLoader;
import org.drools.rule.MapBackedClassLoader;
import org.drools.rule.Package;
+import org.drools.rule.TypeDeclaration;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.PropagationContext;
@@ -116,4 +117,12 @@
public Objenesis getObjenesis();
public int getNodeCount();
+
+ /**
+ * Returns the type declaration associated to the given class
+ *
+ * @param clazz
+ * @return
+ */
+ public TypeDeclaration getTypeDeclaration(Class<?> clazz);
}
Modified: labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java
===================================================================
--- labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/drools-core/src/main/java/org/drools/reteoo/ClassObjectTypeConf.java 2008-03-10 20:34:14 UTC (rev 18812)
@@ -37,6 +37,7 @@
import org.drools.reteoo.builder.BuildContext;
import org.drools.reteoo.builder.PatternBuilder;
import org.drools.rule.EntryPoint;
+import org.drools.rule.TypeDeclaration;
import org.drools.spi.ObjectType;
public class ClassObjectTypeConf
@@ -44,24 +45,27 @@
ObjectTypeConf,
Serializable {
- private final Class cls;
+ private static final long serialVersionUID = 8218802585428841926L;
+
+ private final Class<?> cls;
private transient InternalRuleBase ruleBase;
private ObjectTypeNode[] objectTypeNodes;
protected boolean shadowEnabled;
- protected Class shadowClass;
+ protected Class<ShadowProxy> shadowClass;
protected transient ObjectInstantiator instantiator;
private ObjectTypeNode concreteObjectTypeNode;
private EntryPoint entryPoint;
public ClassObjectTypeConf(final EntryPoint entryPoint,
- final Class clazz,
- final boolean isEvent,
+ final Class<?> clazz,
final InternalRuleBase ruleBase) {
this.cls = clazz;
this.ruleBase = ruleBase;
this.entryPoint = entryPoint;
+ TypeDeclaration type = ruleBase.getTypeDeclaration( clazz );
+ final boolean isEvent = type != null && type.getRole() == TypeDeclaration.Role.EVENT;
ObjectType objectType = new ClassObjectType( clazz,
isEvent );
@@ -147,7 +151,7 @@
* This will return the package name - if the package is null, it will
* work it out from the class name (this is in cases where funky classloading is used).
*/
- public static String getPackageName(Class clazz,
+ public static String getPackageName(Class<?> clazz,
Package pkg) {
String pkgName = "";
if ( pkg == null ) {
Modified: labs/jbossrules/branches/temporal_rete/pom.xml
===================================================================
--- labs/jbossrules/branches/temporal_rete/pom.xml 2008-03-10 20:33:50 UTC (rev 18811)
+++ labs/jbossrules/branches/temporal_rete/pom.xml 2008-03-10 20:34:14 UTC (rev 18812)
@@ -364,7 +364,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.3</version>
+ <version>2.4.2</version>
<configuration>
<includes>
<include>**/*Test.java</include>
@@ -545,7 +545,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
- <version>2.3</version>
+ <version>2.4.2</version>
<reportSets>
<reportSet>
<reports>
More information about the jboss-svn-commits
mailing list