/**
* 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.impl;
import java.lang.reflect.Field;
import org.apache.camel.spi.UriParam;
import org.apache.camel.util.CollectionStringBuffer;
import org.apache.camel.util.JsonSchemaHelper;
import static org.apache.camel.util.StringQuoteHelper.doubleQuote;
/**
* Represents the configuration of a URI query parameter value to allow type conversion
* and better validation of the configuration of URIs and Endpoints
*/
@Deprecated
public class ParameterConfiguration {
private final String name;
private final Class<?> parameterType;
public ParameterConfiguration(String name, Class<?> parameterType) {
this.name = name;
this.parameterType = parameterType;
}
@Override
public String toString() {
return "ParameterConfiguration[" + name + " on " + parameterType + "]";
}
/**
* Returns the name of the parameter value
*/
public String getName() {
return name;
}
/**
* Returns the type of the parameter value
*/
public Class<?> getParameterType() {
return parameterType;
}
/**
* Factory method to create a new ParameterConfiguration from a field
*/
public static ParameterConfiguration newInstance(String name, Field field, UriParam uriParam) {
return new AnnotatedParameterConfiguration(name, field.getType(), field);
}
/**
* Returns the JSON format of this parameter configuration
*/
public String toJson() {
if (parameterType.isEnum()) {
String typeName = "string";
CollectionStringBuffer sb = new CollectionStringBuffer();
for (Object value : parameterType.getEnumConstants()) {
sb.append(doubleQuote(value.toString()));
}
return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
+ ", \"javaType\": \"" + parameterType.getCanonicalName() + "\""
+ ", \"enum\": [ " + sb.toString() + " ] }";
} else if (parameterType.isArray()) {
String typeName = "array";
return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
+ ", \"javaType\": \"" + parameterType.getCanonicalName() + "\" }";
} else {
String typeName = JsonSchemaHelper.getType(parameterType);
return doubleQuote(name) + ": { \"type\": " + doubleQuote(typeName)
+ ", \"javaType\": \"" + parameterType.getCanonicalName() + "\" }";
}
}
}