[jboss-svn-commits] JBL Code SVN: r15161 - in labs/jbossrules/trunk/drools-jbrms/src: main/resources and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 17 00:08:06 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-09-17 00:08:05 -0400 (Mon, 17 Sep 2007)
New Revision: 15161
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentManager.java
labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentManagerTest.java
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java
Log:
JBRULES-1195 Configurable content handlers
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-09-17 02:42:16 UTC (rev 15160)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentHandler.java 2007-09-17 04:08:05 UTC (rev 15161)
@@ -17,10 +17,8 @@
-import java.util.HashMap;
import java.util.Map;
-import org.drools.brms.client.common.AssetFormats;
import org.drools.brms.client.rpc.RuleAsset;
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
@@ -37,17 +35,7 @@
static Map handlers;
static {
- handlers = new HashMap() {{
- put(AssetFormats.BUSINESS_RULE, new BRLContentHandler());
- put(AssetFormats.DSL_TEMPLATE_RULE, new DSLRuleContentHandler());
- put(AssetFormats.DRL, new DRLFileContentHandler());
- put(AssetFormats.DSL, new DSLDefinitionContentHandler());
- put(AssetFormats.FUNCTION, new FunctionContentHandler());
- put(AssetFormats.MODEL, new ModelContentHandler());
- put(AssetFormats.DECISION_SPREADSHEET_XLS, new DecisionTableXLSHandler());
- put(AssetFormats.RULE_FLOW_RF, new RuleFlowHandler());
- put(AssetFormats.ENUMERATION, new EnumerationContentHandler());
- }};
+ handlers = ContentManager.getInstance().getContentHandlers();
}
/**
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentManager.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentManager.java 2007-09-17 04:08:05 UTC (rev 15161)
@@ -0,0 +1,76 @@
+package org.drools.brms.server.contenthandler;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+
+/**
+ * This configures the content handlers based on a props file.
+ * @author Barry Knapp
+ */
+public class ContentManager {
+
+ private static final Logger log = Logger.getLogger( ContentManager.class );
+ public static String CONTENT_CONFIG_PROPERTIES = "/contenthandler.properties";
+ private static final ContentManager INSTANCE = new ContentManager(CONTENT_CONFIG_PROPERTIES);
+
+ /**
+ * This is a map of the contentHandlers to use.
+ */
+ private final Map<String, ContentHandler> contentHandlers = new HashMap<String, ContentHandler>();
+
+
+
+ ContentManager(String configPath) {
+ log.debug("Loading content properties");
+ Properties props = new Properties();
+ try {
+ props.load(this.getClass().getResourceAsStream(configPath));
+ for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
+ String contentHandler = (String) iter.next();
+ String val = props.getProperty(contentHandler);
+
+ contentHandlers.put(contentHandler, loadContentHandlerImplementation( val ));
+
+ }
+ } catch (IOException e) {
+ log.fatal("UNABLE to load content handlers. Ahem, nothing will actually work. Ignore subsequent errors until this is resolved.", e);
+ }
+ }
+
+ /**
+ * Return the content handlers.
+ */
+ public Map<String, ContentHandler> getContentHandlers() {
+
+ return contentHandlers;
+ }
+
+
+ private ContentHandler loadContentHandlerImplementation(String val) throws IOException {
+
+ try {
+ return (ContentHandler) Thread.currentThread().getContextClassLoader().loadClass( val ).newInstance();
+
+ } catch ( InstantiationException e ) {
+ log.error( e );
+ return null;
+ } catch ( IllegalAccessException e ) {
+ log.error( e );
+ return null;
+ } catch ( ClassNotFoundException e ) {
+ log.error( e );
+ return null;
+ }
+
+ }
+
+
+ public static ContentManager getInstance() {
+ return INSTANCE;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/contenthandler/ContentManager.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties 2007-09-17 04:08:05 UTC (rev 15161)
@@ -0,0 +1,22 @@
+# Content handlers deal with the different asset types in the repositories.
+# you should not need to alter this, in general.
+
+
+# Content Handler for Business Rule
+brl=org.drools.brms.server.contenthandler.BRLContentHandler
+# Content Handler for DSL Rule
+dslr=org.drools.brms.server.contenthandler.DSLRuleContentHandler
+# Content Handler for DRL Rule
+drl=org.drools.brms.server.contenthandler.DRLFileContentHandler
+# Content Handler for DSL Definition
+dsl=org.drools.brms.server.contenthandler.DSLDefinitionContentHandler
+# Content Handler for Function
+function=org.drools.brms.server.contenthandler.FunctionContentHandler
+# Content Handler for Model
+jar=org.drools.brms.server.contenthandler.ModelContentHandler
+# Content Handler for Decision Table
+xls=org.drools.brms.server.contenthandler.DecisionTableXLSHandler
+# Content Handler for Rule Flow
+rf=org.drools.brms.server.contenthandler.RuleFlowHandler
+# Content Handler for Enumeration
+enumeration=org.drools.brms.server.contenthandler.EnumerationContentHandler
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/resources/contenthandler.properties
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentManagerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentManagerTest.java 2007-09-17 04:08:05 UTC (rev 15161)
@@ -0,0 +1,17 @@
+package org.drools.brms.server.contenthandler;
+
+import junit.framework.TestCase;
+
+public class ContentManagerTest extends TestCase {
+
+ public void testConfig() throws Exception {
+ ContentManager mgr = ContentManager.getInstance();
+ ContentManager mgr_ = ContentManager.getInstance();
+ assertSame(mgr, mgr_);
+
+ assertEquals(9, mgr.getContentHandlers().size());
+ assertTrue(mgr.getContentHandlers().get("drl") instanceof DRLFileContentHandler);
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/contenthandler/ContentManagerTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list