[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