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/11/22 20:39:09 UTC
svn commit: r1037853 -
/myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/
Author: gpetracek
Date: Mon Nov 22 19:39:08 2010
New Revision: 1037853
URL: http://svn.apache.org/viewvc?rev=1037853&view=rev
Log:
EXTVAL-100 config for the bean validation module
Added:
myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/DefaultExtValBeanValidationModuleConfiguration.java
myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationModuleConfiguration.java
Modified:
myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
Added: myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/DefaultExtValBeanValidationModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/DefaultExtValBeanValidationModuleConfiguration.java?rev=1037853&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/DefaultExtValBeanValidationModuleConfiguration.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/DefaultExtValBeanValidationModuleConfiguration.java Mon Nov 22 19:39:08 2010
@@ -0,0 +1,54 @@
+/*
+ * 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.beanval;
+
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
+
+import javax.validation.ValidatorFactory;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class DefaultExtValBeanValidationModuleConfiguration extends ExtValBeanValidationModuleConfiguration
+{
+ public ValidatorFactory customValidatorFactory()
+ {
+ Object factory = ExtValContext.getContext().getGlobalProperty(ValidatorFactory.class.getName());
+
+ if(factory instanceof ValidatorFactory)
+ {
+ return (ValidatorFactory)factory;
+ }
+
+ return null;
+ }
+
+ @Override
+ public ExtValBeanValidationContext customExtValBeanValidationContext()
+ {
+ Object context = ExtValContext.getContext().getGlobalProperty(ExtValBeanValidationContext.class.getName());
+
+ if(context instanceof ExtValBeanValidationContext)
+ {
+ return (ExtValBeanValidationContext)context;
+ }
+
+ return null;
+ }
+}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java?rev=1037853&r1=1037852&r2=1037853&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java Mon Nov 22 19:39:08 2010
@@ -29,7 +29,6 @@ import org.apache.myfaces.extensions.val
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.MessageResolver;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.core.storage.GroupStorage;
-import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.JsfProjectStage;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
@@ -53,6 +52,8 @@ public class ExtValBeanValidationContext
private static final String KEY = ExtValBeanValidationContext.class.getName() + ":KEY";
+ protected ValidatorFactory validatorFactory;
+
protected MessageInterpolator defaultMessageInterpolator;
protected MessageResolver messageResolver;
@@ -88,7 +89,12 @@ public class ExtValBeanValidationContext
if(currentContext == null)
{
- currentContext = new ExtValBeanValidationContext();
+ currentContext = ExtValBeanValidationModuleConfiguration.get().customExtValBeanValidationContext();
+
+ if(currentContext == null)
+ {
+ currentContext = new ExtValBeanValidationContext();
+ }
requestMap.put(KEY, currentContext);
}
@@ -97,18 +103,23 @@ public class ExtValBeanValidationContext
public ValidatorFactory getValidatorFactory()
{
- Object validatorFactory = ExtValContext.getContext().getGlobalProperty(ValidatorFactory.class.getName());
-
- if(validatorFactory instanceof ValidatorFactory)
+ if(this.validatorFactory != null)
{
- return (ValidatorFactory)validatorFactory;
+ return this.validatorFactory;
}
- if(this.developmentMode)
+ this.validatorFactory = ExtValBeanValidationModuleConfiguration.get().customValidatorFactory();
+
+ if(this.validatorFactory == null)
{
- this.logger.warning("fallback to the default bv validator factory");
+ if(this.developmentMode)
+ {
+ this.logger.warning("fallback to the default bv validator factory");
+ }
+ this.validatorFactory = BeanValidationUtils.getDefaultValidatorFactory();
}
- return BeanValidationUtils.getDefaultValidatorFactory();
+
+ return this.validatorFactory;
}
public MessageInterpolator getMessageInterpolator()
Added: myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationModuleConfiguration.java?rev=1037853&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationModuleConfiguration.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_2_0/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationModuleConfiguration.java Mon Nov 22 19:39:08 2010
@@ -0,0 +1,118 @@
+/*
+ * 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.beanval;
+
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValModuleConfiguration;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+import javax.validation.ValidatorFactory;
+import java.util.logging.Logger;
+
+/**
+ * ExtVal Core Module configuration.
+ * 'custom' as prefix is used for 'optional' configurations. That means
+ * if a method returns null ExtVal uses a different approach to find an implementation e.g. via a naming convention
+ * -> all other methods aren't allowed to return null if there is no additional rule.
+ *
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public abstract class ExtValBeanValidationModuleConfiguration implements ExtValModuleConfiguration
+{
+ private static ExtValContext extValContext = null;
+
+ private static final Logger LOGGER = Logger.getLogger(ExtValBeanValidationModuleConfiguration.class.getName());
+
+ private static final String MISSING_MODULE_CONFIG_MESSAGE =
+ "no config for " + ExtValBeanValidationModuleConfiguration.class.getName() + " found. " +
+ "maybe the call of ExtValBeanValidationModuleConfiguration#get" +
+ " is triggered before the registration process. the default config gets used.";
+
+ protected ExtValBeanValidationModuleConfiguration()
+ {
+ }
+
+ /**
+ * Don't access ExtValContext during initialization of the class. E.g. OpenWebBeans initializes all classes during
+ * startup of the WebContainer.
+ * ({@link org.apache.myfaces.extensions.validator.core.ExtValContext}
+ * constructor tries to access Web.xml parameters through
+ * {@link javax.faces.context.FacesContext} which isn't available during the classpath-scanning.)
+ *
+ * @return The ExtValContext
+ */
+ private static ExtValContext getExtValContext()
+ {
+ if (extValContext == null)
+ {
+ extValContext = ExtValContext.getContext();
+ }
+ return extValContext;
+ }
+
+ /**
+ * Returns the configuration for the core-module stored in the context.
+ * If this doesn't exists (usually a startup-listener registers a (custom) implementation),
+ * it returns a new instance of the default implementation.
+ *
+ * @return The active ExtVal Core Module Configuration
+ */
+ public static ExtValBeanValidationModuleConfiguration get()
+ {
+ ExtValBeanValidationModuleConfiguration moduleConfig =
+ getExtValContext().getModuleConfiguration(ExtValBeanValidationModuleConfiguration.class);
+
+ if(moduleConfig == null)
+ {
+ LOGGER.fine(MISSING_MODULE_CONFIG_MESSAGE);
+ }
+ return moduleConfig != null ? moduleConfig : new DefaultExtValBeanValidationModuleConfiguration();
+ }
+
+ /**
+ * Sets a new configuration for the core-module
+ *
+ * @param config The new configuration for the core-module
+ * @param forceOverride use true to replace an existing configuration
+ * @return true if the new config was registered successfully
+ */
+ @UsageInformation(UsageCategory.INTERNAL)
+ public static boolean use(ExtValBeanValidationModuleConfiguration config, boolean forceOverride)
+ {
+ return getExtValContext()
+ .addModuleConfiguration(ExtValBeanValidationModuleConfiguration.class, config, forceOverride);
+ }
+
+ /**
+ * Allows to customize the {@link ValidatorFactory}
+ *
+ * @return an instance of a custom {@link ValidatorFactory}, null otherwise
+ */
+ public abstract ValidatorFactory customValidatorFactory();
+
+ /**
+ * Allows to customize the {@link ExtValBeanValidationContext}
+ *
+ * @return an instance of a custom {@link ExtValBeanValidationContext}, null otherwise
+ */
+ public abstract ExtValBeanValidationContext customExtValBeanValidationContext();
+}