private static final String parseMethodName(final String methodName) throws InvalidPatternException { try { return PatternParser.parseIdentifier(methodName); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid method name.", ex); } }
private static final String parseModifierConstraintList(final String[] modifierList) throws InvalidPatternException { if (modifierList == null) { return "((public|private|protected)\\s)?(abstract\\s)?(static\\s)?(final\\s)?(synchronized\\s)?(native\\s)?"; } else { return PatternParser.parseNonEmptyModifierContraintList(modifierList); } }
/** * Creates a new pattern entry using the given parameters. * * @param strPattern * The pattern string. * @param activated * Determines the activated state. * * @throws InvalidPatternException * If the given pattern is invalid. */ public PatternEntry(final String strPattern, final boolean activated) throws InvalidPatternException { this.pattern = PatternParser.parseToPattern(strPattern); this.strPattern = strPattern; this.activated = activated; }
start = 2; } else if (tokens[0].length() == 0) { throw new InvalidPatternException("Invalid fully qualified type: leading dot"); } else { try { sb.append(PatternParser.parseIdentifier(tokens[i])); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid fully qualified type.", ex); sb.append(PatternParser.parseIdentifier(tokens[length - 1])); } catch (final InvalidPatternException ex) { final InvalidPatternException newEx = new InvalidPatternException("Invalid fully qualified type."); throw (InvalidPatternException) newEx.initCause(ex);
private boolean addPattern(final String strPattern, final boolean activated) { if (!this.enabled) { LOGGER.warn("Adapative Monitoring is disabled!"); return false; } synchronized (this) { // we must always clear the cache! this.signatureCache.clear(); final Pattern pattern; try { pattern = PatternParser.parseToPattern(strPattern); } catch (final InvalidPatternException ex) { LOGGER.error("'{}' is not a valid pattern.", strPattern, ex); return false; } this.patterns.add(new PatternEntry(strPattern, pattern, activated)); if (this.configFileUpdate) { this.updatePatternFile(); } } return true; }
private static final String parseRetType(final String retType) throws InvalidPatternException { if ("new".equals(retType)) { return ""; } else { try { return PatternParser.parseFQType(retType) + "\\s"; } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid return type.", ex); } } }
private static final String parseFQType(final String fqType) throws InvalidPatternException { if (fqType.contains("...") || fqType.endsWith(".") || (fqType.length() == 0)) { throw new InvalidPatternException("Invalid fully qualified type."); } final String[] tokens = fqType.split("\\."); if (tokens.length == 1) { try { return PatternParser.parseIdentifier(fqType); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid fully qualified type.", ex); } } else { return PatternParser.parseFQTypeTokenized(tokens); } }
private static final String parseMultipleParameters(final String[] paramList) throws InvalidPatternException { final StringBuilder sb = new StringBuilder(255); final int length = paramList.length; int start = 1; if ("..".equals(paramList[0])) { sb.append("(((\\s)?" + FULLY_QUALFIED_NAME + "(\\s)?,)*"); if (length > 1) { start = 2; PatternParser.createParameterRegex(sb, paramList[1]); } } else if ("*".equals(paramList[0])) { sb.append("(\\s)?(\\p{javaJavaIdentifierPart})+(\\s)?"); } else if (paramList[0].length() == 0) { throw new InvalidPatternException("Invalid parameter list."); } else { try { sb.append("(\\s)?").append(PatternParser.parseFQType(paramList[0])).append("(\\s)?"); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid parameter list.", ex); } } for (int i = start; i < length; i++) { PatternParser.createParameterRegex(sb, paramList[i]); } return sb.toString(); }
private static String parseThrowsPattern(final String throwsPattern) throws InvalidPatternException { if (null == throwsPattern) { return ""; } else { final String trimThrowsPattern = throwsPattern.trim(); if (!trimThrowsPattern.startsWith("throws")) { throw new InvalidPatternException("Invalid throws pattern."); } final String params = trimThrowsPattern.replaceFirst("throws(\\s+)", ""); final String[] paramList = params.split(","); if ((paramList.length == 1) && "..".equals(paramList[0])) { return "(\\sthrows\\s.*)?"; } try { return "\\sthrows\\s".concat(PatternParser.parseParameterList(paramList)); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid throws pattern.", ex); } } } }
private static void onSixModifiers(final String[] modifierList, final StringBuilder sb) throws InvalidPatternException { PatternParser.appendScope(sb, modifierList[0], true); if (ABSTRACT.equals(modifierList[1])) { sb.append("abstract\\s"); } else if (!NON_ABSTRACT.equals(modifierList[1])) { throw new InvalidPatternException("Invalid modifier."); } if (STATIC.equals(modifierList[2])) { sb.append("static\\s"); } else if (!NON_STATIC.equals(modifierList[2])) { throw new InvalidPatternException("Invalid modifier."); } if (FINAL.equals(modifierList[3])) { sb.append("final\\s"); } else if (!NON_FINAL.equals(modifierList[3])) { throw new InvalidPatternException("Invalid modifier."); } if (SYNCHRONIZED.equals(modifierList[4])) { sb.append("synchronized\\s"); } else if (!NON_SYNCHRONIZED.equals(modifierList[4])) { throw new InvalidPatternException("Invalid modifier."); } PatternParser.checkNativeFail(sb, modifierList[5]); }
private static void checkNativeFail(final StringBuilder sb, final String modifier) throws InvalidPatternException { if (NATIVE.equals(modifier)) { sb.append("native\\s"); } else if (!NON_NATIVE.equals(modifier)) { throw new InvalidPatternException("Invalid modifier."); } }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMThreadsSignature())) { return new IMonitoringRecord[] {}; } final ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); return new IMonitoringRecord[] { new ThreadsStatusRecord(timestamp, hostname, vmName, threadBean.getThreadCount(), threadBean.getDaemonThreadCount(), threadBean.getPeakThreadCount(), threadBean.getTotalStartedThreadCount()), }; }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMCompilationSignature())) { return new IMonitoringRecord[] {}; } final CompilationMXBean compilationBean = ManagementFactory.getCompilationMXBean(); return new IMonitoringRecord[] { new CompilationRecord(timestamp, hostname, vmName, compilationBean.getName(), compilationBean.getTotalCompilationTime()), }; } }
/** * Parse parameter list. * * @param paramList * array of parameters, perfectly trimmed * @return * @throws InvalidPatternException */ private static final String parseParameterList(final String[] paramList) throws InvalidPatternException { if (paramList.length == 1) { if (paramList[0].length() == 0) { return ""; } else if ("..".equals(paramList[0])) { return ".*"; } } return PatternParser.parseMultipleParameters(paramList); }
private boolean addPattern(final String strPattern, final boolean activated) { if (!this.enabled) { LOG.warn("Adapative Monitoring is disabled!"); return false; } synchronized (this) { // we must always clear the cache! this.signatureCache.clear(); final Pattern pattern; try { pattern = PatternParser.parseToPattern(strPattern); } catch (final InvalidPatternException ex) { LOG.error("'" + strPattern + "' is not a valid pattern.", ex); return false; } this.patternList.add(new PatternEntry(strPattern, pattern, activated)); if (this.configFileUpdate) { this.updatePatternFile(); } } return true; }
private static final String parseRetType(final String retType) throws InvalidPatternException { if ("new".equals(retType)) { return ""; } else { try { return PatternParser.parseFQType(retType) + "\\s"; } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid return type.", ex); } } }
private static final String parseMethodName(final String methodName) throws InvalidPatternException { try { return PatternParser.parseIdentifier(methodName); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid method name.", ex); } }
private static String parseThrowsPattern(final String throwsPattern) throws InvalidPatternException { if (null == throwsPattern) { return ""; } else { final String trimThrowsPattern = throwsPattern.trim(); if (!trimThrowsPattern.startsWith("throws")) { throw new InvalidPatternException("Invalid throws pattern."); } final String params = trimThrowsPattern.replaceFirst("throws(\\s+)", ""); final String[] paramList = params.split(","); if ((paramList.length == 1) && "..".equals(paramList[0])) { return "(\\sthrows\\s.*)?"; } try { return "\\sthrows\\s".concat(PatternParser.parseParameterList(paramList)); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid throws pattern.", ex); } } } }
/** * Creates a new pattern entry using the given parameters. * * @param strPattern * The pattern string. * @param activated * Determines the activated state. * * @throws InvalidPatternException * If the given pattern is invalid. */ public PatternEntry(final String strPattern, final boolean activated) throws InvalidPatternException { this.pattern = PatternParser.parseToPattern(strPattern); this.strPattern = strPattern; this.activated = activated; }
/** * Create the regular expression part for the given parameter. * * @param regexBuilder * used string builder * @param parameter * the parameter to be processed * @throws InvalidPatternException * on invalid pattern */ private static final void createParameterRegex(final StringBuilder regexBuilder, final String parameter) throws InvalidPatternException { if ("..".equals(parameter)) { regexBuilder.append("(,?((\\s)?" + FULLY_QUALFIED_NAME + "(\\s)?)*"); } else if ("*".equals(parameter)) { regexBuilder.append(",?(\\s)?" + SIMPLE_NAME + "(\\s)?"); } else if (parameter.length() == 0) { throw new InvalidPatternException("Invalid parameter list."); } else { try { regexBuilder.append(",?(\\s)?"); regexBuilder.append(PatternParser.parseFQType(parameter)); regexBuilder.append("(\\s)?"); } catch (final InvalidPatternException ex) { throw new InvalidPatternException("Invalid parameter list.", ex); } } }