Author: alexsmirnov
Date: 2010-10-06 19:04:10 -0400 (Wed, 06 Oct 2010)
New Revision: 19483
Added:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/FormClientValidatorRenderer.java
Modified:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorBehavior.java
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java
Log:
CODING IN PROGRESS - issue RF-9219: CSV: development tests for server side(junit)
https://jira.jboss.org/browse/RF-9219
Modified:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorBehavior.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorBehavior.java 2010-10-06
16:50:13 UTC (rev 19482)
+++
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorBehavior.java 2010-10-06
23:04:10 UTC (rev 19483)
@@ -30,6 +30,11 @@
*/
Converter getConverter(ClientBehaviorContext context) throws
ConverterNotFoundException;
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param context
+ * @return
+ */
Collection<ValidatorDescriptor> getValidators(ClientBehaviorContext context);
}
\ No newline at end of file
Modified:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java 2010-10-06
16:50:13 UTC (rev 19482)
+++
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/component/behavior/ClientValidatorImpl.java 2010-10-06
23:04:10 UTC (rev 19483)
@@ -26,12 +26,21 @@
import java.util.Collections;
import javax.faces.FacesException;
+import javax.faces.component.ActionSource;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIMessage;
import javax.faces.component.behavior.ClientBehaviorBase;
import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
+import javax.faces.render.ClientBehaviorRenderer;
+import javax.faces.render.RenderKit;
+import org.richfaces.log.Logger;
+import org.richfaces.log.RichfacesLogger;
+import org.richfaces.renderkit.html.ClientValidatorRenderer;
+import org.richfaces.renderkit.html.FormClientValidatorRenderer;
+
/**
* <p class="changed_added_4_0">
* </p>
@@ -41,31 +50,82 @@
*/
public class ClientValidatorImpl extends ClientBehaviorBase implements
ClientValidatorBehavior {
+ public static final String BEHAVIOR_TYPE =
"org.richfaces.behavior.ClientValidator";
+
+ private static final Logger LOG = RichfacesLogger.COMPONENTS.getLogger();
+
@Override
public String getScript(ClientBehaviorContext behaviorContext) {
- if (!(behaviorContext.getComponent() instanceof EditableValueHolder)) {
- //TODO : implement form level validator for ActionSource components in next
iteration , probably on M5 - RC1
+ if (behaviorContext.getComponent() instanceof EditableValueHolder) {
+ return super.getScript(behaviorContext);
+ } else if (behaviorContext.getComponent() instanceof ActionSource) {
+ ClientBehaviorRenderer renderer =
+ getRenderer(behaviorContext.getFacesContext(),
FormClientValidatorRenderer.RENDERER_TYPE);
+ return renderer.getScript(behaviorContext, this);
+ } else {
throw new FacesException("Invalid target for client-side validator
behavior");
}
- return super.getScript(behaviorContext);
}
- /* (non-Javadoc)
- * @see
org.richfaces.component.behavior.ClientValidatorBehavior#findMessages(javax.faces.component.behavior.ClientBehaviorContext)
+ @Override
+ public String getRendererType() {
+ return ClientValidatorRenderer.RENDERER_TYPE;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * Look up for {@link ClientBehaviorRenderer} instence
+ * </p>
+ *
+ * @param context
+ * current JSF context
+ * @param rendererType
+ * desired renderer type
+ * @return renderer instance
+ * @throws {@link FacesException} if renderer can not be found
*/
+ protected ClientBehaviorRenderer getRenderer(FacesContext context, String
rendererType) {
+ if (null == context || null == rendererType) {
+ throw new NullPointerException();
+ }
+ ClientBehaviorRenderer renderer = null;
+ RenderKit renderKit = context.getRenderKit();
+ if (null != renderKit) {
+ renderer = renderKit.getClientBehaviorRenderer(rendererType);
+ if (null == renderer) {
+ throw new FacesException("No ClientBehaviorRenderer found for type
" + rendererType);
+ }
+ } else {
+ throw new FacesException("No renderkit available");
+ }
+ return renderer;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.richfaces.component.behavior.ClientValidatorBehavior#findMessages(javax.faces.component.behavior.
+ * ClientBehaviorContext)
+ */
public Collection<UIMessage> findMessages(ClientBehaviorContext context) throws
MessageNotFoundException {
return Collections.emptySet();
}
- /* (non-Javadoc)
- * @see
org.richfaces.component.behavior.ClientValidatorBehavior#getConverter(javax.faces.component.behavior.ClientBehaviorContext)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.richfaces.component.behavior.ClientValidatorBehavior#getConverter(javax.faces.component.behavior.
+ * ClientBehaviorContext)
*/
public Converter getConverter(ClientBehaviorContext context) throws
ConverterNotFoundException {
return null;
}
- /* (non-Javadoc)
- * @see
org.richfaces.component.behavior.ClientValidatorBehavior#getValidators(javax.faces.component.behavior.ClientBehaviorContext)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.richfaces.component.behavior.ClientValidatorBehavior#getValidators(javax.faces.component.behavior.
+ * ClientBehaviorContext)
*/
public Collection<ValidatorDescriptor> getValidators(ClientBehaviorContext
context) {
return Collections.emptySet();
Added:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/FormClientValidatorRenderer.java
===================================================================
---
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/FormClientValidatorRenderer.java
(rev 0)
+++
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/FormClientValidatorRenderer.java 2010-10-06
23:04:10 UTC (rev 19483)
@@ -0,0 +1,37 @@
+/*
+ * $Id$
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.richfaces.renderkit.html;
+
+import javax.faces.render.ClientBehaviorRenderer;
+
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public class FormClientValidatorRenderer extends ClientBehaviorRenderer {
+
+ public static final String
RENDERER_TYPE="orf.richfaces.FormValidatorRenderer";
+
+}
Property changes on:
branches/RF-8742/ui/validator/ui/src/main/java/org/richfaces/renderkit/html/FormClientValidatorRenderer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain