org.apache.camel.component.bean.BeanHelper Maven / Gradle / Ivy
/*
* 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;
import org.apache.camel.spi.ClassResolver;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
/**
* Helper for the bean component.
*/
public final class BeanHelper {
private BeanHelper() {
// utility class
}
/**
* Determines and maps the given value is valid according to the supported
* values by the bean component.
*
* @param value the value
* @return the parameter type the given value is being mapped as, or null if not valid.
*/
public static Class> getValidParameterType(String value) {
if (ObjectHelper.isEmpty(value)) {
return null;
}
// trim value
value = value.trim();
// single quoted is valid
if (value.startsWith("'") && value.endsWith("'")) {
return String.class;
}
// double quoted is valid
if (value.startsWith("\"") && value.endsWith("\"")) {
return String.class;
}
// true or false is valid (boolean)
if (value.equals("true") || value.equals("false")) {
return Boolean.class;
}
// null is valid (to force a null value)
if (value.equals("null")) {
return Object.class;
}
// simple language tokens is valid
if (StringHelper.hasStartToken(value, "simple")) {
return Object.class;
}
// numeric is valid
boolean numeric = true;
for (char ch : value.toCharArray()) {
if (!Character.isDigit(ch)) {
numeric = false;
break;
}
}
if (numeric) {
return Number.class;
}
// not valid
return null;
}
/**
* Determines if the given value is valid according to the supported
* values by the bean component.
*
* @param value the value
* @return true if valid, false otherwise
*/
public static boolean isValidParameterValue(String value) {
if (ObjectHelper.isEmpty(value)) {
// empty value is valid
return true;
}
return getValidParameterType(value) != null;
}
/**
* Determines if the given parameter type is assignable to the expected type.
*
* This implementation will check if the given parameter type matches the expected type as class using either
*
* - FQN class name - com.foo.MyOrder
* - Simple class name - MyOrder
*
* If the given parameter type is not a class, then null is returned
*
* @param resolver the class resolver
* @param parameterType the parameter type as a String, can be a FQN or a simple name of the class
* @param expectedType the expected type
* @return null if parameter type is not a class, true if parameter type is assignable, false if not assignable
*/
public static Boolean isAssignableToExpectedType(ClassResolver resolver, String parameterType, Class> expectedType) {
// if its a class, then it should be assignable
Class> parameterClass = resolver.resolveClass(parameterType);
if (parameterClass == null && parameterType.equals(expectedType.getSimpleName())) {
// it was not the FQN class name, but the simple name instead, which matched
return true;
}
// not a class so return null
if (parameterClass == null) {
return null;
}
// if there was a class, then it must be assignable to match
return parameterClass.isAssignableFrom(expectedType);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy