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 2009/10/19 15:05:06 UTC

svn commit: r826659 - in /myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad: ./ interceptor/ startup/ storage/ util/ validation/message/

Author: gpetracek
Date: Mon Oct 19 13:05:05 2009
New Revision: 826659

URL: http://svn.apache.org/viewvc?rev=826659&view=rev
Log:
cleanup

Modified:
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadValidationPhaseListener.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/storage/DefaultClientValidatorStorage.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadValidationPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadValidationPhaseListener.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadValidationPhaseListener.java Mon Oct 19 13:05:05 2009
@@ -51,23 +51,36 @@
 
     public void beforePhase(PhaseEvent event)
     {
-        if(event.getPhaseId() != PhaseId.APPLY_REQUEST_VALUES && event.getPhaseId() != PhaseId.RENDER_RESPONSE)
-        {
-            return;
-        }
-
         FacesContext facesContext = FacesContext.getCurrentInstance();
 
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKitFactory renderKitFactory = getRenderKitFactory();
 
-        String renderKitId = facesContext.getViewRoot().getRenderKitId();
+        String renderKitId = getRenderKitId(facesContext);
 
-        if(ExtValTrinidadRenderKit.ID.equals(renderKitId))
+        if(isIncompatibleRenderKit(renderKitId))
         {
-            return;
+            changeRenderKit(facesContext, renderKitFactory, renderKitId);
         }
+    }
+
+    private String getRenderKitId(FacesContext facesContext)
+    {
+        return facesContext.getViewRoot().getRenderKitId();
+    }
 
