You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2007/03/13 16:37:24 UTC
svn commit: r517733 [2/2] - in
/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms:
binding/ binding/library/ formmodel/ formmodel/library/ samples/bindings/
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/library/LibraryManagerImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/library/LibraryManagerImpl.java?view=diff&rev=517733&r1=517732&r2=517733
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/library/LibraryManagerImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/library/LibraryManagerImpl.java Tue Mar 13 08:37:22 2007
@@ -16,9 +16,7 @@
*/
package org.apache.cocoon.forms.binding.library;
-import org.apache.avalon.framework.CascadingException;
import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
@@ -34,6 +32,7 @@
import org.apache.cocoon.forms.CacheManager;
import org.apache.cocoon.forms.binding.JXPathBindingManager;
import org.apache.cocoon.forms.util.DomHelper;
+import org.apache.cocoon.util.location.LocationImpl;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
@@ -43,24 +42,22 @@
*/
public class LibraryManagerImpl extends AbstractLogEnabled
implements LibraryManager, Serviceable, Configurable,
- Initializable, Disposable, ThreadSafe, Component {
+ Disposable, ThreadSafe, Component {
protected static final String PREFIX = "CocoonFormBindingLibrary:";
- private ServiceManager serviceManager;
- private Configuration configuration;
+ private ServiceManager manager;
private CacheManager cacheManager;
private JXPathBindingManager bindingManager;
public void configure(Configuration configuration) throws ConfigurationException {
- this.configuration = configuration;
- getLogger().debug("Gotten a config: top level element: "+this.configuration);
+ // TODO Read config to "preload" libraries
}
public void service(ServiceManager serviceManager) throws ServiceException {
- this.serviceManager = serviceManager;
+ this.manager = serviceManager;
this.cacheManager = (CacheManager)serviceManager.lookup(CacheManager.ROLE);
}
@@ -68,130 +65,124 @@
this.bindingManager = bindingManager;
}
- public void initialize() throws Exception {
- // read config to "preload" libraries
+ public Library get(String sourceURI) throws LibraryException {
+ return get(sourceURI, null);
}
- public boolean get(String librarysource) throws Exception {
- return get(librarysource,null);
- }
-
- public boolean get(String librarysource, String relative) throws Exception {
+ public Library get(String sourceURI, String baseURI) throws LibraryException {
SourceResolver sourceResolver = null;
Source source = null;
-
- if (getLogger().isDebugEnabled())
- getLogger().debug("Checking if library is in cache: '"+librarysource+"' relative to '"+relative+"'");
-
- Library lib = null;
- boolean result = false;
-
try {
- sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
- source = sourceResolver.resolveURI(librarysource, relative, null);
+ try {
+ sourceResolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
+ source = sourceResolver.resolveURI(sourceURI, baseURI, null);
+ } catch (Exception e) {
+ throw new LibraryException("Unable to resolve library.",
+ e, new LocationImpl("[LibraryManager]", sourceURI));
+ }
+
+ Library lib = (Library) this.cacheManager.get(source, PREFIX);
+ if (lib != null && lib.dependenciesHaveChanged()) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Library IS REMOVED from cache: '" + sourceURI + "' relative to '" + baseURI + "'");
+ }
+ this.cacheManager.remove(source, PREFIX); // evict?
+ return null;
+ }
- lib = (Library)this.cacheManager.get(source, PREFIX);
+ if (getLogger().isDebugEnabled()) {
+ if (lib != null) {
+ getLogger().debug("Library IS in cache: '" + sourceURI + "' relative to '" + baseURI + "'");
+ } else {
+ getLogger().debug("Library IS NOT in cache: '" + sourceURI + "' relative to '" + baseURI + "'");
+ }
+ }
- if( lib != null && lib.dependenciesHaveChanged() ) {
- result = false;
- this.cacheManager.set(null,source,PREFIX); //evict?
- }
- else if( lib == null )
- result = false;
- else
- result = true;
- } catch(Exception e) {
- if(getLogger().isErrorEnabled())
- getLogger().error("Problem getting library '"+librarysource+"' relative to '"+relative+"'!",e);
- throw e;
+ return lib;
} finally {
- if (source != null)
+ if (source != null) {
sourceResolver.release(source);
- if (sourceResolver != null)
- serviceManager.release(sourceResolver);
- }
-
- if(getLogger().isDebugEnabled()) {
- if(result)
- getLogger().debug("Library IS in cache : '"+librarysource+"' relative to '"+relative+"'");
- else
- getLogger().debug("Library IS NOT in cache : '"+librarysource+"' relative to '"+relative+"'");
+ }
+ if (sourceResolver != null) {
+ manager.release(sourceResolver);
+ }
}
-
- return result;
}
- public Library load(String librarysource) throws Exception {
- return load(librarysource,null);
+ public Library load(String sourceURI) throws LibraryException {
+ return load(sourceURI, null);
}
- public Library load(String librarysource, String relative) throws Exception {
+ public Library load(String sourceURI, String baseURI) throws LibraryException {
SourceResolver sourceResolver = null;
Source source = null;
- Document libraryDocument = null;
- Library lib = null;
-
- if(getLogger().isDebugEnabled())
- getLogger().debug("Getting library instance: '"+librarysource+"' relative to '"+relative+"'");
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Loading library: '" + sourceURI + "' relative to '" + baseURI + "'");
+ }
try {
- sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
- source = sourceResolver.resolveURI(librarysource, relative, null);
-
- lib = (Library)this.cacheManager.get(source, PREFIX);
-
- if( lib != null && lib.dependenciesHaveChanged() ) {
- if(getLogger().isDebugEnabled())
- getLogger().debug("Library dependencies changed, invalidating!");
+ try {
+ sourceResolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
+ source = sourceResolver.resolveURI(sourceURI, baseURI, null);
+ } catch (Exception e) {
+ throw new LibraryException("Unable to resolve library.",
+ e, new LocationImpl("[LibraryManager]", sourceURI));
+ }
- lib = null;
+ Library lib = (Library) this.cacheManager.get(source, PREFIX);
+ if (lib != null && lib.dependenciesHaveChanged()) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Library IS EXPIRED in cache: '" + sourceURI + "' relative to '" + baseURI + "'");
+ }
+ lib = null;
}
- if( lib == null ) {
- if(getLogger().isDebugEnabled())
- getLogger().debug("Library not in cache, creating!");
+ if (lib == null) {
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Library IS NOT in cache, loading: '" + sourceURI + "' relative to '" + baseURI + "'");
+ }
try {
InputSource inputSource = new InputSource(source.getInputStream());
inputSource.setSystemId(source.getURI());
- libraryDocument = DomHelper.parse(inputSource, this.serviceManager);
+ Document doc = DomHelper.parse(inputSource, this.manager);
lib = newLibrary();
- lib.buildLibrary(libraryDocument.getDocumentElement());
+ lib.buildLibrary(doc.getDocumentElement());
this.cacheManager.set(lib,source,PREFIX);
-
} catch (Exception e) {
- throw new CascadingException("Could not parse form definition from " +
- source.getURI(), e);
+ throw new LibraryException("Unable to load library.",
+ e, new LocationImpl("[LibraryManager]", source.getURI()));
}
}
+
+ return lib;
} finally {
- if (source != null)
+ if (source != null) {
sourceResolver.release(source);
- if (sourceResolver != null)
- serviceManager.release(sourceResolver);
+ }
+ if (sourceResolver != null) {
+ manager.release(sourceResolver);
+ }
}
-
- return lib;
}
public Library newLibrary() {
- Library lib = new Library(this);
+ Library lib = new Library(this, bindingManager.getBuilderAssistant());
lib.enableLogging(getLogger());
- lib.setAssistant(this.bindingManager.getBuilderAssistant());
-
- if(getLogger().isDebugEnabled())
- getLogger().debug("Created new library! "+lib);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Created new library! " + lib);
+ }
return lib;
}
public void dispose() {
- this.serviceManager.release(this.cacheManager);
+ this.manager.release(this.cacheManager);
this.cacheManager = null;
- this.serviceManager = null;
+ this.manager = null;
}
public void debug(String msg) {
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java?view=diff&rev=517733&r1=517732&r2=517733
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java Tue Mar 13 08:37:22 2007
@@ -120,8 +120,8 @@
// Call action listeners, if any
super.fireActionEvent(event);
- Repeater repeater = ((RepeaterAction)event.getSource()).getRepeater();
-
+ Repeater repeater = ((RepeaterAction) event.getSource()).getRepeater();
+
// and actually delete the rows
for (int i = repeater.getSize() - 1; i >= 0; i--) {
Repeater.RepeaterRow row = repeater.getRow(i);
@@ -129,15 +129,15 @@
repeater.removeRow(i);
}
}
-
+
if (repeater instanceof EnhancedRepeater) {
- try {
- ((EnhancedRepeater)repeater).refreshPage();
- } catch (BindingException e) {
- throw new CascadingRuntimeException("Error refreshing repeater page", e);
- }
+ try {
+ ((EnhancedRepeater) repeater).refreshPage();
+ } catch (BindingException e) {
+ throw new CascadingRuntimeException("Error refreshing repeater page", e);
+ }
}
-
+
}
}
@@ -153,18 +153,18 @@
super(repeaterName);
this.insertRows = insertRows;
- this.addActionListener(new ActionListener() {
+ addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
Repeater repeater = ((RepeaterAction)event.getSource()).getRepeater();
if (repeater instanceof EnhancedRepeater) {
try {
- ((EnhancedRepeater)repeater).goToPage(((EnhancedRepeater)repeater).getMaxPage());
- } catch (BindingException e) {
+ ((EnhancedRepeater) repeater).goToPage(((EnhancedRepeater) repeater).getMaxPage());
+ } catch (BindingException e) {
throw new CascadingRuntimeException("Error switching page", e);
}
}
- for (int i=0; i<AddRowActionDefinition.this.insertRows; i++) {
- repeater.addRow();
+ for (int i = 0; i < AddRowActionDefinition.this.insertRows; i++) {
+ repeater.addRow();
}
}
});
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterFilterField.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterFilterField.java?view=diff&rev=517733&r1=517732&r2=517733
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterFilterField.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterFilterField.java Tue Mar 13 08:37:22 2007
@@ -21,6 +21,9 @@
import org.apache.cocoon.forms.event.ValueChangedEvent;
import org.apache.cocoon.forms.event.ValueChangedListener;
+/**
+ * @version $Id$
+ */
public class RepeaterFilterField extends Field {
private EnhancedRepeater repeater;
@@ -31,27 +34,29 @@
this.field = fieldDefinition.getField();
}
- public void initialize() {
- super.initialize();
- String name = ((RepeaterFilterFieldDefinition)getDefinition()).getRepeaterName();
- Widget w = getParent().lookupWidget(name);
- if (w == null) throw new IllegalArgumentException("Cannot find repeater named " + name);
- if (!(w instanceof EnhancedRepeater)) throw new IllegalArgumentException("The repeater named " + name + " is not an enhanced repeater");
- this.repeater = (EnhancedRepeater) w;
-
- this.addValueChangedListener(new ValueChangedListener() {
- public void valueChanged(ValueChangedEvent event) {
- if (repeater.validate()) {
- try {
- repeater.setFilter(field, event.getNewValue());
- } catch (BindingException e) {
- throw new CascadingRuntimeException("Error setting filter",e);
- }
- }
- }
- });
- }
-
-
+ public void initialize() {
+ super.initialize();
+ String name = ((RepeaterFilterFieldDefinition) getDefinition()).getRepeaterName();
+ Widget w = getParent().lookupWidget(name);
+ if (w == null) {
+ throw new IllegalArgumentException("Cannot find repeater named " + name);
+ }
+ if (!(w instanceof EnhancedRepeater)) {
+ throw new IllegalArgumentException("The repeater named " + name + " is not an enhanced repeater");
+ }
+ this.repeater = (EnhancedRepeater) w;
+
+ addValueChangedListener(new ValueChangedListener() {
+ public void valueChanged(ValueChangedEvent event) {
+ if (repeater.validate()) {
+ try {
+ repeater.setFilter(field, event.getNewValue());
+ } catch (BindingException e) {
+ throw new CascadingRuntimeException("Error setting filter", e);
+ }
+ }
+ }
+ });
+ }
}
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/library/Library.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/library/Library.java?view=diff&rev=517733&r1=517732&r2=517733
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/library/Library.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/library/Library.java Tue Mar 13 08:37:22 2007
@@ -94,6 +94,7 @@
* @param key the key
* @param sourceURI the source of the library to be know as "key"
* @return true if there was no such key used before, false otherwise
+ * @throws LibraryException if unable to load included library
*/
public boolean includeAs(String key, String sourceURI)
throws LibraryException {
@@ -106,7 +107,6 @@
}
public WidgetDefinition getDefinition(String key) throws LibraryException {
-
String librarykey = null;
String definitionkey = key;
@@ -125,7 +125,7 @@
try {
return manager.load(dependency.dependencyURI, sourceURI).getDefinition(definitionkey);
} catch (Exception e) {
- throw new LibraryException("Couldn't get Library key='" + librarykey + "' source='" + dependency + "", e);
+ throw new LibraryException("Couldn't get library '" + librarykey + "' source='" + dependency + "'", e);
}
} else {
throw new LibraryException("Library '" + librarykey + "' does not exist! (lookup: '" + key + "')");
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/samples/bindings/CustomValueWrapBinding.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/samples/bindings/CustomValueWrapBinding.java?view=diff&rev=517733&r1=517732&r2=517733
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/samples/bindings/CustomValueWrapBinding.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/samples/bindings/CustomValueWrapBinding.java Tue Mar 13 08:37:22 2007
@@ -82,7 +82,7 @@
* @return the configured binding
* @throws BindingException when the creation fails
*/
- public static Binding createBinding(Element config) throws BindingException{
+ public static Binding createBinding(Element config) throws BindingException {
try {
String pfx = DomHelper.getAttribute(config, "prefixchar", null);
@@ -93,7 +93,8 @@
return new CustomValueWrapBinding(prefixChar, suffixChar);
} catch (Exception e) {
- throw new BindingException("Could not create instance of CustomValueWrapBinding." ,e);
+ throw new BindingException("Could not create instance of CustomValueWrapBinding.", e,
+ DomHelper.getLocationObject(config));
}
}
}