[jboss-svn-commits] JBL Code SVN: r31745 - labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 19 13:01:50 EST 2010
Author: baunax
Date: 2010-02-19 13:01:49 -0500 (Fri, 19 Feb 2010)
New Revision: 31745
Modified:
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java
Log:
- changed map to use ConcurrentHashMap impls
Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java 2010-02-19 15:54:39 UTC (rev 31744)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-server/src/main/java/org/drools/server/KnowledgeService.java 2010-02-19 18:01:49 UTC (rev 31745)
@@ -5,9 +5,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import javax.xml.bind.JAXBContext;
@@ -48,8 +48,8 @@
private static KnowledgeService instance;
- private Map<String, KnowledgeAgent> cachedAgents = new HashMap<String, KnowledgeAgent>();
- private Map<String, JAXBContext> cachedJaxbContexts = new HashMap<String, JAXBContext>();
+ private Map<String, KnowledgeAgent> cachedAgents = new ConcurrentHashMap<String, KnowledgeAgent>();
+ private Map<String, JAXBContext> cachedJaxbContexts = new ConcurrentHashMap<String, JAXBContext>();
private CamelContext camelContext;
private KnowledgeServerProfile profiles;
@@ -77,93 +77,87 @@
}
public void checkContextStatus(KnowledgeContextProfile contextProfile) throws Exception {
- synchronized (cachedAgents) {
- if (!cachedAgents.containsKey(contextProfile.getId())) {
- KnowledgeAgentProvider knowledgeAgentFactory = serviceManager.getKnowledgeAgentFactory();
- KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
-
- List<String> allClassNames = new ArrayList<String>();
-
- if (contextProfile.hasJaxbModels()) {
- for (ProfileFile modelFile : contextProfile.getJaxbModels()) {
- // Create model from xsd definition and add to kbase classloader
- KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
-
- Options xjcOpts = new Options();
- xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
-
- try {
- String classNames[] = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource(modelFile.getFileName(), getClass()),
- kbuilder,
- xjcOpts,
- "xsd" );
- for (int i = 0; i < classNames.length; i++) {
- allClassNames.add(classNames[i]);
- }
- } catch (IOException e) {
- throw new Exception("Error creating XSD model", e);
+ if (!cachedAgents.containsKey(contextProfile.getId())) {
+ KnowledgeAgentProvider knowledgeAgentFactory = serviceManager.getKnowledgeAgentFactory();
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+
+ List<String> allClassNames = new ArrayList<String>();
+
+ if (contextProfile.hasJaxbModels()) {
+ for (ProfileFile modelFile : contextProfile.getJaxbModels()) {
+ // Create model from xsd definition and add to kbase classloader
+ KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+ try {
+ String classNames[] = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource(modelFile.getFileName(), getClass()),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+ for (int i = 0; i < classNames.length; i++) {
+ allClassNames.add(classNames[i]);
}
+ } catch (IOException e) {
+ throw new Exception("Error creating XSD model", e);
}
-
- if (allClassNames.size() > 0) {
- JAXBContext jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClassNames.toArray(new String[allClassNames.size()]), kbase );
- cachedJaxbContexts.put(contextProfile.getId(), jaxbContext);
- }
}
-
- KnowledgeAgent kagent = knowledgeAgentFactory.newKnowledgeAgent(contextProfile.getId(), kbase);
- for (ProfileFile changeSet : contextProfile.getChangeSetFiles()) {
- kagent.applyChangeSet(ResourceFactory.newClassPathResource(changeSet.getFileName()));
+
+ if (allClassNames.size() > 0) {
+ JAXBContext jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClassNames.toArray(new String[allClassNames.size()]), kbase );
+ cachedJaxbContexts.put(contextProfile.getId(), jaxbContext);
}
- StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
- serviceManager.register(contextProfile.getId(), session);
- cachedAgents.put(contextProfile.getId(), kagent);
-
- // Execute the startups commands
- for (StartupCommand command : contextProfile.getStartupCommands()) {
- executeCommand(contextProfile, command.getContent());
- }
-
}
+
+ KnowledgeAgent kagent = knowledgeAgentFactory.newKnowledgeAgent(contextProfile.getId(), kbase);
+ for (ProfileFile changeSet : contextProfile.getChangeSetFiles()) {
+ kagent.applyChangeSet(ResourceFactory.newClassPathResource(changeSet.getFileName()));
+ }
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+ serviceManager.register(contextProfile.getId(), session);
+ cachedAgents.put(contextProfile.getId(), kagent);
+
+ // Execute the startups commands
+ for (StartupCommand command : contextProfile.getStartupCommands()) {
+ executeCommand(contextProfile, command.getContent());
+ }
+
}
}
public String executeService(InputStream inputStream, KnowledgeContextProfile contextProfile) throws Exception {
BufferedInputStream bis = new BufferedInputStream(inputStream);
- ByteArrayOutputStream buf = new ByteArrayOutputStream();
- int result;
- String cmd = null;
+ ByteArrayOutputStream cmd = new ByteArrayOutputStream();
+ byte[] buffer = new byte[2048];
+ int count;
try {
- result = bis.read();
- while (result != -1) {
- byte b = (byte)result;
- buf.write(b);
- result = bis.read();
+ while ((count = bis.read()) != -1) {
+ cmd.write(buffer, 0, count);
}
- cmd = buf.toString();
+ return executeCommand(contextProfile, cmd.toString());
} catch (IOException e) {
throw new Exception("Unable to read the xml command", e);
}
- return executeCommand(contextProfile, cmd);
}
private String executeCommand(KnowledgeContextProfile contextProfile, String cmd) throws Exception {
if (contextProfile.hasJaxbModels()) {
JAXBContext jaxbContext = getJaxbContext(contextProfile.getId());
- if (contextProfile.getSessionType().equalsIgnoreCase("stateless")) {
+ if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
return new String((byte[])template.requestBodyAndHeader("direct:no-session-jaxb", cmd, "jaxb-context", jaxbContext));
}
- else if (contextProfile.getSessionType().equalsIgnoreCase("stateful")) {
+ else if ("stateful".equalsIgnoreCase(contextProfile.getSessionType())) {
return new String((byte[])template.requestBodyAndHeader("direct:with-session-jaxb", cmd, "jaxb-context", jaxbContext));
}
else
throw new Exception("Bad session type. Expected stateless or stateful");
}
else {
- if (contextProfile.getSessionType().equalsIgnoreCase("stateless")) {
+ if ("stateless".equalsIgnoreCase(contextProfile.getSessionType())) {
return new String((byte[])template.requestBody("direct:no-session-xstream", cmd));
}
- else if (contextProfile.getSessionType().equalsIgnoreCase("stateful")) {
+ else if ("stateful".equalsIgnoreCase(contextProfile.getSessionType())) {
return new String((byte[])template.requestBody("direct:with-session-xstream", cmd));
}
else
More information about the jboss-svn-commits
mailing list