use of org.glassfish.api.Param in project Payara by payara.
the class ListCommandDescriptorsCommand method reflect.
private CLICommand reflect(AdminCommand cmd) {
CLICommand cliCmd = new CLICommand(cmd);
for (Field f : cmd.getClass().getDeclaredFields()) {
final Param param = f.getAnnotation(Param.class);
if (param == null)
continue;
Option option = new Option(param, f);
cliCmd.options.add(option);
}
return cliCmd;
}
use of org.glassfish.api.Param in project Payara by payara.
the class MapInjectionResolver method convertStringToObject.
/**
* Convert the String parameter to the specified type.
* For example if type is Properties and the String
* value is: name1=value1:name2=value2:...
* then this api will convert the String to a Properties
* class with the values {name1=name2, name2=value2, ...}
*
* @param target the target field
* @param type the type of class to convert
* @param paramValStr the String value to convert
* @return Object
*/
// package-private, for testing
static Object convertStringToObject(AnnotatedElement target, Class type, String paramValStr) {
Param param = target.getAnnotation(Param.class);
Object paramValue = paramValStr;
if (type.isAssignableFrom(String.class)) {
paramValue = paramValStr;
} else if (type.isAssignableFrom(Properties.class)) {
paramValue = convertStringToProperties(paramValStr, param.separator());
} else if (type.isAssignableFrom(List.class)) {
paramValue = convertStringToList(paramValStr, param.separator());
} else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) {
String paramName = CommandModel.getParamName(param, target);
paramValue = convertStringToBoolean(paramName, paramValStr);
} else if (type.isAssignableFrom(Integer.class) || type.isAssignableFrom(int.class)) {
String paramName = CommandModel.getParamName(param, target);
paramValue = convertStringToInteger(paramName, paramValStr);
} else if (type.isAssignableFrom(String[].class)) {
paramValue = convertStringToStringArray(paramValStr, param.separator());
} else if (type.isAssignableFrom(File.class)) {
return new File(paramValStr);
}
return paramValue;
}
use of org.glassfish.api.Param in project Payara by payara.
the class MapInjectionResolver method convertListToObject.
/**
* Convert the List<String> parameter to the specified type.
*
* @param target the target field
* @param type the type of class to convert
* @param paramValList the List of String values to convert
* @return Object
*/
// package-private, for testing
public static Object convertListToObject(AnnotatedElement target, Class type, List<String> paramValList) {
Param param = target.getAnnotation(Param.class);
// does this parameter type allow multiple values?
if (!param.multiple()) {
if (paramValList.size() == 1)
return convertStringToObject(target, type, paramValList.get(0));
throw new UnacceptableValueException(localStrings.getLocalString("TooManyValues", "Invalid parameter: {0}. This parameter may not have " + "more than one value.", CommandModel.getParamName(param, target)));
}
Object paramValue = paramValList;
if (type.isAssignableFrom(List.class)) {
// the default case, nothing to do
} else if (type.isAssignableFrom(String[].class)) {
paramValue = paramValList.toArray(new String[paramValList.size()]);
} else if (type.isAssignableFrom(File[].class)) {
paramValue = convertListToFiles(paramValList);
} else if (type.isAssignableFrom(Properties.class)) {
paramValue = convertListToProperties(paramValList);
}
// XXX - could handle arrays of other types
return paramValue;
}
use of org.glassfish.api.Param in project Payara by payara.
the class MapInjectionResolverTest method getParamValueStringTest.
@Test
public void getParamValueStringTest() {
try {
DummyCommand dc = new DummyCommand();
Class<?> cl = dc.getClass();
AnnotatedElement ae = (AnnotatedElement) cl.getDeclaredField("foo");
Param param = ae.getAnnotation(Param.class);
ParameterMap params = new ParameterMap();
params.set("foo", "true");
String val = MapInjectionResolver.getParamValueString(params, param, ae, null);
assertEquals("val should be true", "true", val);
ae = (AnnotatedElement) cl.getDeclaredField("bar");
param = ae.getAnnotation(Param.class);
val = MapInjectionResolver.getParamValueString(params, param, ae, null);
assertEquals("val should be false", "false", val);
ae = (AnnotatedElement) cl.getDeclaredField("hello");
param = ae.getAnnotation(Param.class);
val = MapInjectionResolver.getParamValueString(params, param, ae, null);
assertEquals("val should be null", null, val);
ae = (AnnotatedElement) cl.getDeclaredField("dyn");
param = ae.getAnnotation(Param.class);
val = MapInjectionResolver.getParamValueString(params, param, ae, null);
assertEquals("val should be dynamic-default-value", "dynamic-default-value", val);
} catch (Exception ex) {
ex.printStackTrace();
}
}
use of org.glassfish.api.Param in project Payara by payara.
the class CommandModelImpl method add.
private static void add(Map<String, ParamModel> results, AnnotatedElement e, I18n parentI18n, LocalStringManager localStrings) {
Param param = e.getAnnotation(Param.class);
if (param != null) {
String defaultValue = param.defaultValue();
ModelBinding mb = e.getAnnotation(ModelBinding.class);
if (mb != null && defaultValue.isEmpty()) {
Method m = null;
try {
m = mb.type().getMethod(mb.getterMethodName());
} catch (NoSuchMethodException e1) {
// ignore.
}
if (m != null) {
Attribute attr = m.getAnnotation(Attribute.class);
if (attr != null) {
defaultValue = attr.defaultValue();
}
}
}
ParamModel model = new ParamModelImpl(e, defaultValue, parentI18n, localStrings);
if (!results.containsKey(model.getName())) {
results.put(model.getName(), model);
}
}
}
Aggregations