craigmcc 2004/10/22 11:06:47 Modified: chain/src/java/org/apache/commons/chain/generic LookupCommand.java Log: Now that we have CatalogFactory, make LookupCommand leverage it by expecting a Catalog name instead of a Catalog instance. If not specified, the default Catalog for this application will be consulted. PR: Bugzilla #31844 Submitted By: Sean Schofield <sean DOT schofield AT gmail.com> Revision Changes Path 1.9 +68 -36 jakarta-commons/chain/src/java/org/apache/commons/chain/generic/LookupCommand.java Index: LookupCommand.java =================================================================== RCS file: /home/cvs/jakarta-commons/chain/src/java/org/apache/commons/chain/generic/LookupCommand.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- LookupCommand.java 25 Feb 2004 00:01:07 -0000 1.8 +++ LookupCommand.java 22 Oct 2004 18:06:47 -0000 1.9 @@ -17,6 +17,7 @@ import org.apache.commons.chain.Catalog; +import org.apache.commons.chain.CatalogFactory; import org.apache.commons.chain.Chain; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; @@ -48,29 +49,29 @@ // -------------------------------------------------------------- Properties - private String catalogKey = "catalog"; + private String catalogName = null; /** - * <p>Return the context attribute key under which the [EMAIL PROTECTED] Catalog} - * instance to be searched is stored.</p> + * <p>Return the name of the [EMAIL PROTECTED] Catalog} to be searched, or + * <code>null</code> to search the default [EMAIL PROTECTED] Catalog}.</p> */ - public String getCatalogKey() { + public String getCatalogName() { - return (this.catalogKey); + return (this.catalogName); } /** - * <p>Set the context attribute key under which the [EMAIL PROTECTED] Catalog} - * instance to be searched is stored.</p> + * <p>Set the name of the [EMAIL PROTECTED] Catalog} to be searched, or + * <code>null</code> to search the default [EMAIL PROTECTED] Catalog}.</p> * - * @param catalogKey The new context attribute key + * @param catalogName The new [EMAIL PROTECTED] Catalog} name or <code>null</code> */ - public void setCatalogKey(String catalogKey) { + public void setCatalogName(String catalogName) { - this.catalogKey = catalogKey; + this.catalogName = catalogName; } @@ -84,7 +85,7 @@ */ public String getName() { - return (this.name); + return (this.name); } @@ -97,7 +98,7 @@ */ public void setName(String name) { - this.name = name; + this.name = name; } @@ -111,7 +112,7 @@ */ public String getNameKey() { - return (this.nameKey); + return (this.nameKey); } @@ -124,7 +125,7 @@ */ public void setNameKey(String nameKey) { - this.nameKey = nameKey; + this.nameKey = nameKey; } @@ -170,7 +171,7 @@ */ public boolean execute(Context context) throws Exception { - Command command = getCommand(context); + Command command = getCommand(context); if (command != null) { return (command.execute(context)); } else { @@ -180,9 +181,18 @@ } + /** + * <p>If the executed command was itself a [EMAIL PROTECTED] Filter}, call the + * <code>postprocess()</code> method of that [EMAIL PROTECTED] Filter} as well.</p> + * + * @param context The context for this request + * @param exception Any <code>Exception</code> thrown by command execution + * + * @exception Exception if thrown by the <code>postprocess()</code> method + */ public boolean postprocess(Context context, Exception exception) { - Command command = getCommand(context); + Command command = getCommand(context); if (command != null) { if (command instanceof Filter) { return (((Filter) command).postprocess(context, exception)); @@ -207,25 +217,47 @@ */ private Command getCommand(Context context) { - Catalog catalog = (Catalog) - context.get(getCatalogKey()); - if (catalog == null) { - throw new IllegalArgumentException(getCatalogKey()); - } - Command command = null; - String name = getName(); - if (name == null) { - name = (String) context.get(getNameKey()); - } - if (name != null) { - command = catalog.getCommand(name); - if ((command == null) && !isOptional()) { - throw new IllegalArgumentException(name); - } - return (command); - } else { - throw new IllegalArgumentException("No command name"); - } + CatalogFactory catalogFactory = CatalogFactory.getInstance(); + String catalogName = getCatalogName(); + Catalog catalog = null; + if (catalogName == null) { + // use default catalog + catalog = catalogFactory.getCatalog(); + } else { + catalog = catalogFactory.getCatalog(catalogName); + } + if (catalog == null) { + if (catalogName == null) { + throw new IllegalArgumentException + ("Cannot find default catalog"); + } else { + throw new IllegalArgumentException + ("Cannot find catalog '" + catalogName + "'"); + } + } + + Command command = null; + String name = getName(); + if (name == null) { + name = (String) context.get(getNameKey()); + } + if (name != null) { + command = catalog.getCommand(name); + if ((command == null) && !isOptional()) { + if (catalogName == null) { + throw new IllegalArgumentException + ("Cannot find command '" + name + + "' in default catalog"); + } else { + throw new IllegalArgumentException + ("Cannot find command '" + name + + "' in catalog '" + catalogName + "'"); + } + } + return (command); + } else { + throw new IllegalArgumentException("No command name"); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]