[jboss-svn-commits] JBL Code SVN: r23970 - labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Nov 19 12:26:57 EST 2008


Author: jamesdeanturner
Date: 2008-11-19 12:26:57 -0500 (Wed, 19 Nov 2008)
New Revision: 23970

Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
Log:
added more javadocs

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2008-11-19 16:58:41 UTC (rev 23969)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2008-11-19 17:26:57 UTC (rev 23970)
@@ -41,309 +41,323 @@
 import org.drools.rule.Package;
 
 /**
- * This assembles packages in the BRMS into binary package objects, and deals with errors etc.
- * Each content type is responsible for contributing to the package.
- *
+ * This assembles packages in the BRMS into binary package objects, and deals
+ * with errors etc. Each content type is responsible for contributing to the
+ * package.
+ * 
  * @author Michael Neale
  */
 public class ContentPackageAssembler {
 
-    private PackageItem                pkg;
+	private PackageItem pkg;
 
-    /**
-     * We accumulate errors here. If they come from the builder,
-     * then we reset the builders errors so as to not double report.
-     * It also means we can track errors to the exact asset that caused it.
-     */
-    private List<ContentAssemblyError> errors = new ArrayList<ContentAssemblyError>();
+	/**
+	 * We accumulate errors here. If they come from the builder, then we reset
+	 * the builders errors so as to not double report. It also means we can
+	 * track errors to the exact asset that caused it.
+	 */
+	private List<ContentAssemblyError> errors = new ArrayList<ContentAssemblyError>();
 
-    BRMSPackageBuilder         builder;
+	BRMSPackageBuilder builder;
 
-    private String                     selectorConfigName;
+	private String selectorConfigName;
 
-    /**
-     * Use this if you want to build the whole package.
-     */
-    public ContentPackageAssembler(PackageItem pkg) {
-        this( pkg,
-              null );
-    }
+	/**
+	 * Use this if you want to build the whole package.
+	 * 
+	 * @param pkg
+	 *            The package.
+	 */
+	public ContentPackageAssembler(PackageItem pkg) {
+		this(pkg, null);
+	}
 
-    public ContentPackageAssembler(PackageItem pkg,
-                                   boolean compile) {
-        this( pkg,
-              compile,
-              null );
-    }
+	/**
+	 * @param pkg
+	 *            The package.
+	 * @param compile
+	 *            true if we want to build it. False and its just for looking at
+	 *            source.
+	 */
+	public ContentPackageAssembler(PackageItem pkg, boolean compile) {
+		this(pkg, compile, null);
+	}
 
-    /**
-     * @param assetPackage The package.
-     * @param compile true if we want to build it. False and its just for looking at source.
-     */
-    public ContentPackageAssembler(PackageItem assetPackage,
-                                   boolean compile,
-                                   String selectorConfigName) {
-        this.pkg = assetPackage;
-        this.selectorConfigName = selectorConfigName;
-        createBuilder();
+	/**
+	 * @param assetPackage
+	 *            The package.
+	 * @param compile
+	 *            true if we want to build it. False and its just for looking at
+	 *            source.
+	 * @param selectorConfigName
+	 */
+	public ContentPackageAssembler(PackageItem assetPackage, boolean compile,
+			String selectorConfigName) {
 
-        if ( compile && preparePackage() ) {
-            buildPackage();
-        }
-    }
+		this.pkg = assetPackage;
+		this.selectorConfigName = selectorConfigName;
 
-    /**
-     * Use this if you want to build the whole package.
-     */
-    public ContentPackageAssembler(PackageItem assetPackage,
-                                   String selectorConfigName) {
-        this( assetPackage,
-              true,
-              selectorConfigName );
-    }
+		createBuilder();
 
-    /**
-     * Use this if you want to build and compile just the one asset.
-     */
-    public ContentPackageAssembler(AssetItem assetToBuild) {
-        this.pkg = assetToBuild.getPackage();
-        createBuilder();
+		if (compile && preparePackage()) {
+			buildPackage();
+		}
+	}
 
-        if ( preparePackage() ) {
-            buildAsset( assetToBuild );
-        }
-    }
+	/**
+	 * Use this if you want to build the whole package.
+	 * 
+	 * @param assetPackage
+	 *            The package to build
+	 * 
+	 */
+	public ContentPackageAssembler(PackageItem assetPackage,
+			String selectorConfigName) {
+		this(assetPackage, true, selectorConfigName);
+	}
 
-    public void createBuilder() {
-        List<JarInputStream> jars = BRMSPackageBuilder.getJars( pkg );
-        builder = BRMSPackageBuilder.getInstance( jars );
-    }
+	/**
+	 * Use this if you want to build and compile just the one asset.
+	 */
+	public ContentPackageAssembler(AssetItem assetToBuild) {
+		this.pkg = assetToBuild.getPackage();
+		createBuilder();
 
-    /**
-     * This will build the package.
-     */
-    private void buildPackage() {
-        AssetSelector selector = SelectorManager.getInstance().getSelector( selectorConfigName );
-        if ( selector == null ) {
-            this.errors.add( new ContentAssemblyError( this.pkg,
-                                                       "The selector named " + selectorConfigName + " is not available." ) );
-            return;
-        }
-        Iterator<AssetItem> it = pkg.getAssets();
-        while ( it.hasNext() ) {
+		if (preparePackage()) {
+			buildAsset(assetToBuild);
+		}
+	}
 
-            AssetItem asset = (AssetItem) it.next();
+	public void createBuilder() {
+		List<JarInputStream> jars = BRMSPackageBuilder.getJars(pkg);
+		builder = BRMSPackageBuilder.getInstance(jars);
+	}
 
-            if ( !asset.isArchived() && (selector.isAssetAllowed( asset )) ) {
-                buildAsset( asset );
-            }
-        }
-    }
+	/**
+	 * This will build the package.
+	 */
+	private void buildPackage() {
+		AssetSelector selector = SelectorManager.getInstance().getSelector(
+				selectorConfigName);
+		if (selector == null) {
+			this.errors.add(new ContentAssemblyError(this.pkg,
+					"The selector named " + selectorConfigName
+							+ " is not available."));
+			return;
+		}
+		Iterator<AssetItem> it = pkg.getAssets();
+		while (it.hasNext()) {
 
-    /**
-     * Builds assets that are "rule" assets (ie things that are not functions etc).
-     */
-    private void buildAsset(AssetItem asset) {
-        ContentHandler h = ContentManager.getHandler( asset.getFormat() );
-        if ( h instanceof IRuleAsset && !asset.getDisabled() ) {
-            try {
-                ((IRuleAsset) h).compile( builder,
-                                          asset,
-                                          new ErrorLogger() );
-                if ( builder.hasErrors() ) {
-                    this.recordBuilderErrors( asset );
-                    //clear the errors, so we don't double report.
-                    builder.clearErrors();
-                }
-            } catch ( DroolsParserException e ) {
-                throw new RulesRepositoryException( e );
-            } catch ( IOException e ) {
-                throw new RulesRepositoryException( e );
-            }
-        }
-    }
+			AssetItem asset = (AssetItem) it.next();
 
-    /**
-     * This prepares the package builder, loads the jars/classpath.
-     * @return true if everything is good to go, false if its all gone horribly wrong,
-     * and we can't even get the package header up.
-     */
-    private boolean preparePackage() {
+			if (!asset.isArchived() && (selector.isAssetAllowed(asset))) {
+				buildAsset(asset);
+			}
+		}
+	}
 
-        //firstly we loadup the classpath
-        builder.addPackage( new PackageDescr( pkg.getName() ) );
+	/**
+	 * Builds assets that are "rule" assets (ie things that are not functions
+	 * etc).
+	 */
+	private void buildAsset(AssetItem asset) {
+		ContentHandler h = ContentManager.getHandler(asset.getFormat());
+		if (h instanceof IRuleAsset && !asset.getDisabled()) {
+			try {
+				((IRuleAsset) h).compile(builder, asset, new ErrorLogger());
+				if (builder.hasErrors()) {
+					this.recordBuilderErrors(asset);
+					// clear the errors, so we don't double report.
+					builder.clearErrors();
+				}
+			} catch (DroolsParserException e) {
+				throw new RulesRepositoryException(e);
+			} catch (IOException e) {
+				throw new RulesRepositoryException(e);
+			}
+		}
+	}
 
-        loadDeclaredTypes();
-        //now we deal with the header (imports, templates, globals).
-        addDrl( ServiceImplementation.getDroolsHeader( pkg ) );
-        if ( builder.hasErrors() ) {
-            recordBuilderErrors( pkg );
-            //if we have any failures, lets drop out now, no point in going
-            //any further
-            return false;
-        }
+	/**
+	 * This prepares the package builder, loads the jars/classpath.
+	 * 
+	 * @return true if everything is good to go, false if its all gone horribly
+	 *         wrong, and we can't even get the package header up.
+	 */
+	private boolean preparePackage() {
 
-        loadDSLFiles();
+		// firstly we loadup the classpath
+		builder.addPackage(new PackageDescr(pkg.getName()));
 
-        //finally, any functions we will load at this point.
-        AssetItemIterator it = this.pkg.listAssetsByFormat( new String[]{AssetFormats.FUNCTION} );
-        while ( it.hasNext() ) {
-            AssetItem func = (AssetItem) it.next();
-            addDrl( func.getContent() );
-            if ( builder.hasErrors() ) {
-                recordBuilderErrors( func );
-                builder.clearErrors();
-            }
-        }
+		loadDeclaredTypes();
+		// now we deal with the header (imports, templates, globals).
+		addDrl(ServiceImplementation.getDroolsHeader(pkg));
+		if (builder.hasErrors()) {
+			recordBuilderErrors(pkg);
+			// if we have any failures, lets drop out now, no point in going
+			// any further
+			return false;
+		}
 
-        return errors.size() == 0;
-    }
+		loadDSLFiles();
 
-    private void loadDeclaredTypes() {
-        AssetItemIterator it = this.pkg.listAssetsByFormat( new String[]{AssetFormats.DRL_MODEL} );
-        while ( it.hasNext() ) {
-            AssetItem as = it.next();
-            try {
-                builder.addPackageFromDrl( new StringReader( as.getContent() ) );
-            } catch ( DroolsParserException e ) {
-                this.errors.add( new ContentAssemblyError( as,
-                                                           "Parser exception: " + e.getMessage() ) );
-            } catch ( IOException e ) {
-                this.errors.add( new ContentAssemblyError( as,
-                                                           "IOException: " + e.getMessage() ) );
-            }
-        }
+		// finally, any functions we will load at this point.
+		AssetItemIterator it = this.pkg
+				.listAssetsByFormat(new String[] { AssetFormats.FUNCTION });
+		while (it.hasNext()) {
+			AssetItem func = (AssetItem) it.next();
+			addDrl(func.getContent());
+			if (builder.hasErrors()) {
+				recordBuilderErrors(func);
+				builder.clearErrors();
+			}
+		}
 
-    }
+		return errors.size() == 0;
+	}
 
-    private void loadDSLFiles() {
-        //now we load up the DSL files
-        builder.setDSLFiles( BRMSPackageBuilder.getDSLMappingFiles( pkg,
-                                                                    new BRMSPackageBuilder.DSLErrorEvent() {
-                                                                        public void recordError(AssetItem asset,
-                                                                                                String message) {
-                                                                            errors.add( new ContentAssemblyError( asset,
-                                                                                                                  message ) );
-                                                                        }
-                                                                    } ) );
-    }
+	private void loadDeclaredTypes() {
+		AssetItemIterator it = this.pkg
+				.listAssetsByFormat(new String[] { AssetFormats.DRL_MODEL });
+		while (it.hasNext()) {
+			AssetItem as = it.next();
+			try {
+				builder.addPackageFromDrl(new StringReader(as.getContent()));
+			} catch (DroolsParserException e) {
+				this.errors.add(new ContentAssemblyError(as,
+						"Parser exception: " + e.getMessage()));
+			} catch (IOException e) {
+				this.errors.add(new ContentAssemblyError(as, "IOException: "
+						+ e.getMessage()));
+			}
+		}
 
-    /**
-     * This will return true if there is an error in the package configuration or functions.
-     * @return
-     */
-    public boolean isPackageConfigurationInError() {
-        if ( this.errors.size() > 0 ) {
-            return this.errors.get( 0 ).itemInError instanceof PackageItem;
-        } else {
-            return false;
-        }
-    }
+	}
 
-    private void addDrl(String drl) {
-        if ( "".equals( drl ) ) {
-            return;
-        }
-        try {
-            builder.addPackageFromDrl( new StringReader( drl ) );
-        } catch ( DroolsParserException e ) {
-            throw new RulesRepositoryException( "Unexpected error when parsing package.",
-                                                e );
-        } catch ( IOException e ) {
-            throw new RulesRepositoryException( "IO Exception occurred when parsing package.",
-                                                e );
-        }
-    }
+	private void loadDSLFiles() {
+		// now we load up the DSL files
+		builder.setDSLFiles(BRMSPackageBuilder.getDSLMappingFiles(pkg,
+				new BRMSPackageBuilder.DSLErrorEvent() {
+					public void recordError(AssetItem asset, String message) {
+						errors.add(new ContentAssemblyError(asset, message));
+					}
+				}));
+	}
 
-    /**
-     * This will accumulate the errors.
-     */
-    private void recordBuilderErrors(VersionableItem asset) {
-        DroolsError[] errs = builder.getErrors().getErrors();
-        for ( int i = 0; i < errs.length; i++ ) {
-            this.errors.add( new ContentAssemblyError( asset,
-                                                       errs[i].getMessage() ) );
-        }
+	/**
+	 * This will return true if there is an error in the package configuration
+	 * or functions.
+	 * 
+	 * @return
+	 */
+	public boolean isPackageConfigurationInError() {
+		if (this.errors.size() > 0) {
+			return this.errors.get(0).itemInError instanceof PackageItem;
+		} else {
+			return false;
+		}
+	}
 
-    }
+	private void addDrl(String drl) {
+		if ("".equals(drl)) {
+			return;
+		}
+		try {
+			builder.addPackageFromDrl(new StringReader(drl));
+		} catch (DroolsParserException e) {
+			throw new RulesRepositoryException(
+					"Unexpected error when parsing package.", e);
+		} catch (IOException e) {
+			throw new RulesRepositoryException(
+					"IO Exception occurred when parsing package.", e);
+		}
+	}
 
-    /**
-     * I've got a package people !
-     */
-    public Package getBinaryPackage() {
-        if ( this.hasErrors() ) {
-            throw new IllegalStateException( "There is no package available, as there were errors." );
-        }
-        return builder.getPackage();
-    }
+	/**
+	 * This will accumulate the errors.
+	 */
+	private void recordBuilderErrors(VersionableItem asset) {
+		DroolsError[] errs = builder.getErrors().getErrors();
+		for (int i = 0; i < errs.length; i++) {
+			this.errors.add(new ContentAssemblyError(asset, errs[i]
+					.getMessage()));
+		}
 
-    public boolean hasErrors() {
-        return errors.size() > 0;
-    }
+	}
 
-    public List<ContentAssemblyError> getErrors() {
-        return this.errors;
-    }
+	/**
+	 * I've got a package people !
+	 */
+	public Package getBinaryPackage() {
+		if (this.hasErrors()) {
+			throw new IllegalStateException(
+					"There is no package available, as there were errors.");
+		}
+		return builder.getPackage();
+	}
 
-    public BRMSPackageBuilder getBuilder() {
-        return builder;
-    }
+	public boolean hasErrors() {
+		return errors.size() > 0;
+	}
 
-    /**
-     * This is passed in to the compilers so extra errors can be added.
-     *
-     * @author Michael Neale
-     */
-    public class ErrorLogger {
-        public void logError(ContentAssemblyError err) {
-            errors.add( err );
-        }
-    }
+	public List<ContentAssemblyError> getErrors() {
+		return this.errors;
+	}
 
-    public String getDRL() {
-        StringBuffer src = new StringBuffer();
-        src.append( "package " + this.pkg.getName() + "\n" );
-        src.append( ServiceImplementation.getDroolsHeader( this.pkg ) + "\n\n" );
+	public BRMSPackageBuilder getBuilder() {
+		return builder;
+	}
 
-        //now we load up the DSL files
-        builder.setDSLFiles( BRMSPackageBuilder.getDSLMappingFiles( pkg,
-                                                                    new BRMSPackageBuilder.DSLErrorEvent() {
-                                                                        public void recordError(AssetItem asset,
-                                                                                                String message) {
-                                                                            errors.add( new ContentAssemblyError( asset,
-                                                                                                                  message ) );
-                                                                        }
-                                                                    } ) );
+	/**
+	 * This is passed in to the compilers so extra errors can be added.
+	 * 
+	 * @author Michael Neale
+	 */
+	public class ErrorLogger {
+		public void logError(ContentAssemblyError err) {
+			errors.add(err);
+		}
+	}
 
-        //do the functions and declared types.
-        AssetItemIterator it = this.pkg.listAssetsByFormat( new String[]{AssetFormats.FUNCTION, AssetFormats.DRL_MODEL} );
-        while ( it.hasNext() ) {
-            AssetItem func = (AssetItem) it.next();
-            if ( !func.isArchived() ) {
-                src.append( func.getContent() + "\n\n" );
-            }
-        }
+	public String getDRL() {
+		StringBuffer src = new StringBuffer();
+		src.append("package " + this.pkg.getName() + "\n");
+		src.append(ServiceImplementation.getDroolsHeader(this.pkg) + "\n\n");
 
-        //now the rules
-        Iterator<AssetItem> iter = pkg.getAssets();
-        while ( iter.hasNext() ) {
-            AssetItem asset = (AssetItem) iter.next();
-            if ( !asset.isArchived() && !asset.getDisabled() ) {
+		// now we load up the DSL files
+		builder.setDSLFiles(BRMSPackageBuilder.getDSLMappingFiles(pkg,
+				new BRMSPackageBuilder.DSLErrorEvent() {
+					public void recordError(AssetItem asset, String message) {
+						errors.add(new ContentAssemblyError(asset, message));
+					}
+				}));
 
-                ContentHandler h = ContentManager.getHandler( asset.getFormat() );
-                if ( h instanceof IRuleAsset ) {
-                    IRuleAsset ruleAsset = (IRuleAsset) h;
-                    ruleAsset.assembleDRL( builder,
-                                           asset,
-                                           src );
-                }
+		// do the functions and declared types.
+		AssetItemIterator it = this.pkg.listAssetsByFormat(new String[] {
+				AssetFormats.FUNCTION, AssetFormats.DRL_MODEL });
+		while (it.hasNext()) {
+			AssetItem func = (AssetItem) it.next();
+			if (!func.isArchived()) {
+				src.append(func.getContent() + "\n\n");
+			}
+		}
 
-                src.append( "\n\n" );
+		// now the rules
+		Iterator<AssetItem> iter = pkg.getAssets();
+		while (iter.hasNext()) {
+			AssetItem asset = (AssetItem) iter.next();
+			if (!asset.isArchived() && !asset.getDisabled()) {
 
-            }
-        }
+				ContentHandler h = ContentManager.getHandler(asset.getFormat());
+				if (h instanceof IRuleAsset) {
+					IRuleAsset ruleAsset = (IRuleAsset) h;
+					ruleAsset.assembleDRL(builder, asset, src);
+				}
+				src.append("\n\n");
+			}
+		}
 
-        return src.toString();
-    }
+		return src.toString();
+	}
 
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list