+    private RenderKitFactory getRenderKitFactory()
+    {
+        return (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+    }
+
+    private boolean isIncompatibleRenderKit(String renderKitId)
+    {
+        return !ExtValTrinidadRenderKit.ID.equals(renderKitId);
+    }
+
+    private void changeRenderKit(FacesContext facesContext, RenderKitFactory renderKitFactory, String renderKitId)
+    {
         RenderKit renderKit = renderKitFactory.getRenderKit(FacesContext.getCurrentInstance(), renderKitId);
         renderKitFactory.addRenderKit(ExtValTrinidadRenderKit.ID, new ExtValTrinidadRenderKit(renderKit));
         facesContext.getViewRoot().setRenderKitId(ExtValTrinidadRenderKit.ID);

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java Mon Oct 19 13:05:05 2009
@@ -55,44 +55,69 @@
                                  ValidatorException validatorException,
                                  ValidationStrategy validatorExceptionSource)
     {
-        refreshComponent(uiComponent);
-
         if(processComponent(uiComponent))
         {
-            FacesMessage facesMessage = validatorException.getFacesMessage();
+            tryToRefreshComponent(uiComponent);
+            tryToPlaceLabelInFacesMessage(uiComponent, metaDataEntry, validatorException);
+        }
+        return true;
+    }
 
-            handleRequiredValidatorException(uiComponent, validatorException);
+    private void tryToPlaceLabelInFacesMessage(
+            UIComponent uiComponent, MetaDataEntry metaDataEntry, ValidatorException validatorException)
+    {
+        tryToHandleRequiredValidatorException(uiComponent, validatorException);
 
-            String label = getLabel(uiComponent);
+        String label = detectLabelText(metaDataEntry, uiComponent);
 
-            if(label == null)
-            {
-                label = uiComponent.getClientId(FacesContext.getCurrentInstance());
-            }
+        processLabel(validatorException.getFacesMessage(), label);
+    }
 
-            //override the label if the annotation provides a label
-            if(metaDataEntry != null && metaDataEntry.getProperty(PropertyInformationKeys.LABEL) != null)
-            {
-                label = metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
-            }
+    private String detectLabelText(MetaDataEntry metaDataEntry, UIComponent uiComponent)
+    {
+        String label = getLabel(uiComponent);
 
-            if(facesMessage instanceof LabeledMessage)
-            {
-                ((LabeledMessage)facesMessage).setLabelText(label);
-            }
-            //if someone uses a normal faces message
-            else
+        label = getClientIdAsFallbackIfNeeded(uiComponent, label);
+
+        label = tryToOverrideLabelIfProvidedManually(metaDataEntry, label);
+        return label;
+    }
+
+    private void processLabel(FacesMessage facesMessage, String label)
+    {
+        if(facesMessage instanceof LabeledMessage)
+        {
+            ((LabeledMessage)facesMessage).setLabelText(label);
+        }
+        //if someone uses a normal faces message
+        else
+        {
+            for(int i = 0; i < 3; i++)
             {
-                for(int i = 0; i < 3; i++)
-                {
-                    ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
-                }
+                ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
             }
         }
-        return true;
     }
 
-    private void handleRequiredValidatorException(UIComponent uiComponent, ValidatorException validatorException)
+    private String tryToOverrideLabelIfProvidedManually(MetaDataEntry metaDataEntry, String label)
+    {
+        if(metaDataEntry != null && metaDataEntry.getProperty(PropertyInformationKeys.LABEL) != null)
+        {
+            return metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
+        }
+        return label;
+    }
+
+    private String getClientIdAsFallbackIfNeeded(UIComponent uiComponent, String label)
+    {
+        if(label == null)
+        {
+            return uiComponent.getClientId(FacesContext.getCurrentInstance());
+        }
+        return label;
+    }
+
+    private void tryToHandleRequiredValidatorException(UIComponent uiComponent, ValidatorException validatorException)
     {
         if(validatorException instanceof RequiredValidatorException)
         {
@@ -107,7 +132,7 @@
         }
     }
 
-    private void refreshComponent(UIComponent uiComponent)
+    private void tryToRefreshComponent(UIComponent uiComponent)
     {
         if(RequestContext.getCurrentInstance().isPartialRequest(FacesContext.getCurrentInstance()))
         {

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java Mon Oct 19 13:05:05 2009
@@ -49,58 +49,99 @@
 
     protected void init()
     {
-        initTrinidadSupport();
+        deactivateDefaultExtValRenderKitWrapperFactory();
+
+        initClientSideValidationSupport();
+
+        initLabelInitializationSupport();
+
+        initValidationExceptionInterception();
+
+        replaceDefaultProxyWithTrinidadRendererProxy();
+
+        initTrinidadFacesMessageFactory();
+        /*
+         * if there are further incompatible renderers use the following quick-fix:
+         *         ExtValContext.getContext()
+                .addGlobalProperty(ExtValRendererProxy.KEY, null);
+           attention: it causes direct delegation without a check of double invocations
+         */
+
+        initTrinidadMetaDataExtractionInterceptor();
+
+        initTrinidadClientValidatorStorage();
     }
 
-    private void initTrinidadSupport()
+    private void deactivateDefaultExtValRenderKitWrapperFactory()
     {
-        //deactivate default approach
         ExtValContext.getContext().getFactoryFinder()
             .getFactory(FactoryNames.RENDERKIT_WRAPPER_FACTORY, AbstractRenderKitWrapperFactory.class).deactivate();
-        
-        String deactivateClientSideValidation = WebXmlParameter.DEACTIVATE_CLIENT_SIDE_TRINIDAD_VALIDATION;
+    }
 
-        if(deactivateClientSideValidation == null || !deactivateClientSideValidation.equalsIgnoreCase("true"))
+    private void initClientSideValidationSupport()
+    {
+        if(isClientSideValidationSupportEnabled(WebXmlParameter.DEACTIVATE_CLIENT_SIDE_TRINIDAD_VALIDATION))
         {
             ExtValContext.getContext().addComponentInitializer(new TrinidadComponentInitializer());
         }
+    }
 
-        String deactivateInitCoreOutputLabel = WebXmlParameter.DEACTIVATE_TRINIDAD_CORE_OUTPUT_LABEL_INITIALIZATION;
-
-        if(deactivateInitCoreOutputLabel == null || !deactivateInitCoreOutputLabel.equalsIgnoreCase("true"))
+    private void initLabelInitializationSupport()
+    {
+        if(isLabelInitializationEnabled(WebXmlParameter.DEACTIVATE_TRINIDAD_CORE_OUTPUT_LABEL_INITIALIZATION))
         {
             ExtValContext.getContext().registerRendererInterceptor(new TrinidadRendererInterceptor());
         }
+    }
 
-        String deactivateTrinidadValidationExceptionInterceptor =
-                WebXmlParameter.DEACTIVATE_TRINIDAD_VALIDATION_EXCEPTION_INTERCEPTOR;
-
-        if(deactivateTrinidadValidationExceptionInterceptor == null ||
-                !deactivateTrinidadValidationExceptionInterceptor.equalsIgnoreCase("true"))
+    private void initValidationExceptionInterception()
+    {
+        if(useValidationExceptionInterception(WebXmlParameter.DEACTIVATE_TRINIDAD_VALIDATION_EXCEPTION_INTERCEPTOR))
         {
             ExtValContext.getContext().addValidationExceptionInterceptor(new TrinidadValidationExceptionInterceptor());
         }
+    }
 
-        //deactivate extval renderer proxy - due to an incompatibility with the table renderer
+    private void replaceDefaultProxyWithTrinidadRendererProxy()
+    {
         ExtValContext.getContext()
                 .addGlobalProperty(ExtValRendererProxy.KEY, ExtValTrinidadRendererProxy.class.getName());
+    }
 
+    private void initTrinidadFacesMessageFactory()
+    {
         ExtValContext.getContext()
                 .addGlobalProperty(
                         FactoryNames.FACES_MESSAGE_FACTORY.name(),
                         TrinidadFacesMessageFactory.class.getName());
-        /*
-         * if there are further incompatible renderers use the following quick-fix:
-         *         ExtValContext.getContext()
-                .addGlobalProperty(ExtValRendererProxy.KEY, null);
-           attention: it causes direct delegation without a check of double invocations
-         */
+    }
 
+    private void initTrinidadMetaDataExtractionInterceptor()
+    {
         ExtValContext.getContext().addMetaDataExtractionInterceptor(new TrinidadMetaDataExtractionInterceptor());
+    }
 
+    private void initTrinidadClientValidatorStorage()
+    {
         ExtValContext.getContext().getFactoryFinder()
                 .getFactory(FactoryNames.STORAGE_MANAGER_FACTORY, StorageManagerHolder.class)
                 .setStorageManager(TrinidadClientValidatorStorage.class,
                         new DefaultClientValidatorStorageManager(), false);
     }
+
+    private boolean isLabelInitializationEnabled(String deactivateInitCoreOutputLabel)
+    {
+        return deactivateInitCoreOutputLabel == null || !deactivateInitCoreOutputLabel.equalsIgnoreCase("true");
+    }
+
+    private boolean isClientSideValidationSupportEnabled(String deactivateClientSideValidation)
+    {
+        return deactivateClientSideValidation == null || !deactivateClientSideValidation.equalsIgnoreCase("true");
+    }
+
+    private boolean useValidationExceptionInterception(String deactivateTrinidadValidationExceptionInterceptor)
+    {
+        return deactivateTrinidadValidationExceptionInterceptor == null ||
+                !deactivateTrinidadValidationExceptionInterceptor.equalsIgnoreCase("true");
+    }
 }

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/storage/DefaultClientValidatorStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/storage/DefaultClientValidatorStorage.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/storage/DefaultClientValidatorStorage.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/storage/DefaultClientValidatorStorage.java Mon Oct 19 13:05:05 2009
@@ -58,13 +58,7 @@
     {
         if (uiComponent instanceof EditableValueHolder)
         {
-            for (Validator validator : ((EditableValueHolder) uiComponent).getValidators())
-            {
-                if (validator instanceof ExtValTrinidadClientValidatorWrapper)
-                {
-                    ((EditableValueHolder) uiComponent).removeValidator(validator);
-                }
-            }
+            removeWrapperFromComponent(uiComponent);
         }
         else
         {
@@ -75,4 +69,15 @@
             }
         }
     }
+
+    private void removeWrapperFromComponent(UIComponent uiComponent)
+    {
+        for (Validator validator : ((EditableValueHolder) uiComponent).getValidators())
+        {
+            if (validator instanceof ExtValTrinidadClientValidatorWrapper)
+            {
+                ((EditableValueHolder) uiComponent).removeValidator(validator);
+            }
+        }
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java Mon Oct 19 13:05:05 2009
@@ -43,13 +43,13 @@
     public static UIComponent findLabeledEditableComponent(CoreOutputLabel coreOutputLabel)
     {
         //TODO
-        if(coreOutputLabel.getFor() == null)
+        if(isLabelTargetAvailable(coreOutputLabel))
         {
             return null;
         }
 
         FacesContext facesContext = FacesContext.getCurrentInstance();
-        UIComponent result = facesContext.getViewRoot().findComponent(coreOutputLabel.getFor());
+        UIComponent result = resolveLabelTarget(facesContext, coreOutputLabel);
 
         if(result instanceof EditableValueHolder)
         {
@@ -63,4 +63,14 @@
 
         return null;
     }
+
+    private static UIComponent resolveLabelTarget(FacesContext facesContext, CoreOutputLabel coreOutputLabel)
+    {
+        return facesContext.getViewRoot().findComponent(coreOutputLabel.getFor());
+    }
+
+    private static boolean isLabelTargetAvailable(CoreOutputLabel coreOutputLabel)
+    {
+        return coreOutputLabel.getFor() == null;
+    }
 }

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java?rev=826659&r1=826658&r2=826659&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java Mon Oct 19 13:05:05 2009
@@ -18,14 +18,14 @@
  */
 package org.apache.myfaces.extensions.validator.trinidad.validation.message;
 
-import org.apache.myfaces.trinidad.util.LabeledFacesMessage;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.trinidad.util.LabeledFacesMessage;
 
-import javax.faces.context.FacesContext;
 import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
 
 /**
  * @author Gerhard Petracek
@@ -52,7 +52,7 @@
     {
         FacesMessage result = tryToPlaceLabel(super.getSummary());
 
-        if(result != null)
+        if (result != null)
         {
             super.setSummary(result.getSummary());
             return result.getSummary();
@@ -66,7 +66,7 @@
     {
         FacesMessage result = tryToPlaceLabel(super.getDetail());
 
-        if(result != null)
+        if (result != null)
         {
             super.setDetail(result.getDetail());
             return result.getDetail();
@@ -77,21 +77,36 @@
 
     private FacesMessage tryToPlaceLabel(String originalMessage)
     {
-        if(!(originalMessage != null &&
-                originalMessage.startsWith(MISSING_RESOURCE_MARKER) &&
-                originalMessage.endsWith(MISSING_RESOURCE_MARKER)))
+        if (isValidMessage(originalMessage))
         {
-            FacesMessage newFacesMessage = new FacesMessage(super.getSeverity(), super.getSummary(), super.getDetail());
-            for(int i = 0; i < 3; i++)
-            {
-                ExtValUtils.tryToPlaceLabel(newFacesMessage, getLabelText(), i);
-            }
+            FacesMessage newFacesMessage = createOriginalFacesMessage();
+            tryToPlaceLabelIn(newFacesMessage);
             return newFacesMessage;
         }
 
         return null;
     }
 
+    private FacesMessage createOriginalFacesMessage()
+    {
+        return new FacesMessage(super.getSeverity(), super.getSummary(), super.getDetail());
+    }
+
+    private void tryToPlaceLabelIn(FacesMessage newFacesMessage)
+    {
+        for (int i = 0; i < 3; i++)
+        {
+            ExtValUtils.tryToPlaceLabel(newFacesMessage, getLabelText(), i);
+        }
+    }
+
+    private boolean isValidMessage(String originalMessage)
+    {
+        return !(originalMessage != null &&
+                originalMessage.startsWith(MISSING_RESOURCE_MARKER) &&
+                originalMessage.endsWith(MISSING_RESOURCE_MARKER));
+    }
+
     public void setLabelText(String label)
     {
         super.setLabel(label);