[jboss-svn-commits] JBL Code SVN: r33699 - in labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor: server and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 30 07:51:56 EDT 2010
Author: Rikkola
Date: 2010-06-30 07:51:55 -0400 (Wed, 30 Jun 2010)
New Revision: 33699
Added:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationService.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationServiceAsync.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/VerificationServiceImplementation.java
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java
Log:
faster verification. -Created VerificationService, tidyed up the codes
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationService.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationService.java 2010-06-30 11:51:55 UTC (rev 33699)
@@ -0,0 +1,20 @@
+package org.drools.guvnor.client.rpc;
+
+import java.util.Set;
+
+import com.google.gwt.user.client.rpc.RemoteService;
+import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
+import com.google.gwt.user.client.rpc.SerializationException;
+
+ at RemoteServiceRelativePath("verificationService")
+public interface VerificationService
+ extends
+ RemoteService {
+
+ public AnalysisReport verifyAsset(RuleAsset asset,
+ Set<String> activeWorkingSets) throws SerializationException;
+
+ public AnalysisReport verifyAssetWithoutVerifiersRules(RuleAsset asset,
+ Set<String> activeWorkingSets) throws SerializationException;
+
+}
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationServiceAsync.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/VerificationServiceAsync.java 2010-06-30 11:51:55 UTC (rev 33699)
@@ -0,0 +1,12 @@
+package org.drools.guvnor.client.rpc;
+
+public interface VerificationServiceAsync {
+ void verifyAsset(org.drools.guvnor.client.rpc.RuleAsset asset,
+ java.util.Set<String> sactiveWorkingSets,
+ com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.AnalysisReport> arg2);
+
+ void verifyAssetWithoutVerifiersRules(org.drools.guvnor.client.rpc.RuleAsset asset,
+ java.util.Set<String> sactiveWorkingSets,
+ com.google.gwt.user.client.rpc.AsyncCallback<org.drools.guvnor.client.rpc.AnalysisReport> arg2);
+
+}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-06-30 11:03:17 UTC (rev 33698)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-06-30 11:51:55 UTC (rev 33699)
@@ -2411,9 +2411,11 @@
RoleTypes.PACKAGE_DEVELOPER );
}
- String drl = this.buildPackageSource( packageUUID );
+ PackageItem packageItem = repository.loadPackageByUUID( packageUUID );
+
+
VerifierRunner runner = new VerifierRunner();
- return runner.verify( drl,
+ return runner.verify( packageItem,
VerifierConfiguration.VERIFYING_SCOPE_KNOWLEDGE_PACKAGE );
}
Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/VerificationServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/VerificationServiceImplementation.java (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/VerificationServiceImplementation.java 2010-06-30 11:51:55 UTC (rev 33699)
@@ -0,0 +1,109 @@
+package org.drools.guvnor.server;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.server.factory.ConstraintsFactory;
+import org.drools.guvnor.client.common.AssetFormats;
+import org.drools.guvnor.client.rpc.AnalysisReport;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.VerificationService;
+import org.drools.guvnor.client.rpc.WorkingSetConfigData;
+import org.drools.guvnor.server.security.PackageNameType;
+import org.drools.guvnor.server.security.RoleTypes;
+import org.drools.guvnor.server.util.LoggingHelper;
+import org.drools.guvnor.server.util.VerifierRunner;
+import org.drools.repository.PackageItem;
+import org.drools.verifier.VerifierConfiguration;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.remoting.WebRemote;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.security.Identity;
+
+import com.google.gwt.user.client.rpc.SerializationException;
+import com.google.gwt.user.server.rpc.RemoteServiceServlet;
+
+ at Name("org.drools.guvnor.client.rpc.VerificationService")
+ at AutoCreate
+public class VerificationServiceImplementation extends RemoteServiceServlet
+ implements
+ VerificationService {
+
+ private static final long serialVersionUID = -1618598780198053452L;
+
+ private static final LoggingHelper log = LoggingHelper.getLogger( ServiceImplementation.class );
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public AnalysisReport verifyAsset(RuleAsset asset,
+ Set<String> activeWorkingSets) throws SerializationException {
+ return this.performAssetVerification( asset,
+ true,
+ activeWorkingSets );
+ }
+
+ @WebRemote
+ @Restrict("#{identity.loggedIn}")
+ public AnalysisReport verifyAssetWithoutVerifiersRules(RuleAsset asset,
+ Set<String> activeWorkingSets) throws SerializationException {
+ return this.performAssetVerification( asset,
+ false,
+ activeWorkingSets );
+ }
+
+ private AnalysisReport performAssetVerification(RuleAsset asset,
+ boolean useVerifierDefaultConfig,
+ Set<String> activeWorkingSets) throws SerializationException {
+ long startTime = System.currentTimeMillis();
+
+ if ( Contexts.isSessionContextActive() ) {
+ Identity.instance().checkPermission( new PackageNameType( asset.metaData.packageName ),
+ RoleTypes.PACKAGE_DEVELOPER );
+ }
+ ServiceImplementation service = RepositoryServiceServlet.getService();
+
+ PackageItem packageItem = service.getRulesRepository().loadPackage( asset.metaData.packageName );
+
+ VerifierRunner runner = new VerifierRunner();
+
+ runner.setUseDefaultConfig( useVerifierDefaultConfig );
+
+ RuleAsset[] workingSets = service.loadRuleAssets( activeWorkingSets );
+ List<String> constraintRules = new LinkedList<String>();
+ if ( workingSets != null ) {
+ for ( RuleAsset ws : workingSets ) {
+ WorkingSetConfigData wsConfig = (WorkingSetConfigData) ws.content;
+ if ( wsConfig.constraints != null ) {
+ for ( ConstraintConfiguration config : wsConfig.constraints ) {
+ constraintRules.add( ConstraintsFactory.getInstance().getVerifierRule( config ) );
+ }
+ }
+ }
+ }
+
+ log.debug( "constraints rules: " + constraintRules );
+
+ try {
+ AnalysisReport report;
+ if ( AssetFormats.DECISION_TABLE_GUIDED.equals( asset.metaData.format ) || AssetFormats.DECISION_SPREADSHEET_XLS.equals( asset.metaData.format ) ) {
+ report = runner.verify( packageItem,
+ VerifierConfiguration.VERIFYING_SCOPE_DECISION_TABLE,
+ constraintRules );
+ } else {
+ report = runner.verify( packageItem,
+ VerifierConfiguration.VERIFYING_SCOPE_SINGLE_RULE,
+ constraintRules );
+ }
+
+ log.debug( "Asset verification took: " + (System.currentTimeMillis() - startTime) );
+
+ return report;
+ } catch ( Throwable t ) {
+ throw new SerializationException( t.getMessage() );
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java 2010-06-30 11:03:17 UTC (rev 33698)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/util/VerifierRunner.java 2010-06-30 11:51:55 UTC (rev 33699)
@@ -2,6 +2,7 @@
import java.io.StringReader;
import java.util.Collection;
+import java.util.Collections;
import org.drools.builder.ResourceType;
import org.drools.guvnor.client.common.AssetFormats;
@@ -26,30 +27,22 @@
private Verifier verifier;
private PackageItem packageItem;
- private boolean useDefaultConfig = true;
+ private boolean useDefaultConfig = true;
- public AnalysisReport verify(String drl, String scope) {
- return verify(drl, scope, null);
- }
-
- public AnalysisReport verify(String drl, String scope,
- Collection<String> additionalVerifierRules) {
-
- initVerifier( scope, additionalVerifierRules );
-
- verifier.addResourcesToVerify( ResourceFactory.newReaderResource( new StringReader( drl ) ),
- ResourceType.DRL );
- VerifierReport res = fireAnalysis();
-
- return VerifierReportCreator.doReport( res );
+ public AnalysisReport verify(PackageItem packageItem,
+ String scope) {
+ return verify( packageItem,
+ scope,
+ Collections.EMPTY_LIST );
}
-
public AnalysisReport verify(PackageItem packageItem,
- String scope, Collection<String> additionalVerifierRules) {
+ String scope,
+ Collection<String> additionalVerifierRules) {
this.packageItem = packageItem;
- initVerifier( scope, additionalVerifierRules );
+ initVerifier( scope,
+ additionalVerifierRules );
addHeaderToVerifier();
@@ -65,7 +58,7 @@
addToVerifier( packageItem.listAssetsByFormat( new String[]{AssetFormats.DRL} ),
ResourceType.DRL );
- addToRulesVerifier();
+ addRulesToVerifier();
fireAnalysis();
VerifierReport report = verifier.getResult();
@@ -73,38 +66,37 @@
return VerifierReportCreator.doReport( report );
}
- private VerifierReport fireAnalysis() throws RuntimeException {
+ private void fireAnalysis() throws RuntimeException {
verifier.fireAnalysis();
- if (verifier.hasErrors()) {
- StringBuilder message = new StringBuilder("Verifier Errors:\n");
- for (VerifierError verifierError : verifier.getErrors()) {
- message.append("\t");
- message.append(verifierError.getMessage());
- message.append("\n");
+ if ( verifier.hasErrors() ) {
+ StringBuilder message = new StringBuilder( "Verifier Errors:\n" );
+ for ( VerifierError verifierError : verifier.getErrors() ) {
+ message.append( "\t" );
+ message.append( verifierError.getMessage() );
+ message.append( "\n" );
}
- throw new RuntimeException(message.toString());
+ throw new RuntimeException( message.toString() );
}
- return verifier.getResult();
}
- private void initVerifier(String scope, Collection<String> additionalVerifierRules) {
+ private void initVerifier(String scope,
+ Collection<String> additionalVerifierRules) {
VerifierConfiguration conf = new DefaultVerifierConfiguration();
- if(useDefaultConfig){
+ if ( useDefaultConfig ) {
conf = new DefaultVerifierConfiguration();
- }else{
+ } else {
conf = new VerifierConfigurationImpl();
}
conf.getVerifyingScopes().clear();
conf.getVerifyingScopes().add( scope );
conf.setAcceptRulesWithoutVerifiyingScope( true );
- if (additionalVerifierRules != null) {
- for (String rule : additionalVerifierRules) {
- conf.getVerifyingResources().put(
- ResourceFactory.newByteArrayResource(rule.getBytes()),
- ResourceType.DRL);
- }
- }
+ if ( additionalVerifierRules != null ) {
+ for ( String rule : additionalVerifierRules ) {
+ conf.getVerifyingResources().put( ResourceFactory.newByteArrayResource( rule.getBytes() ),
+ ResourceType.DRL );
+ }
+ }
verifier = VerifierBuilderFactory.newVerifierBuilder().newVerifier( conf );
}
@@ -129,7 +121,7 @@
}
}
- private void addToRulesVerifier() {
+ private void addRulesToVerifier() {
AssetItemIterator rules = packageItem.listAssetsByFormat( AssetFormats.BUSINESS_RULE_FORMATS );
@@ -155,6 +147,4 @@
this.useDefaultConfig = useDefaultConfig;
}
-
-
}
More information about the jboss-svn-commits
mailing list