[jboss-svn-commits] JBL Code SVN: r24131 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools and 41 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 28 01:34:08 EST 2008
Author: mark.proctor at jboss.com
Date: 2008-11-28 01:34:07 -0500 (Fri, 28 Nov 2008)
New Revision: 24131
Added:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/Resource.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceProvider.java
labs/jbossrules/trunk/drools-api/src/main/java/overview.html
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeComposition.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeResource.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CompositionSemanticModule.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlCompositionReader.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/CompositionHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/DecisionTableConfigurationHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/ResourceHandler.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/composition/
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/composition/CompositionTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.xml
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition2Test.drl
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ByteArrayResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ClassPathResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/EncodedResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/FileSystemResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/InputStreamResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderInputStream.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/CompositionTest.java
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.drl
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.xml
labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition2Test.drl
Removed:
labs/jbossrules/trunk/drools-api/src/main/resources/overview.html
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DecisionTableConfiguration.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeType.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java
labs/jbossrules/trunk/drools-compiler/.classpath
labs/jbossrules/trunk/drools-compiler/.project
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DslTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
labs/jbossrules/trunk/drools-core/.classpath
labs/jbossrules/trunk/drools-core/.project
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/StringUtils.java
labs/jbossrules/trunk/drools-decisiontables/.classpath
labs/jbossrules/trunk/drools-decisiontables/.project
labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java
labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PetStore.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleTemplateExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/cdss/CDSSExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/AgendaGroupDelegate.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/RuleFlowDelegate.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExampleWithDSL.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java
Log:
JBRULES-1875 Load Composition XML files for multiple resources
JBRULES-1874 Create Resource Framework
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentFactory.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -66,12 +66,6 @@
* This is needed so that the runtime can startup and load packages even if the BRMS
* is not available (or the network).
* </li>
- *
- * <li>
- * <code>name</code>
- * the Name is used in any logging, so each agent can be differentiated (you may have one agent per KnowledeBase
- * that you need in your application).
- * </li>
* </p>
*
* <p>
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DecisionTableConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DecisionTableConfiguration.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/DecisionTableConfiguration.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -13,9 +13,9 @@
* DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
* dtconf.setInputType( DecisionTableInputType.XLS );
* dtconf.setWorksheetName( "Tables_2" );
- * kbuilder.addResource( new URL( "file://IntegrationExampleTest.xls" ),
- * KnowledgeType.DTABLE,
- * dtconf );
+ * kbuilder.add( ResourceFactory.newUrlResource( "file://IntegrationExampleTest.xls" ),
+ * KnowledgeType.DTABLE,
+ * dtconf );
* assertFalse( kbuilder.hasErrors() );
* KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
* </pre>
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilder.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -5,6 +5,7 @@
import java.util.Collection;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.Resource;
/**
* <p>
@@ -14,8 +15,9 @@
* </p>
*
* <p>
- * Binaries, such as xls decision tables must use the URL based methods, so that an InputStream
- * can be obtained. Reader is only suitable for text based resources.
+ * The ResourceFactory provides capabilities to load Resources from a number of sources; such as
+ * Reader, ClassPath, URL, File, ByteArray. Binaries, such as xls decision tables,
+ * should not use a Reader based Resource handler, which is only suitable for text based resources.
* </p>
*
* <p>
@@ -29,7 +31,7 @@
* </p>
* <pre>
* KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- * kbuilder.addResource( new URL( "file://myrules.drl" ),
+ * kbuilder.add( ResourceFactory.newUrlResource( "file://myrules.drl" ),
* KnowledgeType.DRL);
* assertFalse( kbuilder.hasErrors() );
* KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -43,9 +45,9 @@
* DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
* dtconf.setInputType( DecisionTableInputType.XLS );
* dtconf.setWorksheetName( "Tables_2" );
- * kbuilder.addResource( new URL( "file://IntegrationExampleTest.xls" ),
- * KnowledgeType.DTABLE,
- * dtconf );
+ * kbuilder.add( ResourceFactory.newUrlResource( "file://IntegrationExampleTest.xls" ),
+ * KnowledgeType.DTABLE,
+ dtconf );
* assertFalse( kbuilder.hasErrors() );
* KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
* </pre>
@@ -55,8 +57,8 @@
* <p>
* <pre>
* KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- * kbuilder.addResource( new URL( "file://myflow.rf" ),
- * KnowledgeType.DRF);
+ * kbuilder.add( ResourceFactory.newUrlResource( "file://myflow.rf" ),
+ * KnowledgeType.DRF);
* assertFalse( kbuilder.hasErrors() );
* KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
* </pre>
@@ -81,35 +83,18 @@
* @param url
* @param type
*/
- void addResource(URL url,
- KnowledgeType type);
+ void add(Resource resource,
+ KnowledgeType type);
+
/**
* A a resource of the KnowledgeType from a given URL, using the provided ResourceConfiguration.
* Currently only only decision tables use this, via the DecisionTableResourceConfiguration class.
*/
- void addResource(URL url,
- KnowledgeType type,
- ResourceConfiguration configuration);
+ void add(Resource resource,
+ KnowledgeType type,
+ ResourceConfiguration configuration);
/**
- * A a resource of the KnowledgeType from a given Reader.
- *
- * @param url
- * @param type
- */
- void addResource(Reader reader,
- KnowledgeType type);
-
- /**
- * A a resource of the KnowledgeType from a given URL, using the provided ResourceConfiguration.
- * Currently only only decision tables use this, via the DecisionTableResourceConfiguration class.
- * IF you use a Reader, make sure a text based decision table is used, such as CSV and not binary like XLS.
- */
- void addResource(Reader reader,
- KnowledgeType type,
- ResourceConfiguration configuration);
-
- /**
* Returns the built packages.
*
* If the KnowledgeBuilder has errors the Collection will be empty. The hasErrors()
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeBuilderFactory.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -67,7 +67,7 @@
* DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
* dtconf.setInputType( DecisionTableInputType.XLS );
* dtconf.setWorksheetName( "Tables_2" );
- * kbuilder.addResource( new URL( "file://IntegrationExampleTest.xls" ),
+ * kbuilder.add( new URL( "file://IntegrationExampleTest.xls" ),
* KnowledgeType.DTABLE,
* dtconf );
* assertFalse( kbuilder.hasErrors() );
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeType.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeType.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/builder/KnowledgeType.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -17,5 +17,8 @@
DRF,
/** Decision Table */
- DTABLE;
+ DTABLE,
+
+ /** Composition */
+ COMPOSITION;
}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/Resource.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/Resource.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/Resource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,13 @@
+package org.drools.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URL;
+
+public interface Resource {
+ InputStream getInputStream() throws IOException;
+ public Reader getReader() throws IOException;
+ URL getURL() throws IOException;
+ boolean hasURL();
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceFactory.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,79 @@
+package org.drools.io;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.ProviderInitializationException;
+
+public class ResourceFactory {
+ private static ResourceProvider resourceProvider;
+
+ public static Resource newUrlResource(URL url) {
+ return getResourceProvider().newUrlResource( url );
+ }
+
+ public static Resource newUrlResource(String path) {
+ return getResourceProvider().newUrlResource( path );
+ }
+
+ public static Resource newFileResource(File file) {
+ return getResourceProvider().newFileSystemResource( file );
+ }
+
+ public static Resource newFileResource(String fileName) {
+ return getResourceProvider().newFileSystemResource( fileName );
+ }
+
+
+ public static Resource newByteArrayResource(byte[] bytes) {
+ return getResourceProvider().newByteArrayResource( bytes );
+ }
+
+ public static Resource newInputStreamResource(InputStream stream) {
+ return getResourceProvider().newInputStreamResource( stream );
+ }
+
+ public static Resource newReaderResource(Reader reader) {
+ return getResourceProvider().newReaderResource( reader );
+ }
+
+ public static Resource newReaderResource(Reader reader, String encoding) {
+ return getResourceProvider().newReaderResource( reader, encoding );
+ }
+
+ public static Resource newClassPathResource(String path) {
+ return getResourceProvider().newClassPathResource( path );
+ }
+
+ public static Resource newClassPathResource(String path, Class clazz) {
+ return getResourceProvider().newClassPathResource( path, clazz );
+ }
+
+ public static Resource newClassPathResource(String path, ClassLoader classLoader) {
+ return getResourceProvider().newClassPathResource( path, classLoader );
+ }
+
+ private static synchronized void setResourceProvider(ResourceProvider provider) {
+ ResourceFactory.resourceProvider = provider;
+ }
+
+ private static synchronized ResourceProvider getResourceProvider() {
+ if ( resourceProvider == null ) {
+ loadProvider();
+ }
+ return resourceProvider;
+ }
+
+ private static void loadProvider() {
+ try {
+ Class<ResourceProvider> cls = (Class<ResourceProvider>) Class.forName( "org.drools.io.impl.ResourceProviderImpl" );
+ setResourceProvider( cls.newInstance() );
+ } catch ( Exception e2 ) {
+ throw new ProviderInitializationException( "Provider org.drools.io.impl.ResourceProviderImpl could not be set.",
+ e2 );
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/io/ResourceProvider.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,31 @@
+package org.drools.io;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URI;
+import java.net.URL;
+
+public interface ResourceProvider {
+ Resource newUrlResource(URL url);
+
+ Resource newUrlResource(String path);
+
+ Resource newFileSystemResource(File file);
+
+ Resource newFileSystemResource(String fileName);
+
+ Resource newByteArrayResource(byte[] bytes);
+
+ Resource newInputStreamResource(InputStream stream);
+
+ Resource newReaderResource(Reader reader);
+
+ Resource newReaderResource(Reader reader, String encoding);
+
+ Resource newClassPathResource(String path);
+
+ Resource newClassPathResource(String path, ClassLoader classLoader);
+
+ Resource newClassPathResource(String path, Class clazz);
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -15,7 +15,7 @@
* </p>
* <pre>
* KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- * kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( fileName ) ), KnowledgeType.DRL );
+ * kbuilder.add( ResourceFactory.newFileSystemResource( fileName ), KnowledgeType.DRL );
* assertFalse( kbuilder.hasErrors() );
* if (kbuilder.hasErrors() ) {
* System.out.println( kbuilder.getErrors() );
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -16,7 +16,7 @@
* </p>
* <pre>
* KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- * kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( fileName ) ), KnowledgeType.DRL );
+ * kbuilder.add( ResourceFactory.newFileSystemResource( fileName ), KnowledgeType.DRL );
* assertFalse( kbuilder.hasErrors() );
* if (kbuilder.hasErrors() ) {
* System.out.println( kbuilder.getErrors() );
Copied: labs/jbossrules/trunk/drools-api/src/main/java/overview.html (from rev 24108, labs/jbossrules/trunk/drools-api/src/main/resources/overview.html)
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/overview.html (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/overview.html 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,77 @@
+<body>
+
+<p>
+Drools the Business Logic Integration Platform provides an knowledge centric api, where rules and processes are first class citizens.
+</p>
+
+<p>
+The most common interfaces you will use are:
+<ul>
+<li><tt>org.drools.builder.KnowledgeBuilder</tt></li>
+<li><tt>org.drools.KnowledgeBase</tt></li>
+<li><tt>org.drools.agent.KnowledgeAgent</tt></li>
+<li><tt>org.drools.runtime.StatefulKnowledgeSession</tt></li>
+<li><tt>org.drools.runtime.StatelessKnowledgeSession</tt></li>
+</ul>
+</p>
+
+<p>
+Factory classes, with static methods, provide instances of the above interfaces. A pluggable provider approach is used to allow provider implementations to
+be wired up to the factories at runtime. The Factories you will most commonly used are:
+<ul>
+<li><tt>org.drools.builder.KnowledgeBuilderFactory</tt></li>
+<li><tt>org.drools.io.ResourceFactory</tt></li>
+<li><tt>org.drools.KnowledgeBaseFactory</tt></li>
+<li><tt>org.drools.agent.KnowledgeAgentFactory</tt></li>
+</ul>
+</p>
+
+<p>
+A Typical example to load a rule resource.
+<pre>
+KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+kbuilder.addResource( ResourceFactory.newUrlResource( url ),
+ KnowledgeType.DRL );
+if ( kbuilder.hasErrors() ) {
+ System.err.println( builder.getErrors().toString() );
+}
+
+KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+
+StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
+ksession.insert( new Fibonacci( 10 ) );
+ksession.fireAllRules();
+
+ksession.dispose();
+</pre>
+</p>
+
+<p>
+A Typical example to load a process resource. Notice the KnowledgeType is changed, in accordance with the Resource type.
+<pre>
+KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+kbuilder.addResource( ResourceFactory.newUrlResource( url ),
+ KnowledgeType.DRF );
+if ( kbuilder.hasErrors() ) {
+ System.err.println( builder.getErrors().toString() );
+}
+
+KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+
+StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
+ksession.startProcess( "Buy Order Process" );
+
+ksession.dispose();
+</pre>
+</p>
+
+<p>
+'kbuilder', 'kbase', 'ksession' are the variable identifiers often used, the k prefix is for 'knowledge'.
+</p>
+
+<p>
+The majority of Drools API is considered stable and should not change, experimental classes and apis will be marked as such.
+</p>
+</body>
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-api/src/main/java/overview.html
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: labs/jbossrules/trunk/drools-api/src/main/resources/overview.html
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/resources/overview.html 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-api/src/main/resources/overview.html 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,76 +0,0 @@
-<body>
-
-<p>
-Drools the Business Logic Integration Platform provides an knowledge centric api, where rules and processes are first class citizens.
-</p>
-
-<p>
-The most common interfaces you will use are:
-<ul>
-<li><tt>org.drools.builder.KnowledgeBuilder</tt></li>
-<li><tt>org.drools.KnowledgeBase</tt></li>
-<li><tt>org.drools.agent.KnowledgeAgent</tt></li>
-<li><tt>org.drools.runtime.StatefulKnowledgeSession</tt></li>
-<li><tt>org.drools.runtime.StatelessKnowledgeSession</tt></li>
-</ul>
-</p>
-
-<p>
-Factory classes, with static methods, provide instances of the above interfaces. A pluggable provider approach is used to allow provider implementations to
-be wired up to the factories at runtime. The Factories you will most commonly used are:
-<ul>
-<li><tt>org.drools.builder.KnowledgeBuilderFactory</tt></li>
-<li><tt>org.drools.KnowledgeBaseFactory</tt></li>
-<li><tt>org.drools.agent.KnowledgeAgentFactory</tt></li>
-</ul>
-</p>
-
-<p>
-A Typical example to load a rule resource.
-<pre>
-KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-kbuilder.addResource( url,
- KnowledgeType.DRL );
-if ( kbuilder.hasErrors() ) {
- System.err.println( builder.getErrors().toString() );
-}
-
-KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-kbase.addKnowledgePackages( builder.getKnowledgePackages() );
-
-StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
-ksession.insert( new Fibonacci( 10 ) );
-ksession.fireAllRules();
-
-ksession.dispose();
-</pre>
-</p>
-
-<p>
-A Typical example to load a process resource. Notice the KnowledgeType is changed, in accordance with the Resource type.
-<pre>
-KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-kbuilder.addResource( url,
- KnowledgeType.DRF );
-if ( kbuilder.hasErrors() ) {
- System.err.println( builder.getErrors().toString() );
-}
-
-KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-kbase.addKnowledgePackages( builder.getKnowledgePackages() );
-
-StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
-ksession.startProcess( "Buy Order Process" );
-
-ksession.dispose();
-</pre>
-</p>
-
-<p>
-'kbuilder', 'kbase', 'ksession' are the variable identifiers often used, the k prefix is for 'knowledge'.
-</p>
-
-<p>
-The majority of Drools API is considered stable and should not change, experimental classes and apis will be marked as such.
-</p>
-</body>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/.classpath 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,23 +1,23 @@
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/gunit/1.0.1/gunit-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0.1/antlr-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
- <classpathentry kind="src" path="/drools-core"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
- <classpathentry kind="src" path="/drools-api"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.1.1/antlr-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="src" path="/drools-api"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.4-SNAPSHOT/mvel2-2.0.4-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/.project
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.project 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/.project 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,16 +1,16 @@
-<projectDescription>
- <name>drools-compiler</name>
- <comment>A rule production system</comment>
- <projects>
- <project>drools-core</project>
- <project>drools-api</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
+<projectDescription>
+ <name>drools-compiler</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-api</project>
+ <project>drools-core</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
</projectDescription>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/builder/impl/KnowledgeBuilderImpl.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -14,6 +14,9 @@
import org.drools.compiler.PackageBuilder;
import org.drools.definition.KnowledgePackage;
import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.io.Resource;
+import org.drools.io.impl.ReaderResource;
+import org.drools.io.impl.UrlResource;
import org.drools.rule.Package;
public class KnowledgeBuilderImpl implements KnowledgeBuilder {
@@ -23,27 +26,16 @@
this.pkgBuilder = pkgBuilder;
}
- public void addResource(URL url, KnowledgeType type) {
- pkgBuilder.addResource( url, type ) ;
+ public void add(Resource resource, KnowledgeType type) {
+ pkgBuilder.addKnowledgeResource( resource, type, null ) ;
}
- public void addResource(URL url,
+ public void add(Resource resource,
KnowledgeType type,
ResourceConfiguration configuration) {
- pkgBuilder.addResource( url, type, configuration );
+ pkgBuilder.addKnowledgeResource( resource, type, configuration );
}
- public void addResource(Reader reader,
- KnowledgeType type) {
- pkgBuilder.addResource( reader, type ) ;
- }
-
- public void addResource(Reader reader,
- KnowledgeType type,
- ResourceConfiguration configuration) {
- pkgBuilder.addResource( reader, type, configuration );
- }
-
public Collection<KnowledgePackage> getKnowledgePackages() {
if ( pkgBuilder.hasErrors() ) {
return new ArrayList<KnowledgePackage>( 0 );
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -7,25 +7,25 @@
import org.drools.builder.DecisionTableConfiguration;
public class DecisionTableFactory {
- private static volatile DecisionTableProvider provider;
+ private static DecisionTableProvider provider;
- public static void setDecisionTableProvider(DecisionTableProvider provider) {
+
+
+ public static String loadFromInputStream(InputStream is, DecisionTableConfiguration configuration) {
+
+ return getDecisionTableProvider().loadFromInputStream( is, configuration );
+ }
+
+ public static synchronized void setDecisionTableProvider(DecisionTableProvider provider) {
DecisionTableFactory.provider = provider;
}
- public static String loadFromInputStream(InputStream is, DecisionTableConfiguration configuration) {
+ public static synchronized DecisionTableProvider getDecisionTableProvider() {
if ( provider == null ) {
loadProvider();
}
- return provider.loadFromInputStream( is, configuration );
- }
-
- public static String loadFromReader(Reader reader, DecisionTableConfiguration configuration) {
- if ( provider == null ) {
- loadProvider();
- }
- return provider.loadFromReader( reader, configuration );
- }
+ return provider;
+ }
private static void loadProvider() {
try {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -7,8 +7,6 @@
public interface DecisionTableProvider {
- String loadFromReader(Reader reader, DecisionTableConfiguration configuration);
-
String loadFromInputStream(InputStream is,
DecisionTableConfiguration configuration);
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -17,11 +17,13 @@
*/
import java.io.IOException;
+import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.antlr.runtime.ANTLRInputStream;
import org.antlr.runtime.ANTLRReaderStream;
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CommonTokenStream;
@@ -47,249 +49,298 @@
*/
public class DrlParser {
- private static final String GENERIC_ERROR_MESSAGE = "Unknown error while parsing. This is a bug. Please contact the Development team.";
- private final List results = new ArrayList();
- private List<DroolsSentence> editorSentences = null;
- private Location location = new Location(Location.LOCATION_UNKNOWN);
- private DescrBuilderTree walker = null;
- private DRLLexer lexer = null;
+ private static final String GENERIC_ERROR_MESSAGE = "Unknown error while parsing. This is a bug. Please contact the Development team.";
+ private final List results = new ArrayList();
+ private List<DroolsSentence> editorSentences = null;
+ private Location location = new Location( Location.LOCATION_UNKNOWN );
+ private DescrBuilderTree walker = null;
+ private DRLLexer lexer = null;
- public DrlParser() {
- }
+ public DrlParser() {
+ }
- /** Parse a rule from text */
- public PackageDescr parse(final String text) throws DroolsParserException {
- return parse(false, text);
- }
+ /** Parse a rule from text */
+ public PackageDescr parse(final String text) throws DroolsParserException {
+ return parse( false,
+ text );
+ }
- public PackageDescr parse(final boolean isEditor, final String text)
- throws DroolsParserException {
- final DRLParser parser = getParser(text);
- return compile(isEditor, parser);
- }
+ public PackageDescr parse(final boolean isEditor,
+ final String text) throws DroolsParserException {
+ final DRLParser parser = getParser( text );
+ return compile( isEditor,
+ parser );
+ }
- public PackageDescr parse(final boolean isEditor, final Reader reader)
- throws DroolsParserException {
- final DRLParser parser = getParser(reader);
- return compile(isEditor, parser);
- }
+ public PackageDescr parse(final boolean isEditor,
+ final Reader reader) throws DroolsParserException {
+ final DRLParser parser = getParser( reader );
+ return compile( isEditor,
+ parser );
+ }
- public PackageDescr parse(final Reader reader) throws DroolsParserException {
- return parse(false, reader);
- }
+ public PackageDescr parse(final Reader reader) throws DroolsParserException {
+ return parse( false,
+ reader );
+ }
- /**
- * Parse and build a rule package from a DRL source with a domain specific
- * language.
- */
- public PackageDescr parse(final Reader drl, final Reader dsl)
- throws DroolsParserException, IOException {
- return parse(false, drl, dsl);
- }
+ /**
+ * Parse and build a rule package from a DRL source with a domain specific
+ * language.
+ */
+ public PackageDescr parse(final Reader drl,
+ final Reader dsl) throws DroolsParserException,
+ IOException {
+ return parse( false,
+ drl,
+ dsl );
+ }
- public PackageDescr parse(boolean isEditor, final Reader drl,
- final Reader dsl) throws DroolsParserException, IOException {
- final StringBuffer text = getDRLText(drl);
- return parse(text.toString(), dsl);
- }
+ public PackageDescr parse(boolean isEditor,
+ final Reader drl,
+ final Reader dsl) throws DroolsParserException,
+ IOException {
+ final StringBuffer text = getDRLText( drl );
+ return parse( text.toString(),
+ dsl );
+ }
- /**
- * Parse and build a rule package from a DRL source with a domain specific
- * language.
- *
- * @param source
- * As Text.
- * @param dsl
- * @return
- * @throws DroolsParserException
- */
- public PackageDescr parse(boolean isEditor, final String source,
- final Reader dsl) throws DroolsParserException {
- DefaultExpanderResolver resolver = getDefaultResolver(dsl);
+ /**
+ * Parse and build a rule package from a DRL source with a domain specific
+ * language.
+ *
+ * @param source
+ * As Text.
+ * @param dsl
+ * @return
+ * @throws DroolsParserException
+ */
+ public PackageDescr parse(boolean isEditor,
+ final String source,
+ final Reader dsl) throws DroolsParserException {
+ DefaultExpanderResolver resolver = getDefaultResolver( dsl );
- final Expander expander = resolver.get("*", null);
- final String expanded = expander.expand(source);
- if (expander.hasErrors()) {
- this.results.addAll(expander.getErrors());
- }
- return this.parse(isEditor, expanded);
- }
+ final Expander expander = resolver.get( "*",
+ null );
+ final String expanded = expander.expand( source );
+ if ( expander.hasErrors() ) {
+ this.results.addAll( expander.getErrors() );
+ }
+ return this.parse( isEditor,
+ expanded );
+ }
- public PackageDescr parse(final String source, final Reader dsl)
- throws DroolsParserException {
- return this.parse(false, source, dsl);
- }
+ public PackageDescr parse(final String source,
+ final Reader dsl) throws DroolsParserException {
+ return this.parse( false,
+ source,
+ dsl );
+ }
- /**
- * This will expand the DRL. useful for debugging.
- *
- * @param source -
- * the source which use a DSL
- * @param dsl -
- * the DSL itself.
- * @throws DroolsParserException
- * If unable to expand in any way.
- */
- public String getExpandedDRL(final String source, final Reader dsl)
- throws DroolsParserException {
- DefaultExpanderResolver resolver = getDefaultResolver(dsl);
- return getExpandedDRL(source, resolver);
- }
+ public PackageDescr parse(final boolean isEditor,
+ final InputStream is) throws DroolsParserException {
+ final DRLParser parser = getParser( is );
+ return compile( isEditor,
+ parser );
+ }
- /**
- * This will expand the DRL using the given expander resolver. useful for
- * debugging.
- *
- * @param source -
- * the source which use a DSL
- * @param resolver -
- * the DSL expander resolver itself.
- * @throws DroolsParserException
- * If unable to expand in any way.
- */
- public String getExpandedDRL(final String source,
- final DefaultExpanderResolver resolver)
- throws DroolsParserException {
+ public PackageDescr parse(final InputStream is) throws DroolsParserException {
+ return parse( false,
+ is );
+ }
- final Expander expander = resolver.get("*", null);
- final String expanded = expander.expand(source);
- if (expander.hasErrors()) {
- String err = "";
- for (Iterator iter = expander.getErrors().iterator(); iter
- .hasNext();) {
- ExpanderException ex = (ExpanderException) iter.next();
- err = err + "\n Line:[" + ex.getLine() + "] " + ex.getMessage();
+ /**
+ * This will expand the DRL. useful for debugging.
+ *
+ * @param source -
+ * the source which use a DSL
+ * @param dsl -
+ * the DSL itself.
+ * @throws DroolsParserException
+ * If unable to expand in any way.
+ */
+ public String getExpandedDRL(final String source,
+ final Reader dsl) throws DroolsParserException {
+ DefaultExpanderResolver resolver = getDefaultResolver( dsl );
+ return getExpandedDRL( source,
+ resolver );
+ }
- }
- throw new DroolsParserException(err);
- }
- return expanded;
- }
+ /**
+ * This will expand the DRL using the given expander resolver. useful for
+ * debugging.
+ *
+ * @param source -
+ * the source which use a DSL
+ * @param resolver -
+ * the DSL expander resolver itself.
+ * @throws DroolsParserException
+ * If unable to expand in any way.
+ */
+ public String getExpandedDRL(final String source,
+ final DefaultExpanderResolver resolver) throws DroolsParserException {
- private StringBuffer getDRLText(final Reader reader) throws IOException {
- final StringBuffer text = new StringBuffer();
+ final Expander expander = resolver.get( "*",
+ null );
+ final String expanded = expander.expand( source );
+ if ( expander.hasErrors() ) {
+ String err = "";
+ for ( Iterator iter = expander.getErrors().iterator(); iter.hasNext(); ) {
+ ExpanderException ex = (ExpanderException) iter.next();
+ err = err + "\n Line:[" + ex.getLine() + "] " + ex.getMessage();
- final char[] buf = new char[1024];
- int len = 0;
+ }
+ throw new DroolsParserException( err );
+ }
+ return expanded;
+ }
- while ((len = reader.read(buf)) >= 0) {
- text.append(buf, 0, len);
- }
- return text;
- }
+ private StringBuffer getDRLText(final InputStream is) throws IOException {
+
+
+ return null;
+ }
+
+ private StringBuffer getDRLText(final Reader reader) throws IOException {
+ final StringBuffer text = new StringBuffer();
- /**
- * @return true if there were parser errors.
- */
- public boolean hasErrors() {
- return this.results.size() > 0;
- }
+ final char[] buf = new char[1024];
+ int len = 0;
- /**
- * @return a list of ParserError's.
- */
- public List getErrors() {
- return this.results;
- }
+ while ( (len = reader.read( buf )) >= 0 ) {
+ text.append( buf,
+ 0,
+ len );
+ }
+ return text;
+ }
- private PackageDescr compile(boolean isEditor, final DRLParser parser)
- throws DroolsParserException {
- try {
- if (isEditor) {
- parser.enableEditorInterface();
- }
- DroolsTree resultTree = (DroolsTree) parser.compilation_unit()
- .getTree();
- editorSentences = parser.getEditorInterface();
- makeErrorList(parser);
- if (isEditor || !this.hasErrors()) {
- return walk(parser.getTokenStream(), resultTree);
- } else {
- return null;
- }
- } catch (Exception e) {
- final ParserError err = new ParserError(GENERIC_ERROR_MESSAGE, -1,
- 0);
- this.results.add(err);
- if (isEditor) {
- if (walker == null) {
- return null;
- }
- return walker.getPackageDescr();
- } else {
- throw new DroolsParserException(GENERIC_ERROR_MESSAGE, e);
- }
- }
- }
+ /**
+ * @return true if there were parser errors.
+ */
+ public boolean hasErrors() {
+ return this.results.size() > 0;
+ }
- private PackageDescr walk(TokenStream tokenStream, Tree resultTree)
- throws RecognitionException {
- CommonTreeNodeStream nodes = new CommonTreeNodeStream(resultTree);
- // AST nodes have payload that point into token stream
- nodes.setTokenStream(tokenStream);
- // Create a tree walker attached to the nodes stream
- walker = new DescrBuilderTree(nodes);
- walker.compilation_unit();
- return walker.getPackageDescr();
- }
+ /**
+ * @return a list of ParserError's.
+ */
+ public List getErrors() {
+ return this.results;
+ }
- /** Convert the antlr exceptions to drools parser exceptions */
- private void makeErrorList(final DRLParser parser) {
- for (final Iterator iter = lexer.getErrors().iterator(); iter.hasNext();) {
- final DroolsParserException recogErr = (DroolsParserException) iter
- .next();
- final ParserError err = new ParserError(recogErr.getMessage(),
- recogErr.getLineNumber(), recogErr.getColumn());
- this.results.add(err);
- }
- for (final Iterator iter = parser.getErrors().iterator(); iter
- .hasNext();) {
- final DroolsParserException recogErr = (DroolsParserException) iter
- .next();
- final ParserError err = new ParserError(recogErr.getMessage(),
- recogErr.getLineNumber(), recogErr.getColumn());
- this.results.add(err);
- }
- }
+ private PackageDescr compile(boolean isEditor,
+ final DRLParser parser) throws DroolsParserException {
+ try {
+ if ( isEditor ) {
+ parser.enableEditorInterface();
+ }
+ DroolsTree resultTree = (DroolsTree) parser.compilation_unit().getTree();
+ editorSentences = parser.getEditorInterface();
+ makeErrorList( parser );
+ if ( isEditor || !this.hasErrors() ) {
+ return walk( parser.getTokenStream(),
+ resultTree );
+ } else {
+ return null;
+ }
+ } catch ( Exception e ) {
+ final ParserError err = new ParserError( GENERIC_ERROR_MESSAGE,
+ -1,
+ 0 );
+ this.results.add( err );
+ if ( isEditor ) {
+ if ( walker == null ) {
+ return null;
+ }
+ return walker.getPackageDescr();
+ } else {
+ throw new DroolsParserException( GENERIC_ERROR_MESSAGE,
+ e );
+ }
+ }
+ }
- /**
- * @return An instance of a RuleParser should you need one (most folks will
- * not).
- */
- private DRLParser getParser(final String text) {
- lexer = new DRLLexer(new ANTLRStringStream(text));
- DRLParser parser = new DRLParser(new CommonTokenStream(lexer));
- parser.setTreeAdaptor(new DroolsTreeAdaptor());
- return parser;
- }
+ private PackageDescr walk(TokenStream tokenStream,
+ Tree resultTree) throws RecognitionException {
+ CommonTreeNodeStream nodes = new CommonTreeNodeStream( resultTree );
+ // AST nodes have payload that point into token stream
+ nodes.setTokenStream( tokenStream );
+ // Create a tree walker attached to the nodes stream
+ walker = new DescrBuilderTree( nodes );
+ walker.compilation_unit();
+ return walker.getPackageDescr();
+ }
- private DRLParser getParser(final Reader reader) {
- try {
- lexer = new DRLLexer(new ANTLRReaderStream(reader));
- DRLParser parser = new DRLParser(new CommonTokenStream(lexer));
- parser.setTreeAdaptor(new DroolsTreeAdaptor());
- return parser;
- } catch (final Exception e) {
- throw new RuntimeException("Unable to parser Reader", e);
- }
- }
+ /** Convert the antlr exceptions to drools parser exceptions */
+ private void makeErrorList(final DRLParser parser) {
+ for ( final Iterator iter = lexer.getErrors().iterator(); iter.hasNext(); ) {
+ final DroolsParserException recogErr = (DroolsParserException) iter.next();
+ final ParserError err = new ParserError( recogErr.getMessage(),
+ recogErr.getLineNumber(),
+ recogErr.getColumn() );
+ this.results.add( err );
+ }
+ for ( final Iterator iter = parser.getErrors().iterator(); iter.hasNext(); ) {
+ final DroolsParserException recogErr = (DroolsParserException) iter.next();
+ final ParserError err = new ParserError( recogErr.getMessage(),
+ recogErr.getLineNumber(),
+ recogErr.getColumn() );
+ this.results.add( err );
+ }
+ }
- public Location getLocation() {
- return this.location;
- }
+ /**
+ * @return An instance of a RuleParser should you need one (most folks will
+ * not).
+ */
+ private DRLParser getParser(final String text) {
+ lexer = new DRLLexer( new ANTLRStringStream( text ) );
+ DRLParser parser = new DRLParser( new CommonTokenStream( lexer ) );
+ parser.setTreeAdaptor( new DroolsTreeAdaptor() );
+ return parser;
+ }
- public DefaultExpanderResolver getDefaultResolver(final Reader dsl)
- throws DroolsParserException {
- DefaultExpanderResolver resolver;
- try {
- resolver = new DefaultExpanderResolver(dsl);
- } catch (final IOException e) {
- throw new DroolsParserException("Error parsing the DSL.", e);
- }
- return resolver;
- }
+ private DRLParser getParser(final Reader reader) {
+ try {
+ lexer = new DRLLexer( new ANTLRReaderStream( reader ) );
+ DRLParser parser = new DRLParser( new CommonTokenStream( lexer ) );
+ parser.setTreeAdaptor( new DroolsTreeAdaptor() );
+ return parser;
+ } catch ( final Exception e ) {
+ throw new RuntimeException( "Unable to parser Reader",
+ e );
+ }
+ }
- public List<DroolsSentence> getEditorSentences() {
- return editorSentences;
- }
+ private DRLParser getParser(final InputStream is) {
+ try {
+ lexer = new DRLLexer( new ANTLRInputStream( is ) );
+ DRLParser parser = new DRLParser( new CommonTokenStream( lexer ) );
+ parser.setTreeAdaptor( new DroolsTreeAdaptor() );
+ return parser;
+ } catch ( final Exception e ) {
+ throw new RuntimeException( "Unable to parser Reader",
+ e );
+ }
+ }
+
+ public Location getLocation() {
+ return this.location;
+ }
+
+ public DefaultExpanderResolver getDefaultResolver(final Reader dsl) throws DroolsParserException {
+ DefaultExpanderResolver resolver;
+ try {
+ resolver = new DefaultExpanderResolver( dsl );
+ } catch ( final IOException e ) {
+ throw new DroolsParserException( "Error parsing the DSL.",
+ e );
+ }
+ return resolver;
+ }
+
+ public List<DroolsSentence> getEditorSentences() {
+ return editorSentences;
+ }
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeComposition.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeComposition.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeComposition.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,21 @@
+package org.drools.compiler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class KnowledgeComposition {
+ private List<KnowledgeResource> resources;
+
+ public KnowledgeComposition() {
+ this.resources = new ArrayList<KnowledgeResource>();
+ }
+
+ public List<KnowledgeResource> getResources() {
+ return resources;
+ }
+
+ public void setResources(List<KnowledgeResource> parts) {
+ this.resources = parts;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeResource.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/KnowledgeResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,50 @@
+package org.drools.compiler;
+
+import org.drools.builder.KnowledgeType;
+import org.drools.builder.ResourceConfiguration;
+import org.drools.io.Resource;
+
+public class KnowledgeResource {
+ private String source;
+ private KnowledgeType type;
+ private ResourceConfiguration configuration;
+
+ public KnowledgeResource(String src,
+ KnowledgeType type) {
+ this.source = src;
+ this.type = type;
+ }
+
+ public KnowledgeResource(String src,
+ KnowledgeType type,
+ ResourceConfiguration configuration) {
+ this.source = src;
+ this.type = type;
+ this.configuration = configuration;
+ }
+
+ public String getSource() {
+ return this.source;
+ }
+
+ public void setSource(String src) {
+ this.source = src;
+ }
+
+ public KnowledgeType getType() {
+ return type;
+ }
+
+ public void setType(KnowledgeType type) {
+ this.type = type;
+ }
+
+ public ResourceConfiguration getConfiguration() {
+ return configuration;
+ }
+
+ public void setConfiguration(ResourceConfiguration configuration) {
+ this.configuration = configuration;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -36,7 +36,6 @@
import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassFieldAccessorStore;
import org.drools.builder.DecisionTableConfiguration;
-import org.drools.builder.DecisionTableInputType;
import org.drools.builder.KnowledgeType;
import org.drools.builder.ResourceConfiguration;
import org.drools.common.InternalRuleBase;
@@ -49,6 +48,9 @@
import org.drools.facttemplates.FactTemplateImpl;
import org.drools.facttemplates.FieldTemplate;
import org.drools.facttemplates.FieldTemplateImpl;
+import org.drools.io.Resource;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.io.impl.UrlResource;
import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.FactTemplateDescr;
@@ -74,6 +76,7 @@
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleBuilder;
import org.drools.spi.InternalReadAccessor;
+import org.drools.xml.XmlCompositionReader;
import org.drools.xml.XmlPackageReader;
import org.xml.sax.SAXException;
@@ -268,10 +271,17 @@
}
}
- public void addPackageFromDrl(final URL url) throws DroolsParserException,
- IOException {
- this.url = url.toExternalForm();
- addPackageFromDrl( new InputStreamReader( url.openStream() ) );
+ public void addPackageFromDrl(Resource resource) throws DroolsParserException,
+ IOException {
+ if ( resource.hasURL() ) {
+ this.url = resource.getURL().toExternalForm();
+ }
+ final DrlParser parser = new DrlParser();
+ final PackageDescr pkg = parser.parse( resource.getInputStream() );
+ this.results.addAll( parser.getErrors() );
+ if ( !parser.hasErrors() ) {
+ addPackage( pkg );
+ }
this.url = null;
}
@@ -296,10 +306,22 @@
addPackage( xmlReader.getPackageDescr() );
}
- public void addPackageFromXml(final URL url) throws DroolsParserException,
- IOException {
- this.url = url.toExternalForm();
- addPackageFromXml( new InputStreamReader( url.openStream() ) );
+ public void addPackageFromXml(final Resource resource) throws DroolsParserException,
+ IOException {
+ if ( resource.hasURL() ) {
+ this.url = resource.getURL().toExternalForm();
+ }
+
+ final XmlPackageReader xmlReader = new XmlPackageReader( this.configuration.getSemanticModules() );
+
+ try {
+ xmlReader.read( resource.getReader() );
+ } catch ( final SAXException e ) {
+ throw new DroolsParserException( e.toString(),
+ e.getCause() );
+ }
+
+ addPackage( xmlReader.getPackageDescr() );
this.url = null;
}
@@ -325,12 +347,17 @@
}
}
- public void addPackageFromDslr(final Reader source) {
+ public void addPackageFromDslr(final Resource resource) throws DroolsParserException,
+ IOException {
+ if ( resource.hasURL() ) {
+ this.url = resource.getURL().toExternalForm();
+ }
+
final DrlParser parser = new DrlParser();
DefaultExpander expander = getDslExpander();
try {
- String str = expander.expand( source );
+ String str = expander.expand( resource.getReader() );
if ( expander.hasErrors() ) {
this.results.addAll( expander.getErrors() );
}
@@ -340,15 +367,6 @@
if ( !parser.hasErrors() ) {
addPackage( pkg );
}
- } catch ( Exception e ) {
- throw new RuntimeException( e );
- }
- }
-
- public void addPackageFromDslr(final URL url) {
- this.url = url.toExternalForm();
- try {
- addPackageFromDslr( new InputStreamReader( url.openStream() ) );
} catch ( IOException e ) {
throw new RuntimeException( e );
}
@@ -368,6 +386,21 @@
}
}
+ public void addDsl(Resource resource) throws IOException {
+ if ( resource.hasURL() ) {
+ this.url = resource.getURL().toExternalForm();
+ }
+
+ DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
+ file.parseAndLoad( resource.getReader() );
+ if ( this.dslFiles == null ) {
+ this.dslFiles = new ArrayList<DSLTokenizedMappingFile>();
+ }
+ this.dslFiles.add( file );
+
+ this.url = null;
+ }
+
public void addDsl(URL url) {
this.url = url.toExternalForm();
try {
@@ -385,20 +418,14 @@
addProcessFromXml( processSource );
}
- public void addProcessFromXml(URL processSource) {
- this.url = processSource.toExternalForm();
- try {
- addProcessFromXml( new InputStreamReader( processSource.openStream() ) );
- } catch ( IOException e ) {
- throw new RuntimeException( e );
+ public void addProcessFromXml(Resource resource) throws IOException {
+ if ( resource.hasURL() ) {
+ this.url = resource.getURL().toExternalForm();
}
- this.url = null;
- }
- public void addProcessFromXml(Reader processSource) {
ProcessBuilder processBuilder = new ProcessBuilder( this );
try {
- processBuilder.addProcessFromFile( processSource,
+ processBuilder.addProcessFromFile( resource.getReader(),
url );
this.results.addAll( processBuilder.getErrors() );
} catch ( Exception e ) {
@@ -410,87 +437,82 @@
}
this.results = getResults( this.results );
+ this.url = null;
}
- public void addResource(URL url,
- KnowledgeType type) {
- addResource( url,
- type,
- null );
- }
-
- public void addResource(URL url,
- KnowledgeType type,
- ResourceConfiguration configuration) {
+ public void addProcessFromXml(Reader processSource) {
+ ProcessBuilder processBuilder = new ProcessBuilder( this );
try {
- if ( type == KnowledgeType.DTABLE ) {
- DecisionTableConfiguration dtableConfiguration = (DecisionTableConfiguration) configuration;
-
- String string = DecisionTableFactory.loadFromInputStream( url.openStream(),
- dtableConfiguration );
- addPackageFromDrl( new StringReader( string ) );
- } else {
- addResource( new InputStreamReader( url.openStream() ),
- type,
- configuration );
+ processBuilder.addProcessFromFile( processSource,
+ url );
+ this.results.addAll( processBuilder.getErrors() );
+ } catch ( Exception e ) {
+ if ( e instanceof RuntimeException ) {
+ throw (RuntimeException) e;
}
- } catch ( DroolsParserException e ) {
- throw new RuntimeException( e );
- } catch ( IOException e ) {
- throw new RuntimeException( e );
+ this.results.add( new RuleFlowLoadError( "Unable to load the rule flow.",
+ e ) );
}
- }
- public void addResource(Reader reader,
- KnowledgeType type) {
- addResource( reader,
- type,
- null );
+ this.results = getResults( this.results );
}
- public void addResource(Reader reader,
- KnowledgeType type,
- ResourceConfiguration configuration) {
+ public void addKnowledgeResource(Resource resource,
+ KnowledgeType type,
+ ResourceConfiguration configuration) {
try {
switch ( type ) {
case DRL : {
- addPackageFromDrl( reader );
+ addPackageFromDrl( resource );
break;
}
case DSLR : {
- addPackageFromDslr( reader );
+ addPackageFromDslr( resource );
break;
}
case DSL : {
- addDsl( reader );
+ addDsl( resource );
break;
}
case XDRL : {
- addPackageFromXml( reader );
+ addPackageFromXml( resource );
break;
}
case DRF : {
- addProcessFromXml( reader );
+ addProcessFromXml( resource );
break;
}
case DTABLE : {
DecisionTableConfiguration dtableConfiguration = (DecisionTableConfiguration) configuration;
- if ( dtableConfiguration.getInputType() == DecisionTableInputType.XLS ) {
- throw new IllegalArgumentException( "Use addResource(URL url, KnowledgeType type, ResourceConfiguration configuration) when adding XLS decision tables." );
- }
- String string = DecisionTableFactory.loadFromReader( reader,
- dtableConfiguration );
+ String string = DecisionTableFactory.loadFromInputStream( resource.getInputStream(),
+ dtableConfiguration );
addPackageFromDrl( new StringReader( string ) );
break;
}
+ case COMPOSITION : {
+ XmlCompositionReader reader = new XmlCompositionReader( this.configuration.getSemanticModules() );
+ KnowledgeComposition composition = reader.read( resource.getReader() );
+ for ( KnowledgeResource kresource : composition.getResources() ) {
+ Resource ioresource = null;
+ String src = kresource.getSource();
+ if ( src.trim().startsWith( "classpath:" ) ) {
+ ioresource = new ClassPathResource( src.substring( src.indexOf( ':' ) + 1 ), this.configuration.getClassLoader() );
+ } else {
+ ioresource = new UrlResource( src );
+ }
+ addKnowledgeResource( ioresource, kresource.getType(), kresource.getConfiguration() );
+ }
+ }
}
+ } catch ( RuntimeException e ) {
+ throw e;
} catch ( Exception e ) {
throw new RuntimeException( e );
}
}
-
+
/**
* This adds a package from a Descr/AST This will also trigger a compile, if
* there are any generated classes to compile of course.
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -39,6 +39,7 @@
import org.drools.util.ConfFileUtils;
import org.drools.util.StringUtils;
import org.drools.workflow.core.Node;
+import org.drools.xml.CompositionSemanticModule;
import org.drools.xml.DefaultSemanticModule;
import org.drools.xml.Handler;
import org.drools.xml.ProcessSemanticModule;
@@ -321,6 +322,7 @@
this.semanticModules.addSemanticModule( new ProcessSemanticModule() );
this.semanticModules.addSemanticModule( new RulesSemanticModule() );
+ this.semanticModules.addSemanticModule( new CompositionSemanticModule() );
// split on each space
String locations[] = this.chainedProperties.getProperty( "semanticModules",
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLTokenizedMappingFile.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,9 +1,11 @@
package org.drools.lang.dsl;
import java.io.IOException;
+import java.io.InputStream;
import java.io.Reader;
import java.util.LinkedList;
+import org.antlr.runtime.ANTLRInputStream;
import org.antlr.runtime.ANTLRReaderStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
@@ -30,7 +32,7 @@
}
return this.errors.isEmpty();
- }
+ }
private DSLMapping buildFileMapping(Reader dsl) throws IOException, RecognitionException{
ANTLRReaderStream reader = new ANTLRReaderStream(dsl);
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CompositionSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CompositionSemanticModule.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/CompositionSemanticModule.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package org.drools.xml;
+
+import org.drools.xml.composition.CompositionHandler;
+import org.drools.xml.composition.DecisionTableConfigurationHandler;
+import org.drools.xml.composition.ResourceHandler;
+
+public class CompositionSemanticModule extends DefaultSemanticModule implements SemanticModule {
+
+ public CompositionSemanticModule() {
+ super( "http://drools.org/drools-4.0/composition" );
+
+ addHandler( "composition",
+ new CompositionHandler() );
+
+ addHandler( "resource",
+ new ResourceHandler() );
+
+ addHandler( "decisiontable-conf",
+ new DecisionTableConfigurationHandler() );
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlCompositionReader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlCompositionReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlCompositionReader.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,73 @@
+package org.drools.xml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+
+import javax.xml.parsers.SAXParser;
+
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.lang.descr.PackageDescr;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+
+public class XmlCompositionReader {
+ private ExtensibleXmlParser parser;
+
+ public XmlCompositionReader(final SemanticModules modules) {
+ this( modules, null );
+ }
+
+ public XmlCompositionReader(final SemanticModules modules, final SAXParser parser) {
+ if ( parser == null ) {
+ this.parser = new ExtensibleXmlParser();
+ } else {
+ this.parser = new ExtensibleXmlParser( parser );
+ }
+ this.parser.setSemanticModules( modules );
+ }
+
+ public ExtensibleXmlParser getParser() {
+ return this.parser;
+ }
+
+ /**
+ * Read a <code>RuleSet</code> from a <code>Reader</code>.
+ *
+ * @param reader
+ * The reader containing the rule-set.
+ *
+ * @return The rule-set.
+ */
+ public KnowledgeComposition read(final Reader reader) throws SAXException,
+ IOException {
+ return (KnowledgeComposition) this.parser.read( reader );
+ }
+
+ /**
+ * Read a <code>RuleSet</code> from an <code>InputStream</code>.
+ *
+ * @param inputStream
+ * The input-stream containing the rule-set.
+ *
+ * @return The rule-set.
+ */
+ public KnowledgeComposition read(final InputStream inputStream) throws SAXException,
+ IOException {
+ return (KnowledgeComposition) this.parser.read( inputStream );
+ }
+
+ /**
+ * Read a <code>RuleSet</code> from an <code>InputSource</code>.
+ *
+ * @param in
+ * The rule-set input-source.
+ *
+ * @return The rule-set.
+ */
+ public KnowledgeComposition read(final InputSource in) throws SAXException,
+ IOException {
+ return (KnowledgeComposition) this.parser.read( in );
+ }
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/CompositionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/CompositionHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/CompositionHandler.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,55 @@
+package org.drools.xml.composition;
+
+import java.util.HashSet;
+
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class CompositionHandler extends BaseAbstractHandler
+ implements
+ Handler {
+
+ public CompositionHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet(1);
+ this.validParents.add(null );
+
+ this.validPeers = new HashSet(1);
+ this.validPeers.add( null );
+
+ this.allowNesting = true;
+ }
+ }
+
+ public Object start(String uri,
+ String localName,
+ Attributes attrs,
+ ExtensibleXmlParser parser) throws SAXException {
+ parser.startElementBuilder( localName,
+ attrs );
+ KnowledgeComposition composition = new KnowledgeComposition();
+
+ parser.setData( composition );
+
+ return composition;
+ }
+
+ public Object end(String uri,
+ String localName,
+ ExtensibleXmlParser parser) throws SAXException {
+ final Element element = parser.endElementBuilder();
+
+ final KnowledgeComposition composition = (KnowledgeComposition) parser.getCurrent();
+ return composition;
+ }
+
+ public Class< ? > generateNodeFor() {
+ return KnowledgeComposition.class;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/DecisionTableConfigurationHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/DecisionTableConfigurationHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/DecisionTableConfigurationHandler.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,74 @@
+package org.drools.xml.composition;
+
+import java.util.HashSet;
+
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.ResourceConfiguration;
+import org.drools.builder.impl.DecisionTableConfigurationImpl;
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.compiler.KnowledgeResource;
+import org.drools.util.StringUtils;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class DecisionTableConfigurationHandler extends BaseAbstractHandler
+ implements
+ Handler {
+
+ public DecisionTableConfigurationHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet( 1 );
+ this.validParents.add( KnowledgeResource.class );
+
+ this.validPeers = new HashSet( 1 );
+ this.validPeers.add( null );
+
+ this.allowNesting = false;
+ }
+ }
+
+ public Object start(String uri,
+ String localName,
+ Attributes attrs,
+ ExtensibleXmlParser parser) throws SAXException {
+ parser.startElementBuilder( localName,
+ attrs );
+
+ String type = attrs.getValue( "input-type" );
+ String worksheetName = attrs.getValue( "worksheet-name" );
+
+ emptyAttributeCheck( localName,
+ "input-type",
+ type,
+ parser );
+
+ DecisionTableConfiguration dtConf = new DecisionTableConfigurationImpl();
+ dtConf.setInputType( DecisionTableInputType.valueOf( type ) );
+ if ( !StringUtils.isEmpty( worksheetName ) ) {
+ dtConf.setWorksheetName( worksheetName );
+ }
+
+ return dtConf;
+ }
+
+ public Object end(String uri,
+ String localName,
+ ExtensibleXmlParser parser) throws SAXException {
+ final Element element = parser.endElementBuilder();
+ final KnowledgeResource part = (KnowledgeResource) parser.getParent();
+ ResourceConfiguration dtConf = (ResourceConfiguration) parser.getCurrent();
+ part.setConfiguration( dtConf );
+
+ return dtConf;
+ }
+
+ public Class< ? > generateNodeFor() {
+ return ResourceConfiguration.class;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/ResourceHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/ResourceHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/composition/ResourceHandler.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,79 @@
+package org.drools.xml.composition;
+
+import java.net.URLClassLoader;
+import java.util.HashSet;
+
+import org.drools.builder.KnowledgeType;
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.compiler.KnowledgeResource;
+import org.drools.io.Resource;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.io.impl.UrlResource;
+import org.drools.util.StringUtils;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class ResourceHandler extends BaseAbstractHandler
+ implements
+ Handler {
+
+ public ResourceHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet(1);
+ this.validParents.add( KnowledgeComposition.class );
+
+ this.validPeers = new HashSet(2);
+ this.validPeers.add( null );
+ this.validPeers.add( KnowledgeResource.class );
+
+ this.allowNesting = true;
+ }
+ }
+
+ public Object start(String uri,
+ String localName,
+ Attributes attrs,
+ ExtensibleXmlParser parser) throws SAXException {
+ parser.startElementBuilder( localName,
+ attrs );
+
+ final KnowledgeComposition composition = (KnowledgeComposition) parser.getParent();
+
+ String src = attrs.getValue( "source" );
+ String type = attrs.getValue( "type" );
+
+ emptyAttributeCheck( localName,
+ "source",
+ src,
+ parser );
+
+ emptyAttributeCheck( localName,
+ "type",
+ type,
+ parser );
+ KnowledgeResource part = new KnowledgeResource( src, KnowledgeType.valueOf( type ) );
+
+ return part;
+ }
+
+ public Object end(String uri,
+ String localName,
+ ExtensibleXmlParser parser) throws SAXException {
+ final Element element = parser.endElementBuilder();
+
+ final KnowledgeComposition composition = (KnowledgeComposition) parser.getParent();
+ final KnowledgeResource part = ( KnowledgeResource ) parser.getCurrent();
+ composition.getResources().add( part );
+ return part;
+ }
+
+
+ public Class< ? > generateNodeFor() {
+ return KnowledgeResource.class;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeBuilderTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -11,6 +11,7 @@
import org.drools.definition.KnowledgePackage;
import org.drools.definition.process.Process;
import org.drools.definition.rule.Rule;
+import org.drools.io.ResourceFactory;
public class KnowledgeBuilderTest extends TestCase {
@@ -32,7 +33,7 @@
str += "when\n";
str += "then\n";
str += "end\n";
- builder.addResource( new StringReader( str ), KnowledgeType.DRL );
+ builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRL );
str = "package org.test2\n";
str += "rule rule3\n";
@@ -43,7 +44,7 @@
str += "when\n";
str += "then\n";
str += "end\n";
- builder.addResource( new StringReader( str ), KnowledgeType.DRL );
+ builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRL );
Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
assertNotNull( pkgs );
@@ -77,7 +78,7 @@
str += " <nodes><start id=\"1\" name=\"Start\" /><end id=\"2\" name=\"End\" /></nodes>\n";
str += " <connections><connection from=\"1\" to=\"2\"/></connections>";
str += "</process>";
- builder.addResource( new StringReader( str ), KnowledgeType.DRF );
+ builder.add(ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRF );
str = "";
str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
@@ -87,7 +88,7 @@
str += " <nodes><start id=\"1\" name=\"Start\" /><end id=\"2\" name=\"End\" /></nodes>\n";
str += " <connections><connection from=\"1\" to=\"2\"/></connections>";
str += "</process>";
- builder.addResource( new StringReader( str ), KnowledgeType.DRF );
+ builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRF );
Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
assertNotNull( pkgs );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/api/KnowledgeSessionTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -9,6 +9,7 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
public class KnowledgeSessionTest extends TestCase {
public void testKnowledgeProviderWithRules() {
@@ -24,7 +25,7 @@
str += "when\n";
str += "then\n";
str += "end\n";
- builder.addResource( new StringReader( str ), KnowledgeType.DRL );
+ builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRL );
str = "package org.test2\n";
str += "rule rule3\n";
@@ -35,7 +36,7 @@
str += "when\n";
str += "then\n";
str += "end\n";
- builder.addResource( new StringReader( str ), KnowledgeType.DRL );
+ builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), KnowledgeType.DRL );
Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DslTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DslTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DslTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -22,6 +22,7 @@
import org.drools.builder.KnowledgeType;
import org.drools.compiler.PackageBuilder;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.lang.Expander;
import org.drools.lang.dsl.DefaultExpanderResolver;
import org.drools.rule.Package;
@@ -53,12 +54,10 @@
public void testWithExpanderDSL() throws Exception {
//final PackageBuilder builder = new PackageBuilder();
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
- final Reader source = new InputStreamReader( getClass().getResourceAsStream( "rule_with_expander_dsl.dslr" ) );
- final Reader dsl = new InputStreamReader( getClass().getResourceAsStream( "test_expander.dsl" ) );
- kbuilder.addResource( dsl,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_expander.dsl", getClass() ),
KnowledgeType.DSL );
- kbuilder.addResource( source,
+ kbuilder.add( ResourceFactory.newClassPathResource( "rule_with_expander_dsl.dslr", getClass() ) ,
KnowledgeType.DSLR );
assertFalse( kbuilder.hasErrors() );
@@ -97,14 +96,12 @@
}
public void testWithExpanderMore() throws Exception {
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- final Reader source = new InputStreamReader( getClass().getResourceAsStream( "rule_with_expander_dsl_more.dslr" ) );
- final Reader dsl = new InputStreamReader( getClass().getResourceAsStream( "test_expander.dsl" ) );
- kbuilder.addResource( dsl,
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_expander.dsl", getClass() ),
KnowledgeType.DSL );
- kbuilder.addResource( source,
- KnowledgeType.DSLR );
+ kbuilder.add( ResourceFactory.newClassPathResource( "rule_with_expander_dsl_more.dslr", getClass() ) ,
+ KnowledgeType.DSLR );
assertFalse( kbuilder.hasErrors() );
@@ -155,17 +152,15 @@
messages.size() );
}
- public void FIXME_estEmptyDSL() throws Exception {
+ public void FIXME_testEmptyDSL() throws Exception {
// FIXME eterelli / mic_hat not sure what to do with this?
final String DSL = "# This is an empty dsl file."; // gives antlr <EOF> error
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- final Reader drlReader = new InputStreamReader( getClass().getResourceAsStream( "literal_rule.drl" ) );
- final Reader dslReader = new StringReader( DSL );
- kbuilder.addResource( dslReader,
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_expander.dsl", getClass() ),
KnowledgeType.DSL );
- kbuilder.addResource( drlReader,
- KnowledgeType.DSLR );
+ kbuilder.add( ResourceFactory.newReaderResource( new StringReader( DSL) ) ,
+ KnowledgeType.DSLR );
assertFalse( kbuilder.hasErrors() ); // trying to expand Cheese() pattern
@@ -191,13 +186,11 @@
}
public void testDSLWithIndividualConstraintMappings() throws Exception {
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- final Reader source = new InputStreamReader( getClass().getResourceAsStream( "test_dslWithIndividualConstraints.dslr" ) );
- final Reader dsl = new InputStreamReader( getClass().getResourceAsStream( "test_dslWithIndividualConstraints.dsl" ) );
- kbuilder.addResource( dsl,
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_dslWithIndividualConstraints.dsl", getClass() ),
KnowledgeType.DSL );
- kbuilder.addResource( source,
- KnowledgeType.DSLR );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_dslWithIndividualConstraints.dslr", getClass() ) ,
+ KnowledgeType.DSLR );
assertFalse( kbuilder.hasErrors() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -39,6 +39,7 @@
import org.drools.event.ActivationCreatedEvent;
import org.drools.event.AgendaEventListener;
import org.drools.event.DefaultAgendaEventListener;
+import org.drools.io.ResourceFactory;
import org.drools.lang.descr.PackageDescr;
import org.drools.process.instance.ProcessInstance;
import org.drools.rule.Package;
@@ -515,7 +516,7 @@
public void testAgendaGroups() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( "test_AgendaGroups.drl" ) ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_AgendaGroups.drl", getClass() ), KnowledgeType.DRL );
assertFalse( kbuilder.hasErrors() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -14,6 +14,7 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -79,7 +80,7 @@
" </connections>\n" +
"\n" +
"</process>");
- kbuilder.addResource(source, KnowledgeType.DRF );
+ kbuilder.add( ResourceFactory.newReaderResource( source ), KnowledgeType.DRF );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -28,6 +28,7 @@
import org.drools.compiler.PackageBuilder;
import org.drools.definition.KnowledgePackage;
import org.drools.impl.ParametersImpl;
+import org.drools.io.ResourceFactory;
import org.drools.rule.Package;
import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSession;
@@ -394,7 +395,7 @@
private StatelessKnowledgeSession getSession2(String fileName) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( fileName ) ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( fileName, getClass() ), KnowledgeType.DRL );
if (kbuilder.hasErrors() ) {
System.out.println( kbuilder.getErrors() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -35,6 +35,7 @@
import org.drools.builder.KnowledgeType;
import org.drools.common.InternalFactHandle;
import org.drools.compiler.DroolsParserException;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
@@ -60,33 +61,33 @@
super.tearDown();
}
-
- private KnowledgeBase loadKnowledgeBase(final Reader reader) throws IOException,
- DroolsParserException,
- Exception {
+ private KnowledgeBase loadKnowledgeBase(final String fileName) throws IOException,
+ DroolsParserException,
+ Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( reader, KnowledgeType.DRL );
-
+ kbuilder.add( ResourceFactory.newClassPathResource( fileName,
+ getClass() ),
+ KnowledgeType.DRL );
+
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
+
return SerializationHelper.serializeObject( kbase );
}
public void testEventAssertion() throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_EntryPoint.drl" ) );
- KnowledgeBase kbase = loadKnowledgeBase( reader );
+ KnowledgeBase kbase = loadKnowledgeBase( "test_EntryPoint.drl" );
//final RuleBase ruleBase = loadRuleBase( reader );
KnowledgeSessionConfiguration conf = new SessionConfiguration();
- ((SessionConfiguration)conf).setClockType( ClockType.PSEUDO_CLOCK );
+ ((SessionConfiguration) conf).setClockType( ClockType.PSEUDO_CLOCK );
StatefulKnowledgeSession session = kbase.newStatefulSession( conf );
final List results = new ArrayList();
session.setGlobal( "results",
- results );
+ results );
StockTick tick1 = new StockTick( 1,
"DROO",
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -32,6 +32,7 @@
import org.drools.event.ObjectUpdatedEvent;
import org.drools.event.WorkingMemoryEventListener;
import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.io.ResourceFactory;
import org.drools.rule.Package;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -60,7 +61,7 @@
public void testLogicalInsertionsDynamicRule() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertionsDynamicRule.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsDynamicRule.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = getKnowledgeBase();
@@ -90,7 +91,7 @@
// this rule will make a logical assertion for c1 too
kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertionsDynamicRule2.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsDynamicRule2.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs2 = kbuilder.getKnowledgePackages();
kbase.addKnowledgePackages( kpkgs2 );
kbase = SerializationHelper.serializeObject( kbase );
@@ -173,7 +174,7 @@
public void testLogicalInsertions() throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertions.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertions.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -214,7 +215,7 @@
public void testLogicalInsertionsBacking() throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertionsBacking.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsBacking.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -268,7 +269,7 @@
public void testLogicalInsertionsSelfreferencing() throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertionsSelfreferencing.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsSelfreferencing.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -310,7 +311,7 @@
public void testLogicalInsertionsLoop() throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getClass().getResource( "test_LogicalInsertionsLoop.drl" ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsLoop.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -790,7 +791,7 @@
// TODO JBRULES-1804
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsModifySameRuleGivesDifferentLogicalInsertion.drl" ) ), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_LogicalInsertionsModifySameRuleGivesDifferentLogicalInsertion.drl", getClass() ), KnowledgeType.DRL );
Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = getKnowledgeBase();
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/composition/CompositionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/composition/CompositionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/composition/CompositionTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,83 @@
+package org.drools.xml.composition;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.compiler.KnowledgeResource;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.io.ResourceFactory;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.xml.XmlCompositionReader;
+import org.xml.sax.SAXException;
+
+public class CompositionTest extends TestCase {
+ public void testXmlParser() throws SAXException,
+ IOException {
+
+ PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+ XmlCompositionReader xmlReader = new XmlCompositionReader( conf.getSemanticModules() );
+
+ String str = "";
+ str += "<composition ";
+ str += "xmlns='http://drools.org/drools-4.0/composition' ";
+ str += "xmlns:xs='http://www.w3.org/2001/XMLSchema-instance' ";
+ str += "xs:schemaLocation='http://drools.org/drools-4.0/composition drools-composition-4.0.xsd' >";
+ str += " <resource source='http://www.domain.com/test.drl' type='DRL' />";
+ str += " <resource source='http://www.domain.com/test.xls' type='DTABLE' >";
+ str += " <decisiontable-conf worksheet-name='sheet10' input-type='XLS' />";
+ str += " </resource>";
+ str += "</composition>";
+
+ StringReader reader = new StringReader( str );
+ KnowledgeComposition composition = xmlReader.read( reader );
+
+ assertEquals( 2,
+ composition.getResources().size() );
+ KnowledgeResource resource = composition.getResources().get( 0 );
+ assertNull( resource.getConfiguration() );
+ assertEquals( "http://www.domain.com/test.drl",
+ resource.getSource() );
+ assertEquals( KnowledgeType.DRL,
+ resource.getType() );
+
+ resource = composition.getResources().get( 1 );
+ assertEquals( "http://www.domain.com/test.xls",
+ resource.getSource() );
+ assertEquals( KnowledgeType.DTABLE,
+ resource.getType() );
+ DecisionTableConfiguration dtConf = (DecisionTableConfiguration) resource.getConfiguration();
+ assertEquals( DecisionTableInputType.XLS,
+ dtConf.getInputType() );
+ }
+
+ public void testIntegregation() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "composition1Test.xml", getClass()), KnowledgeType.COMPOSITION );
+ assertFalse( kbuilder.hasErrors() );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ List list = new ArrayList();
+ ksession.setGlobal( "list", list );
+ ksession.fireAllRules();
+ ksession.dispose();
+
+ assertEquals( 2, list.size() );
+ assertTrue ( list.containsAll( Arrays.asList( new String[] { "rule1", "rule2" } ) ) );
+
+ }
+}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.drl 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,9 @@
+package org.drools.test
+
+global java.util.List list;
+
+rule "rule1"
+when
+then
+ list.add( "rule1" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.xml (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition1Test.xml 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,6 @@
+<composition xmlns='http://drools.org/drools-4.0/composition'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-4.0/composition drools-composition-4.0.xsd' >
+ <resource source='classpath:org/drools/xml/composition/composition1Test.drl' type='DRL' />
+ <resource source='classpath:org/drools/xml/composition/composition2Test.drl' type='DRL' />
+</composition>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition2Test.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition2Test.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/composition/composition2Test.drl 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,9 @@
+package org.drools.test
+
+global java.util.List list;
+
+rule "rule2"
+when
+then
+ list.add( "rule2" );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-core/.classpath 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,16 +1,17 @@
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
- <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="src" path="/drools-api"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="/drools-api"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.4-SNAPSHOT/mvel2-2.0.4-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/.project
===================================================================
--- labs/jbossrules/trunk/drools-core/.project 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-core/.project 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,22 +1,22 @@
-<projectDescription>
- <name>drools-core</name>
- <comment>A rule production system</comment>
- <projects>
- <project>drools-api</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.drools.eclipse.droolsbuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.devzuz.q.maven.jdt.core.mavenIncrementalBuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.devzuz.q.maven.jdt.core.mavenNature</nature>
- </natures>
+<projectDescription>
+ <name>drools-core</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-api</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.drools.eclipse.droolsbuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.devzuz.q.maven.jdt.core.mavenIncrementalBuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.devzuz.q.maven.jdt.core.mavenNature</nature>
+ </natures>
</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ByteArrayResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ByteArrayResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ByteArrayResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,52 @@
+package org.drools.io.impl;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+import java.util.Arrays;
+
+import org.drools.io.Resource;
+
+public class ByteArrayResource
+ implements
+ Resource {
+
+ private byte[] bytes;
+
+ public ByteArrayResource(byte[] bytes) {
+ if ( bytes == null ) {
+ throw new IllegalArgumentException( "bytes cannot be null" );
+ }
+ this.bytes = bytes;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return new ByteArrayInputStream( this.bytes );
+ }
+
+ public Reader getReader() throws IOException {
+ return new InputStreamReader( getInputStream() );
+ }
+
+ public boolean hasURL() {
+ return false;
+ }
+
+ public URL getURL() throws IOException {
+ throw new FileNotFoundException( "byte[] cannot be resolved to URL" );
+ }
+
+ public boolean equals(Object object) {
+ return (object == this || (object instanceof ByteArrayResource && Arrays.equals( ((ByteArrayResource) object).bytes,
+ this.bytes )));
+ }
+
+ public int hashCode() {
+ return (byte[].class.hashCode() * 29 * this.bytes.length);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ClassPathResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ClassPathResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ClassPathResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,137 @@
+package org.drools.io.impl;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+
+/**
+ * Borrowed gratuitously from Spring under ASL2.0.
+ *
+ */
+
+public class ClassPathResource
+ implements
+ Resource {
+ private String path;
+ private ClassLoader classLoader;
+ private Class clazz;
+
+ public ClassPathResource(String path) {
+ this( path,
+ null,
+ null );
+ }
+
+ public ClassPathResource(String path,
+ Class clazz) {
+ this( path,
+ clazz,
+ null );
+ }
+
+ public ClassPathResource(String path,
+ ClassLoader classLoader) {
+ this( path,
+ null,
+ classLoader );
+ }
+
+ public ClassPathResource(String path,
+ Class clazz,
+ ClassLoader classLoader) {
+ if ( path == null ) {
+ throw new IllegalArgumentException( "path cannot be null" );
+ }
+ this.path = path;
+ this.clazz = clazz;
+ this.classLoader = classLoader;
+ }
+
+ /**
+ * This implementation opens an InputStream for the given class path resource.
+ * @see java.lang.ClassLoader#getResourceAsStream(String)
+ * @see java.lang.Class#getResourceAsStream(String)
+ */
+ public InputStream getInputStream() throws IOException {
+ InputStream is = null;
+ if ( this.clazz != null ) {
+ is = this.clazz.getResourceAsStream( this.path );
+ } else if ( this.classLoader != null ) {
+ is = this.classLoader.getResourceAsStream( this.path );
+ }
+
+ if ( is == null ) {
+ is = Thread.currentThread().getContextClassLoader().getResourceAsStream( this.path );
+ }
+
+ if ( is == null ) {
+ is = Class.class.getClassLoader().getSystemClassLoader().getResourceAsStream( this.path );
+ }
+
+ if ( is == null ) {
+ throw new FileNotFoundException( "'" + this.path + "' cannot be opened because it does not exist" );
+ }
+ return is;
+ }
+
+ /**
+ * This implementation returns a URL for the underlying class path resource.
+ * @see java.lang.ClassLoader#getResource(String)
+ * @see java.lang.Class#getResource(String)
+ */
+ public URL getURL() throws IOException {
+ URL url = null;
+ if ( this.clazz != null ) {
+ url = this.clazz.getResource( this.path );
+ } else if ( this.classLoader != null ) {
+ url = this.classLoader.getResource( this.path );
+ }
+
+ if ( url == null ) {
+ url = Thread.currentThread().getContextClassLoader().getResource( this.path );
+ }
+
+ if ( url == null ) {
+ url = Class.class.getClassLoader().getSystemClassLoader().getResource( this.path );
+ }
+
+ if ( url == null ) {
+ throw new FileNotFoundException( "'" + this.path + "' cannot be opened because it does not exist" );
+ }
+ return url;
+ }
+
+ public boolean hasURL() {
+ return true;
+ }
+
+ public Reader getReader() throws IOException {
+ return new InputStreamReader( getInputStream() );
+ }
+
+ public boolean equals(Object object) {
+ if ( object == null || !(object instanceof ClassPathResource) ) {
+ return false;
+ }
+
+ ClassPathResource other = (ClassPathResource) object;
+ if ( !this.path.equals( other.path ) ) {
+ return false;
+ }
+
+ return this.clazz == other.clazz && this.classLoader == other.classLoader;
+ }
+
+ public int hashCode() {
+ return this.path.hashCode();
+ }
+
+ public String toString() {
+ return "[ClassPathResource path='" + this.path + "']";
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/EncodedResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/EncodedResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/EncodedResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,85 @@
+package org.drools.io.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+
+public class EncodedResource implements Resource {
+ private final Resource resource;
+
+ private final String encoding;
+
+
+ /**
+ * Create a new EncodedResource for the given Resource,
+ * not specifying a specific encoding.
+ * @param resource the Resource to hold
+ */
+ public EncodedResource(Resource resource) {
+ this(resource, null);
+ }
+
+ /**
+ * Create a new EncodedResource for the given Resource,
+ * using the specified encoding.
+ * @param resource the Resource to hold
+ * @param encoding the encoding to use for reading from the resource
+ */
+ public EncodedResource(Resource resource, String encoding) {
+ if ( resource == null ) {
+ throw new IllegalArgumentException( "resource cannot be null" );
+ }
+ this.resource = resource;
+ this.encoding = encoding;
+ }
+
+ public URL getURL() throws IOException {
+ return this.resource.getURL();
+ }
+
+ public boolean hasURL() {
+ return this.resource.hasURL();
+ }
+
+ /**
+ * Return the Resource held.
+ */
+ public final Resource getResource() {
+ return this.resource;
+ }
+
+ /**
+ * Return the encoding to use for reading from the resource,
+ * or <code>null</code> if none specified.
+ */
+ public final String getEncoding() {
+ return this.encoding;
+ }
+
+ /**
+ * Open a <code>java.io.Reader</code> for the specified resource,
+ * using the specified encoding (if any).
+ * @throws IOException if opening the Reader failed
+ */
+ public Reader getReader() throws IOException {
+ if (this.encoding != null) {
+ return new InputStreamReader(this.resource.getInputStream(), this.encoding);
+ }
+ else {
+ return new InputStreamReader(this.resource.getInputStream());
+ }
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return this.resource.getInputStream();
+ }
+
+ public String toString() {
+ return "[EncodedResource resource=" + this.resource + " encoding='" + this.encoding + "']";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/FileSystemResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/FileSystemResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/FileSystemResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,83 @@
+package org.drools.io.impl;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+import org.drools.util.StringUtils;
+
+/**
+ * Borrowed gratuitously from Spring under ASL2.0.
+ *
+ */
+public class FileSystemResource implements Resource {
+ private File file;
+
+ /**
+ * Create a new FileSystemResource from a File handle.
+ * <p>Note: When building relative resources via {@link #createRelative},
+ * the relative path will apply <i>at the same directory level</i>:
+ * e.g. new File("C:/dir1"), relative path "dir2" -> "C:/dir2"!
+ * If you prefer to have relative paths built underneath the given root
+ * directory, use the {@link #FileSystemResource(String) constructor with a file path}
+ * to append a trailing slash to the root path: "C:/dir1/", which
+ * indicates this directory as root for all relative paths.
+ * @param file a File handle
+ */
+ public FileSystemResource(File file) {
+ if ( file == null ) {
+ throw new IllegalArgumentException( "File must not be null" );
+ }
+ this.file = new File( StringUtils.cleanPath(file.getPath()) );
+ }
+
+ /**
+ * Create a new FileSystemResource from a file path.
+ * <p>Note: When building relative resources via {@link #createRelative},
+ * it makes a difference whether the specified resource base path here
+ * ends with a slash or not. In the case of "C:/dir1/", relative paths
+ * will be built underneath that root: e.g. relative path "dir2" ->
+ * "C:/dir1/dir2". In the case of "C:/dir1", relative paths will apply
+ * at the same directory level: relative path "dir2" -> "C:/dir2".
+ * @param path a file path
+ */
+ public FileSystemResource(String path) {
+ if ( path == null ) {
+ throw new IllegalArgumentException( "Path must not be null" );
+ }
+ this.file = new File(StringUtils.cleanPath(path));
+ }
+
+ /**
+ * This implementation opens a FileInputStream for the underlying file.
+ * @see java.io.FileInputStream
+ */
+ public InputStream getInputStream() throws IOException {
+ return new FileInputStream(this.file);
+ }
+
+ public Reader getReader() throws IOException {
+ return new InputStreamReader( getInputStream() );
+ }
+
+ /**
+ * This implementation returns a URL for the underlying file.
+ * @see java.io.File#toURI()
+ */
+ public URL getURL() throws IOException {
+ return this.file.toURI().toURL();
+ }
+
+ public boolean hasURL() {
+ return true;
+ }
+
+ public String toString() {
+ return "[FileResource file='" + this.file.toString() + "']";
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/InputStreamResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/InputStreamResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/InputStreamResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,38 @@
+package org.drools.io.impl;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+
+public class InputStreamResource implements Resource {
+ private InputStream stream;
+
+ public InputStreamResource(InputStream stream) {
+ if ( stream == null ) {
+ throw new IllegalArgumentException( "stream cannot be null" );
+ }
+ this.stream = stream;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return stream;
+ }
+
+ public Reader getReader() throws IOException {
+ return new InputStreamReader( getInputStream() );
+ }
+
+ public URL getURL() throws IOException {
+ throw new FileNotFoundException( "InputStream cannot be resolved to URL" );
+ }
+
+ public boolean hasURL() {
+ return false;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderInputStream.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderInputStream.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderInputStream.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,194 @@
+package org.drools.io.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.util.StringUtils;
+
+public class ReaderInputStream extends InputStream {
+
+ /** Source Reader */
+ private Reader in;
+
+ private String encoding = System.getProperty("file.encoding");
+
+ private byte[] slack;
+
+ private int begin;
+
+ /**
+ * Construct a <code>ReaderInputStream</code>
+ * for the specified <code>Reader</code>.
+ *
+ * @param reader <code>Reader</code>. Must not be <code>null</code>.
+ */
+ public ReaderInputStream(Reader reader) {
+ if ( reader == null ) {
+ throw new IllegalArgumentException("reader must not be null");
+ }
+ in = reader;
+ if ( reader instanceof InputStreamReader ) {
+ // set the encoding if it's an InputStreamReader and that reader defines an encoding.
+ if ( !StringUtils.isEmpty( ((InputStreamReader) reader).getEncoding() ) ) {
+ this.encoding = ((InputStreamReader) reader).getEncoding();
+ }
+ }
+ }
+
+ /**
+ * Construct a <code>ReaderInputStream</code>
+ * for the specified <code>Reader</code>,
+ * with the specified encoding.
+ *
+ * @param reader non-null <code>Reader</code>.
+ * @param encoding non-null <code>String</code> encoding.
+ */
+ public ReaderInputStream(Reader reader, String encoding) {
+ this(reader);
+ if (encoding == null) {
+ throw new IllegalArgumentException("encoding must not be null");
+ } else {
+ this.encoding = encoding;
+ }
+ }
+
+ /**
+ * Reads from the <code>Reader</code>, returning the same value.
+ *
+ * @return the value of the next character in the <code>Reader</code>.
+ *
+ * @exception IOException if the original <code>Reader</code> fails to be read
+ */
+ public synchronized int read() throws IOException {
+ if (in == null) {
+ throw new IOException("Stream Closed");
+ }
+
+ byte result;
+ if (slack != null && begin < slack.length) {
+ result = slack[begin];
+ if (++begin == slack.length) {
+ slack = null;
+ }
+ } else {
+ byte[] buf = new byte[1];
+ if (read(buf, 0, 1) <= 0) {
+ return -1;
+ } else {
+ result = buf[0];
+ }
+ }
+ return result & 0xFF;
+ }
+
+ /**
+ * Reads from the <code>Reader</code> into a byte array
+ *
+ * @param b the byte array to read into
+ * @param off the offset in the byte array
+ * @param len the length in the byte array to fill
+ * @return the actual number read into the byte array, -1 at
+ * the end of the stream
+ * @exception IOException if an error occurs
+ */
+ public synchronized int read(byte[] b, int off, int len)
+ throws IOException {
+ if (in == null) {
+ throw new IOException("Stream Closed");
+ }
+ if (len == 0) {
+ return 0;
+ }
+ while (slack == null) {
+ char[] buf = new char[len]; // might read too much
+ int n = in.read(buf);
+ if (n == -1) {
+ return -1;
+ }
+ if (n > 0) {
+ slack = new String(buf, 0, n).getBytes(encoding);
+ begin = 0;
+ }
+ }
+
+ if (len > slack.length - begin) {
+ len = slack.length - begin;
+ }
+
+ System.arraycopy(slack, begin, b, off, len);
+
+ if ((begin += len) >= slack.length) {
+ slack = null;
+ }
+
+ return len;
+ }
+
+ /**
+ * Marks the read limit of the Reader.
+ *
+ * @param limit the maximum limit of bytes that can be read before the
+ * mark position becomes invalid
+ */
+ public synchronized void mark(final int limit) {
+ try {
+ in.mark(limit);
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe.getMessage());
+ }
+ }
+
+
+ /**
+ * @return the current number of bytes ready for reading
+ * @exception IOException if an error occurs
+ */
+ public synchronized int available() throws IOException {
+ if (in == null) {
+ throw new IOException("Stream Closed");
+ }
+ if (slack != null) {
+ return slack.length - begin;
+ }
+ if (in.ready()) {
+ return 1;
+ }
+ return 0;
+ }
+
+ /**
+ * @return false - mark is not supported
+ */
+ public boolean markSupported () {
+ return false; // would be imprecise
+ }
+
+ /**
+ * Resets the Reader.
+ *
+ * @exception IOException if the Reader fails to be reset
+ */
+ public synchronized void reset() throws IOException {
+ if (in == null) {
+ throw new IOException("Stream Closed");
+ }
+ slack = null;
+ in.reset();
+ }
+
+ /**
+ * Closes the Reader.
+ *
+ * @exception IOException if the original Reader fails to be closed
+ */
+ public synchronized void close() throws IOException {
+ if (in != null) {
+ in.close();
+ slack = null;
+ in = null;
+ }
+ }
+}
+
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ReaderResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,56 @@
+package org.drools.io.impl;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+
+public class ReaderResource implements Resource {
+ private Reader reader;
+ private String encoding;
+
+ public ReaderResource(Reader reader) {
+ this(reader, null);
+ }
+
+ public ReaderResource(Reader reader, String encoding) {
+ if ( reader == null ) {
+ throw new IllegalArgumentException( "reader cannot be null" );
+ }
+ if ( encoding == null && reader instanceof InputStreamReader ) {
+ this.encoding = ((InputStreamReader)reader).getEncoding();
+ }
+ this.reader = reader;
+
+ this.encoding = encoding;
+ }
+
+ public URL getURL() throws IOException {
+ throw new FileNotFoundException( "byte[] cannot be resolved to URL");
+ }
+
+ public InputStream getInputStream() throws IOException {
+ if ( this.encoding != null ) {
+ return new ReaderInputStream( this.reader, this.encoding);
+ } else {
+ return new ReaderInputStream( this.reader);
+ }
+ }
+
+ public Reader getReader() {
+ return this.reader;
+ }
+
+ public String getEncoding() {
+ return this.encoding;
+ }
+
+ public boolean hasURL() {
+ return false;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceProviderImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/ResourceProviderImpl.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,62 @@
+package org.drools.io.impl;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URL;
+
+import org.drools.io.Resource;
+import org.drools.io.ResourceProvider;
+
+public class ResourceProviderImpl
+ implements
+ ResourceProvider {
+
+ public Resource newByteArrayResource(byte[] bytes) {
+ return new ByteArrayResource( bytes );
+ }
+
+ public Resource newClassPathResource(String path) {
+ return new ClassPathResource( path );
+ }
+
+ public Resource newClassPathResource(String path,
+ ClassLoader classLoader) {
+ return new ClassPathResource(path, classLoader);
+ }
+
+ public Resource newClassPathResource(String path,
+ Class clazz) {
+ return new ClassPathResource(path, clazz);
+ }
+
+ public Resource newFileSystemResource(File file) {
+ return new FileSystemResource( file );
+ }
+
+ public Resource newFileSystemResource(String fileName) {
+ return new FileSystemResource( fileName );
+ }
+
+ public Resource newInputStreamResource(InputStream stream) {
+ return new InputStreamResource( stream );
+ }
+
+ public Resource newReaderResource(Reader reader) {
+ return new ReaderResource( reader );
+ }
+
+ public Resource newReaderResource(Reader reader,
+ String encoding) {
+ return new ReaderResource( reader, encoding);
+ }
+
+ public Resource newUrlResource(URL url) {
+ return new UrlResource(url);
+ }
+
+ public Resource newUrlResource(String path) {
+ return new UrlResource( path );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,98 @@
+package org.drools.io.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.drools.io.Resource;
+import org.drools.util.StringUtils;
+
+/**
+ * Borrowed gratuitously from Spring under ASL2.0.
+ *
+ */
+public class UrlResource implements Resource {
+ private URL url;
+
+ public UrlResource(URL url) {
+ this.url = getCleanedUrl( url,
+ url.toString() );
+ }
+
+ public UrlResource(String path) {
+ try {
+ this.url = getCleanedUrl( new URL( path ),
+ path );
+ } catch ( MalformedURLException e ) {
+ throw new IllegalArgumentException( "'" + path + "' path is malformed", e);
+ }
+ }
+
+ /**
+ * This implementation opens an InputStream for the given URL.
+ * It sets the "UseCaches" flag to <code>false</code>,
+ * mainly to avoid jar file locking on Windows.
+ * @see java.net.URL#openConnection()
+ * @see java.net.URLConnection#setUseCaches(boolean)
+ * @see java.net.URLConnection#getInputStream()
+ */
+ public InputStream getInputStream() throws IOException {
+ URLConnection con = this.url.openConnection();
+ con.setUseCaches(false);
+ return con.getInputStream();
+ }
+
+ public Reader getReader() throws IOException {
+ return new InputStreamReader( getInputStream() );
+ }
+
+
+ /**
+ * Determine a cleaned URL for the given original URL.
+ * @param originalUrl the original URL
+ * @param originalPath the original URL path
+ * @return the cleaned URL
+ * @see org.springframework.util.StringUtils#cleanPath
+ */
+ private URL getCleanedUrl(URL originalUrl,
+ String originalPath) {
+ try {
+ return new URL( StringUtils.cleanPath( originalPath ) );
+ } catch ( MalformedURLException ex ) {
+ // Cleaned URL path cannot be converted to URL
+ // -> take original URL.
+ return originalUrl;
+ }
+ }
+
+ public URL getURL() throws IOException {
+ return this.url;
+ }
+
+ public boolean hasURL() {
+ return true;
+ }
+
+ /**
+ * This implementation compares the underlying URL references.
+ */
+ public boolean equals(Object obj) {
+ return (obj == this || (obj instanceof UrlResource && this.url.equals( ((UrlResource) obj).url )));
+ }
+
+ /**
+ * This implementation returns the hash code of the underlying URL reference.
+ */
+ public int hashCode() {
+ return this.url.hashCode();
+ }
+
+ public String toString() {
+ return "[UrlResource path='" + this.url.toExternalForm() + "']";
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/StringUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/StringUtils.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/StringUtils.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -22,10 +22,13 @@
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
/**
- * Ripped form commons StringUtil:
+ * Ripped form commons StringUtil, unless specified:
*
* <p>Operations on {@link java.lang.String} that are
* <code>null</code> safe.</p>
@@ -196,8 +199,18 @@
* @param str the String to check, may be null
* @return <code>true</code> if the String is empty or null
*/
- public static boolean isEmpty(final String str) {
- return str == null || str.length() == 0 || str.trim().length() == 0;
+ public static boolean isEmpty(final CharSequence str) {
+ if ( str == null || str.length() == 0 ) {
+ return true;
+ }
+
+ for ( int i = 0, length = str.length(); i < length; i++ ){
+ if ( str.charAt( i ) != ' ' ) {
+ return false;
+ }
+ }
+
+ return true;
}
// Padding
@@ -896,5 +909,273 @@
}
}
+ /**
+ * Apply the given relative path to the given path,
+ * assuming standard Java folder separation (i.e. "/" separators);
+ * @param path the path to start from (usually a full file path)
+ * @param relativePath the relative path to apply
+ * (relative to the full file path above)
+ * @return the full file path that results from applying the relative path
+ */
+ public static String applyRelativePath(String path, String relativePath) {
+ int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR);
+ if (separatorIndex != -1) {
+ String newPath = path.substring(0, separatorIndex);
+ if (!relativePath.startsWith(FOLDER_SEPARATOR)) {
+ newPath += FOLDER_SEPARATOR;
+ }
+ return newPath + relativePath;
+ }
+ else {
+ return relativePath;
+ }
+ }
+
+ private static final String FOLDER_SEPARATOR = "/";
+
+ private static final String WINDOWS_FOLDER_SEPARATOR = "\\";
+
+ private static final String TOP_PATH = "..";
+
+ private static final String CURRENT_PATH = ".";
+
+ private static final char EXTENSION_SEPARATOR = '.';
+
+
+ /**
+ * Normalize the path by suppressing sequences like "path/.." and
+ * inner simple dots.
+ * <p>The result is convenient for path comparison. For other uses,
+ * notice that Windows separators ("\") are replaced by simple slashes.
+ * @param path the original path
+ * @return the normalized path
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String cleanPath(String path) {
+ if (path == null) {
+ return null;
+ }
+ String pathToUse = replace(path, WINDOWS_FOLDER_SEPARATOR, FOLDER_SEPARATOR);
+
+ // Strip prefix from path to analyze, to not treat it as part of the
+ // first path element. This is necessary to correctly parse paths like
+ // "file:core/../core/io/Resource.class", where the ".." should just
+ // strip the first "core" directory while keeping the "file:" prefix.
+ int prefixIndex = pathToUse.indexOf(":");
+ String prefix = "";
+ if (prefixIndex != -1) {
+ prefix = pathToUse.substring(0, prefixIndex + 1);
+ pathToUse = pathToUse.substring(prefixIndex + 1);
+ }
+ if (pathToUse.startsWith(FOLDER_SEPARATOR)) {
+ prefix = prefix + FOLDER_SEPARATOR;
+ pathToUse = pathToUse.substring(1);
+ }
+
+ String[] pathArray = delimitedListToStringArray(pathToUse, FOLDER_SEPARATOR);
+ List pathElements = new LinkedList();
+ int tops = 0;
+
+ for (int i = pathArray.length - 1; i >= 0; i--) {
+ String element = pathArray[i];
+ if (CURRENT_PATH.equals(element)) {
+ // Points to current directory - drop it.
+ }
+ else if (TOP_PATH.equals(element)) {
+ // Registering top path found.
+ tops++;
+ }
+ else {
+ if (tops > 0) {
+ // Merging path element with element corresponding to top path.
+ tops--;
+ }
+ else {
+ // Normal path element found.
+ pathElements.add(0, element);
+ }
+ }
+ }
+
+ // Remaining top paths need to be retained.
+ for (int i = 0; i < tops; i++) {
+ pathElements.add(0, TOP_PATH);
+ }
+
+ return prefix + collectionToDelimitedString(pathElements, FOLDER_SEPARATOR);
+ }
+
+ /**
+ * Convenience method to return a Collection as a delimited (e.g. CSV)
+ * String. E.g. useful for <code>toString()</code> implementations.
+ * @param coll the Collection to display
+ * @param delim the delimiter to use (probably a ",")
+ * @param prefix the String to start each element with
+ * @param suffix the String to end each element with
+ * @return the delimited String
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String collectionToDelimitedString(Collection coll, String delim, String prefix, String suffix) {
+ if (coll == null || coll.isEmpty()) {
+ return "";
+ }
+ StringBuffer sb = new StringBuffer();
+ Iterator it = coll.iterator();
+ while (it.hasNext()) {
+ sb.append(prefix).append(it.next()).append(suffix);
+ if (it.hasNext()) {
+ sb.append(delim);
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Convenience method to return a Collection as a delimited (e.g. CSV)
+ * String. E.g. useful for <code>toString()</code> implementations.
+ * @param coll the Collection to display
+ * @param delim the delimiter to use (probably a ",")
+ * @return the delimited String
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String collectionToDelimitedString(Collection coll, String delim) {
+ return collectionToDelimitedString(coll, delim, "", "");
+ }
+
+
+ /**
+ * Replace all occurences of a substring within a string with
+ * another string.
+ * @param inString String to examine
+ * @param oldPattern String to replace
+ * @param newPattern String to insert
+ * @return a String with the replacements
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String replace(String inString, String oldPattern, String newPattern) {
+ if (isEmpty(inString) || isEmpty(oldPattern) || newPattern == null) {
+ return inString;
+ }
+ StringBuffer sbuf = new StringBuffer();
+ // output StringBuffer we'll build up
+ int pos = 0; // our position in the old string
+ int index = inString.indexOf(oldPattern);
+ // the index of an occurrence we've found, or -1
+ int patLen = oldPattern.length();
+ while (index >= 0) {
+ sbuf.append(inString.substring(pos, index));
+ sbuf.append(newPattern);
+ pos = index + patLen;
+ index = inString.indexOf(oldPattern, pos);
+ }
+ sbuf.append(inString.substring(pos));
+ // remember to append any characters to the right of a match
+ return sbuf.toString();
+ }
+
+
+
+ /**
+ * Take a String which is a delimited list and convert it to a String array.
+ * <p>A single delimiter can consists of more than one character: It will still
+ * be considered as single delimiter string, rather than as bunch of potential
+ * delimiter characters - in contrast to <code>tokenizeToStringArray</code>.
+ * @param str the input String
+ * @param delimiter the delimiter between elements (this is a single delimiter,
+ * rather than a bunch individual delimiter characters)
+ * @return an array of the tokens in the list
+ * @see #tokenizeToStringArray
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String[] delimitedListToStringArray(String str, String delimiter) {
+ return delimitedListToStringArray(str, delimiter, null);
+ }
+
+ /**
+ * Take a String which is a delimited list and convert it to a String array.
+ * <p>A single delimiter can consists of more than one character: It will still
+ * be considered as single delimiter string, rather than as bunch of potential
+ * delimiter characters - in contrast to <code>tokenizeToStringArray</code>.
+ * @param str the input String
+ * @param delimiter the delimiter between elements (this is a single delimiter,
+ * rather than a bunch individual delimiter characters)
+ * @param charsToDelete a set of characters to delete. Useful for deleting unwanted
+ * line breaks: e.g. "\r\n\f" will delete all new lines and line feeds in a String.
+ * @return an array of the tokens in the list
+ * @see #tokenizeToStringArray
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String[] delimitedListToStringArray(String str, String delimiter, String charsToDelete) {
+ if (str == null) {
+ return new String[0];
+ }
+ if (delimiter == null) {
+ return new String[] {str};
+ }
+ List result = new ArrayList();
+ if ("".equals(delimiter)) {
+ for (int i = 0; i < str.length(); i++) {
+ result.add(deleteAny(str.substring(i, i + 1), charsToDelete));
+ }
+ }
+ else {
+ int pos = 0;
+ int delPos = 0;
+ while ((delPos = str.indexOf(delimiter, pos)) != -1) {
+ result.add(deleteAny(str.substring(pos, delPos), charsToDelete));
+ pos = delPos + delimiter.length();
+ }
+ if (str.length() > 0 && pos <= str.length()) {
+ // Add rest of String, but not in case of empty input.
+ result.add(deleteAny(str.substring(pos), charsToDelete));
+ }
+ }
+ return toStringArray(result);
+ }
+
+ /**
+ * Copy the given Collection into a String array.
+ * The Collection must contain String elements only.
+ * @param collection the Collection to copy
+ * @return the String array (<code>null</code> if the passed-in
+ * Collection was <code>null</code>)
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String[] toStringArray(Collection collection) {
+ if (collection == null) {
+ return null;
+ }
+ return (String[]) collection.toArray(new String[collection.size()]);
+ }
+
+ /**
+ * Delete any character in a given String.
+ * @param inString the original String
+ * @param charsToDelete a set of characters to delete.
+ * E.g. "az\n" will delete 'a's, 'z's and new lines.
+ * @return the resulting String
+ *
+ * Borrowed from Spring, under the ASL2.0 license.
+ */
+ public static String deleteAny(String inString, String charsToDelete) {
+ if (isEmpty(inString) || isEmpty(charsToDelete)) {
+ return inString;
+ }
+ StringBuffer out = new StringBuffer();
+ for (int i = 0; i < inString.length(); i++) {
+ char c = inString.charAt(i);
+ if (charsToDelete.indexOf(c) == -1) {
+ out.append(c);
+ }
+ }
+ return out.toString();
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-decisiontables/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/.classpath 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-decisiontables/.classpath 2008-11-28 06:34:07 UTC (rev 24131)
@@ -5,17 +5,18 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="src" path="/drools-api"/>
<classpathentry kind="src" path="/drools-compiler"/>
<classpathentry kind="src" path="/drools-core"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
- <classpathentry kind="src" path="/drools-api"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
- <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
<classpathentry kind="src" path="/drools-templates"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.4-SNAPSHOT/mvel2-2.0.4-SNAPSHOT.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-decisiontables/.project
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/.project 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-decisiontables/.project 2008-11-28 06:34:07 UTC (rev 24131)
@@ -2,9 +2,9 @@
<name>drools-decisiontables</name>
<comment>A rule production system</comment>
<projects>
+ <project>drools-api</project>
<project>drools-compiler</project>
<project>drools-core</project>
- <project>drools-api</project>
<project>drools-templates</project>
</projects>
<buildSpec>
Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -19,21 +19,7 @@
return compileStream( is,
configuration );
}
-
- public String loadFromReader(Reader reader,
- DecisionTableConfiguration configuration) {
- InputStream is;
- if ( reader instanceof InputStreamReader ) {
- is = new ReaderInputStream( reader,
- ((InputStreamReader) reader).getEncoding() );
- } else {
- is = new ReaderInputStream( reader );
- }
-
- return compileStream( is,
- configuration );
- }
-
+
private String compileStream(InputStream is,
DecisionTableConfiguration configuration) {
SpreadsheetCompiler compiler = new SpreadsheetCompiler();
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -21,6 +21,7 @@
import org.drools.compiler.PackageBuilder;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
@@ -39,7 +40,7 @@
DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType( DecisionTableInputType.XLS );
- kbuilder.addResource( getClass().getResource( "/data/ExamplePolicyPricing.xls" ),
+ kbuilder.add( ResourceFactory.newClassPathResource( "/data/ExamplePolicyPricing.xls", getClass() ),
KnowledgeType.DTABLE,
dtconf );
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/CompositionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/CompositionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/CompositionTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,58 @@
+package org.drools.decisiontable;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.compiler.KnowledgeComposition;
+import org.drools.compiler.KnowledgeResource;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.io.ResourceFactory;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.xml.XmlCompositionReader;
+import org.xml.sax.SAXException;
+
+public class CompositionTest extends TestCase {
+
+ public void testIntegregation() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "composition1Test.xml", getClass()), KnowledgeType.COMPOSITION );
+ assertFalse( kbuilder.hasErrors() );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ List list = new ArrayList();
+ ksession.setGlobal( "list", list );
+
+ ksession.insert( new Cheese( "cheddar",
+ 42 ) );
+ ksession.insert( new Person( "michael",
+ "stilton",
+ 25 ) );
+
+ ksession.fireAllRules();
+ ksession.dispose();
+
+ assertEquals( 3, list.size() );
+
+ assertEquals( "Young man cheddar",
+ list.get( 0 ) );
+
+ assertEquals( "rule1",
+ list.get( 1 ) );
+ assertEquals( "rule2",
+ list.get( 2 ) );
+ }
+}
Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -30,6 +30,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class SpreadsheetIntegrationTest extends TestCase {
@@ -40,7 +41,7 @@
DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType( DecisionTableInputType.XLS );
- kbuilder.addResource( getClass().getResource( "/data/IntegrationExampleTest.xls" ),
+ kbuilder.add( ResourceFactory.newClassPathResource( "/data/IntegrationExampleTest.xls", getClass() ),
KnowledgeType.DTABLE,
dtconf );
@@ -76,7 +77,7 @@
dtconf.setInputType( DecisionTableInputType.XLS );
dtconf.setWorksheetName( "Tables_2" );
- kbuilder.addResource( getClass().getResource( "/data/IntegrationExampleTest.xls" ),
+ kbuilder.add( ResourceFactory.newClassPathResource( "/data/IntegrationExampleTest.xls", getClass() ),
KnowledgeType.DTABLE,
dtconf );
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.drl 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,10 @@
+package org.drools.test
+
+global java.util.List list;
+
+rule "rule1"
+ salience 10
+when
+then
+ list.add( "rule1" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.xml
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.xml (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition1Test.xml 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,9 @@
+<composition xmlns='http://drools.org/drools-4.0/composition'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-4.0/composition drools-composition-4.0.xsd' >
+ <resource source='classpath:org/drools/decisiontable/composition1Test.drl' type='DRL' />
+ <resource source='classpath:data/IntegrationExampleTest.xls' type="DTABLE">
+ <decisiontable-conf input-type="XLS" worksheet-name="Tables_2" />
+ </resource>
+ <resource source='classpath:org/drools/decisiontable/composition2Test.drl' type='DRL' />
+</composition>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition2Test.drl
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition2Test.drl (rev 0)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/resources/org/drools/decisiontable/composition2Test.drl 2008-11-28 06:34:07 UTC (rev 24131)
@@ -0,0 +1,10 @@
+package org.drools.test
+
+global java.util.List list;
+
+rule "rule2"
+ salience 5
+when
+then
+ list.add( "rule2" );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,13 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/rules"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="lib" path="lib/foxtrot-2.0.jar"/>
- <classpathentry kind="lib" path="lib/jgoodies-forms-1.0.4.jar"/>
- <classpathentry kind="con" path="DROOLS/Drools"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+ <classpathentry excluding="**/*.java" kind="src" path="src/main/rules"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="lib" path="lib/foxtrot-2.0.jar"/>
+ <classpathentry kind="lib" path="lib/jgoodies-forms-1.0.4.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-decisiontables"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-templates"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -20,169 +20,167 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
-
public class MannersBenchmark {
- /** Number of guests at the dinner (default: 16). */
- private int numGuests = 16;
+ /** Number of guests at the dinner (default: 16). */
+ private int numGuests = 16;
- /** Number of seats at the table (default: 16). */
- private int numSeats = 16;
+ /** Number of seats at the table (default: 16). */
+ private int numSeats = 16;
- /** Minimum number of hobbies each guest should have (default: 2). */
- private int minHobbies = 2;
+ /** Minimum number of hobbies each guest should have (default: 2). */
+ private int minHobbies = 2;
- /** Maximun number of hobbies each guest should have (default: 3). */
- private int maxHobbies = 3;
+ /** Maximun number of hobbies each guest should have (default: 3). */
+ private int maxHobbies = 3;
- public static void main(final String[] args) throws Exception {
- KnowledgeBuilderConfiguration kbuilderConfig= KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConfig);
- kbuilder.addResource( new InputStreamReader(MannersBenchmark.class
- .getResourceAsStream("manners.drl")), KnowledgeType.DRL);
- Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
-
+ public static void main(final String[] args) throws Exception {
+ KnowledgeBuilderConfiguration kbuilderConfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( kbuilderConfig );
+ kbuilder.add( ResourceFactory.newClassPathResource( "manners.drl",
+ MannersBenchmark.class ),
+ KnowledgeType.DRL );
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
// add the package to a rulebase
- final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( pkgs );
+ final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( pkgs );
- StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- String filename;
- if (args.length != 0) {
- String arg = args[0];
- filename = arg;
- } else {
- filename = "manners128.dat";
- }
+ String filename;
+ if ( args.length != 0 ) {
+ String arg = args[0];
+ filename = arg;
+ } else {
+ filename = "manners128.dat";
+ }
- InputStream is = MannersBenchmark.class.getResourceAsStream(filename);
- List list = getInputObjects(is);
- for (Iterator it = list.iterator(); it.hasNext();) {
- Object object = it.next();
- ksession.insert(object);
- }
+ InputStream is = MannersBenchmark.class.getResourceAsStream( filename );
+ List list = getInputObjects( is );
+ for ( Iterator it = list.iterator(); it.hasNext(); ) {
+ Object object = it.next();
+ ksession.insert( object );
+ }
- ksession.insert(new Count(1));
+ ksession.insert( new Count( 1 ) );
- long start = System.currentTimeMillis();
- ksession.fireAllRules();
- System.err.println(System.currentTimeMillis() - start);
+ long start = System.currentTimeMillis();
+ ksession.fireAllRules();
+ System.err.println( System.currentTimeMillis() - start );
ksession.dispose();
- }
+ }
- /**
- * Convert the facts from the <code>InputStream</code> to a list of
- * objects.
- */
- protected static List getInputObjects(InputStream inputStream)
- throws IOException {
- List list = new ArrayList();
+ /**
+ * Convert the facts from the <code>InputStream</code> to a list of
+ * objects.
+ */
+ protected static List getInputObjects(InputStream inputStream) throws IOException {
+ List list = new ArrayList();
- BufferedReader br = new BufferedReader(new InputStreamReader(
- inputStream));
+ BufferedReader br = new BufferedReader( new InputStreamReader( inputStream ) );
- String line;
- while ((line = br.readLine()) != null) {
- if (line.trim().length() == 0 || line.trim().startsWith(";")) {
- continue;
- }
- StringTokenizer st = new StringTokenizer(line, "() ");
- String type = st.nextToken();
+ String line;
+ while ( (line = br.readLine()) != null ) {
+ if ( line.trim().length() == 0 || line.trim().startsWith( ";" ) ) {
+ continue;
+ }
+ StringTokenizer st = new StringTokenizer( line,
+ "() " );
+ String type = st.nextToken();
- if ("guest".equals(type)) {
- if (!"name".equals(st.nextToken())) {
- throw new IOException("expected 'name' in: " + line);
- }
- String name = st.nextToken();
- if (!"sex".equals(st.nextToken())) {
- throw new IOException("expected 'sex' in: " + line);
- }
- String sex = st.nextToken();
- if (!"hobby".equals(st.nextToken())) {
- throw new IOException("expected 'hobby' in: " + line);
- }
- String hobby = st.nextToken();
+ if ( "guest".equals( type ) ) {
+ if ( !"name".equals( st.nextToken() ) ) {
+ throw new IOException( "expected 'name' in: " + line );
+ }
+ String name = st.nextToken();
+ if ( !"sex".equals( st.nextToken() ) ) {
+ throw new IOException( "expected 'sex' in: " + line );
+ }
+ String sex = st.nextToken();
+ if ( !"hobby".equals( st.nextToken() ) ) {
+ throw new IOException( "expected 'hobby' in: " + line );
+ }
+ String hobby = st.nextToken();
- Guest guest = new Guest(name, Sex.resolve(sex), Hobby
- .resolve(hobby));
+ Guest guest = new Guest( name,
+ Sex.resolve( sex ),
+ Hobby.resolve( hobby ) );
- list.add(guest);
- }
+ list.add( guest );
+ }
- if ("last_seat".equals(type)) {
- if (!"seat".equals(st.nextToken())) {
- throw new IOException("expected 'seat' in: " + line);
- }
- list.add(new LastSeat(new Integer(st.nextToken()).intValue()));
- }
+ if ( "last_seat".equals( type ) ) {
+ if ( !"seat".equals( st.nextToken() ) ) {
+ throw new IOException( "expected 'seat' in: " + line );
+ }
+ list.add( new LastSeat( new Integer( st.nextToken() ).intValue() ) );
+ }
- if ("context".equals(type)) {
- if (!"state".equals(st.nextToken())) {
- throw new IOException("expected 'state' in: " + line);
- }
- list.add(new Context(st.nextToken()));
- }
- }
- inputStream.close();
+ if ( "context".equals( type ) ) {
+ if ( !"state".equals( st.nextToken() ) ) {
+ throw new IOException( "expected 'state' in: " + line );
+ }
+ list.add( new Context( st.nextToken() ) );
+ }
+ }
+ inputStream.close();
- return list;
- }
+ return list;
+ }
- private InputStream generateData() {
- final String LINE_SEPARATOR = System.getProperty("line.separator");
+ private InputStream generateData() {
+ final String LINE_SEPARATOR = System.getProperty( "line.separator" );
- StringWriter writer = new StringWriter();
+ StringWriter writer = new StringWriter();
- int maxMale = numGuests / 2;
- int maxFemale = numGuests / 2;
+ int maxMale = numGuests / 2;
+ int maxFemale = numGuests / 2;
- int maleCount = 0;
- int femaleCount = 0;
+ int maleCount = 0;
+ int femaleCount = 0;
- // init hobbies
- List hobbyList = new ArrayList();
- for (int i = 1; i <= maxHobbies; i++) {
- hobbyList.add("h" + i);
- }
+ // init hobbies
+ List hobbyList = new ArrayList();
+ for ( int i = 1; i <= maxHobbies; i++ ) {
+ hobbyList.add( "h" + i );
+ }
- Random rnd = new Random();
- for (int i = 1; i <= numGuests; i++) {
- char sex = rnd.nextBoolean() ? 'm' : 'f';
- if (sex == 'm' && maleCount == maxMale) {
- sex = 'f';
- }
- if (sex == 'f' && femaleCount == maxFemale) {
- sex = 'm';
- }
- if (sex == 'm') {
- maleCount++;
- }
- if (sex == 'f') {
- femaleCount++;
- }
+ Random rnd = new Random();
+ for ( int i = 1; i <= numGuests; i++ ) {
+ char sex = rnd.nextBoolean() ? 'm' : 'f';
+ if ( sex == 'm' && maleCount == maxMale ) {
+ sex = 'f';
+ }
+ if ( sex == 'f' && femaleCount == maxFemale ) {
+ sex = 'm';
+ }
+ if ( sex == 'm' ) {
+ maleCount++;
+ }
+ if ( sex == 'f' ) {
+ femaleCount++;
+ }
- List guestHobbies = new ArrayList(hobbyList);
+ List guestHobbies = new ArrayList( hobbyList );
- int numHobbies = minHobbies
- + rnd.nextInt(maxHobbies - minHobbies + 1);
- for (int j = 0; j < numHobbies; j++) {
- int hobbyIndex = rnd.nextInt(guestHobbies.size());
- String hobby = (String) guestHobbies.get(hobbyIndex);
- writer.write("(guest (name n" + i + ") (sex " + sex
- + ") (hobby " + hobby + "))" + LINE_SEPARATOR);
- guestHobbies.remove(hobbyIndex);
- }
- }
- writer.write("(last_seat (seat " + numSeats + "))" + LINE_SEPARATOR);
+ int numHobbies = minHobbies + rnd.nextInt( maxHobbies - minHobbies + 1 );
+ for ( int j = 0; j < numHobbies; j++ ) {
+ int hobbyIndex = rnd.nextInt( guestHobbies.size() );
+ String hobby = (String) guestHobbies.get( hobbyIndex );
+ writer.write( "(guest (name n" + i + ") (sex " + sex + ") (hobby " + hobby + "))" + LINE_SEPARATOR );
+ guestHobbies.remove( hobbyIndex );
+ }
+ }
+ writer.write( "(last_seat (seat " + numSeats + "))" + LINE_SEPARATOR );
- writer.write(LINE_SEPARATOR);
- writer.write("(context (state start))" + LINE_SEPARATOR);
+ writer.write( LINE_SEPARATOR );
+ writer.write( "(context (state start))" + LINE_SEPARATOR );
- return new ByteArrayInputStream(writer.getBuffer().toString()
- .getBytes());
- }
+ return new ByteArrayInputStream( writer.getBuffer().toString().getBytes() );
+ }
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -30,6 +30,7 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.WorkingMemory;
@@ -40,14 +41,12 @@
public static void main(final String[] args) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( "waltz.drl" ) ),
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "waltz.drl",
+ WaltzBenchmark.class ),
+ KnowledgeType.DRL );
Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
- //add the package to a rulebase
- KnowledgeBaseConfiguration kbaseConfiguration = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
- //conf.setAlphaMemory( true );
- // conf.setShadowProxy( false );
- final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kbaseConfiguration );
+ //add the package to a kbase
+ final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( pkgs );
StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -15,21 +15,28 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
+/**
+ * This example is incomplete, it run's, but is no way near correct.
+ *
+ */
public class WaltzDbBenchmark {
public static void main(final String[] args) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( "waltzdb.drl" ) ),
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "waltzdb.drl",
+ WaltzDbBenchmark.class ),
+ KnowledgeType.DRL );
Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
KnowledgeBaseConfiguration kbaseConfiguration = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
- kbaseConfiguration.setProperty( "drools.removeIdentities", "true" );
+ kbaseConfiguration.setProperty( "drools.removeIdentities",
+ "true" );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kbaseConfiguration );
-// final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
-// conf );
+ // final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+ // conf );
kbase.addKnowledgePackages( pkgs );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,13 +1,12 @@
package org.drools.examples;
-import java.io.InputStreamReader;
-
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class FibonacciExample {
@@ -15,8 +14,9 @@
public static void main(final String[] args) throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( FibonacciExample.class.getResourceAsStream( "Fibonacci.drl" ) ),
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "Fibonacci.drl",
+ FibonacciExample.class ),
+ KnowledgeType.DRL );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,15 +1,13 @@
package org.drools.examples;
-import java.io.InputStreamReader;
-
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
-
public class GolfingExample {
/**
@@ -18,42 +16,44 @@
public static void main(final String[] args) throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( GolfingExample.class.getResourceAsStream( "golf.drl" ) ) , KnowledgeType.DRL);
+ kbuilder.add( ResourceFactory.newClassPathResource( "golf.drl",
+ GolfingExample.class ),
+ KnowledgeType.DRL );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-
- String[] names = new String[] { "Fred", "Joe", "Bob", "Tom" };
- String[] colors = new String[] { "red", "blue", "plaid", "orange" };
- int[] positions = new int[] { 1, 2, 3, 4 };
-
+
+ String[] names = new String[]{"Fred", "Joe", "Bob", "Tom"};
+ String[] colors = new String[]{"red", "blue", "plaid", "orange"};
+ int[] positions = new int[]{1, 2, 3, 4};
+
for ( int n = 0; n < names.length; n++ ) {
for ( int c = 0; c < colors.length; c++ ) {
for ( int p = 0; p < positions.length; p++ ) {
- ksession.insert( new Golfer( names[n], colors[c], positions[p]) );
- }
- }
+ ksession.insert( new Golfer( names[n],
+ colors[c],
+ positions[p] ) );
+ }
+ }
}
ksession.fireAllRules();
-
+
ksession.dispose();
-
-
+
}
-
public static class Golfer {
private String name;
private String color;
- private int position;
-
+ private int position;
+
public Golfer() {
-
+
}
-
+
public Golfer(String name,
String color,
int position) {
@@ -62,26 +62,27 @@
this.color = color;
this.position = position;
}
+
/**
* @return the color
*/
public String getColor() {
return this.color;
}
+
/**
* @return the name
*/
public String getName() {
return this.name;
}
-
+
/**
* @return the name
*/
public int getPosition() {
return this.position;
- }
-
+ }
+
}
}
-
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,7 +1,5 @@
package org.drools.examples;
-import java.io.InputStreamReader;
-import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -13,6 +11,7 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
@@ -21,14 +20,12 @@
public class HelloWorldExample {
public static final void main(final String[] args) throws Exception {
- //read in the source
- final Reader source = new InputStreamReader( HelloWorldExample.class.getResourceAsStream( "HelloWorld.drl" ) );
-
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//this will parse and compile in one step
- kbuilder.addResource( source,
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "HelloWorld.drl",
+ HelloWorldExample.class ),
+ KnowledgeType.DRL );
// Check the builder for errors
if ( kbuilder.hasErrors() ) {
@@ -45,7 +42,7 @@
final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ksession.setGlobal( "list",
- new ArrayList() );
+ new ArrayList() );
// session.addEventListener( new DebugAgendaEventListener() );
// session.addEventListener( new DebugWorkingMemoryEventListener() );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,7 +1,5 @@
package org.drools.examples;
-import java.io.InputStreamReader;
-
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.audit.WorkingMemoryFileLogger;
@@ -9,6 +7,7 @@
import org.drools.builder.KnowledgeBuilderConfiguration;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class HonestPoliticianExample {
@@ -20,11 +19,12 @@
KnowledgeBuilderConfiguration kbuilderconfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
kbuilderconfiguration.setProperty( "drools.dump.dir",
- "target" );
+ "target" );
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( HonestPoliticianExample.class.getResourceAsStream( "HonestPolitician.drl" ) ),
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "HonestPolitician.drl",
+ HonestPoliticianExample.class ),
+ KnowledgeType.DRL );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,6 +1,5 @@
package org.drools.examples;
-import java.io.InputStreamReader;
import java.util.Random;
import org.drools.KnowledgeBase;
@@ -9,16 +8,19 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class NumberGuessExample {
public static final void main(String[] args) throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.drl" ) ),
- KnowledgeType.DRL );
- kbuilder.addResource( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.rf" ) ),
- KnowledgeType.DRF );
+ kbuilder.add( ResourceFactory.newClassPathResource( "NumberGuess.drl",
+ ShoppingExample.class ),
+ KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "NumberGuess.rf",
+ ShoppingExample.class ),
+ KnowledgeType.DRF );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -29,7 +31,7 @@
logger.setFileName( "log/numberguess" );
ksession.insert( new GameRules( 100,
- 5 ) );
+ 5 ) );
ksession.insert( new RandomNumber() );
ksession.insert( new Game() );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PetStore.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PetStore.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PetStore.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -5,7 +5,6 @@
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -34,23 +33,18 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
-
public class PetStore {
public static void main(String[] args) {
try {
- // RuleSetLoader ruleSetLoader = new RuleSetLoader();
- // ruleSetLoader.addFromUrl( PetStore.class.getResource( args[0] ) );
- //
- // RuleBaseLoader ruleBaseLoader = new RuleBaseLoader();
- // ruleBaseLoader.addFromRuleSetLoader( ruleSetLoader );
- // RuleBase ruleBase = ruleBaseLoader.buildRuleBase();
-
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
- kbuilder.addResource( new InputStreamReader( PetStore.class.getResourceAsStream( "PetStore.drl" ) ) ,KnowledgeType.DRL);
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "PetStore.drl",
+ PetStore.class ),
+ KnowledgeType.DRL );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -374,10 +368,10 @@
*/
public static class CheckoutCallback {
KnowledgeBase kbase;
- JTextArea output;
+ JTextArea output;
public CheckoutCallback(KnowledgeBase kbase) {
- this.kbase= kbase;
+ this.kbase = kbase;
}
public void setOutput(JTextArea output) {
@@ -403,23 +397,22 @@
}
//add the JFrame to the ApplicationData to allow for user interaction
-
+
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ksession.setGlobal( "frame",
- frame );
+ frame );
ksession.setGlobal( "textArea",
- this.output );
+ this.output );
ksession.insert( new Product( "Gold Fish",
- 5 ) );
+ 5 ) );
ksession.insert( new Product( "Fish Tank",
- 25 ) );
+ 25 ) );
ksession.insert( new Product( "Fish Food",
- 2 ) );
-
+ 2 ) );
+
ksession.insert( new Product( "Fish Food Sample",
- 0 ) );
-
+ 0 ) );
ksession.insert( order );
ksession.fireAllRules();
@@ -523,8 +516,7 @@
} else if ( !product.equals( other.product ) ) return false;
return true;
}
-
-
+
}
public static class Product {
@@ -571,8 +563,7 @@
if ( Double.doubleToLongBits( price ) != Double.doubleToLongBits( other.price ) ) return false;
return true;
}
-
-
+
}
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -2,6 +2,7 @@
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Arrays;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
@@ -12,6 +13,8 @@
import org.drools.builder.KnowledgeType;
import org.drools.examples.decisiontable.Driver;
import org.drools.examples.decisiontable.Policy;
+import org.drools.io.ResourceFactory;
+import org.drools.io.impl.ClassPathResource;
import org.drools.runtime.StatelessKnowledgeSession;
/**
@@ -31,9 +34,14 @@
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getSpreadsheetURL(),
+ kbuilder.add( ResourceFactory.newClassPathResource( "ExamplePolicyPricing.xls", getClass() ),
KnowledgeType.DTABLE,
dtableconfiguration );
+
+ if ( kbuilder.hasErrors() ) {
+ System.err.print( kbuilder.getErrors() );
+ return -1;
+ }
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -45,7 +53,7 @@
Driver driver = new Driver();
Policy policy = new Policy();
- ksession.executeObject( new Object[]{driver, policy} );
+ ksession.executeIterable( Arrays.asList( new Object[]{driver, policy} ) );
System.out.println( "BASE PRICE IS: " + policy.getBasePrice() );
System.out.println( "DISCOUNT IS: " + policy.getDiscountPercent() );
@@ -54,8 +62,4 @@
}
- private URL getSpreadsheetURL() throws MalformedURLException {
- return getClass().getResource( "ExamplePolicyPricing.xls" );
- }
-
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleTemplateExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleTemplateExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleTemplateExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -25,6 +25,8 @@
*
* Note that even though they use the same spreadsheet, this example is just
* concerned with the data cells and does not use any of the Decision Table data.
+ *
+ * This example is also using unstable/experimental apis - as it is not using drools-api.
* @author Steve
*
*/
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -7,6 +7,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -14,7 +15,7 @@
public static final void main(String[] args) throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "Shopping.drl" ) ),
+ kbuilder.add( ResourceFactory.newClassPathResource( "Shopping.drl", ShoppingExample.class ),
KnowledgeType.DRL );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/cdss/CDSSExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/cdss/CDSSExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/cdss/CDSSExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -14,6 +14,7 @@
import org.drools.examples.cdss.data.Diagnose;
import org.drools.examples.cdss.data.Patient;
import org.drools.examples.cdss.service.RecommendationService;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
@@ -79,20 +80,20 @@
private static KnowledgeBase readRule() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- Reader reader = new InputStreamReader( CDSSExample.class.getResourceAsStream( "/org/drools/examples/cdss/GenericRules.drl" ) );
- kbuilder.addResource( reader,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "/org/drools/examples/cdss/GenericRules.drl", CDSSExample.class ),
KnowledgeType.DRL );
- reader = new InputStreamReader( CDSSExample.class.getResourceAsStream( "/org/drools/examples/cdss/ClinicalPathwayX.drl" ) );
- kbuilder.addResource( reader,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "/org/drools/examples/cdss/GenericRules.drl", CDSSExample.class ),
KnowledgeType.DRL );
- reader = new InputStreamReader( CDSSExample.class.getResourceAsStream( "/org/drools/examples/cdss/ClinicalPathwayX.rf" ) );
- kbuilder.addResource( reader,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "/org/drools/examples/cdss/ClinicalPathwayX.rf", CDSSExample.class ),
KnowledgeType.DRF );
- reader = new InputStreamReader( CDSSExample.class.getResourceAsStream( "/org/drools/examples/cdss/TreatmentX.rf" ) );
- kbuilder.addResource( reader,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "/org/drools/examples/cdss/TreatmentX.rf", CDSSExample.class ),
KnowledgeType.DRF );
- reader = new InputStreamReader( CDSSExample.class.getResourceAsStream( "/org/drools/examples/cdss/TreatmentY.rf" ) );
- kbuilder.addResource( reader,
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "/org/drools/examples/cdss/TreatmentY.rf", CDSSExample.class ) ,
KnowledgeType.DRF );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/AgendaGroupDelegate.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/AgendaGroupDelegate.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/AgendaGroupDelegate.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -12,43 +12,46 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.compiler.PackageBuilder;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
-public class AgendaGroupDelegate implements ConwayRuleDelegate {
+public class AgendaGroupDelegate
+ implements
+ ConwayRuleDelegate {
private StatefulKnowledgeSession session;
-
+
public AgendaGroupDelegate() {
- final Reader drl = new InputStreamReader( AgendaGroupDelegate.class.getResourceAsStream( "/org/drools/examples/conway/conway-agendagroup.drl" ) );
-
try {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( drl, KnowledgeType.DRL );
-
+ kbuilder.add( ResourceFactory.newClassPathResource( "conway-agendagroup.drl",
+ getClass() ),
+ KnowledgeType.DRL );
+
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
+
this.session = kbase.newStatefulKnowledgeSession();
} catch ( Exception e ) {
throw new RuntimeException( e );
}
}
-
+
/* (non-Javadoc)
* @see org.drools.examples.conway.ConwayRuleDelegate#getSession()
*/
public StatefulKnowledgeSession getSession() {
return this.session;
}
-
+
/* (non-Javadoc)
* @see org.drools.examples.conway.ConwayRuleDelegate#init()
*/
public void init() {
this.session.getAgenda().getAgendaGroup( "register neighbor" ).setFocus();
- this.session.fireAllRules();
+ this.session.fireAllRules();
this.session.getAgenda().getAgendaGroup( "calculate" ).clear();
}
-
+
/* (non-Javadoc)
* @see org.drools.examples.conway.CellGrid#nextGeneration()
*/
@@ -62,7 +65,7 @@
this.session.getAgenda().getAgendaGroup( "reset calculate" ).setFocus();
this.session.getAgenda().getAgendaGroup( "rest" ).setFocus();
this.session.getAgenda().getAgendaGroup( "evaluate" ).setFocus();
- this.session.getAgenda().getAgendaGroup( "calculate" ).setFocus();
+ this.session.getAgenda().getAgendaGroup( "calculate" ).setFocus();
return session.fireAllRules() != 0;
//return session.getAgenda().getAgendaGroup( "calculate" ).size() != 0;
}
@@ -79,5 +82,5 @@
this.session.getAgenda().getAgendaGroup( "calculate" ).setFocus();
this.session.fireAllRules();
}
-
+
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/RuleFlowDelegate.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/RuleFlowDelegate.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/RuleFlowDelegate.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -12,23 +12,19 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.compiler.PackageBuilder;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class RuleFlowDelegate implements ConwayRuleDelegate {
private StatefulKnowledgeSession session;
public RuleFlowDelegate() {
- final Reader drl = new InputStreamReader( CellGridImpl.class.getResourceAsStream( "/org/drools/examples/conway/conway-ruleflow.drl" ) );
- final Reader generationRf = new InputStreamReader( CellGridImpl.class.getResourceAsStream( "/org/drools/examples/conway/generation.rf" ) );
- final Reader killAllRf = new InputStreamReader( CellGridImpl.class.getResourceAsStream( "/org/drools/examples/conway/killAll.rf" ) );
- final Reader registerNeighborRf = new InputStreamReader( CellGridImpl.class.getResourceAsStream( "/org/drools/examples/conway/registerNeighbor.rf" ) );
-
try {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( drl, KnowledgeType.DRL );
- kbuilder.addResource( generationRf, KnowledgeType.DRF );
- kbuilder.addResource( killAllRf, KnowledgeType.DRF );
- kbuilder.addResource( registerNeighborRf, KnowledgeType.DRF );
+ kbuilder.add( ResourceFactory.newClassPathResource( "conway-ruleflow.drl",getClass()), KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "generation.rf",getClass()), KnowledgeType.DRF );
+ kbuilder.add( ResourceFactory.newClassPathResource( "killAll.rf",getClass()), KnowledgeType.DRF );
+ kbuilder.add( ResourceFactory.newClassPathResource( "registerNeighbor.rf",getClass()), KnowledgeType.DRF );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -8,6 +8,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.drools.process.instance.impl.demo.UIWorkItemHandler;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -40,9 +41,8 @@
}
private static KnowledgeBase readRule() throws Exception {
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- Reader source = new InputStreamReader( WorkItemExample.class.getResourceAsStream( "/org/drools/examples/ruleflow/workitems.rf" ) );
- kbuilder.addResource( source,
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "workitems.rf", WorkItemExample.class ),
KnowledgeType.DRF );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -15,6 +15,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
public class DroolsUtil {
private static DroolsUtil INSTANCE;
@@ -32,9 +33,6 @@
}
public KnowledgeBase readRuleBase(String drlFileName) throws Exception {
- //read in the source
- Reader source = new InputStreamReader( DroolsSudokuGridModel.class.getResourceAsStream( drlFileName ) );
-
//optionally read in the DSL (if you are using it).
//Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
@@ -44,7 +42,7 @@
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//this will parse and compile in one step
- kbuilder.addResource( source,
+ kbuilder.add( ResourceFactory.newClassPathResource( drlFileName,DroolsSudokuGridModel.class),
KnowledgeType.DRL );
//Use the following instead of above if you are using a DSL:
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExample.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExample.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,13 +1,12 @@
package org.drools.examples.troubleticket;
-import java.io.InputStreamReader;
-
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.audit.ThreadedWorkingMemoryFileLogger;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -19,8 +18,9 @@
public static void main(final String[] args) throws Exception {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( new InputStreamReader( TroubleTicketExample.class.getResourceAsStream( "TroubleTicket.drl" ) ),
- KnowledgeType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "TroubleTicket.drl",
+ TroubleTicketExample.class ),
+ KnowledgeType.DRL );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -64,7 +64,7 @@
t3.setStatus( "Done" );
ksession.update( ft3,
- t3 );
+ t3 );
try {
System.err.println( "[[ Sleeping 5 seconds ]]" );
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExampleWithDSL.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExampleWithDSL.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketExampleWithDSL.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -9,6 +9,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -21,10 +22,12 @@
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getDSL(),
- KnowledgeType.DSL );
- kbuilder.addResource( getSource(),
- KnowledgeType.DSLR );
+ kbuilder.add( ResourceFactory.newClassPathResource( "ticketing.dsl",
+ TroubleTicketExampleWithDSL.class ),
+ KnowledgeType.DSL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "TroubleTicketWithDSL.dslr",
+ TroubleTicketExampleWithDSL.class ),
+ KnowledgeType.DSLR );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -67,7 +70,7 @@
t3.setStatus( "Done" );
ksession.update( ft3,
- t3 );
+ t3 );
try {
System.err.println( "[[ Sleeping 5 seconds ]]" );
@@ -84,14 +87,4 @@
logger.writeToDisk();
}
-
- private static Reader getDSL() {
- return new InputStreamReader( TroubleTicketExampleWithDSL.class.getResourceAsStream( "ticketing.dsl" ) );
-
- }
-
- private static InputStreamReader getSource() {
- return new InputStreamReader( TroubleTicketExampleWithDSL.class.getResourceAsStream( "TroubleTicketWithDSL.dslr" ) );
- }
-
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -11,6 +11,7 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
@@ -30,7 +31,7 @@
dtableconfiguration.setInputType( DecisionTableInputType.XLS );
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.addResource( getSpreadsheetURL(),
+ kbuilder.add( ResourceFactory.newClassPathResource( "TroubleTicket.xls", TroubleTicketWithDT.class ),
KnowledgeType.DTABLE,
dtableconfiguration );
@@ -93,8 +94,4 @@
}
- private URL getSpreadsheetURL() throws MalformedURLException {
- return getClass().getResource( "TroubleTicket.xls" );
- }
-
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java 2008-11-28 05:37:21 UTC (rev 24130)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java 2008-11-28 06:34:07 UTC (rev 24131)
@@ -1,6 +1,5 @@
package org.drools.tutorials.banking;
-import java.io.InputStreamReader;
import java.util.Collection;
import org.drools.KnowledgeBase;
@@ -9,9 +8,9 @@
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
-
public class RuleRunner {
public RuleRunner() {
@@ -25,8 +24,10 @@
for ( int i = 0; i < rules.length; i++ ) {
String ruleFile = rules[i];
- System.out.println( "Loading file: " + ruleFile );
- kbuilder.addResource( new InputStreamReader( RuleRunner.class.getResourceAsStream( ruleFile ) ), KnowledgeType.DRL );
+ System.out.println( "Loading file: " + ruleFile );
+ kbuilder.add( ResourceFactory.newClassPathResource( ruleFile,
+ RuleRunner.class ),
+ KnowledgeType.DRL );
}
Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
More information about the jboss-svn-commits
mailing list