Search in sources :

Example 1 with Param

use of org.glassfish.api.Param in project Payara by payara.

the class CachedCommandModel method computeETag.

public static String computeETag(CommandModel cm) {
    if (cm instanceof CachedCommandModel) {
        String result = ((CachedCommandModel) cm).eTag;
        if (result != null && !result.isEmpty()) {
            return ((CachedCommandModel) cm).eTag;
        }
    }
    StringBuilder tag = new StringBuilder();
    tag.append(cm.getCommandName());
    if (cm.isManagedJob()) {
        tag.append('m');
    }
    if (cm.unknownOptionsAreOperands()) {
        tag.append('o');
    }
    if (cm.getParameters() != null) {
        // sort
        SortedSet<ParamModel> tree = new TreeSet<ParamModel>(new Comparator<ParamModel>() {

            @Override
            public int compare(ParamModel o1, ParamModel o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });
        for (ParamModel paramModel : cm.getParameters()) {
            tree.add(paramModel);
        }
        // print
        for (ParamModel pm : tree) {
            if ("upload".equals(pm.getName())) {
                continue;
            }
            tag.append(pm.getName());
            if (pm.getClass() != null) {
                tag.append(pm.getClass().getCanonicalName());
            }
            Param param = pm.getParam();
            if (param.multiple()) {
                tag.append('M');
            }
            if (param.optional()) {
                tag.append('P');
            }
            if (param.primary()) {
                tag.append('1');
            }
            if (param.obsolete()) {
                tag.append('O');
            }
            if (param.shortName() != null && !param.shortName().isEmpty()) {
                tag.append(param.shortName());
            }
            if (param.alias() != null && !param.alias().isEmpty()) {
                tag.append(param.alias());
            }
            if (StringUtils.ok(param.defaultValue())) {
                tag.append(param.defaultValue());
                // TODO: removeit
                tag.append("A");
            }
        }
    }
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(tag.toString().getBytes("UTF-8"));
        return DatatypeConverter.printBase64Binary(md.digest());
    } catch (Exception ex) {
        return "v2" + tag.toString();
    }
}
Also used : TreeSet(java.util.TreeSet) Param(org.glassfish.api.Param) MessageDigest(java.security.MessageDigest)

Example 2 with Param

use of org.glassfish.api.Param in project Payara by payara.

the class CommandModelDataProvider method writeToStreamSimpleFormat.

/**
 * Super simple format possible because there can't be any problematic
 * symbol like EOL in attributes.
 *
 * @throws IOException
 */
