You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by he...@apache.org on 2014/02/24 12:05:57 UTC
git commit: [bean-validator] Refactoring.
Repository: camel
Updated Branches:
refs/heads/master ae4192246 -> 91e707837
[bean-validator] Refactoring.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/91e70783
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/91e70783
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/91e70783
Branch: refs/heads/master
Commit: 91e707837a09da94f6bf997043dc17df166484da
Parents: ae41922
Author: Henryk Konsek <he...@gmail.com>
Authored: Mon Feb 24 12:05:36 2014 +0100
Committer: Henryk Konsek <he...@gmail.com>
Committed: Mon Feb 24 12:05:36 2014 +0100
----------------------------------------------------------------------
.../bean/validator/BeanValidatorComponent.java | 61 +++----------
.../bean/validator/ValidatorFactories.java | 91 ++++++++++++++++++++
2 files changed, 101 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/91e70783/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
index c50d3b4..a70ab2e 100644
--- a/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
+++ b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
@@ -18,20 +18,19 @@ package org.apache.camel.component.bean.validator;
import java.util.Map;
-import javax.validation.Configuration;
import javax.validation.ConstraintValidatorFactory;
import javax.validation.MessageInterpolator;
import javax.validation.TraversableResolver;
-import javax.validation.Validation;
import javax.validation.ValidationProviderResolver;
import javax.validation.ValidatorFactory;
-import javax.validation.bootstrap.GenericBootstrap;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.DefaultComponent;
import org.apache.camel.impl.ProcessorEndpoint;
import org.apache.camel.util.PlatformHelper;
+import static org.apache.camel.component.bean.validator.ValidatorFactories.buildValidatorFactory;
+
/**
* Bean Validator Component for validating Java beans against reference implementation of JSR 303 Validator (Hibernate
* Validator).
@@ -42,33 +41,15 @@ public class BeanValidatorComponent extends DefaultComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
BeanValidator beanValidator = new BeanValidator();
- ValidationProviderResolver validationProviderResolver = resolveValidationProviderResolver(parameters);
- MessageInterpolator messageInterpolator = resolveAndRemoveReferenceParameter(parameters, "messageInterpolator", MessageInterpolator.class);
- TraversableResolver traversableResolver = resolveAndRemoveReferenceParameter(parameters, "traversableResolver", TraversableResolver.class);
- ConstraintValidatorFactory constraintValidatorFactory = resolveAndRemoveReferenceParameter(parameters, "constraintValidatorFactory", ConstraintValidatorFactory.class);
- String group = getAndRemoveParameter(parameters, "group", String.class);
-
- GenericBootstrap bootstrap = Validation.byDefaultProvider();
- if (validationProviderResolver != null) {
- bootstrap.providerResolver(validationProviderResolver);
- }
- Configuration<?> configuration = bootstrap.configure();
-
- if (messageInterpolator != null) {
- configuration.messageInterpolator(messageInterpolator);
- }
-
- if (traversableResolver != null) {
- configuration.traversableResolver(traversableResolver);
- }
-
- if (constraintValidatorFactory != null) {
- configuration.constraintValidatorFactory(constraintValidatorFactory);
- }
-
- ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
+ ValidatorFactory validatorFactory = buildValidatorFactory(
+ isOsgiContext(),
+ resolveAndRemoveReferenceParameter(parameters, "validationProviderResolver", ValidationProviderResolver.class),
+ resolveAndRemoveReferenceParameter(parameters, "messageInterpolator", MessageInterpolator.class),
+ resolveAndRemoveReferenceParameter(parameters, "traversableResolver", TraversableResolver.class),
+ resolveAndRemoveReferenceParameter(parameters, "constraintValidatorFactory", ConstraintValidatorFactory.class));
beanValidator.setValidatorFactory(validatorFactory);
-
+
+ String group = getAndRemoveParameter(parameters, "group", String.class);
if (group != null) {
beanValidator.setGroup(getCamelContext().getClassResolver().resolveMandatoryClass(group));
}
@@ -77,28 +58,6 @@ public class BeanValidatorComponent extends DefaultComponent {
}
/**
- * Resolves optional custom {@code javax.validation.ValidationProviderResolver} to be used by the component. By
- * default component tries to use resolver instance bound to the Camel registry under name
- * {@code validationProviderResolver} . If there is no such resolver instance in the registry and component is
- * running in the OSGi environment, {@link HibernateValidationProviderResolver} will be used. In all the other
- * cases this method will return null.
- *
- * @param parameters endpoint parameters
- * @return {@code javax.validation.ValidationProviderResolver} instance or null if no custom resolver should
- * be used by the component
- */
- protected ValidationProviderResolver resolveValidationProviderResolver(Map<String, Object> parameters) {
- ValidationProviderResolver validationProviderResolver = resolveAndRemoveReferenceParameter(parameters, "validationProviderResolver", ValidationProviderResolver.class);
- if (validationProviderResolver != null) {
- return validationProviderResolver;
- }
- if (isOsgiContext()) {
- return new HibernateValidationProviderResolver();
- }
- return null;
- }
-
- /**
* Recognizes if component is executed in the OSGi environment.
*
* @return true if component is executed in the OSGi environment. False otherwise.
http://git-wip-us.apache.org/repos/asf/camel/blob/91e70783/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/ValidatorFactories.java
----------------------------------------------------------------------
diff --git a/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/ValidatorFactories.java b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/ValidatorFactories.java
new file mode 100644
index 0000000..4aefbb0
--- /dev/null
+++ b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/ValidatorFactories.java
@@ -0,0 +1,91 @@
+/**
+ * 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.camel.component.bean.validator;
+
+import javax.validation.Configuration;
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.MessageInterpolator;
+import javax.validation.TraversableResolver;
+import javax.validation.Validation;
+import javax.validation.ValidationProviderResolver;
+import javax.validation.ValidatorFactory;
+import javax.validation.bootstrap.GenericBootstrap;
+
+/**
+ * Utility class dedicated to create new {@code javax.validation.ValidatorFactory} instances.
+ */
+public final class ValidatorFactories {
+
+ private ValidatorFactories() {
+ }
+
+ public static ValidatorFactory buildValidatorFactory(boolean osgi,
+ ValidationProviderResolver validationProviderResolver,
+ MessageInterpolator messageInterpolator,
+ TraversableResolver traversableResolver,
+ ConstraintValidatorFactory constraintValidatorFactory) {
+
+ ValidationProviderResolver resolvedValidationProviderResolver =
+ resolveValidationProviderResolver(osgi, validationProviderResolver);
+
+ GenericBootstrap bootstrap = Validation.byDefaultProvider();
+ if (resolvedValidationProviderResolver != null) {
+ bootstrap.providerResolver(resolvedValidationProviderResolver);
+ }
+ Configuration<?> configuration = bootstrap.configure();
+
+ if (messageInterpolator != null) {
+ configuration.messageInterpolator(messageInterpolator);
+ }
+
+ if (traversableResolver != null) {
+ configuration.traversableResolver(traversableResolver);
+ }
+
+ if (constraintValidatorFactory != null) {
+ configuration.constraintValidatorFactory(constraintValidatorFactory);
+ }
+
+ return configuration.buildValidatorFactory();
+ }
+
+ /**
+ * Resolves optional custom {@code javax.validation.ValidationProviderResolver} to be used by the component. By
+ * default component tries to use resolver instance bound to the Camel registry under name
+ * {@code validationProviderResolver} . If there is no such resolver instance in the registry and component is
+ * running in the OSGi environment, {@link HibernateValidationProviderResolver} will be used. In all the other
+ * cases this method will return null.
+ *
+ * @param osgi specifies if validator factory should be OSGi-aware
+ * @param validationProviderResolver predefined provider resolver. This parameter overrides the results of the
+ * resolution.
+ * @return {@code javax.validation.ValidationProviderResolver} instance or null if no custom resolver should
+ * be used by the component
+ */
+ private static ValidationProviderResolver resolveValidationProviderResolver(
+ boolean osgi,
+ ValidationProviderResolver validationProviderResolver) {
+ if (validationProviderResolver != null) {
+ return validationProviderResolver;
+ }
+ if (osgi) {
+ return new HibernateValidationProviderResolver();
+ }
+ return null;
+ }
+
+}