You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2008/09/10 23:28:35 UTC
svn commit: r693995 - in
/myfaces/extensions/validator/branches/trunk_client_side_validation:
core/src/main/java/org/apache/myfaces/extensions/validator/core/
core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/
core/src...
Author: gpetracek
Date: Wed Sep 10 14:28:35 2008
New Revision: 693995
URL: http://svn.apache.org/viewvc?rev=693995&view=rev
Log:
intermediate state: rendering meta data to the client
Added:
myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/ClientSideValidationStrategy.java
myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClientSideValidationUtils.java
Modified:
myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java
myfaces/extensions/validator/branches/trunk_client_side_validation/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java
Modified: myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java?rev=693995&r1=693994&r2=693995&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java (original)
+++ myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java Wed Sep 10 14:28:35 2008
@@ -18,14 +18,21 @@
*/
package org.apache.myfaces.extensions.validator.core;
+import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
+import org.apache.myfaces.extensions.validator.core.client.HTML;
import org.apache.myfaces.extensions.validator.core.proxy.ExtValApplicationFactory;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ClientSideValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.internal.UsageEnum;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.util.FactoryUtils;
import org.apache.myfaces.extensions.validator.util.ValidationUtils;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
import javax.faces.convert.ConverterException;
import javax.faces.render.Renderer;
import java.io.IOException;
@@ -81,14 +88,49 @@
return;
}
- // ResponseWriter responseWriter = facesContext.getResponseWriter();
- //
- // responseWriter.startElement(HTML.INPUT_ELEM, uiComponent);
- // responseWriter.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
- // responseWriter.writeAttribute(HTML.NAME_ATTR, uiComponent.getClientId(facesContext)
- // + HIDDEN_SUBMIT_INPUT_SUFFIX, null);
- // responseWriter.writeAttribute(HTML.VALUE_ATTR, "meta data of property", null);
- // responseWriter.endElement(HTML.INPUT_ELEM);
+ ValidationStrategy validationStrategy;
+ boolean firstEntry = true;
+
+ AnnotationExtractor annotationExtractor = FactoryUtils
+ .getAnnotationExtractorFactory().create();
+
+ StringBuffer metaData = new StringBuffer();
+ metaData.append("[");
+
+ for (AnnotationEntry entry : annotationExtractor
+ .extractAnnotations(facesContext, uiComponent))
+ {
+ validationStrategy = FactoryUtils
+ .getValidationStrategyFactory().create(entry.getAnnotation());
+
+ if (validationStrategy instanceof ClientSideValidationStrategy)
+ {
+ for (String currentMetaData : ((ClientSideValidationStrategy) validationStrategy)
+ .extractMetaData(entry.getAnnotation()))
+ {
+ metaData.append(currentMetaData);
+
+ if (!firstEntry)
+ {
+ metaData.append(",");
+ }
+ else
+ {
+ firstEntry = false;
+ }
+ }
+ }
+ }
+ metaData.append("]");
+
+ ResponseWriter responseWriter = facesContext.getResponseWriter();
+
+ responseWriter.startElement(HTML.INPUT_ELEM, uiComponent);
+ responseWriter.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
+ responseWriter.writeAttribute(HTML.ID_ATTR, uiComponent.getClientId(facesContext)
+ + HIDDEN_SUBMIT_INPUT_SUFFIX, null);
+ responseWriter.writeAttribute(HTML.VALUE_ATTR, metaData, null);
+ responseWriter.endElement(HTML.INPUT_ELEM);
}
public String convertClientId(FacesContext facesContext, String s)
Added: myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/ClientSideValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/ClientSideValidationStrategy.java?rev=693995&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/ClientSideValidationStrategy.java (added)
+++ myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/ClientSideValidationStrategy.java Wed Sep 10 14:28:35 2008
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.extensions.validator.core.validation.strategy;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageEnum;
+
+import java.util.List;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author Gerhard Petracek
+ */
+@UsageInformation(UsageEnum.API)
+public interface ClientSideValidationStrategy
+{
+ List<String> extractMetaData(Annotation annotation);
+}
Added: myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClientSideValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClientSideValidationUtils.java?rev=693995&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClientSideValidationUtils.java (added)
+++ myfaces/extensions/validator/branches/trunk_client_side_validation/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClientSideValidationUtils.java Wed Sep 10 14:28:35 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.myfaces.extensions.validator.util;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class ClientSideValidationUtils
+{
+ public static String generateSimpleKeyValuePair(String key, String value)
+ {
+ return "{\"" + key + "\"" + ":\"" + escapeValue(value) + "\"}";
+ }
+
+ private static String escapeValue(String value)
+ {
+ //TODO
+ return value;
+ }
+}
Modified: myfaces/extensions/validator/branches/trunk_client_side_validation/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/trunk_client_side_validation/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java?rev=693995&r1=693994&r2=693995&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/trunk_client_side_validation/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java (original)
+++ myfaces/extensions/validator/branches/trunk_client_side_validation/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java Wed Sep 10 14:28:35 2008
@@ -21,17 +21,30 @@
import org.apache.myfaces.extensions.validator.baseval.annotation.Required;
import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ClientSideValidationStrategy;
+import org.apache.myfaces.extensions.validator.util.ClientSideValidationUtils;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import java.lang.annotation.Annotation;
+import java.util.List;
+import java.util.ArrayList;
/**
* @author Gerhard Petracek
*/
-public class RequiredStrategy extends AbstractValidationStrategy
+public class RequiredStrategy extends AbstractValidationStrategy implements ClientSideValidationStrategy
{
+ //TODO
+ public List<String> extractMetaData(Annotation annotation)
+ {
+ List<String> metaData = new ArrayList<String>();
+ //annotation.annotationType().get
+ metaData.add(ClientSideValidationUtils
+ .generateSimpleKeyValuePair("validationErrorMsgKey", ((Required)annotation).validationErrorMsgKey()));
+ return metaData;
+ }
public void processValidation(FacesContext facesContext,
UIComponent uiComponent, AnnotationEntry annotationEntry,