public void writeToStreamSimpleFormat(CommandModel cm, OutputStream stream) throws IOException {
    if (cm == null) {
        return;
    }
    // @todo Java SE 7: Managed source
    BufferedWriter bw = null;
    OutputStreamWriter writer = null;
    try {
        writer = new OutputStreamWriter(stream, charset);
        bw = new BufferedWriter(writer);
        // command name
        String str = cm.getCommandName();
        if (str != null && !str.isEmpty()) {
            bw.write(ROOT_ELEMENT);
            bw.write(": ");
            bw.write(str);
            bw.newLine();
        }
        // ETag
        bw.write(ETAG_ELEMENT);
        bw.write(": ");
        bw.write(CachedCommandModel.computeETag(cm));
        bw.newLine();
        // unknown are operands
        if (cm.unknownOptionsAreOperands()) {
            bw.write(UNKNOWN_ARE_OPERANDS_ELEMENT);
            bw.write(": true");
            bw.newLine();
        }
        // CachedCommandModel specific staff
        if (cm instanceof CachedCommandModel) {
            CachedCommandModel ccm = (CachedCommandModel) cm;
            // unknown are operands
            if (ccm.isAddedUploadOption()) {
                bw.write(ADDEDUPLOADOPTIONS_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // usage
            str = ccm.getUsage();
            if (str != null && !str.isEmpty()) {
                bw.write(USAGE_ELEMENT);
                bw.write(": ");
                bw.write(escapeEndLines(str));
                bw.newLine();
            }
        }
        // Parameters
        for (CommandModel.ParamModel paramModel : cm.getParameters()) {
            bw.newLine();
            // parameter / name
            bw.write(NAME_ELEMENT);
            bw.write(": ");
            bw.write(paramModel.getName());
            bw.newLine();
            // parameter / class
            if (paramModel.getType() != null) {
                bw.write(CLASS_ELEMENT);
                bw.write(": ");
                bw.write(paramModel.getType().getName());
                bw.newLine();
            }
            Param param = paramModel.getParam();
            // parameter / shortName
            str = param.shortName();
            if (str != null && !str.isEmpty()) {
                bw.write(SHORTNAME_ELEMENT);
                bw.write(": ");
                bw.write(str);
                bw.newLine();
            }
            // parameter / alias
            str = param.alias();
            if (str != null && !str.isEmpty()) {
                bw.write(ALIAS_ELEMENT);
                bw.write(": ");
                bw.write(str);
                bw.newLine();
            }
            // parameter / optional
            if (param.optional()) {
                bw.write(OPTIONAL_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // parameter / obsolete
            if (param.obsolete()) {
                bw.write(OBSOLETE_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // parameter / defaultValue
            str = param.defaultValue();
            if (str != null && !str.isEmpty()) {
                bw.write(DEFAULT_VALUE_ELEMENT);
                bw.write(": ");
                bw.write(str);
                bw.newLine();
            }
            // parameter / primary
            if (param.primary()) {
                bw.write(PRIMARY_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // parameter / multiple
            if (param.multiple()) {
                bw.write(MULTIPLE_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // parameter / password
            if (param.password()) {
                bw.write(PASSWORD_ELEMENT);
                bw.write(": true");
                bw.newLine();
            }
            // parameter / prompt
            if (paramModel instanceof ParamModelData) {
                str = ((ParamModelData) paramModel).getPrompt();
                if (str != null && !str.isEmpty()) {
                    bw.write(PROMPT_ELEMENT);
                    bw.write(": ");
                    bw.write(escapeEndLines(str));
                    bw.newLine();
                }
                str = ((ParamModelData) paramModel).getPromptAgain();
                if (str != null && !str.isEmpty()) {
                    bw.write(PROMPT_AGAIN_ELEMENT);
                    bw.write(": ");
                    bw.write(escapeEndLines(str));
                    bw.newLine();
                }
            }
        }
    } finally {
        try {
            bw.close();
        } catch (Exception ex) {
        }
        try {
            writer.close();
        } catch (Exception ex) {
        }
    }
}
Also used : Param(org.glassfish.api.Param) ParamModelData(com.sun.enterprise.admin.util.CommandModelData.ParamModelData) CachedCommandModel(com.sun.enterprise.admin.util.CachedCommandModel) CommandModel(org.glassfish.api.admin.CommandModel) CachedCommandModel(com.sun.enterprise.admin.util.CachedCommandModel)

Example 3 with Param

use of org.glassfish.api.Param in project Payara by payara.

the class ClientGenerator method processAttributes.

protected void processAttributes(ClientClassWriter writer, ConfigModel model, Set<String> processed) {
    Class clazz = model.getProxyType();
    for (Method method : clazz.getMethods()) {
        String methodName = method.getName();
        Attribute a = method.getAnnotation(Attribute.class);
        Param p = method.getAnnotation(Param.class);
        if ((a != null) || (p != null)) {
            String type = "String";
            if (a != null) {
                type = a.dataType().getName();
            }
            if (methodName.startsWith("get") || methodName.startsWith("set")) {
                methodName = methodName.substring(3);
            }
            String fieldName = Util.lowerCaseFirstLetter(methodName);
            if (processed.contains(fieldName)) {
                continue;
            }
            processed.add(fieldName);
            writer.generateGettersAndSetters(type, methodName, fieldName);
        }
    }
}
Also used : Attribute(org.jvnet.hk2.config.Attribute) Param(org.glassfish.api.Param) Method(java.lang.reflect.Method)

Example 4 with Param

use of org.glassfish.api.Param in project Payara by payara.

the class PythonClientClassWriter method generateCommandMethod.

@Override
public void generateCommandMethod(String methodName, String httpMethod, String resourcePath, CommandModel cm) {
    String parametersSignature = Util.getMethodParameterList(cm, true, false);
    Boolean needsMultiPart = parametersSignature.contains("java.io.File");
    String parameters = Util.getMethodParameterList(cm, false, false);
    if (!parameters.isEmpty()) {
        parameters = ", " + parameters;
    }
    StringBuilder merge = new StringBuilder();
    Collection<CommandModel.ParamModel> params = cm.getParameters();
    if ((params != null) && (!params.isEmpty())) {
        for (CommandModel.ParamModel model : params) {
            Param param = model.getParam();
            if (param.optional()) {
                continue;
            }
            String key = (!param.alias().isEmpty()) ? param.alias() : model.getName();
            String paramName = Util.eleminateHypen(model.getName());
            merge.append("        optional['").append(key).append("'] = _").append(paramName).append("\n");
        }
    }
    source.append(TMPL_COMMAND_METHOD.replace("COMMAND", methodName).replace("PARAMS", parameters).replace("MERGE", merge.toString()).replace("PATH", resourcePath).replace("METHOD", httpMethod).replace("MULTIPART", Util.upperCaseFirstLetter(needsMultiPart.toString())));
}
Also used : Param(org.glassfish.api.Param) CommandModel(org.glassfish.api.admin.CommandModel)

Example 5 with Param

use of org.glassfish.api.Param in project Payara by payara.

the class CommandModelStaxProvider method writeContentToStream.

@Override
protected void writeContentToStream(CommandModel proxy, StreamWriter wr) throws Exception {
    if (proxy == null) {
        return;
    }
    wr.writeStartDocument();
    wr.writeStartObject("command");
    wr.writeAttribute("@name", proxy.getCommandName());
    if (proxy.unknownOptionsAreOperands()) {
        wr.writeAttribute("@unknown-options-are-operands", true);
    }
    if (proxy.isManagedJob()) {
        wr.writeAttribute("@managed-job", true);
    }
    String usage = proxy.getUsageText();
    if (StringUtils.ok(usage)) {
        wr.writeAttribute("usage", usage);
    }
    // Options
    wr.writeStartArray("option");
    for (CommandModel.ParamModel p : proxy.getParameters()) {
        Param par = p.getParam();
        wr.writeStartObject("option");
        wr.writeAttribute("@name", p.getName());
        wr.writeAttribute("@type", simplifiedTypeOf(p));
        if (par.primary()) {
            wr.writeAttribute("@primary", true);
        }
        if (par.multiple()) {
            wr.writeAttribute("@multiple", true);
        }
        if (par.optional()) {
            wr.writeAttribute("@optional", true);
        }
        if (par.obsolete()) {
            wr.writeAttribute("@obsolete", true);
        }
        String str = par.shortName();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@short", str);
        }
        str = par.defaultValue();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@default", str);
        }
        str = par.acceptableValues();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@acceptable-values", str);
        }
        str = par.alias();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@alias", str);
        }
        str = p.getLocalizedDescription();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@description", str);
        }
        str = p.getLocalizedPrompt();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@prompt", str);
        }
        str = p.getLocalizedPromptAgain();
        if (StringUtils.ok(str)) {
            wr.writeAttribute("@prompt-again", str);
        }
        wr.writeEndObject();
    }
    wr.writeEndArray();
    // </command>
    wr.writeEndObject();
    wr.writeEndDocument();
}
Also used : Param(org.glassfish.api.Param) CommandModel(org.glassfish.api.admin.CommandModel)

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