void addParameter()

in src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java [71:96]


    void addParameter(RequestParameter parameter, boolean prependNew) {

        // check number of parameters
        if (this.requestParameters.size() == maxParameters) {
            // TODO: how to handle this situation ?? just ignore or throw or what ??
            LoggerFactory.getLogger(Util.class)
                    .warn("Too many name/value pairs, stopped processing after " + maxParameters + " entries");
            return;
        }

        // map of parameters
        final String name = parameter.getName();
        RequestParameter[] current = this.get(name);
        if (current == null) {
            super.put(name, new RequestParameter[] {parameter});
        } else {
            RequestParameter[] ppn = new RequestParameter[current.length + 1];
            System.arraycopy(current, 0, ppn, prependNew ? 1 : 0, current.length);
            ppn[prependNew ? 0 : current.length] = parameter;

            super.put(name, ppn);
        }

        // list of parameters
        this.requestParameters.add(parameter);
    }