[jboss-svn-commits] JBL Code SVN: r32707 - labs/jbossrules/branches/drools_repo_services_diega_baunax/drools-compiler/src/main/java/org/drools/compiler.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 3 10:13:39 EDT 2010
Author: baunax
Date: 2010-05-03 10:13:39 -0400 (Mon, 03 May 2010)
New Revision: 32707
Modified:
labs/jbossrules/branches/drools_repo_services_diega_baunax/drools-compiler/src/main/java/org/drools/compiler/BusinessRuleProviderFactory.java
Log:
make it thread safe
Modified: labs/jbossrules/branches/drools_repo_services_diega_baunax/drools-compiler/src/main/java/org/drools/compiler/BusinessRuleProviderFactory.java
===================================================================
--- labs/jbossrules/branches/drools_repo_services_diega_baunax/drools-compiler/src/main/java/org/drools/compiler/BusinessRuleProviderFactory.java 2010-05-03 14:12:56 UTC (rev 32706)
+++ labs/jbossrules/branches/drools_repo_services_diega_baunax/drools-compiler/src/main/java/org/drools/compiler/BusinessRuleProviderFactory.java 2010-05-03 14:13:39 UTC (rev 32707)
@@ -10,9 +10,16 @@
import org.drools.util.ServiceRegistryImpl;
public class BusinessRuleProviderFactory {
-
+ private static BusinessRuleProviderFactory instance = new BusinessRuleProviderFactory();
private BusinessRuleProvider provider;
+ private BusinessRuleProviderFactory() {
+ }
+
+ public static BusinessRuleProviderFactory getInstance() {
+ return instance;
+ }
+
public BusinessRuleProvider getProvider() throws CheckedDroolsException {
if (null == provider)
provider = loadProvider();
@@ -22,27 +29,31 @@
private BusinessRuleProvider loadProvider() throws CheckedDroolsException {
String interfaceName = BusinessRuleProvider.class.getName();
try {
- Enumeration<URL> systemResources = ClassLoader.getSystemResources("META-INF/services/" + interfaceName);
URL systemResource = null;
- while (systemResources.hasMoreElements()) {
+ for (Enumeration<URL> systemResources = ClassLoader
+ .getSystemResources("META-INF/services/" + interfaceName); systemResources
+ .hasMoreElements();) {
if (null != systemResource)
throwMultipleImplementationsDetected();
systemResource = systemResources.nextElement();
}
- if (null == systemResource)
+ if (systemResource == null) {
throwNoImplementationFound();
+ }
BufferedReader reader = new BufferedReader(new InputStreamReader(systemResource.openStream()));
String className = null;
for (String currentName; (currentName = reader.readLine()) != null;) {
- if (null != className)
+ if (className != null) {
throwMultipleImplementationsDetected();
+ }
className = currentName;
}
- if (null == className)
+ if (null == className) {
throwNoImplementationFound();
+ }
ServiceRegistryImpl.getInstance().addDefault(BusinessRuleProvider.class, className);
return ServiceRegistryImpl.getInstance().get(BusinessRuleProvider.class);
@@ -58,15 +69,4 @@
private void throwMultipleImplementationsDetected() {
throw new IllegalStateException("multiple BusinessRuleProvider implementations detected");
}
-
- private static BusinessRuleProviderFactory instance;
-
- private BusinessRuleProviderFactory() {
- }
-
- public static BusinessRuleProviderFactory getInstance() {
- if (null == instance)
- instance = new BusinessRuleProviderFactory();
- return instance;
- }
}
More information about the jboss-svn-commits
mailing list