Search in sources :

Example 16 with Param

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;
}
Also used : Field(java.lang.reflect.Field) Param(org.glassfish.api.Param)

Example 17 with Param

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;
}
Also used : Param(org.glassfish.api.Param) Properties(java.util.Properties) File(java.io.File)

Example 18 with Param

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;
}
Also used : Param(org.glassfish.api.Param) Properties(java.util.Properties) File(java.io.File)

Example 19 with Param

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();
    }
}
Also used : AnnotatedElement(java.lang.reflect.AnnotatedElement) Param(org.glassfish.api.Param) ParameterMap(org.glassfish.api.admin.ParameterMap) Test(org.junit.Test)

Example 20 with Param

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);
        }
    }
}
Also used : ModelBinding(org.glassfish.api.admin.config.ModelBinding) Attribute(org.jvnet.hk2.config.Attribute) Param(org.glassfish.api.Param) Method(java.lang.reflect.Method)

Aggregations

Param (org.glassfish.api.Param)24 CommandModel (org.glassfish.api.admin.CommandModel)5 MultiException (org.glassfish.hk2.api.MultiException)4 Field (java.lang.reflect.Field)3 Method (java.lang.reflect.Method)3 Properties (java.util.Properties)3 UnacceptableValueException (org.glassfish.common.util.admin.UnacceptableValueException)3 Attribute (org.jvnet.hk2.config.Attribute)3 UnsatisfiedDependencyException (org.jvnet.hk2.config.UnsatisfiedDependencyException)3 File (java.io.File)2 AnnotatedElement (java.lang.reflect.AnnotatedElement)2 ParameterMetaData (org.glassfish.admin.rest.provider.ParameterMetaData)2 ActionReport (org.glassfish.api.ActionReport)2 CachedCommandModel (com.sun.enterprise.admin.util.CachedCommandModel)1 ParamModelData (com.sun.enterprise.admin.util.CommandModelData.ParamModelData)1 Cluster (com.sun.enterprise.config.serverbeans.Cluster)1 BeanInfo (java.beans.BeanInfo)1 IntrospectionException (java.beans.IntrospectionException)1 PropertyDescriptor (java.beans.PropertyDescriptor)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1