[overlord-commits] Overlord SVN: r658 - in sam/trunk: modules/core and 12 other directories.
overlord-commits at lists.jboss.org
overlord-commits at lists.jboss.org
Mon Jul 13 17:00:49 EDT 2009
Author: heiko.braun at jboss.com
Date: 2009-07-13 17:00:48 -0400 (Mon, 13 Jul 2009)
New Revision: 658
Removed:
sam/trunk/modules/core/src/test/resources/drools/aggregate.drl
Modified:
sam/trunk/modules/core/pom.xml
sam/trunk/modules/core/src/main/java/org/jboss/sam/EventMessage.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessor.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessorFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/ProcessingStatement.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntime.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeAware.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInput.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInputCallback.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamOutput.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigurationDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/Configurator.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DataSourceDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DatabaseRefDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/EPLDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/PropertyDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StatementDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamInputDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamOutputDef.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/EPLValueAdapter.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/ExpressionConverter.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/NoCharacterEscapeHandler.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceManager.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/internal/DBCPDataSourceFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeFactory.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeImpl.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/common/MapEventMessage.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsEventProcessorImpl.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsProcessingStatement.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/UpdateListener.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMDispatcher.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamInput.java
sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamRegistry.java
sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/ApiTestCase.java
sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/StockTick.java
sam/trunk/modules/core/src/test/resources/adapter/invm/sam-cfg.xml
sam/trunk/modules/core/src/test/resources/drools/forward.drl
sam/trunk/modules/core/src/test/resources/drools/sam-cfg.xml
sam/trunk/modules/core/src/test/resources/drools/simple.drl
sam/trunk/pom.xml
Log:
Update to drools 5.0.1
Modified: sam/trunk/modules/core/pom.xml
===================================================================
--- sam/trunk/modules/core/pom.xml 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/pom.xml 2009-07-13 21:00:48 UTC (rev 658)
@@ -58,11 +58,6 @@
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
</dependency>
-
- <dependency>
- <groupId>jfree</groupId>
- <artifactId>jfreechart</artifactId>
- </dependency>
<dependency>
<groupId>hsqldb</groupId>
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/EventMessage.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/EventMessage.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/EventMessage.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -27,35 +27,38 @@
* An event message will be send when an Event occurs.<br>
* It consist of a timestamp and associated event properties.
* EventMessage's are written to {@link org.jboss.sam.StreamOutput}'s.
- * <p>
- * EventMessage's can be mapped to {@link org.jboss.sam.chart.Chart}'s.
+ * <p/>
*
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface EventMessage<T>
{
- /**
- * Creation timestamp.
- * @return
- */
- long getTimestamp();
+ /**
+ * Creation timestamp.
+ *
+ * @return
+ */
+ long getTimestamp();
- /**
- * Get an event property by name
- * @param name
- * @return
- */
- Object getProperty(String name);
+ /**
+ * Get an event property by name
+ *
+ * @param name
+ * @return
+ */
+ Object getProperty(String name);
- /**
- * Iterate over event property names
- * @return
- */
- Iterator<String> getPropertyNames();
+ /**
+ * Iterate over event property names
+ *
+ * @return
+ */
+ Iterator<String> getPropertyNames();
- /**
- * Access the underlying implementation
- * @return
- */
- T getUnderlying();
+ /**
+ * Access the underlying implementation
+ *
+ * @return
+ */
+ T getUnderlying();
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessor.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessor.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessor.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -27,89 +27,97 @@
* An event processor glues together {@link org.jboss.sam.StreamInput} and {@link org.jboss.sam.StreamOutput}
* and provides a way to register {@link org.jboss.sam.ProcessingStatement}'s,
* both bound (event forwarding) and unbound (event aggregation and filtering).
- * <p>
+ * <p/>
* Instances are created through {@link org.jboss.sam.EventProcessorFactory}
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface EventProcessor<T> extends SAMRuntimeAware
{
- /**
- * Add input to the runtime
- * @param streamInput
- */
- void addInput(StreamInput streamInput);
+ /**
+ * Add input to the runtime
+ *
+ * @param streamInput
+ */
+ void addInput(StreamInput streamInput);
- /**
- * Remove input from the runtime
- * @param streamName
- */
- void removeInput(String streamName);
+ /**
+ * Remove input from the runtime
+ *
+ * @param streamName
+ */
+ void removeInput(String streamName);
- /**
- * Add output to the runtime
- * @param streamOutput
- */
- void addOutput(StreamOutput streamOutput);
+ /**
+ * Add output to the runtime
+ *
+ * @param streamOutput
+ */
+ void addOutput(StreamOutput streamOutput);
- /**
- * Remove output from the runtime
- * @param streamName
- */
- void removeOutput(String streamName);
+ /**
+ * Remove output from the runtime
+ *
+ * @param streamName
+ */
+ void removeOutput(String streamName);
- /**
- * Iterate over input adapter names
- * @return
- */
- Iterator<String> getStreamInputNames();
+ /**
+ * Iterate over input adapter names
+ *
+ * @return
+ */
+ Iterator<String> getStreamInputNames();
- /**
- * Iterate over output adapter names
- * @return
- */
- Iterator<String> getStreamOutputNames();
+ /**
+ * Iterate over output adapter names
+ *
+ * @return
+ */
+ Iterator<String> getStreamOutputNames();
- /**
- * Creates a statement
- *
- * @param statementName
- * @param epl
- * @return
- */
- ProcessingStatement registerStatement(String statementName, String epl);
+ /**
+ * Creates a statement
+ *
+ * @param statementName
+ * @param epl
+ * @return
+ */
+ ProcessingStatement registerStatement(String statementName, String epl);
- /**
- * Creates a statement and binds it to an output adapter.
- *
- * @param streamOutputName
- * @param statementName
- * @param epl
- * @return
- */
- ProcessingStatement registerBoundStatement(String streamOutputName, String statementName, String epl);
+ /**
+ * Creates a statement and binds it to an output adapter.
+ *
+ * @param streamOutputName
+ * @param statementName
+ * @param epl
+ * @return
+ */
+ ProcessingStatement registerBoundStatement(String streamOutputName, String statementName, String epl);
- /**
- * Cleanup a statement and remove it
- * @param statementName
- */
- void clearStatement(String statementName);
+ /**
+ * Cleanup a statement and remove it
+ *
+ * @param statementName
+ */
+ void clearStatement(String statementName);
- /**
- * Cleanup all statements and remove them
- */
- void clearAllStatements();
+ /**
+ * Cleanup all statements and remove them
+ */
+ void clearAllStatements();
- /**
- * Iterate over statement names
- * @return
- */
- Iterator<String> getStatementNames();
+ /**
+ * Iterate over statement names
+ *
+ * @return
+ */
+ Iterator<String> getStatementNames();
- String getName();
+ String getName();
- void setName(String name);
+ void setName(String name);
- T getUnderlying();
+ T getUnderlying();
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessorFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessorFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/EventProcessorFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -28,23 +28,23 @@
*/
public abstract class EventProcessorFactory
{
- protected EventProcessorFactory()
- {
- }
+ protected EventProcessorFactory()
+ {
+ }
- public static EventProcessorFactory newInstance()
- {
- return new DefaultEventProcessorFactory();
- }
+ public static EventProcessorFactory newInstance()
+ {
+ return new DefaultEventProcessorFactory();
+ }
- public abstract EventProcessor createProcessor();
+ public abstract EventProcessor createProcessor();
- static class DefaultEventProcessorFactory extends EventProcessorFactory
- {
+ static class DefaultEventProcessorFactory extends EventProcessorFactory
+ {
- public EventProcessor createProcessor()
- {
- return new DroolsEventProcessorImpl();
- }
- }
+ public EventProcessor createProcessor()
+ {
+ return new DroolsEventProcessorImpl();
+ }
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/ProcessingStatement.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/ProcessingStatement.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/ProcessingStatement.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -26,32 +26,36 @@
* Statements are associated with a {@link org.jboss.sam.EventProcessor}
* and can be bound to a {@link org.jboss.sam.StreamOutput} to forward events,
* or used unbound to aggregate and filter events.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface ProcessingStatement<T>
{
- /**
- * Statements are managed by name
- * @return
- */
- String getName();
+ /**
+ * Statements are managed by name
+ *
+ * @return
+ */
+ String getName();
- /**
- * Get the EPL expression this statement was created from
- * @return
- */
- String getExpression();
-
- /**
- * Check wether the statement is bound to a {@link org.jboss.sam.StreamOutput}
- * @return
- */
- boolean isBound();
+ /**
+ * Get the EPL expression this statement was created from
+ *
+ * @return
+ */
+ String getExpression();
- /**
- * Access the underlying implementation
- * @return
- */
- T getUnderlying();
+ /**
+ * Check wether the statement is bound to a {@link org.jboss.sam.StreamOutput}
+ *
+ * @return
+ */
+ boolean isBound();
+
+ /**
+ * Access the underlying implementation
+ *
+ * @return
+ */
+ T getUnderlying();
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntime.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntime.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntime.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,20 +21,23 @@
*/
package org.jboss.sam;
+import org.jboss.sam.config.Configurator;
import org.jboss.sam.datasource.DataSourceManager;
-import org.jboss.sam.config.Configurator;
+import java.util.Properties;
+
/**
* Glues together SAM building blocks.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface SAMRuntime
{
- void applyConfiguration(Configurator cfg);
+ void applyConfiguration(Configurator cfg);
- DataSourceManager getDataSourceManager();
+ DataSourceManager getDataSourceManager();
- EventProcessor getEventProcessor();
+ EventProcessor getEventProcessor();
+
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeAware.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeAware.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeAware.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -22,12 +22,12 @@
package org.jboss.sam;
/**
- * Marks SAM components that need to interact with the runtime itself.
- *
+ * Marks SAM components that need to interact with the runtime itself.
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface SAMRuntimeAware
{
- void setRuntime(SAMRuntime runtime);
+ void setRuntime(SAMRuntime runtime);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/SAMRuntimeFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -29,10 +29,10 @@
*/
public abstract class SAMRuntimeFactory
{
- public abstract SAMRuntime createRuntime(Configurator configurator);
+ public abstract SAMRuntime createRuntime(Configurator configurator);
- public static SAMRuntimeFactory newInstance()
- {
- return new DefaultRuntimeFactory();
- }
+ public static SAMRuntimeFactory newInstance()
+ {
+ return new DefaultRuntimeFactory();
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInput.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInput.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInput.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -25,33 +25,35 @@
* Stream inputs are registered with {@link org.jboss.sam.EventProcessor}'s
* and notify registered {@link org.jboss.sam.StreamInputCallback}'s when new events arrive.
* Typically the CEP runtime itself act's as such a listener in order to finished events.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface StreamInput<T>
{
- <T extends StreamInput> T start();
+ <T extends StreamInput> T start();
- <T extends StreamInput> T stop();
+ <T extends StreamInput> T stop();
- boolean isStarted();
+ boolean isStarted();
- /**
- * Register a callback
- * @param streamInputCallback an event processing instance
- */
- void registerCallback(StreamInputCallback streamInputCallback);
+ /**
+ * Register a callback
+ *
+ * @param streamInputCallback an event processing instance
+ */
+ void registerCallback(StreamInputCallback streamInputCallback);
- /**
- * Remove all registered callbacks
- */
- void clearCallbacks();
+ /**
+ * Remove all registered callbacks
+ */
+ void clearCallbacks();
- /**
- * Stream input name
- * @return
- */
- String getStreamName();
+ /**
+ * Stream input name
+ *
+ * @return
+ */
+ String getStreamName();
- void setStreamName(String name);
+ void setStreamName(String name);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInputCallback.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInputCallback.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamInputCallback.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -23,10 +23,10 @@
/**
* Registered with a {@link StreamInput} and will be notified when new events arrive.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface StreamInputCallback
{
- void onEvent(Object args);
+ void onEvent(Object args);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamOutput.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamOutput.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/StreamOutput.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -25,28 +25,30 @@
* Stream outputs are used to forward events. Typically the last step
* of an event processing chain leads to an action which receive events through
* the <code>write(...)</code> method.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public interface StreamOutput<T>
{
- <T extends StreamOutput> T start();
+ <T extends StreamOutput> T start();
- <T extends StreamOutput> T stop();
+ <T extends StreamOutput> T stop();
- boolean isStarted();
+ boolean isStarted();
- /**
- * Receive forwarded events
- * @param args an event adapter
- */
- void write(EventMessage[] args);
+ /**
+ * Receive forwarded events
+ *
+ * @param args an event adapter
+ */
+ void write(EventMessage[] args);
- /**
- * Stream output name
- * @return
- */
- String getStreamName();
+ /**
+ * Stream output name
+ *
+ * @return
+ */
+ String getStreamName();
- void setStreamName(String name);
+ void setStreamName(String name);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -35,89 +35,94 @@
/**
* Marshall/Unmarshall processing node definitions.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class ConfigFactory
{
- private ConfigFactory()
- {
- }
+ private ConfigFactory()
+ {
+ }
- public static ConfigFactory newInstance()
- {
- return new ConfigFactory();
- }
+ public static ConfigFactory newInstance()
+ {
+ return new ConfigFactory();
+ }
- public ConfigurationDef unmarshall(URL configFile)
- {
- try
- {
- return unmarshall(configFile.openStream());
-
- } catch (IOException e)
- {
- throw new RuntimeException("Failed to unmarshall " + configFile , e);
- }
- }
+ public ConfigurationDef unmarshall(URL configFile)
+ {
+ try
+ {
+ return unmarshall(configFile.openStream());
- public ConfigurationDef unmarshall(InputStream inputStream)
- {
- ConfigurationDef pnd = null;
-
- try
- {
- JAXBContext jaxb = JAXBContext.newInstance(ConfigurationDef.class);
- Unmarshaller unmarshaller = jaxb.createUnmarshaller();
- pnd = (ConfigurationDef) unmarshaller.unmarshal(inputStream);
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException("Failed to unmarshall " + configFile, e);
+ }
+ }
- } catch (Exception e)
- {
- throw new RuntimeException("Failed to unmarshall configuration" , e);
- }
- finally
- {
- if(inputStream!=null)
- try
- {
- inputStream.close();
- } catch (IOException e)
- {
- //
- }
- }
+ public ConfigurationDef unmarshall(InputStream inputStream)
+ {
+ ConfigurationDef pnd = null;
- return pnd;
+ try
+ {
+ JAXBContext jaxb = JAXBContext.newInstance(ConfigurationDef.class);
+ Unmarshaller unmarshaller = jaxb.createUnmarshaller();
+ pnd = (ConfigurationDef) unmarshaller.unmarshal(inputStream);
- }
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to unmarshall configuration", e);
+ }
+ finally
+ {
+ if (inputStream != null)
+ try
+ {
+ inputStream.close();
+ }
+ catch (IOException e)
+ {
+ //
+ }
+ }
- public void marshall(ConfigurationDef pnd, OutputStream out)
- {
- try
- {
- JAXBContext jaxb = JAXBContext.newInstance(ConfigurationDef.class);
- Marshaller marshaller = jaxb.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
- // encoding needs to be different to UTF-8, otherwise the custom encode will not be used
- marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
- marshaller.setProperty( CharacterEscapeHandler.class.getName(), new NoCharacterEscapeHandler());
- marshaller.marshal(pnd, out);
- } catch (JAXBException e)
- {
- throw new RuntimeException("Failed to marshall " + pnd, e);
- }
- finally
- {
- if(out!=null)
- try
- {
- out.close();
- } catch (IOException e)
- {
- //
- }
- }
- }
+ return pnd;
+ }
+
+ public void marshall(ConfigurationDef pnd, OutputStream out)
+ {
+ try
+ {
+ JAXBContext jaxb = JAXBContext.newInstance(ConfigurationDef.class);
+ Marshaller marshaller = jaxb.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+ // encoding needs to be different to UTF-8, otherwise the custom encode will not be used
+ marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
+ marshaller.setProperty(CharacterEscapeHandler.class.getName(), new NoCharacterEscapeHandler());
+ marshaller.marshal(pnd, out);
+ }
+ catch (JAXBException e)
+ {
+ throw new RuntimeException("Failed to marshall " + pnd, e);
+ }
+ finally
+ {
+ if (out != null)
+ try
+ {
+ out.close();
+ }
+ catch (IOException e)
+ {
+ //
+ }
+ }
+ }
+
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigurationDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigurationDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/ConfigurationDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -23,125 +23,125 @@
import javax.xml.bind.annotation.*;
import java.net.URI;
+import java.util.ArrayList;
import java.util.List;
-import java.util.ArrayList;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
@XmlRootElement(name = "processingNode", namespace = "http://org.jboss.sam/08/2008/")
@XmlType(
- name = "processingNodeType",
- namespace = "http://org.jboss.sam/08/2008/",
- propOrder = {
- "props", "databases", "inputs", "outputs", "statements"
- }
+ name = "processingNodeType",
+ namespace = "http://org.jboss.sam/08/2008/",
+ propOrder = {
+ "props", "databases", "inputs", "outputs", "statements"
+ }
)
public class ConfigurationDef
{
- private String name;
- private URI domain;
+ private String name;
+ private URI domain;
- private List<StatementDef> statements = new ArrayList<StatementDef>();
+ private List<StatementDef> statements = new ArrayList<StatementDef>();
- private List<StreamInputDef> inputs = new ArrayList<StreamInputDef>();
+ private List<StreamInputDef> inputs = new ArrayList<StreamInputDef>();
- private List<StreamOutputDef> outputs = new ArrayList<StreamOutputDef>();
+ private List<StreamOutputDef> outputs = new ArrayList<StreamOutputDef>();
- private List<PropertyDef> props = new ArrayList<PropertyDef>();
+ private List<PropertyDef> props = new ArrayList<PropertyDef>();
- private List<DatabaseRefDef> databases = new ArrayList<DatabaseRefDef>();
+ private List<DatabaseRefDef> databases = new ArrayList<DatabaseRefDef>();
- public ConfigurationDef()
- {
- }
+ public ConfigurationDef()
+ {
+ }
- public ConfigurationDef(String name, URI domain)
- {
- this.name = name;
- this.domain = domain;
- }
+ public ConfigurationDef(String name, URI domain)
+ {
+ this.name = name;
+ this.domain = domain;
+ }
- @XmlAttribute
- public String getName()
- {
- return name;
- }
+ @XmlAttribute
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute
- public URI getDomain()
- {
- return domain;
- }
+ @XmlAttribute
+ public URI getDomain()
+ {
+ return domain;
+ }
- public void setDomain(URI domain)
- {
- this.domain = domain;
- }
+ public void setDomain(URI domain)
+ {
+ this.domain = domain;
+ }
- @XmlElementWrapper(name = "statements")
- @XmlElement(name="statement")
- public List<StatementDef> getStatements()
- {
- return statements;
- }
+ @XmlElementWrapper(name = "statements")
+ @XmlElement(name = "statement")
+ public List<StatementDef> getStatements()
+ {
+ return statements;
+ }
- public void setStatements(List<StatementDef> statements)
- {
- this.statements = statements;
- }
+ public void setStatements(List<StatementDef> statements)
+ {
+ this.statements = statements;
+ }
- @XmlElementWrapper(name = "inputs")
- @XmlElement(name="input")
- public List<StreamInputDef> getInputs()
- {
- return inputs;
- }
+ @XmlElementWrapper(name = "inputs")
+ @XmlElement(name = "input")
+ public List<StreamInputDef> getInputs()
+ {
+ return inputs;
+ }
- public void setInputs(List<StreamInputDef> inputs)
- {
- this.inputs = inputs;
- }
+ public void setInputs(List<StreamInputDef> inputs)
+ {
+ this.inputs = inputs;
+ }
- @XmlElementWrapper(name = "outputs")
- @XmlElement(name="output")
- public List<StreamOutputDef> getOutputs()
- {
- return outputs;
- }
+ @XmlElementWrapper(name = "outputs")
+ @XmlElement(name = "output")
+ public List<StreamOutputDef> getOutputs()
+ {
+ return outputs;
+ }
- public void setOutputs(List<StreamOutputDef> outputs)
- {
- this.outputs = outputs;
- }
+ public void setOutputs(List<StreamOutputDef> outputs)
+ {
+ this.outputs = outputs;
+ }
- @XmlElementWrapper(name = "runtime-configuration")
- @XmlElement(name="property")
- public List<PropertyDef> getProps()
- {
- return props;
- }
+ @XmlElementWrapper(name = "runtime-configuration")
+ @XmlElement(name = "property")
+ public List<PropertyDef> getProps()
+ {
+ return props;
+ }
- public void setProps(List<PropertyDef> props)
- {
- this.props = props;
- }
+ public void setProps(List<PropertyDef> props)
+ {
+ this.props = props;
+ }
- @XmlElementWrapper(name = "database-references")
- @XmlElement(name="database-reference")
- public List<DatabaseRefDef> getDatabases()
- {
- return databases;
- }
+ @XmlElementWrapper(name = "database-references")
+ @XmlElement(name = "database-reference")
+ public List<DatabaseRefDef> getDatabases()
+ {
+ return databases;
+ }
- public void setDatabases(List<DatabaseRefDef> databases)
- {
- this.databases = databases;
- }
+ public void setDatabases(List<DatabaseRefDef> databases)
+ {
+ this.databases = databases;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/Configurator.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/Configurator.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/Configurator.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -24,93 +24,103 @@
import org.jboss.sam.EventProcessor;
import org.jboss.sam.StreamInput;
import org.jboss.sam.StreamOutput;
+import org.jboss.sam.datasource.DataSourceFactory;
import org.jboss.sam.datasource.DataSourceManager;
-import org.jboss.sam.datasource.DataSourceFactory;
import javax.sql.DataSource;
+import java.util.Properties;
/**
* An intermediary to configure {@link org.jboss.sam.SAMRuntime}'s
* from configuration descriptors. <br>
* Allows for interception/modification of configuration values before the
* actuall configuration is applied to runtime components.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class Configurator
{
- private ClassLoader loader = Thread.currentThread().getContextClassLoader();
- private ConfigurationDef nodeDef;
-
- public Configurator(ConfigurationDef nodeDef, ClassLoader loader)
- {
- this.nodeDef = nodeDef;
- this.loader = loader;
- }
+ private ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ private ConfigurationDef configTree;
- public Configurator(ConfigurationDef nodeDef)
- {
- this.nodeDef = nodeDef;
- }
+ public Configurator(ConfigurationDef configTree, ClassLoader loader)
+ {
+ this.configTree = configTree;
+ this.loader = loader;
+ }
- public void configure(EventProcessor processor)
- {
- processor.setName( nodeDef.getName() );
+ public Configurator(ConfigurationDef configTree)
+ {
+ this.configTree = configTree;
+ }
- for(StreamInputDef def : nodeDef.getInputs())
- {
- StreamInput input = (StreamInput)newInstance(def.getClazz());
- input.setStreamName(def.getName());
- processor.addInput(input);
- }
+ public void configure(EventProcessor processor)
+ {
+ processor.setName(configTree.getName());
- for(StreamOutputDef def : nodeDef.getOutputs())
- {
- StreamOutput output = (StreamOutput)newInstance(def.getClazz());
- output.setStreamName(def.getName());
- processor.addOutput(output);
- }
+ for (StreamInputDef def : configTree.getInputs())
+ {
+ StreamInput input = (StreamInput) newInstance(def.getClazz());
+ input.setStreamName(def.getName());
+ processor.addInput(input);
+ }
- for(StatementDef def : nodeDef.getStatements())
- {
- if(def.getBoundTo()!=null)
- {
- processor.registerBoundStatement(
- def.getBoundTo(), def.getName(), def.getEpl().getExpression()
- );
- }
- else
- {
- processor.registerStatement(
- def.getName(), def.getEpl().getExpression()
- );
- }
- }
- }
+ for (StreamOutputDef def : configTree.getOutputs())
+ {
+ StreamOutput output = (StreamOutput) newInstance(def.getClazz());
+ output.setStreamName(def.getName());
+ processor.addOutput(output);
+ }
- public void configure(DataSourceManager manager)
- {
- DataSourceFactory dsFactory = DataSourceFactory.newInstance();
-
- for(DatabaseRefDef def : this.nodeDef.getDatabases())
+ for (StatementDef def : configTree.getStatements())
+ {
+ if (def.getBoundTo() != null)
{
- DataSource ds = dsFactory.createDataSource(def.getDatasource());
- manager.addDataSource(def.getName(), ds);
+ processor.registerBoundStatement(
+ def.getBoundTo(), def.getName(), def.getEpl().getExpression()
+ );
}
- }
-
- private Object newInstance(String clazz)
- {
- Object obj = null;
- try
+ else
{
- obj = loader.loadClass( clazz ).newInstance();
+ processor.registerStatement(
+ def.getName(), def.getEpl().getExpression()
+ );
}
- catch (Exception e)
- {
- throw new RuntimeException("Failed to load class: " + clazz, e);
- }
+ }
- return obj;
- }
+ Properties properties = new Properties();
+ for(PropertyDef prop : configTree.getProps())
+ {
+ properties.put(prop.getName(), prop.getValue());
+ }
+
+
+
+ }
+
+ public void configure(DataSourceManager manager)
+ {
+ DataSourceFactory dsFactory = DataSourceFactory.newInstance();
+
+ for (DatabaseRefDef def : this.configTree.getDatabases())
+ {
+ DataSource ds = dsFactory.createDataSource(def.getDatasource());
+ manager.addDataSource(def.getName(), ds);
+ }
+ }
+
+ private Object newInstance(String clazz)
+ {
+ Object obj = null;
+ try
+ {
+ obj = loader.loadClass(clazz).newInstance();
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to load class: " + clazz, e);
+ }
+
+ return obj;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DataSourceDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DataSourceDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DataSourceDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,11 +21,11 @@
*/
package org.jboss.sam.config;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
+import java.util.ArrayList;
import java.util.List;
-import java.util.ArrayList;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
@@ -33,65 +33,65 @@
@XmlType(name = "dataSourceDefType")
public class DataSourceDef
{
- private String name;
- private String driver;
- private String url;
+ private String name;
+ private String driver;
+ private String url;
- private List<PropertyDef> connectionArgs = new ArrayList<PropertyDef>();
+ private List<PropertyDef> connectionArgs = new ArrayList<PropertyDef>();
- public DataSourceDef()
- {
- }
+ public DataSourceDef()
+ {
+ }
- public DataSourceDef(String name, String driver, String url)
- {
- this.name = name;
- this.driver = driver;
- this.url = url;
- }
+ public DataSourceDef(String name, String driver, String url)
+ {
+ this.name = name;
+ this.driver = driver;
+ this.url = url;
+ }
- @XmlAttribute
- public String getUrl()
- {
- return url;
- }
+ @XmlAttribute
+ public String getUrl()
+ {
+ return url;
+ }
- public void setUrl(String url)
- {
- this.url = url;
- }
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
- @XmlAttribute
- public String getName()
- {
- return name;
- }
+ @XmlAttribute
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute
- public String getDriver()
- {
- return driver;
- }
+ @XmlAttribute
+ public String getDriver()
+ {
+ return driver;
+ }
- public void setDriver(String driver)
- {
- this.driver = driver;
- }
-
- @XmlElement(name="connection-arg")
- public List<PropertyDef> getConnectionArgs()
- {
- return connectionArgs;
- }
+ public void setDriver(String driver)
+ {
+ this.driver = driver;
+ }
- public void setConnectionArgs(List<PropertyDef> connectionArgs)
- {
- this.connectionArgs = connectionArgs;
- }
+ @XmlElement(name = "connection-arg")
+ public List<PropertyDef> getConnectionArgs()
+ {
+ return connectionArgs;
+ }
+
+ public void setConnectionArgs(List<PropertyDef> connectionArgs)
+ {
+ this.connectionArgs = connectionArgs;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DatabaseRefDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DatabaseRefDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/DatabaseRefDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -27,39 +27,39 @@
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
- at XmlType(name="databaseRefDefType")
+ at XmlType(name = "databaseRefDefType")
public class DatabaseRefDef
{
- private String name;
- private DataSourceDef dataSource;
+ private String name;
+ private DataSourceDef dataSource;
- public DatabaseRefDef()
- {
- }
+ public DatabaseRefDef()
+ {
+ }
- public DatabaseRefDef(String name)
- {
- this.name = name;
- }
+ public DatabaseRefDef(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute
- public String getName()
- {
- return name;
- }
+ @XmlAttribute
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- public DataSourceDef getDatasource()
- {
- return dataSource;
- }
+ public DataSourceDef getDatasource()
+ {
+ return dataSource;
+ }
- public void setDatasource(DataSourceDef dataSource)
- {
- this.dataSource = dataSource;
- }
+ public void setDatasource(DataSourceDef dataSource)
+ {
+ this.dataSource = dataSource;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/EPLDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/EPLDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/EPLDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -23,8 +23,8 @@
import org.jboss.sam.config.internal.EPLValueAdapter;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -34,38 +34,38 @@
@XmlType(name = "eplType")
public class EPLDef
{
- private String lang;
- private String expression;
+ private String lang;
+ private String expression;
- public EPLDef()
- {
- }
+ public EPLDef()
+ {
+ }
- public EPLDef(String lang)
- {
- this.lang = lang;
- }
+ public EPLDef(String lang)
+ {
+ this.lang = lang;
+ }
- @XmlAttribute(required = true)
- public String getLang()
- {
- return lang;
- }
+ @XmlAttribute(required = true)
+ public String getLang()
+ {
+ return lang;
+ }
- public void setLang(String lang)
- {
- this.lang = lang;
- }
+ public void setLang(String lang)
+ {
+ this.lang = lang;
+ }
- @XmlValue
- @XmlJavaTypeAdapter(EPLValueAdapter.class)
- public String getExpression()
- {
- return expression;
- }
+ @XmlValue
+ @XmlJavaTypeAdapter(EPLValueAdapter.class)
+ public String getExpression()
+ {
+ return expression;
+ }
- public void setExpression(String expression)
- {
- this.expression = expression;
- }
+ public void setExpression(String expression)
+ {
+ this.expression = expression;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/PropertyDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/PropertyDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/PropertyDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -28,44 +28,45 @@
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
@XmlType(
- name = "propertyDefType",
- propOrder = {"name", "value"}
+ name = "propertyDefType",
+ propOrder = {"name", "value"}
)
public class PropertyDef
{
- private String name;
- private String value;
+ private String name;
+ private String value;
- public PropertyDef()
- {
- }
+ public PropertyDef()
+ {
+ }
- public PropertyDef(String name, String value)
- {
- this.name = name;
- this.value = value;
- }
+ public PropertyDef(String name, String value)
+ {
+ this.name = name;
+ this.value = value;
+ }
- @XmlAttribute
- public String getName()
- {
- return name;
- }
+ @XmlAttribute
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute
- public String getValue()
- {
- return value;
- }
+ @XmlAttribute
+ public String getValue()
+ {
+ return value;
+ }
- public void setValue(String value)
- {
- this.value = value;
- }
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StatementDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StatementDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StatementDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -31,54 +31,54 @@
public class StatementDef
{
- private String name;
- private EPLDef epl;
- private String boundTo;
+ private String name;
+ private EPLDef epl;
+ private String boundTo;
- public StatementDef()
- {
- }
+ public StatementDef()
+ {
+ }
- public StatementDef(String name)
- {
- this.name = name;
- }
+ public StatementDef(String name)
+ {
+ this.name = name;
+ }
- public StatementDef(String name, String boundTo)
- {
- this.name = name;
- this.boundTo = boundTo;
- }
+ public StatementDef(String name, String boundTo)
+ {
+ this.name = name;
+ this.boundTo = boundTo;
+ }
- @XmlAttribute(required = true)
- public String getName()
- {
- return name;
- }
+ @XmlAttribute(required = true)
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- public EPLDef getEpl()
- {
- return epl;
- }
+ public EPLDef getEpl()
+ {
+ return epl;
+ }
- public void setEpl(EPLDef epl)
- {
- this.epl = epl;
- }
+ public void setEpl(EPLDef epl)
+ {
+ this.epl = epl;
+ }
- @XmlAttribute(required = false)
- public String getBoundTo()
- {
- return boundTo;
- }
+ @XmlAttribute(required = false)
+ public String getBoundTo()
+ {
+ return boundTo;
+ }
- public void setBoundTo(String boundTo)
- {
- this.boundTo = boundTo;
- }
+ public void setBoundTo(String boundTo)
+ {
+ this.boundTo = boundTo;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamInputDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamInputDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamInputDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,8 +21,8 @@
*/
package org.jboss.sam.config;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlAttribute;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
@@ -30,38 +30,38 @@
@XmlType(name = "inputDefType")
public class StreamInputDef
{
- private String name;
- private String clazz;
+ private String name;
+ private String clazz;
- public StreamInputDef()
- {
- }
+ public StreamInputDef()
+ {
+ }
- public StreamInputDef(String name, String clazz)
- {
- this.name = name;
- this.clazz = clazz;
- }
+ public StreamInputDef(String name, String clazz)
+ {
+ this.name = name;
+ this.clazz = clazz;
+ }
- @XmlAttribute(required = true)
- public String getName()
- {
- return name;
- }
+ @XmlAttribute(required = true)
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute(required = true)
- public String getClazz()
- {
- return clazz;
- }
+ @XmlAttribute(required = true)
+ public String getClazz()
+ {
+ return clazz;
+ }
- public void setClazz(String clazz)
- {
- this.clazz = clazz;
- }
+ public void setClazz(String clazz)
+ {
+ this.clazz = clazz;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamOutputDef.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamOutputDef.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/StreamOutputDef.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,8 +21,8 @@
*/
package org.jboss.sam.config;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlAttribute;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
@@ -30,38 +30,38 @@
@XmlType(name = "outputDefType")
public class StreamOutputDef
{
- private String name;
- private String clazz;
+ private String name;
+ private String clazz;
- public StreamOutputDef()
- {
- }
+ public StreamOutputDef()
+ {
+ }
- public StreamOutputDef(String name, String clazz)
- {
- this.name = name;
- this.clazz = clazz;
- }
+ public StreamOutputDef(String name, String clazz)
+ {
+ this.name = name;
+ this.clazz = clazz;
+ }
- @XmlAttribute(required = true)
- public String getName()
- {
- return name;
- }
+ @XmlAttribute(required = true)
+ public String getName()
+ {
+ return name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- @XmlAttribute(required = true)
- public String getClazz()
- {
- return clazz;
- }
+ @XmlAttribute(required = true)
+ public String getClazz()
+ {
+ return clazz;
+ }
- public void setClazz(String clazz)
- {
- this.clazz = clazz;
- }
+ public void setClazz(String clazz)
+ {
+ this.clazz = clazz;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/EPLValueAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/EPLValueAdapter.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/EPLValueAdapter.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -29,30 +29,30 @@
public class EPLValueAdapter extends XmlAdapter<String, String>
{
- public String unmarshal(String expr) throws Exception
- {
- String result = expr;
+ public String unmarshal(String expr) throws Exception
+ {
+ String result = expr;
- if(expr.indexOf("<![CDATA[") !=-1) // seems that JAXB strips it by default
- {
- result = expr.substring(
- expr.indexOf("<![CDATA[")+1, expr.indexOf("]]")
- );
- }
+ if (expr.indexOf("<![CDATA[") != -1) // seems that JAXB strips it by default
+ {
+ result = expr.substring(
+ expr.indexOf("<![CDATA[") + 1, expr.indexOf("]]")
+ );
+ }
- return result;
- }
+ return result;
+ }
- public String marshal(String expr) throws Exception
- {
- if(expr.indexOf("<![CDATA[") !=-1)
- throw new IllegalArgumentException("EPLDef.expression may not contain CDATA section");
+ public String marshal(String expr) throws Exception
+ {
+ if (expr.indexOf("<![CDATA[") != -1)
+ throw new IllegalArgumentException("EPLDef.expression may not contain CDATA section");
- StringBuffer sb = new StringBuffer();
- sb.append("<![CDATA[").append("\n");
- sb.append(expr).append("\n");
- sb.append("]]>");
+ StringBuffer sb = new StringBuffer();
+ sb.append("<![CDATA[").append("\n");
+ sb.append(expr).append("\n");
+ sb.append("]]>");
- return sb.toString();
- }
+ return sb.toString();
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/ExpressionConverter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/ExpressionConverter.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/ExpressionConverter.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -25,44 +25,47 @@
public class ExpressionConverter
{
- /**
- * Convert an expression from an XML file into an internal representation. JAXB will
- * probably have already stripped off the CDATA encapsulation. As a result, this method
- * simply invokes the JAXB type conversion for strings but does not take any other action.
- *
- * @param text an XML-compliant expression
- * @return a pure string expression
- */
- public static String parse(String text) {
- String result = DatatypeConverter.parseString(text);
- return result;
- }
+ /**
+ * Convert an expression from an XML file into an internal representation. JAXB will
+ * probably have already stripped off the CDATA encapsulation. As a result, this method
+ * simply invokes the JAXB type conversion for strings but does not take any other action.
+ *
+ * @param text an XML-compliant expression
+ * @return a pure string expression
+ */
+ public static String parse(String text)
+ {
+ String result = DatatypeConverter.parseString(text);
+ return result;
+ }
- /**
- * Convert an expression from its internal representation to an XML-compliant version.
- * This method will simply surround the string in a CDATA block and return the result.
- *
- * @param text a pure string expression
- * @return the expression encapsulated within a CDATA block
- */
- public static String print(String text) {
- StringBuffer sb = new StringBuffer(text.length() + 20); //should add the length of the CDATA tags + 8 EOLs to be safe
- sb.append("<![CDATA[");
- sb.append(wrapLines(text, 80));
- sb.append("]]>");
- return DatatypeConverter.printString(sb.toString());
- }
+ /**
+ * Convert an expression from its internal representation to an XML-compliant version.
+ * This method will simply surround the string in a CDATA block and return the result.
+ *
+ * @param text a pure string expression
+ * @return the expression encapsulated within a CDATA block
+ */
+ public static String print(String text)
+ {
+ StringBuffer sb = new StringBuffer(text.length() + 20); //should add the length of the CDATA tags + 8 EOLs to be safe
+ sb.append("<![CDATA[");
+ sb.append(wrapLines(text, 80));
+ sb.append("]]>");
+ return DatatypeConverter.printString(sb.toString());
+ }
- /**
- * Provides line-wrapping for long text strings. EOL indicators are inserted at
- * word boundaries once a specified line-length has been exceeded.
- *
- * @param text the string to be wrapped
- * @param lineLength the maximum number of characters that should be included in a single line
- * @return the new string with appropriate EOL insertions
- */
- private static String wrapLines(String text, int lineLength) {
- //wrap logic, watchout for quoted strings!!!!
- return text;
- }
+ /**
+ * Provides line-wrapping for long text strings. EOL indicators are inserted at
+ * word boundaries once a specified line-length has been exceeded.
+ *
+ * @param text the string to be wrapped
+ * @param lineLength the maximum number of characters that should be included in a single line
+ * @return the new string with appropriate EOL insertions
+ */
+ private static String wrapLines(String text, int lineLength)
+ {
+ //wrap logic, watchout for quoted strings!!!!
+ return text;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/NoCharacterEscapeHandler.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/NoCharacterEscapeHandler.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/config/internal/NoCharacterEscapeHandler.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -28,44 +28,58 @@
public class NoCharacterEscapeHandler implements CharacterEscapeHandler
{
- /**
- * Escape characters inside the buffer and send the output to the writer.
- *
- * @param buf buffer of characters to be encoded
- * @param start the index position of the first character that should be encoded
- * @param len the number of characters that should be encoded
- * @param isAttValue true, if the buffer represents an XML tag attribute
- * @param out the output stream
- *
- * @throws java.io.IOException if the writing process fails
- */
- public void escape(char[] buf, int start, int len, boolean isAttValue, Writer out) throws IOException
- {
- for (int i = start; i < start + len; i++) {
- char ch = buf[i];
- if (isAttValue) {
- // isAttValue is set to true when the marshaller is processing
- // attribute values. Inside attribute values, there are more
- // things you need to escape, usually.
- if (ch == '&') {
- out.write("&");
- } else if (ch == '>') {
- out.write(">");
- } else if (ch == '<') {
- out.write("");
- } else if (ch == '\'') {
- out.write("'");
- } else if (ch > 0x7F) {
- // escape everything above ASCII to XXXX;
- out.write("&#x");
- out.write(Integer.toHexString(ch));
- out.write(";");
- } else {
- out.write(ch);
- }
- } else {
- out.write(ch);
- }
- }
- }
+ /**
+ * Escape characters inside the buffer and send the output to the writer.
+ *
+ * @param buf buffer of characters to be encoded
+ * @param start the index position of the first character that should be encoded
+ * @param len the number of characters that should be encoded
+ * @param isAttValue true, if the buffer represents an XML tag attribute
+ * @param out the output stream
+ * @throws java.io.IOException if the writing process fails
+ */
+ public void escape(char[] buf, int start, int len, boolean isAttValue, Writer out) throws IOException
+ {
+ for (int i = start; i < start + len; i++)
+ {
+ char ch = buf[i];
+ if (isAttValue)
+ {
+ // isAttValue is set to true when the marshaller is processing
+ // attribute values. Inside attribute values, there are more
+ // things you need to escape, usually.
+ if (ch == '&')
+ {
+ out.write("&");
+ }
+ else if (ch == '>')
+ {
+ out.write(">");
+ }
+ else if (ch == '<')
+ {
+ out.write("");
+ }
+ else if (ch == '\'')
+ {
+ out.write("'");
+ }
+ else if (ch > 0x7F)
+ {
+ // escape everything above ASCII to XXXX;
+ out.write("&#x");
+ out.write(Integer.toHexString(ch));
+ out.write(";");
+ }
+ else
+ {
+ out.write(ch);
+ }
+ }
+ else
+ {
+ out.write(ch);
+ }
+ }
+ }
}
\ No newline at end of file
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -30,12 +30,12 @@
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public abstract class DataSourceFactory
-{
- public static DataSourceFactory newInstance()
- {
- return new DBCPDataSourceFactory();
- }
+{
+ public static DataSourceFactory newInstance()
+ {
+ return new DBCPDataSourceFactory();
+ }
- public abstract DataSource createDataSource(DataSourceDef dsDef);
+ public abstract DataSource createDataSource(DataSourceDef dsDef);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceManager.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceManager.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/DataSourceManager.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -30,29 +30,29 @@
*/
public class DataSourceManager
{
- private Map<String, DataSource> datasources = new ConcurrentHashMap<String, DataSource>();
+ private Map<String, DataSource> datasources = new ConcurrentHashMap<String, DataSource>();
- public void addDataSource(String reference, DataSource ds)
- {
- if(datasources.containsKey(reference))
- throw new IllegalArgumentException("DataSource '" + reference + "' does already exist!");
-
- this.datasources.put(reference, ds);
- }
+ public void addDataSource(String reference, DataSource ds)
+ {
+ if (datasources.containsKey(reference))
+ throw new IllegalArgumentException("DataSource '" + reference + "' does already exist!");
- public DataSource getDataSource(String reference)
- {
- DataSource ds = datasources.get(reference);
- if(null==ds)
- throw new IllegalArgumentException("No DataSource for reference '" + reference + "'");
+ this.datasources.put(reference, ds);
+ }
- return ds;
- }
+ public DataSource getDataSource(String reference)
+ {
+ DataSource ds = datasources.get(reference);
+ if (null == ds)
+ throw new IllegalArgumentException("No DataSource for reference '" + reference + "'");
- public boolean hasDataSource(String reference)
- {
- return datasources.containsKey(reference);
- }
+ return ds;
+ }
+ public boolean hasDataSource(String reference)
+ {
+ return datasources.containsKey(reference);
+ }
+
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/internal/DBCPDataSourceFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/internal/DBCPDataSourceFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/datasource/internal/DBCPDataSourceFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,14 +21,14 @@
*/
package org.jboss.sam.datasource.internal;
-import org.jboss.sam.config.DataSourceDef;
-import org.jboss.sam.datasource.DataSourceFactory;
-import org.apache.commons.pool.ObjectPool;
-import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDataSource;
+import org.apache.commons.pool.ObjectPool;
+import org.apache.commons.pool.impl.GenericObjectPool;
+import org.jboss.sam.config.DataSourceDef;
+import org.jboss.sam.datasource.DataSourceFactory;
import javax.sql.DataSource;
@@ -38,53 +38,54 @@
public class DBCPDataSourceFactory extends DataSourceFactory
{
- public DBCPDataSourceFactory()
- {
- }
+ public DBCPDataSourceFactory()
+ {
+ }
- public DataSource createDataSource(DataSourceDef dsDef)
- {
- try {
- Class.forName(dsDef.getDriver());
- }
- catch (ClassNotFoundException e)
- {
- throw new RuntimeException("Failed to load JDBC driver: " + dsDef.getDriver(), e);
- }
+ public DataSource createDataSource(DataSourceDef dsDef)
+ {
+ try
+ {
+ Class.forName(dsDef.getDriver());
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RuntimeException("Failed to load JDBC driver: " + dsDef.getDriver(), e);
+ }
- //
- // First, we'll need a ObjectPool that serves as the
- // actual pool of connections.
- //
- // We'll use a GenericObjectPool instance, although
- // any ObjectPool implementation will suffice.
- //
- ObjectPool connectionPool = new GenericObjectPool(null);
+ //
+ // First, we'll need a ObjectPool that serves as the
+ // actual pool of connections.
+ //
+ // We'll use a GenericObjectPool instance, although
+ // any ObjectPool implementation will suffice.
+ //
+ ObjectPool connectionPool = new GenericObjectPool(null);
- //
- // Next, we'll create a ConnectionFactory that the
- // pool will use to create Connections.
- // We'll use the DriverManagerConnectionFactory,
- // using the connect string passed in the command line
- // arguments.
- //
- ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(dsDef.getUrl(),null);
+ //
+ // Next, we'll create a ConnectionFactory that the
+ // pool will use to create Connections.
+ // We'll use the DriverManagerConnectionFactory,
+ // using the connect string passed in the command line
+ // arguments.
+ //
+ ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(dsDef.getUrl(), null);
- //
- // Now we'll create the PoolableConnectionFactory, which wraps
- // the "real" Connections created by the ConnectionFactory with
- // the classes that implement the pooling functionality.
- //
- PoolableConnectionFactory poolableConnectionFactory =
- new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
+ //
+ // Now we'll create the PoolableConnectionFactory, which wraps
+ // the "real" Connections created by the ConnectionFactory with
+ // the classes that implement the pooling functionality.
+ //
+ PoolableConnectionFactory poolableConnectionFactory =
+ new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
- //
- // Finally, we create the PoolingDriver itself,
- // passing in the object pool we created.
- //
- PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
+ //
+ // Finally, we create the PoolingDriver itself,
+ // passing in the object pool we created.
+ //
+ PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
- return dataSource;
+ return dataSource;
- }
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeFactory.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeFactory.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeFactory.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,8 +21,8 @@
*/
package org.jboss.sam.internal;
+import org.jboss.sam.SAMRuntime;
import org.jboss.sam.SAMRuntimeFactory;
-import org.jboss.sam.SAMRuntime;
import org.jboss.sam.config.Configurator;
/**
@@ -30,10 +30,10 @@
*/
public class DefaultRuntimeFactory extends SAMRuntimeFactory
{
- public SAMRuntime createRuntime(Configurator configurator)
- {
- DefaultRuntimeImpl defaultRuntime = new DefaultRuntimeImpl();
- defaultRuntime.applyConfiguration(configurator);
- return defaultRuntime;
- }
+ public SAMRuntime createRuntime(Configurator configurator)
+ {
+ DefaultRuntimeImpl defaultRuntime = new DefaultRuntimeImpl();
+ defaultRuntime.applyConfiguration(configurator);
+ return defaultRuntime;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeImpl.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeImpl.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/DefaultRuntimeImpl.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,46 +21,45 @@
*/
package org.jboss.sam.internal;
-import org.jboss.sam.SAMRuntime;
import org.jboss.sam.EventProcessor;
import org.jboss.sam.EventProcessorFactory;
-import org.jboss.sam.SAMRuntimeAware;
-import org.jboss.sam.datasource.DataSourceManager;
+import org.jboss.sam.SAMRuntime;
import org.jboss.sam.config.Configurator;
+import org.jboss.sam.datasource.DataSourceManager;
/**
* Glues together SAM building blocks.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class DefaultRuntimeImpl implements SAMRuntime
{
- private EventProcessor eventProcessor;
- private DataSourceManager dataSourceManager;
+ private EventProcessor eventProcessor;
+ private DataSourceManager dataSourceManager;
- DefaultRuntimeImpl()
- {
- // create and configure a processor
- this.eventProcessor = EventProcessorFactory.newInstance().createProcessor();
- ((SAMRuntimeAware)this.eventProcessor).setRuntime(this);
+ DefaultRuntimeImpl()
+ {
+ // create and configure a processor
+ this.eventProcessor = EventProcessorFactory.newInstance().createProcessor();
+ this.eventProcessor.setRuntime(this);
- // create and configure datasources
- this.dataSourceManager = new DataSourceManager();
- }
+ // create and configure datasources
+ this.dataSourceManager = new DataSourceManager();
+ }
- public void applyConfiguration(Configurator cfg)
- {
- cfg.configure(this.eventProcessor);
- cfg.configure(this.dataSourceManager);
- }
+ public void applyConfiguration(Configurator cfg)
+ {
+ cfg.configure(this.eventProcessor);
+ cfg.configure(this.dataSourceManager);
+ }
- public DataSourceManager getDataSourceManager()
- {
- return this.dataSourceManager;
- }
+ public DataSourceManager getDataSourceManager()
+ {
+ return this.dataSourceManager;
+ }
- public EventProcessor getEventProcessor()
- {
- return this.eventProcessor;
- }
+ public EventProcessor getEventProcessor()
+ {
+ return this.eventProcessor;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/common/MapEventMessage.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/common/MapEventMessage.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/common/MapEventMessage.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -23,57 +23,57 @@
import org.jboss.sam.EventMessage;
-import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class MapEventMessage implements EventMessage<Map>
{
- private Map<String, Object> data = new HashMap<String, Object>();
+ private Map<String, Object> data = new HashMap<String, Object>();
- private long timestamp;
+ private long timestamp;
- public MapEventMessage(Map<String, Object> data)
- {
- this.data = data;
- }
+ public MapEventMessage(Map<String, Object> data)
+ {
+ this.data = data;
+ }
- public MapEventMessage()
- {
- this(System.currentTimeMillis());
- }
+ public MapEventMessage()
+ {
+ this(System.currentTimeMillis());
+ }
- public MapEventMessage(long timestamp)
- {
- this.timestamp = timestamp;
- }
+ public MapEventMessage(long timestamp)
+ {
+ this.timestamp = timestamp;
+ }
- public MapEventMessage put(String key, Object value)
- {
- data.put(key, value);
- return this;
- }
+ public MapEventMessage put(String key, Object value)
+ {
+ data.put(key, value);
+ return this;
+ }
- public Object getProperty(String name)
- {
- return data.get(name);
- }
+ public Object getProperty(String name)
+ {
+ return data.get(name);
+ }
- public Map getUnderlying()
- {
- return data;
- }
+ public Map getUnderlying()
+ {
+ return data;
+ }
- public long getTimestamp()
- {
- return this.timestamp;
- }
+ public long getTimestamp()
+ {
+ return this.timestamp;
+ }
- public Iterator<String> getPropertyNames()
- {
- return this.data.keySet().iterator();
- }
+ public Iterator<String> getPropertyNames()
+ {
+ return this.data.keySet().iterator();
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsEventProcessorImpl.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsEventProcessorImpl.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsEventProcessorImpl.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,269 +21,232 @@
*/
package org.jboss.sam.internal.drools;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.compiler.DrlParser;
-import org.drools.compiler.DroolsParserException;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.spi.GlobalResolver;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.runtime.Globals;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.jboss.sam.*;
import org.jboss.sam.datasource.DataSourceManager;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
-import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class DroolsEventProcessorImpl
- implements EventProcessor<RuleBase>, StreamInputCallback, GlobalResolver
+ implements EventProcessor<KnowledgeBase>, StreamInputCallback, Globals
{
+ private String name;
- private String name;
+ private KnowledgeBase kbase;
+ private StatefulKnowledgeSession session;
- private RuleBase ruleBase;
- private StatefulSession session;
+ private Map<String, StreamInput> streamInputs = new ConcurrentHashMap<String, StreamInput>();
+ private Map<String, StreamOutput> streamOutputs = new ConcurrentHashMap<String, StreamOutput>();
+ private Map<String, ProcessingStatement> statements = new ConcurrentHashMap<String, ProcessingStatement>();
+ private Map<String, StreamOutputAdapter> outputAdapters = new ConcurrentHashMap<String, StreamOutputAdapter>();
- private Map<String, StreamInput> streamInputs = new ConcurrentHashMap<String, StreamInput>();
- private Map<String, StreamOutput> streamOutputs = new ConcurrentHashMap<String, StreamOutput>();
- private Map<String, ProcessingStatement> statements = new ConcurrentHashMap<String, ProcessingStatement>();
+ private SAMRuntime runtime;
- private Map<String, Object> wmGlobals = new ConcurrentHashMap<String, Object>();
- private Map<String, StreamOutputAdapter> outputAdapters = new ConcurrentHashMap<String, StreamOutputAdapter>();
+ public DroolsEventProcessorImpl()
+ {
+ try
+ {
+ KnowledgeBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+ //conf.setOption( EventProcessingOption.STREAM );
+ this.kbase = KnowledgeBaseFactory.newKnowledgeBase(conf);
- private SAMRuntime runtime;
+ this.session = kbase.newStatefulKnowledgeSession();
+ this.session.getGlobals().setDelegate(this);
- public DroolsEventProcessorImpl()
- {
- try
- {
- this.ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO, null );
- this.session = ruleBase.newStatefulSession();
- this.session.setGlobalResolver(this);
- }
- catch (Exception e)
- {
- throw new RuntimeException("Failed to initialize event processor", e);
- }
- }
+ KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(session);
- public void setRuntime(SAMRuntime runtime)
- {
- this.runtime = runtime;
- }
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to initialize event processor", e);
+ }
+ }
- public Object resolveGlobal(String key)
- {
- assert runtime!=null : "Runtime not set!";
-
- Object global = null;
-
- if("SAM".equals(key))
- {
- DataSourceManager dsMgr = this.runtime.getDataSourceManager();
- global = new SAMAdapter(this.session, this.outputAdapters, dsMgr);
- }
- else
- {
- // It may be a adapter output
- global = this.outputAdapters.get(key);
+ public void setRuntime(SAMRuntime runtime)
+ {
+ this.runtime = runtime;
+ }
- // Or a general global variable
- if(null==global)
- global = wmGlobals.get(key);
- }
- return global;
- }
+ public void onEvent(Object args)
+ {
+ session.insert(args);
+ session.fireAllRules();
+ }
- public void setGlobal(String key, Object object)
- {
- this.wmGlobals.put(key, object);
- }
+ public void addInput(StreamInput streamInput)
+ {
+ streamInput.registerCallback(this);
+ this.streamInputs.put(streamInput.getStreamName(), streamInput);
+ }
- public void writeExternal(ObjectOutput out) throws IOException
- {
- throw new RuntimeException("NYI");
- }
+ public void removeInput(String streamName)
+ {
+ this.streamInputs.remove(streamName);
+ }
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
- {
- throw new RuntimeException("NYI");
- }
+ public Iterator<String> getStreamInputNames()
+ {
+ return this.streamInputs.keySet().iterator();
+ }
- public void onEvent(Object args)
- {
- session.insert(args);
+ public void addOutput(StreamOutput streamOutput)
+ {
+ this.streamOutputs.put(streamOutput.getStreamName(), streamOutput);
- // TODO: shouldn't be necessary, revisit!
- session.fireAllRules();
- }
+ // Create a drools adapter
+ StreamOutputAdapter adapter = new StreamOutputAdapter(streamOutput);
- public void addInput(StreamInput streamInput)
- {
- streamInput.registerCallback(this);
- this.streamInputs.put(streamInput.getStreamName(), streamInput);
- }
+ // Make it available to the drools GlobalResolver
+ this.outputAdapters.put(streamOutput.getStreamName(), adapter);
- public void removeInput(String streamName)
- {
- this.streamInputs.remove(streamName);
- }
+ }
- public Iterator<String> getStreamInputNames()
- {
- return this.streamInputs.keySet().iterator();
- }
+ public void removeOutput(String streamName)
+ {
+ this.streamOutputs.remove(streamName);
+ }
- public void addOutput(StreamOutput streamOutput)
- {
- this.streamOutputs.put(streamOutput.getStreamName(), streamOutput);
+ public Iterator<String> getStreamOutputNames()
+ {
+ return this.streamOutputs.keySet().iterator();
+ }
- // Create a drools adapter
- StreamOutputAdapter adapter = new StreamOutputAdapter(streamOutput);
- // Make it availble to the drools GlobalResolver
- this.outputAdapters.put(streamOutput.getStreamName(), adapter);
+ public Object get(String key)
+ {
+ Object global = null;
- }
+ if ("SAM".equals(key))
+ {
+ DataSourceManager dsMgr = this.runtime.getDataSourceManager();
+ global = new SAMAdapter(this.session, this.outputAdapters, dsMgr);
+ }
+ else
+ {
+ // It may be a adapter output
+ global = this.outputAdapters.get(key);
+ }
+ return global;
+ }
- public void removeOutput(String streamName)
- {
- this.streamOutputs.remove(streamName);
- }
+ public void set(String string, Object object)
+ {
+ throw new IllegalArgumentException("Not supported");
+ }
- public Iterator<String> getStreamOutputNames()
- {
- return this.streamOutputs.keySet().iterator();
- }
+ public void setDelegate(Globals globals)
+ {
+ throw new IllegalArgumentException("Not supported");
+ }
- /**
- * Creates a drools package and registers it with the current rulebase
- */
- public ProcessingStatement registerStatement(String statementName, String epl)
- {
- InputStreamReader reader = new InputStreamReader(
+ /**
+ * Creates a drools package and registers it with the current rulebase
+ */
+ public ProcessingStatement registerStatement(String statementName, String epl)
+ {
+ InputStreamReader reader = new InputStreamReader(
new ByteArrayInputStream(epl.getBytes())
- );
+ );
- // Create a drools package
- org.drools.rule.Package pkg = buildAndAddPackage(reader);
- DroolsProcessingStatement stmt = new DroolsProcessingStatement(
- statementName, epl, pkg
+ // Create a drools package
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ try
+ {
+ builder.add(ResourceFactory.newReaderResource(reader), ResourceType.DRL);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to read DRL", e);
+ }
+
+ if (builder.hasErrors())
+ {
+ throw new RuntimeException(
+ "Failed to parse DRL '" + statementName + "': \n"
+ + builder.getErrors().toString()
);
+ }
+ this.kbase.addKnowledgePackages(builder.getKnowledgePackages());
- this.statements.put(statementName, stmt);
- return stmt;
- }
+ DroolsProcessingStatement stmt = new DroolsProcessingStatement(
+ statementName, epl, null
+ );
+
+ this.statements.put(statementName, stmt);// TODO: Why keep the reference?
+ return stmt;
+ }
- /**
- * Create a drools package, register it with the rulebase and make
- * sure that the adapter output adapter is available as a drools global variable
- */
- public ProcessingStatement registerBoundStatement(String streamOutputName, String statementName, String epl)
- {
- StreamOutputAdapter streamOutput = this.outputAdapters.get(streamOutputName);
- if(null == streamOutput)
- throw new IllegalArgumentException("No such output stream: " + streamOutputName);
+ /**
+ * Create a drools package, register it with the rulebase and make
+ * sure that the adapter output adapter is available as a drools global variable
+ */
+ public ProcessingStatement registerBoundStatement(String streamOutputName, String statementName, String epl)
+ {
+ StreamOutputAdapter streamOutput = this.outputAdapters.get(streamOutputName);
+ if (null == streamOutput)
+ throw new IllegalArgumentException("No such output stream: " + streamOutputName);
- // register the statement
- ProcessingStatement stmt = registerStatement(statementName, epl);
+ // register the statement
+ ProcessingStatement stmt = registerStatement(statementName, epl);
- return stmt;
- }
+ return stmt;
+ }
- public Iterator<String> getStatementNames()
- {
- return this.statements.keySet().iterator();
- }
+ public Iterator<String> getStatementNames()
+ {
+ return this.statements.keySet().iterator();
+ }
- public void clearStatement(String statementName)
- {
- ProcessingStatement stmt = statements.get(statementName);
- if(null==stmt)
- throw new IllegalArgumentException("No such statement: " + statementName);
+ public void clearStatement(String statementName)
+ {
+ ProcessingStatement stmt = statements.get(statementName);
+ if (null == stmt)
+ throw new IllegalArgumentException("No such statement: " + statementName);
- statements.remove(statementName);
- }
+ statements.remove(statementName);
+ }
- public void clearAllStatements()
- {
- Iterator<String> stmtNames = getStatementNames();
- while(stmtNames.hasNext())
- {
- clearStatement(stmtNames.next());
- }
- }
+ public void clearAllStatements()
+ {
+ Iterator<String> stmtNames = getStatementNames();
+ while (stmtNames.hasNext())
+ {
+ clearStatement(stmtNames.next());
+ }
+ }
- public String getName()
- {
- return this.name;
- }
+ public String getName()
+ {
+ return this.name;
+ }
- public void setName(String name)
- {
- this.name = name;
- }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
- public RuleBase getUnderlying()
- {
- return this.ruleBase;
- }
-
- // --------------------------------
- // Drools stuff below
-
- private org.drools.rule.Package buildAndAddPackage(Reader reader)
- {
- org.drools.rule.Package pkg = buildPackage(reader);
- this.ruleBase.addPackage( pkg );
- return pkg;
- }
-
- private org.drools.rule.Package buildPackage(Reader reader)
- {
- org.drools.rule.Package pkg = null;
-
- try
- {
- DrlParser parser = new DrlParser();
- PackageDescr packageDescr = parser.parse( reader );
-
- if ( parser.hasErrors() )
- {
- StringBuffer sb = new StringBuffer("Error messages in parser: ");
- for(Object err : parser.getErrors())
- {
- sb.append(err).append("\n");
- }
- throw new DroolsParserException( sb.toString() );
- }
-
- PackageBuilder builder = createPackageBuilder();
- builder.addPackage( packageDescr );
- pkg = builder.getPackage();
- }
- catch (DroolsParserException e)
- {
- throw new RuntimeException("Failed to parse DRL", e);
- }
-
- return pkg;
- }
-
- private PackageBuilder createPackageBuilder()
- {
- Properties props = new Properties();
- props.setProperty("drools.dialect.java.compiler", "JANINO");
- PackageBuilderConfiguration pkgConfig = new PackageBuilderConfiguration(props);
- return new PackageBuilder(pkgConfig);
- }
+ public KnowledgeBase getUnderlying()
+ {
+ return this.kbase;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsProcessingStatement.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsProcessingStatement.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/DroolsProcessingStatement.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -29,41 +29,41 @@
public class DroolsProcessingStatement implements ProcessingStatement<org.drools.rule.Package>
{
- private String name;
- private String epl;
- private boolean bound = false;
- private org.drools.rule.Package pkg;
+ private String name;
+ private String epl;
+ private boolean bound = false;
+ private org.drools.rule.Package pkg;
- public DroolsProcessingStatement(String name, String epl, org.drools.rule.Package pkg)
- {
- this(name, epl, pkg, false);
- }
+ public DroolsProcessingStatement(String name, String epl, org.drools.rule.Package pkg)
+ {
+ this(name, epl, pkg, false);
+ }
- public DroolsProcessingStatement(String name, String epl, org.drools.rule.Package pkg, boolean isBound)
- {
- this.name = name;
- this.epl = epl;
- this.pkg = pkg;
- this.bound = isBound;
- }
+ public DroolsProcessingStatement(String name, String epl, org.drools.rule.Package pkg, boolean isBound)
+ {
+ this.name = name;
+ this.epl = epl;
+ this.pkg = pkg;
+ this.bound = isBound;
+ }
- public String getName()
- {
- return this.name;
- }
+ public String getName()
+ {
+ return this.name;
+ }
- public String getExpression()
- {
- return this.epl;
- }
+ public String getExpression()
+ {
+ return this.epl;
+ }
- public boolean isBound()
- {
- return this.bound;
- }
+ public boolean isBound()
+ {
+ return this.bound;
+ }
- public org.drools.rule.Package getUnderlying()
- {
- return pkg;
- }
+ public org.drools.rule.Package getUnderlying()
+ {
+ return pkg;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/MapMessageAdapter.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -32,30 +32,30 @@
public class MapMessageAdapter implements EventMessage
{
- private Map delegate;
+ private Map delegate;
- public MapMessageAdapter(Map delegate)
- {
- this.delegate = delegate;
- }
+ public MapMessageAdapter(Map delegate)
+ {
+ this.delegate = delegate;
+ }
- public long getTimestamp()
- {
- return (Long)delegate.get("timestamp");
- }
+ public long getTimestamp()
+ {
+ return (Long) delegate.get("timestamp");
+ }
- public Object getProperty(String name)
- {
- return delegate.get(name);
- }
+ public Object getProperty(String name)
+ {
+ return delegate.get(name);
+ }
- public Iterator getPropertyNames()
- {
- return delegate.keySet().iterator();
- }
+ public Iterator getPropertyNames()
+ {
+ return delegate.keySet().iterator();
+ }
- public Object getUnderlying()
- {
- return delegate;
- }
+ public Object getUnderlying()
+ {
+ return delegate;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/ObjectMessageAdaptor.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -23,51 +23,51 @@
import org.jboss.sam.EventMessage;
+import java.lang.reflect.Method;
import java.util.Iterator;
-import java.lang.reflect.Method;
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class ObjectMessageAdaptor implements EventMessage
{
- private final Object obj;
+ private final Object obj;
- public ObjectMessageAdaptor(Object obj)
- {
- this.obj = obj;
- }
+ public ObjectMessageAdaptor(Object obj)
+ {
+ this.obj = obj;
+ }
- public long getTimestamp()
- {
- return (Long)getProperty("timestamp");
- }
+ public long getTimestamp()
+ {
+ return (Long) getProperty("timestamp");
+ }
- public Object getProperty(String name)
- {
- Object returnValue = null;
- String methodName = "get" + name.substring(0,1).toUpperCase()
+ public Object getProperty(String name)
+ {
+ Object returnValue = null;
+ String methodName = "get" + name.substring(0, 1).toUpperCase()
+ name.substring(1, name.length());
-
- try
- {
- Method method = this.obj.getClass().getMethod(methodName);
- returnValue = method.invoke(this.obj);
- }
- catch (Exception e)
- {
- throw new RuntimeException("Property access error: "+methodName, e);
- }
- return returnValue;
- }
- public Iterator getPropertyNames()
- {
- throw new RuntimeException("MYI");
- }
+ try
+ {
+ Method method = this.obj.getClass().getMethod(methodName);
+ returnValue = method.invoke(this.obj);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Property access error: " + methodName, e);
+ }
+ return returnValue;
+ }
- public Object getUnderlying()
- {
- return this.obj;
- }
+ public Iterator getPropertyNames()
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public Object getUnderlying()
+ {
+ return this.obj;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/SAMAdapter.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,100 +21,118 @@
*/
package org.jboss.sam.internal.drools;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemoryEntryPoint;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.jboss.sam.datasource.DataSourceManager;
import javax.sql.DataSource;
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.sql.Connection;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Statement;
-import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* Will be injected into WorkingMemory to give drools access to SAM extensions.<br>
* This class basically acts as a workaround for features that we would like to see:
- *
+ * <p/>
* <ul>
* <li>Hidden behind a custom SAM DSL
- * <li>or provided by Drools Fusion directly (JIRA)
+ * <li>or provided by Drools Fusion directly (JIRA)
* </ul>
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class SAMAdapter
{
- private StatefulSession session;
- private Map<String, StreamOutputAdapter> outputAdapters;
- private DataSourceManager datasourceManager;
+ private StatefulKnowledgeSession session;
+ private Map<String, StreamOutputAdapter> outputAdapters;
+ private DataSourceManager datasourceManager;
- public SAMAdapter(StatefulSession session, Map<String, StreamOutputAdapter> outputAdapters, DataSourceManager dsMgr)
- {
- this.session = session;
- this.outputAdapters = outputAdapters;
- this.datasourceManager = dsMgr;
- }
+ public SAMAdapter(StatefulKnowledgeSession session, Map<String, StreamOutputAdapter> outputAdapters, DataSourceManager dsMgr)
+ {
+ this.session = session;
+ this.outputAdapters = outputAdapters;
+ this.datasourceManager = dsMgr;
+ }
- public WorkingMemoryEntryPoint getStream(String name)
- {
- WorkingMemoryEntryPoint memoryEntryPoint = this.session.getWorkingMemoryEntryPoint(name);
- if(null==memoryEntryPoint)
- throw new IllegalArgumentException("Unknown stream " + name);
-
- return memoryEntryPoint;
- }
+ public WorkingMemoryEntryPoint getStream(String name)
+ {
+ WorkingMemoryEntryPoint memoryEntryPoint = this.session.getWorkingMemoryEntryPoint(name);
+ if (null == memoryEntryPoint)
+ throw new IllegalArgumentException("Unknown stream " + name);
- public UpdateListener getListener(String name)
- {
- StreamOutputAdapter adapter = this.outputAdapters.get(name);
- if(null==adapter)
- throw new IllegalArgumentException("Unknown listener '" + name +"'");
- return adapter;
- }
+ return memoryEntryPoint;
+ }
- public List query(String dbName, String sql)
- {
- DataSource dataSource = datasourceManager.getDataSource(dbName);
- ArrayList results = new ArrayList();
-
- Connection conn = null;
- Statement stmt = null;
- ResultSet rset = null;
+ public UpdateListener getListener(String name)
+ {
+ StreamOutputAdapter adapter = this.outputAdapters.get(name);
+ if (null == adapter)
+ throw new IllegalArgumentException("Unknown listener '" + name + "'");
+ return adapter;
+ }
- try
- {
- conn = dataSource.getConnection();
- stmt = conn.createStatement();
- rset = stmt.executeQuery(sql);
+ public List query(String dbName, String sql)
+ {
+ DataSource dataSource = datasourceManager.getDataSource(dbName);
+ ArrayList results = new ArrayList();
- int numcols = rset.getMetaData().getColumnCount();
+ Connection conn = null;
+ Statement stmt = null;
+ ResultSet rset = null;
- while(rset.next())
- {
- Map row = new HashMap();
- for(int i=1;i<=numcols;i++)
- {
- // TODO: case handling should be configureable
- row.put(rset.getMetaData().getColumnName(i).toLowerCase(), rset.getObject(i));
- }
- results.add(row);
- }
+ try
+ {
+ conn = dataSource.getConnection();
+ stmt = conn.createStatement();
+ rset = stmt.executeQuery(sql);
+
+ int numcols = rset.getMetaData().getColumnCount();
+
+ while (rset.next())
+ {
+ Map row = new HashMap();
+ for (int i = 1; i <= numcols; i++)
+ {
+ // TODO: case handling should be configureable
+ row.put(rset.getMetaData().getColumnName(i).toLowerCase(), rset.getObject(i));
+ }
+ results.add(row);
}
- catch(SQLException e)
- {
- throw new RuntimeException("Failed to execute SQL", e);
+ }
+ catch (SQLException e)
+ {
+ throw new RuntimeException("Failed to execute SQL", e);
+ }
+ finally
+ {
+ try
+ {
+ rset.close();
}
- finally
+ catch (Exception e)
{
- try { rset.close(); } catch(Exception e) { }
- try { stmt.close(); } catch(Exception e) { }
- try { conn.close(); } catch(Exception e) { }
}
-
- return results;
- }
+ try
+ {
+ stmt.close();
+ }
+ catch (Exception e)
+ {
+ }
+ try
+ {
+ conn.close();
+ }
+ catch (Exception e)
+ {
+ }
+ }
+
+ return results;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/StreamOutputAdapter.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -21,8 +21,8 @@
*/
package org.jboss.sam.internal.drools;
+import org.jboss.sam.EventMessage;
import org.jboss.sam.StreamOutput;
-import org.jboss.sam.EventMessage;
import java.util.Collection;
import java.util.Map;
@@ -32,48 +32,48 @@
*/
public class StreamOutputAdapter implements UpdateListener
{
- private StreamOutput delegate;
+ private StreamOutput delegate;
- public StreamOutputAdapter(StreamOutput delegate)
- {
- this.delegate = delegate;
- }
+ public StreamOutputAdapter(StreamOutput delegate)
+ {
+ this.delegate = delegate;
+ }
- public String getName()
- {
- return delegate.getStreamName();
- }
+ public String getName()
+ {
+ return delegate.getStreamName();
+ }
- public void update(Object result)
- {
- EventMessage[] events = adoptPayload(result);
- delegate.write(events);
- }
+ public void update(Object result)
+ {
+ EventMessage[] events = adoptPayload(result);
+ delegate.write(events);
+ }
- private EventMessage[] adoptPayload(Object data)
- {
- EventMessage[] events = null;
+ private EventMessage[] adoptPayload(Object data)
+ {
+ EventMessage[] events = null;
- if(data instanceof Collection)
+ if (data instanceof Collection)
+ {
+ Collection c = (Collection) data;
+ Object[] cAr = c.toArray();
+ events = new EventMessage[c.size()];
+ for (int i = 0; i < c.size(); i++)
{
- Collection c = (Collection)data;
- Object[] cAr = c.toArray();
- events = new EventMessage[c.size()];
- for(int i=0; i<c.size(); i++)
- {
- // TODO: think more thoroughly about payload adoption
- if(cAr[i] instanceof Map)
- events[i] = new MapMessageAdapter((Map)cAr[i]);
- else
- events[i] = new ObjectMessageAdaptor(cAr[i]);
- }
+ // TODO: think more thoroughly about payload adoption
+ if (cAr[i] instanceof Map)
+ events[i] = new MapMessageAdapter((Map) cAr[i]);
+ else
+ events[i] = new ObjectMessageAdaptor(cAr[i]);
}
- else
- {
- events = new EventMessage[] { new ObjectMessageAdaptor(data) };
- }
+ }
+ else
+ {
+ events = new EventMessage[]{new ObjectMessageAdaptor(data)};
+ }
- return events;
- }
+ return events;
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/UpdateListener.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/UpdateListener.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/drools/UpdateListener.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -26,5 +26,5 @@
*/
public interface UpdateListener
{
- void update(Object result);
+ void update(Object result);
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMDispatcher.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMDispatcher.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMDispatcher.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -28,23 +28,23 @@
*/
public class InVMDispatcher
{
- public final static String DEFAULT_CHANNEL_NAME = "InVM-Channel";
-
- private InVMStreamRegistry channelRegistry;
+ public final static String DEFAULT_CHANNEL_NAME = "InVM-Channel";
- private String streamName;
+ private InVMStreamRegistry channelRegistry;
- public InVMDispatcher(String streamName)
- {
- this.streamName = streamName;
- this.channelRegistry = InVMStreamRegistry.getInstance();
- }
+ private String streamName;
- public void dispatch(Object event)
- {
- for(StreamInputCallback callback : channelRegistry.getChannelCallbacks(streamName))
- {
- callback.onEvent(event);
- }
- }
+ public InVMDispatcher(String streamName)
+ {
+ this.streamName = streamName;
+ this.channelRegistry = InVMStreamRegistry.getInstance();
+ }
+
+ public void dispatch(Object event)
+ {
+ for (StreamInputCallback callback : channelRegistry.getChannelCallbacks(streamName))
+ {
+ callback.onEvent(event);
+ }
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamInput.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamInput.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamInput.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -29,72 +29,72 @@
*/
public class InVMStreamInput implements StreamInput
{
- private boolean started;
-
- private String streamName;
+ private boolean started;
- InVMStreamRegistry channelRegistry;
-
- public InVMStreamInput()
- {
- this.channelRegistry = InVMStreamRegistry.getInstance();
- }
+ private String streamName;
- public InVMStreamInput(String name)
- {
- this.streamName = name;
- this.channelRegistry = InVMStreamRegistry.getInstance();
- }
+ InVMStreamRegistry channelRegistry;
- public StreamInput start()
- {
- this.started = true;
- return this;
- }
+ public InVMStreamInput()
+ {
+ this.channelRegistry = InVMStreamRegistry.getInstance();
+ }
- public StreamInput stop()
- {
- this.started = false;
- return this;
- }
+ public InVMStreamInput(String name)
+ {
+ this.streamName = name;
+ this.channelRegistry = InVMStreamRegistry.getInstance();
+ }
- public boolean isStarted()
- {
- return this.started;
- }
+ public StreamInput start()
+ {
+ this.started = true;
+ return this;
+ }
- public String getStreamName()
- {
- return this.streamName;
- }
+ public StreamInput stop()
+ {
+ this.started = false;
+ return this;
+ }
+ public boolean isStarted()
+ {
+ return this.started;
+ }
- public void setStreamName(String name)
- {
- this.streamName = name;
- }
+ public String getStreamName()
+ {
+ return this.streamName;
+ }
- public void registerCallback(StreamInputCallback listener)
- {
- channelRegistry.getChannelCallbacks(streamName).add(listener);
- }
- public void clearCallbacks()
- {
- channelRegistry.getChannelCallbacks(streamName).clear();
- }
+ public void setStreamName(String name)
+ {
+ this.streamName = name;
+ }
- public void newEvent(Object args)
- {
- for(StreamInputCallback callback : channelRegistry.getChannelCallbacks(streamName))
- {
- callback.onEvent(args);
- }
+ public void registerCallback(StreamInputCallback listener)
+ {
+ channelRegistry.getChannelCallbacks(streamName).add(listener);
+ }
- }
+ public void clearCallbacks()
+ {
+ channelRegistry.getChannelCallbacks(streamName).clear();
+ }
- public String toString()
- {
- return "InVMInputAdapter{"+this.streamName +"}";
- }
+ public void newEvent(Object args)
+ {
+ for (StreamInputCallback callback : channelRegistry.getChannelCallbacks(streamName))
+ {
+ callback.onEvent(args);
+ }
+
+ }
+
+ public String toString()
+ {
+ return "InVMInputAdapter{" + this.streamName + "}";
+ }
}
Modified: sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamRegistry.java
===================================================================
--- sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamRegistry.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/main/java/org/jboss/sam/internal/stream/InVMStreamRegistry.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -28,30 +28,30 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-/**
+/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class InVMStreamRegistry
{
- private Map<String, List<StreamInputCallback>> streams = new ConcurrentHashMap<String, List<StreamInputCallback>>();
+ private Map<String, List<StreamInputCallback>> streams = new ConcurrentHashMap<String, List<StreamInputCallback>>();
- private static InVMStreamRegistry INSTANCE;
+ private static InVMStreamRegistry INSTANCE;
- private InVMStreamRegistry()
- {
- }
+ private InVMStreamRegistry()
+ {
+ }
- public static InVMStreamRegistry getInstance()
- {
- if(null == INSTANCE)
- INSTANCE = new InVMStreamRegistry();
- return INSTANCE;
- }
+ public static InVMStreamRegistry getInstance()
+ {
+ if (null == INSTANCE)
+ INSTANCE = new InVMStreamRegistry();
+ return INSTANCE;
+ }
- public List<StreamInputCallback> getChannelCallbacks(String streamName)
- {
- if(null == streams.get(streamName))
- streams.put(streamName, new CopyOnWriteArrayList<StreamInputCallback>());
- return streams.get(streamName);
- }
+ public List<StreamInputCallback> getChannelCallbacks(String streamName)
+ {
+ if (null == streams.get(streamName))
+ streams.put(streamName, new CopyOnWriteArrayList<StreamInputCallback>());
+ return streams.get(streamName);
+ }
}
Modified: sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/ApiTestCase.java
===================================================================
--- sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/ApiTestCase.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/ApiTestCase.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -25,47 +25,45 @@
/**
* Verifies that the SAM core API works atop of Drools Fusion.
- *
+ *
* @author Heiko.Braun <heiko.braun at jboss.com>
*/
public class ApiTestCase extends SamTestSetup
{
- protected void setUp() throws Exception
- {
- // Creates default adapter inputs and outputs
- createProcessor("ApiTestCase", "drools/sam-cfg.xml");
- }
+ protected void setUp() throws Exception
+ {
+ // Creates default adapter inputs and outputs
+ createProcessor("ApiTestCase", "drools/sam-cfg.xml");
+ }
- public void testBoundStatement()
- {
- // EPL as String
- String epl = getDRLFromResource("drools/simple.drl");
+ public void testBoundStatement()
+ {
+ // EPL as String
+ String epl = getDRLFromResource("drools/simple.drl");
- // register statement
- eventProcessor.registerBoundStatement("InVM", "testBoundStatement", epl);
+ // register statement
+ eventProcessor.registerBoundStatement("InVM", "simple.drl", epl);
- StockTick eventMessage = new StockTick( "ACME");
- generateInVMEvent(eventMessage);
-
- assertNotNull(bufferedOutput.getLastNewData());
- assertEquals(bufferedOutput.getLastNewData().length, 1);
- }
+ StockTick eventMessage = new StockTick( "ACME");
+ generateInVMEvent(eventMessage);
- public void testAggregationAndForwarding()
- {
- String aggregateDSL = getDRLFromResource("drools/aggregate.drl");
- String outputDSL = getDRLFromResource("drools/forward.drl");
+ assertNotNull("No data received on stream output", bufferedOutput.getLastNewData());
+ assertEquals("Expected a single event", bufferedOutput.getLastNewData().length, 1);
+ }
- eventProcessor.registerStatement("aggregate", aggregateDSL);
- eventProcessor.registerBoundStatement("InVM", "output", outputDSL);
-
- StockTick eventMessage = new StockTick( "ACME");
- generateInVMEvent(eventMessage);
+ public void testAggregationAndForwarding()
+ {
+ String forwardDSL = getDRLFromResource("drools/forward.drl");
+ eventProcessor.registerBoundStatement("InVM", "forward.drl", forwardDSL);
- assertNotNull(bufferedOutput.getLastNewData());
- assertEquals(bufferedOutput.getLastNewData().length, 1);
- assertEquals(bufferedOutput.getLastNewData()[0].getProperty("symbol"), "ACME");
- }
+ StockTick eventMessage = new StockTick( "RHAT");
+ generateInVMEvent(eventMessage);
+ assertNotNull("No data received on stream output", bufferedOutput.getLastNewData());
+ assertEquals("Expected a single event", bufferedOutput.getLastNewData().length, 1);
+ assertEquals("Wrong event received", bufferedOutput.getLastNewData()[0].getProperty("symbol"), "RHAT");
+ }
+
+
}
Modified: sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/StockTick.java
===================================================================
--- sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/StockTick.java 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/java/org/jboss/test/sam/drools/StockTick.java 2009-07-13 21:00:48 UTC (rev 658)
@@ -26,26 +26,25 @@
*/
public class StockTick
{
- private String symbol;
+ private String symbol;
- public StockTick(String symbol)
- {
- this.symbol = symbol;
- }
+ public StockTick(String symbol)
+ {
+ this.symbol = symbol;
+ }
- public String getSymbol()
- {
- return symbol;
- }
+ public String getSymbol()
+ {
+ return symbol;
+ }
- public void setSymbol(String symbol)
- {
- this.symbol = symbol;
- }
+ public void setSymbol(String symbol)
+ {
+ this.symbol = symbol;
+ }
-
- public String toString()
- {
- return "StockTick(symbol="+symbol+")";
- }
+ public String toString()
+ {
+ return "StockTick {symbol="+symbol+"}";
+ }
}
Modified: sam/trunk/modules/core/src/test/resources/adapter/invm/sam-cfg.xml
===================================================================
--- sam/trunk/modules/core/src/test/resources/adapter/invm/sam-cfg.xml 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/resources/adapter/invm/sam-cfg.xml 2009-07-13 21:00:48 UTC (rev 658)
@@ -5,7 +5,7 @@
<statements>
<statement name="ExampleStatement" bindTo="VMOutput">
<epl lang="drl"><![CDATA[
-package org.jboss.test.sam.drools;
+ package org.jboss.test.sam.drools;
import org.jboss.test.sam.adapter.invm.Alert;
global org.jboss.sam.internal.drools.SAMAdapter SAM;
Deleted: sam/trunk/modules/core/src/test/resources/drools/aggregate.drl
===================================================================
--- sam/trunk/modules/core/src/test/resources/drools/aggregate.drl 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/resources/drools/aggregate.drl 2009-07-13 21:00:48 UTC (rev 658)
@@ -1,12 +0,0 @@
-package org.jboss.sam.drools;
-
-import org.jboss.test.sam.drools.StockTick;
-
-global org.jboss.sam.internal.drools.SAMAdapter SAM;
-
-rule "Aggregate any stock tick into AllTicks"
- when
- $event: StockTick();
- then
- SAM.getStream("AllTicks").insert($event);
-end
Modified: sam/trunk/modules/core/src/test/resources/drools/forward.drl
===================================================================
--- sam/trunk/modules/core/src/test/resources/drools/forward.drl 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/resources/drools/forward.drl 2009-07-13 21:00:48 UTC (rev 658)
@@ -4,9 +4,21 @@
global org.jboss.sam.internal.drools.SAMAdapter SAM;
-rule "Forward all stock ticks to listener"
- when
- $event: StockTick() from entry-point "AllTicks";
- then
- SAM.getListener("InVM").update($event);
+rule "Aggregate"
+when
+ $st: StockTick(symbol == "RHAT")
+then
+ System.out.println("drools: " +drools.getEntryPoint("stream1"));
+ System.out.println("Stream1: " +entryPoints["stream1"]);
+ entryPoints["stream1"].insert($st);
end
+
+# forward to listener
+rule "Forward"
+ dialect "mvel"
+when
+ $st : StockTick() from entry-point "stream1"
+then
+ System.out.println($st);
+ SAM.getListener("InVM").update($st);
+end
Modified: sam/trunk/modules/core/src/test/resources/drools/sam-cfg.xml
===================================================================
--- sam/trunk/modules/core/src/test/resources/drools/sam-cfg.xml 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/resources/drools/sam-cfg.xml 2009-07-13 21:00:48 UTC (rev 658)
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
+
<ns2:processingNode name="DatabaseTestCase"
domain="http://org.jboss.sam/test/database"
xmlns:ns2="http://org.jboss.sam/08/2008/">
- <statements/>
+ <statements/>
</ns2:processingNode>
\ No newline at end of file
Modified: sam/trunk/modules/core/src/test/resources/drools/simple.drl
===================================================================
--- sam/trunk/modules/core/src/test/resources/drools/simple.drl 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/modules/core/src/test/resources/drools/simple.drl 2009-07-13 21:00:48 UTC (rev 658)
@@ -1,11 +1,12 @@
package org.jboss.test.sam.drools;
import org.jboss.test.sam.drools.StockTick;
+
global org.jboss.sam.internal.drools.SAMAdapter SAM;
-rule "Check event"
+rule "Send all ACME events to output listener"
when
$st: StockTick(symbol == "ACME")
then
- SAM.getListener("InVM").update($st);
+ SAM.getListener("InVM").update($st);
end
Modified: sam/trunk/pom.xml
===================================================================
--- sam/trunk/pom.xml 2009-07-13 10:40:40 UTC (rev 657)
+++ sam/trunk/pom.xml 2009-07-13 21:00:48 UTC (rev 658)
@@ -10,7 +10,7 @@
<version>1.0.0.SNAPSHOT</version>
<modules>
- <module>modules/core</module>
+ <module>modules/core</module>
<module>modules/sim</module>
</modules>
@@ -21,11 +21,11 @@
<surefire.jdwp.args>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</surefire.jdwp.args>
<dbcp.version>1.2.2</dbcp.version>
- <drools.version>5.0.0.CR1</drools.version>
+ <drools.version>5.0.1</drools.version>
<junit.version>3.8.2</junit.version>
<commons-logging.version>1.1</commons-logging.version>
<antlr.version>3.0.1</antlr.version>
- <jfree.version>1.0.0</jfree.version>
+
<hsqldb.version>1.8.0.7</hsqldb.version>
<javasim.version>2.0-hbraun</javasim.version>
<jaxb.api.version>2.1</jaxb.api.version>
@@ -80,12 +80,6 @@
<artifactId>commons-logging-api</artifactId>
<version>${commons-logging.version}</version>
</dependency>
-
- <dependency>
- <groupId>jfree</groupId>
- <artifactId>jfreechart</artifactId>
- <version>${jfree.version}</version>
- </dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
@@ -114,7 +108,7 @@
<artifactId>javasim</artifactId>
<version>${javasim.version}</version>
</dependency>
-
+
</dependencies>
</dependencyManagement>
@@ -183,6 +177,29 @@
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
</plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-javadocs</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
</plugins>
</pluginManagement>
</build>
More information about the overlord-commits
mailing list