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 2010/07/13 17:10:43 UTC

svn commit: r963753 - in /myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core: ExtValContext.java ExtValModuleConfigurationResolver.java

Author: gpetracek
Date: Tue Jul 13 15:10:43 2010
New Revision: 963753

URL: http://svn.apache.org/viewvc?rev=963753&view=rev
Log:
EXTVAL-100 ExtValModuleConfigurationResolver

Added:
    myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java
Modified:
    myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java?rev=963753&r1=963752&r2=963753&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java Tue Jul 13 15:10:43 2010
@@ -36,7 +36,6 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
-import static org.apache.myfaces.extensions.validator.util.ClassUtils.getPackageName;
 import static org.apache.myfaces.extensions.validator.util.WebXmlUtils.getInitParameter;
 
 import javax.faces.component.UIComponent;
@@ -63,6 +62,9 @@ public class ExtValContext
     private static final String CUSTOM_EXTVAL_CONTEXT_CLASS_NAME =
             ExtValContext.class.getName().replace(".core.", ".custom.");
 
+    private static final String CUSTOM_EXTVAL_MODULE_CONFIGURATION_RESOLVER_CLASS_NAME =
+            ExtValModuleConfigurationResolver.class.getName().replace(".core.", ".custom.");
+
     private ViolationSeverityInterpreter violationSeverityInterpreter;
     private FactoryFinder factoryFinder = DefaultFactoryFinder.getInstance();
     private Map<String, RendererInterceptor> rendererInterceptors =
@@ -84,10 +86,36 @@ public class ExtValContext
     private ExtValContextInternals contextHelper;
     private ExtValContextInvocationOrderAwareInternals invocationOrderAwareContextHelper;
 
+    private ExtValModuleConfigurationResolver moduleConfigurationResolver;
+
     protected ExtValContext()
     {
         this.contextHelper = new ExtValContextInternals();
         this.invocationOrderAwareContextHelper = new ExtValContextInvocationOrderAwareInternals(this.contextHelper);
+
+        Object customExtValModuleConfigurationResolver =
+                ClassUtils.tryToInstantiateClassForName(CUSTOM_EXTVAL_MODULE_CONFIGURATION_RESOLVER_CLASS_NAME);
+
+        if(customExtValModuleConfigurationResolver instanceof ExtValModuleConfigurationResolver)
+        {
+            this.moduleConfigurationResolver =
+                    (ExtValModuleConfigurationResolver)customExtValModuleConfigurationResolver;
+        }
+
+        String customExtValModuleConfigurationResolverClassName =
+                getInitParameter(null, ExtValModuleConfigurationResolver.class.getName());
+
+        if(customExtValModuleConfigurationResolverClassName != null)
+        {
+            customExtValModuleConfigurationResolver =
+                    ClassUtils.tryToInstantiateClassForName(customExtValModuleConfigurationResolverClassName);
+
+            if(customExtValModuleConfigurationResolver instanceof ExtValModuleConfigurationResolver)
+            {
+                this.moduleConfigurationResolver =
+                        (ExtValModuleConfigurationResolver)customExtValModuleConfigurationResolver;
+            }
+        }
     }
 
     public static ExtValContext getContext()
@@ -461,18 +489,32 @@ public class ExtValContext
 
     private ExtValModuleConfiguration tryToLoadCustomConfigImplementation(ExtValModuleConfiguration config)
     {
-        Class configDefinitionClass = config.getClass().getSuperclass();
-        String customConfigClassName = getInitParameter(
-                getPackageName(configDefinitionClass), configDefinitionClass.getSimpleName());
+
+        Class configClass = config.getClass().getSuperclass();
+
+        if(!ExtValModuleConfiguration.class.isAssignableFrom(configClass))
+        {
+            return config;
+        }
+
+        @SuppressWarnings({"unchecked"})
+        Class<? extends ExtValModuleConfiguration> configDefinitionClass =
+                (Class<? extends  ExtValModuleConfiguration>)configClass;
+
+        if(this.moduleConfigurationResolver != null)
+        {
+            config = this.moduleConfigurationResolver.getCustomConfiguration(configDefinitionClass);
+        }
+
+        String customConfigClassName = getInitParameter(null, configDefinitionClass.getName());
 
         if(customConfigClassName != null)
         {
-            ExtValModuleConfiguration customConfig =
-                    (ExtValModuleConfiguration) ClassUtils.tryToInstantiateClassForName(customConfigClassName);
+            Object customConfig = ClassUtils.tryToInstantiateClassForName(customConfigClassName);
 
-            if(customConfig != null)
+            if(customConfig instanceof ExtValModuleConfiguration)
             {
-                return customConfig;
+                return (ExtValModuleConfiguration)customConfig;
             }
         }
         return config;

Added: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java?rev=963753&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java (added)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java Tue Jul 13 15:10:43 2010
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation({UsageCategory.API, UsageCategory.CUSTOMIZABLE})
+public interface ExtValModuleConfigurationResolver
+{
+    <T extends ExtValModuleConfiguration> ExtValModuleConfiguration getCustomConfiguration(Class<T> configType);
+}