You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/07/20 10:16:46 UTC

svn commit: r423818 - in /cocoon: branches/BRANCH_2_1_X/ trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/

Author: cziegeler
Date: Thu Jul 20 01:16:45 2006
New Revision: 423818

URL: http://svn.apache.org/viewvc?rev=423818&view=rev
Log:
CForms block: JavaClassValidatorBuilder supports Configurable validator implementations. New AbstractJavaValidator
              implementation supports generation of customized fail messages.

Added:
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java   (with props)
Modified:
    cocoon/branches/BRANCH_2_1_X/status.xml
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java   (contents, props changed)

Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/status.xml?rev=423818&r1=423817&r2=423818&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Thu Jul 20 01:16:45 2006
@@ -182,6 +182,10 @@
   <release version="@version@" date="@date@">
 -->
   <release version="2.1.10" date="TBD">
+    <action dev="CZ" type="add">
+      CForms block: JavaClassValidatorBuilder supports Configurable validator implementations. New AbstractJavaValidator
+                    implementation supports generation of customized fail messages.
+    </action>
     <action dev="AG" type="fix" fixes-bug="COCOON-1882" due-to="Holger Wahlen" due-to-email="hwahlen@pironet-ndh.com">
       Core: ZipArchiveSerializer causes &quot;Too many open files&quot; exception.
     </action>

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java?rev=423818&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java Thu Jul 20 01:16:45 2006
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.forms.validation.impl;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.configuration.ConfigurationUtil;
+import org.apache.cocoon.forms.FormsConstants;
+import org.apache.cocoon.forms.util.DomHelper;
+import org.apache.cocoon.forms.validation.ValidationError;
+import org.apache.excalibur.xml.sax.XMLizable;
+import org.w3c.dom.Element;
+
+/**
+ * Abstract base class for implementing an own Java validator which gets build by 
+ * the {@link JavaClassValidatorBuilder}.
+ *
+ * @version $Id$
+ */
+public class AbstractJavaValidator
+    implements Configurable {
+
+    protected ValidationError validationError;
+
+    /**
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
+    public void configure(Configuration config) throws ConfigurationException {
+        final Element element = ConfigurationUtil.toElement(config);
+        this.validationError = this.buildFailMessage(element);
+    }
+
+    /**
+     * Checks if the validation rule configuration contains a custom failmessage, and if so,
+     * sets it one the ValidationRule.
+     */
+    protected ValidationError buildFailMessage(Element validationRuleElement) {
+        Element failMessageElement = DomHelper.getChildElement(validationRuleElement,
+                                                               FormsConstants.DEFINITION_NS, "failmessage");
+        if (failMessageElement != null) {
+            XMLizable failMessage = DomHelper.compileElementContent(failMessageElement);
+            return new ValidationError(failMessage);
+        }
+        return this.getDefaultFailMessage();
+    }
+
+    protected abstract ValidationError getDefaultFailMessage();
+}

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/AbstractJavaValidator.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java?rev=423818&r1=423817&r2=423818&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java Thu Jul 20 01:16:45 2006
@@ -15,6 +15,7 @@
  */
 package org.apache.cocoon.forms.validation.impl;
 
+import org.apache.avalon.framework.configuration.ConfigurationUtil;
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
@@ -42,35 +43,47 @@
  *
  * @version $Id$
  */
-public class JavaClassValidatorBuilder implements WidgetValidatorBuilder, ThreadSafe, Serviceable, LogEnabled, Contextualizable  {
+public class JavaClassValidatorBuilder
+    implements WidgetValidatorBuilder, ThreadSafe, Serviceable, LogEnabled, Contextualizable  {
 
     private ServiceManager manager;
-    private Logger logger = null;
-    private Context context = null;
+    private Logger logger;
+    private Context context;
     
 
+    /**
+     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+     */
     public void service(ServiceManager manager) throws ServiceException {
         this.manager = manager;
     }
 
+    /**
+     * @see org.apache.cocoon.forms.validation.WidgetValidatorBuilder#build(org.w3c.dom.Element, org.apache.cocoon.forms.formmodel.WidgetDefinition)
+     */
     public WidgetValidator build(Element validationRuleElement, WidgetDefinition definition) throws Exception {
         String name = DomHelper.getAttribute(validationRuleElement, "class");
 
         Object validator = ClassUtils.newInstance(name);
         if (validator instanceof WidgetValidator) {
-            LifecycleHelper.setupComponent(validator, logger, context, manager, null);
+            LifecycleHelper.setupComponent(validator, logger, context, manager, ConfigurationUtil.toConfiguration(validationRuleElement));
             return (WidgetValidator)validator;
         } else {
             throw new Exception("Class " + validator.getClass() + " is not a " + WidgetValidator.class.getName());
         }
     }
     
+    /**
+     * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
     public void enableLogging(Logger logger) {
         this.logger = logger;
     }
 
+    /**
+     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+     */
     public void contextualize(Context context) throws ContextException {
         this.context = context;
     }
-
 }

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/validation/impl/JavaClassValidatorBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Id