Author: tim Date: Thu Jan 13 11:56:34 2005 New Revision: 125093 URL: http://svn.apache.org/viewcvs?view=rev&rev=125093 Log: Add support framework for tracking source locations for the forms bindings and add some comments. Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java
Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java?view=diff&rev=125093&p1=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java&r1=125092&p2=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java&r2=125093 ============================================================================== --- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java (original) +++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/AbstractCustomBinding.java Thu Jan 13 11:56:34 2005 @@ -27,9 +27,15 @@ private Binding parent; private String id; + /** + * Sets parent binding. + */ public void setParent(Binding binding) { this.parent = binding; } + /** + * Returns binding definition id. + */ public String getId() { return this.id; } Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java?view=diff&rev=125093&p1=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java&r1=125092&p2=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java&r2=125093 ============================================================================== --- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java (original) +++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java Thu Jan 13 11:56:34 2005 @@ -64,6 +64,13 @@ } /** + * Gets source location of this binding. + */ + public String getLocation() { + return this.commonAtts.location; + } + + /** * Sets parent binding. */ public void setParent(Binding binding) { @@ -93,8 +100,7 @@ } classes.put(id, classBinding); } else { - // TODO: Improve message to include source location. - throw new RuntimeException("Class \"" + id + "\" not found."); + throw new RuntimeException("Class \"" + id + "\" not found (" + getLocation() + ")"); } } return classBinding; @@ -124,7 +130,7 @@ } else { containerId = "container \"" + containerId + "\""; } - throw new RuntimeException(getClass().getName() + ": Widget \"" + + throw new RuntimeException(getClass().getName() + " (" + getLocation() + "): Widget \"" + id + "\" does not exist in the " + containerId + " (" + parent.getLocation() + ")."); } Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java?view=diff&rev=125093&p1=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java&r1=125092&p2=cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java&r2=125093 ============================================================================== --- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java (original) +++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java Thu Jan 13 11:56:34 2005 @@ -95,14 +95,15 @@ */ protected static CommonAttributes getCommonAttributes(Element bindingElm) throws BindingException { try { + String location = DomHelper.getLocation(bindingElm); //TODO: should we eventually remove this? //throw an error if people are still using the old-style @read-only or @readonly if (DomHelper.getAttributeAsBoolean(bindingElm, "readonly", false)) { - throw new BindingException("Error in binding file " + DomHelper.getLocation(bindingElm) + throw new BindingException("Error in binding file " + location + "\nThe usage of the attribute @readonly has been deprecated in favour of @direction."); } if (DomHelper.getAttributeAsBoolean(bindingElm, "read-only", false)) { - throw new BindingException("Error in binding file " + DomHelper.getLocation(bindingElm) + throw new BindingException("Error in binding file " + location + "\nThe usage of the attribute @read-only has been deprecated in favour of @direction."); } @@ -110,7 +111,7 @@ String leniency = DomHelper.getAttribute(bindingElm, "lenient", null); - return new CommonAttributes(direction, leniency); + return new CommonAttributes(location, direction, leniency); } catch (BindingException e) { throw e; } catch (Exception e) { @@ -124,6 +125,11 @@ * actions of a given binding. */ protected static class CommonAttributes{ + + /** + * Source location of this binding. + */ + final String location; /** * Flag which controls whether a binding is active during loading. */ @@ -134,13 +140,14 @@ final boolean saveEnabled; final Boolean leniency; - final static CommonAttributes DEFAULT = new CommonAttributes(true, true, null); + final static CommonAttributes DEFAULT = new CommonAttributes("location unknown", true, true, null); - CommonAttributes(String direction, String leniency){ - this(isLoadEnabled(direction), isSaveEnabled(direction), decideLeniency(leniency)); + CommonAttributes(String location, String direction, String leniency){ + this(location, isLoadEnabled(direction), isSaveEnabled(direction), decideLeniency(leniency)); } - CommonAttributes(boolean loadEnabled, boolean saveEnabled, Boolean leniency){ + CommonAttributes(String location, boolean loadEnabled, boolean saveEnabled, Boolean leniency){ + this.location = location; this.loadEnabled = loadEnabled; this.saveEnabled = saveEnabled; this.leniency = leniency;