CPD Results

The following document contains the results of PMD's CPD 4.3.

Duplications

FileLine
org/apache/logging/log4j/core/config/JSONConfiguration.java84
org/apache/logging/log4j/core/config/XMLConfiguration.java104
            for (Map.Entry<String, String> entry : rootNode.getAttributes().entrySet()) {
                if ("status".equalsIgnoreCase(entry.getKey())) {
                    status = Level.toLevel(getSubst().replace(entry.getValue()), null);
                    if (status == null) {
                        status = Level.ERROR;
                        messages.add("Invalid status specified: " + entry.getValue() + ". Defaulting to ERROR");
                    }
                } else if ("dest".equalsIgnoreCase(entry.getKey())) {
                    String dest = entry.getValue();
                    if (dest != null) {
                        if (dest.equalsIgnoreCase("err")) {
                            stream = System.err;
                        } else {
                            try {
                                File destFile = FileUtils.fileFromURI(new URI(dest));
                                stream = new PrintStream(new FileOutputStream(destFile));
                            } catch (URISyntaxException use) {
                                System.err.println("Unable to write to " + dest + ". Writing to stdout");
                            }
                        }
                    }
                } else if ("verbose".equalsIgnoreCase(entry.getKey())) {
                    verbose = Boolean.parseBoolean(getSubst().replace(entry.getValue()));
                } else if ("packages".equalsIgnoreCase(entry.getKey())) {
FileLine
org/apache/logging/log4j/core/filter/MapFilter.java123
org/apache/logging/log4j/core/filter/StructuredDataFilter.java107
org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java116
            LOGGER.error("keys and values must be specified for the MapFilter");
            return null;
        }
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (KeyValuePair pair : pairs) {
            String key = pair.getKey();
            if (key == null) {
                LOGGER.error("A null key is not valid in MapFilter");
                continue;
            }
            String value = pair.getValue();
            if (value == null) {
                LOGGER.error("A null value for key " + key + " is not allowed in MapFilter");
                continue;
            }
            List<String> list = map.get(pair.getKey());
            if (list != null) {
                list.add(value);
            } else {
                list = new ArrayList<String>();
                list.add(value);
                map.put(pair.getKey(), list);
            }
        }
        if (map.size() == 0) {
            LOGGER.error("MapFilter is not configured with any valid key value pairs");
FileLine
org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java73
org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java74
    public static ExtendedThrowablePatternConverter newInstance(final String[] options) {
        String type = null;
        String[] array = options;
        if (options != null && options.length == 1 && options[0].length() > 0) {
            String[] opts = options[0].split(",", 2);
            String first = opts[0].trim();
            String filter;
            Scanner scanner = new Scanner(first);
            if (first.equalsIgnoreCase(FULL) || first.equalsIgnoreCase(SHORT) || scanner.hasNextInt()) {
                type = first;
                filter = opts[1].trim();
            } else {
                filter = options[0].trim();
            }
            array = new String[] {type, filter};
        }

        return new ExtendedThrowablePatternConverter(array);
FileLine
org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java49
org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java50
        super("ExtendedThrowable", "throwable", options);
        List<String> tempPackages = null;
        if (options != null && options.length > 1) {
            if (options[1].startsWith(FILTERS) && options[1].endsWith(")")) {
                String filterStr = options[1].substring(FILTERS.length(), options[1].length() - 1);
                String[] array = filterStr.split(",");
                if (array.length > 0) {
                    tempPackages = new ArrayList<String>(array.length);
                    for (String token : array) {
                        tempPackages.add(token.trim());
                    }
                }
            }
        }
        packages = tempPackages;
    }

    /**
     * Gets an instance of the class.
     *
     * @param options pattern options, may be null.  If first element is "short",
     *                only the first line of the throwable will be formatted.
     * @return instance of class.
     */
    public static ExtendedThrowablePatternConverter newInstance(final String[] options) {
FileLine
org/apache/logging/log4j/core/layout/HTMLLayout.java192
org/apache/logging/log4j/core/layout/XMLLayout.java217
    private void appendThrowableAsHTML(Throwable throwable, StringBuilder sbuf) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        try {
            throwable.printStackTrace(pw);
        } catch (RuntimeException ex) {
            // Ignore the exception.
        }
        pw.flush();
        LineNumberReader reader = new LineNumberReader(new StringReader(sw.toString()));
        ArrayList<String> lines = new ArrayList<String>();
        try {
          String line = reader.readLine();
          while (line != null) {
            lines.add(line);
            line = reader.readLine();
          }
        } catch (IOException ex) {
            if (ex instanceof InterruptedIOException) {
                Thread.currentThread().interrupt();
            }
            lines.add(ex.toString());
        }
FileLine
org/apache/logging/log4j/core/appender/rolling/helper/GZCompressAction.java57
org/apache/logging/log4j/core/appender/rolling/helper/ZipCompressAction.java58
    public GZCompressAction(final File source, final File destination, final boolean deleteSource) {
        if (source == null) {
            throw new NullPointerException("source");
        }

        if (destination == null) {
            throw new NullPointerException("destination");
        }

        this.source = source;
        this.destination = destination;
        this.deleteSource = deleteSource;
    }

    /**
     * Compress.
     *
     * @return true if successfully compressed.
     * @throws IOException on IO exception.
     */
    @Override
    public boolean execute() throws IOException {
        return execute(source, destination, deleteSource);
    }

    /**
     * Compress a file.
     *
     * @param source       file to compress, may not be null.
     * @param destination  compressed file, may not be null.
     * @param deleteSource if true, attempt to delete file on completion.  Failure to delete
     *                     does not cause an exception to be thrown or affect return value.
     * @return true if source file compressed.
     * @throws IOException on IO exception.
     */
    public static boolean execute(final File source, final File destination, final boolean deleteSource)
        throws IOException {
        if (source.exists()) {
            FileInputStream fis = new FileInputStream(source);
            FileOutputStream fos = new FileOutputStream(destination);
FileLine
org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java105
org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java106
            String trace = t.getExtendedStackTrace(packages);
            int len = toAppendTo.length();
            if (len > 0 && !Character.isWhitespace(toAppendTo.charAt(len - 1))) {
                toAppendTo.append(" ");
            }
            if (lines > 0) {
                StringBuilder sb = new StringBuilder();
                String[] array = trace.split("\n");
                for (int i = 0; i < lines; ++i) {
                    sb.append(array[i]).append("\n");
                }
                toAppendTo.append(sb.toString());

            } else {
                toAppendTo.append(trace);
            }
        }
    }
}
FileLine
org/apache/logging/log4j/core/filter/BurstFilter.java88
org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java57
org/apache/logging/log4j/core/filter/ThresholdFilter.java46
    }

    @Override
    public Result filter(Logger logger, Level level, Marker marker, String msg, Object[] params) {
        return filter(level);
    }

    @Override
    public Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t) {
        return filter(level);
    }

    @Override
    public Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t) {
        return filter(level);
    }

    @Override
    public Result filter(LogEvent event) {
        return filter(event.getLevel());
    }

    /**
     * Decide if we're going to log <code>event</code> based on whether the
     * maximum burst of log statements has been exceeded.
     *
     * @param level The log level.
     * @return The onMatch value if the filter passes, onMismatch otherwise.
     */
    private Result filter(Level level) {
FileLine
org/apache/logging/log4j/core/config/JSONConfiguration.java125
org/apache/logging/log4j/core/config/XMLConfiguration.java148
                StatusListener listener = statusIter.next();
                if (listener instanceof StatusConsoleListener) {
                    found = true;
                    ((StatusConsoleListener) listener).setLevel(status);
                    if (!verbose) {
                        ((StatusConsoleListener) listener).setFilters(VERBOSE_CLASSES);
                    }
                }
            }
            if (!found && status != Level.OFF) {
                StatusConsoleListener listener = new StatusConsoleListener(status, stream);
                if (!verbose) {
                    listener.setFilters(VERBOSE_CLASSES);
                }
                ((StatusLogger) LOGGER).registerListener(listener);
                for (String msg : messages) {
                    LOGGER.error(msg);
                }
            }