[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