From cf2d0c80a0a2acab68d690899bed58ef2aaa6c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Walter?= <juergen.walter@uni-wuerzburg.de> Date: Wed, 25 Apr 2018 19:34:43 +0200 Subject: [PATCH] Improved parsing of method signatures --- .../filter/ClassAndInterfaceFilter.java | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/ClassAndInterfaceFilter.java b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/ClassAndInterfaceFilter.java index 0295c50..89b6c3c 100644 --- a/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/ClassAndInterfaceFilter.java +++ b/tools.descartes.dql.connector.kieker/src/tools/descartes/dql/connector/kieker/filter/ClassAndInterfaceFilter.java @@ -38,8 +38,6 @@ public class ClassAndInterfaceFilter extends AbstractFilterPlugin { super(configuration, projectContext); } - - @InputPort( name = ClassAndInterfaceFilter.INPUT_PORT_NAME, description = "Extract class-information from monitoring record", @@ -55,39 +53,40 @@ public class ClassAndInterfaceFilter extends AbstractFilterPlugin { final String signature = opExRecord.getOperationSignature(); final long exTime = opExRecord.getTout()-opExRecord.getTin(); - final String classPattern = "[\\p{Graph}]+((\\.)(\\w)*[<(].*[>)])";//String-pattern to extract the component information final String interfacePattern = "((\\.)(\\w)*[<(].*[>)])";//String-pattern to extract the component information final String requestID = opExRecord.getSessionId(); - // final long traceID = opExRecord.getTraceId(); - // final long eoi = opExRecord.getEoi(); - // final long ess = opExRecord.getEss(); - - String className = null; String interfaceName = null; try { - String[] redundantInfo=signature.split(classPattern); - - //(redundantInfo + classAndInterfaceString) - redundantInfo = classAndInterfaceString - String classAndInterfaceString = signature; - if (redundantInfo.length > 0){ - classAndInterfaceString = signature.substring(redundantInfo[0].length()); - } - + //remove return type + visibility from method signature string + String classAndInterfaceString = signature;//split("(\\s)*")[2]; + classAndInterfaceString = classAndInterfaceString.replace("transient", ""); + classAndInterfaceString = classAndInterfaceString.replace("public", ""); + classAndInterfaceString = classAndInterfaceString.replace("private", ""); + classAndInterfaceString = classAndInterfaceString.replace("protected", ""); + classAndInterfaceString = classAndInterfaceString.replace("synchronized", ""); + classAndInterfaceString = classAndInterfaceString.replace("static", ""); + classAndInterfaceString = classAndInterfaceString.trim(); + classAndInterfaceString = classAndInterfaceString.substring(classAndInterfaceString.indexOf(" ")+1); + classAndInterfaceString = classAndInterfaceString.replaceAll("\\$(\\d)*", ""); + classAndInterfaceString = classAndInterfaceString.trim(); + //extraction of the class information String[] componentSeparatedByNonWordChar = classAndInterfaceString.split(interfacePattern); className = componentSeparatedByNonWordChar[0].trim(); //extraction of the interface information - interfaceName = classAndInterfaceString.substring(className.length()+1).trim(); + if(classAndInterfaceString.length() > className.length()) { + interfaceName = classAndInterfaceString.substring(className.length()+1).trim(); + }else { + log.error("EEEEE "+ classAndInterfaceString); + log.error("EEEEE "+ className); + } } catch (Exception e) { - e.printStackTrace(); - /* - * TODO - */ + log.error("Errro parsing signature", e); } long classID = putIntoClassMap(timestamp,hostName, className, requestID); -- GitLab