From d22b9c2baf28fb55aba90f0f135121bc37618f6e Mon Sep 17 00:00:00 2001 From: 4ra1n <2023503307@qq.com> Date: Sat, 18 Feb 2023 12:37:53 +0800 Subject: [PATCH] #86 --- .../adapter/AllMethodMouseAdapter.java | 5 +++-- .../analyzer/adapter/ChanMouseAdapter.java | 2 +- .../adapter/ControllerMouseAdapter.java | 1 + .../analyzer/adapter/ListMouseAdapter.java | 2 +- .../analyzer/adapter/MappingMouseAdapter.java | 5 +++-- .../jar/analyzer/core/MethodReference.java | 19 ++++++++++++++++-- .../jar/analyzer/form/JarAnalyzerForm.java | 4 +++- .../chaitin/jar/analyzer/model/ClassObj.java | 4 ++-- .../jar/analyzer/model/MappingObj.java | 20 +++++++++++++++++++ .../chaitin/jar/analyzer/model/MethodObj.java | 7 +++---- .../chaitin/jar/analyzer/model/ResObj.java | 15 +++++++------- 11 files changed, 61 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/chaitin/jar/analyzer/adapter/AllMethodMouseAdapter.java b/src/main/java/com/chaitin/jar/analyzer/adapter/AllMethodMouseAdapter.java index 08f294a..cd26e70 100644 --- a/src/main/java/com/chaitin/jar/analyzer/adapter/AllMethodMouseAdapter.java +++ b/src/main/java/com/chaitin/jar/analyzer/adapter/AllMethodMouseAdapter.java @@ -40,6 +40,7 @@ public void mousePressed(MouseEvent evt) { } } + @SuppressWarnings("all") public void mouseClicked(MouseEvent evt) { JList list = (JList) evt.getSource(); if (evt.getClickCount() == 1) { @@ -48,7 +49,7 @@ public void mouseClicked(MouseEvent evt) { int index = l.locationToIndex(evt.getPoint()); if (index > -1) { MethodObj res = (MethodObj) m.getElementAt(index); - l.setToolTipText(res.getMethod().getDescStd()); + l.setToolTipText(res.getMethod().getDescStd(res)); ToolTipManager.sharedInstance().mouseMoved( new MouseEvent(l, 0, 0, 0, @@ -265,7 +266,7 @@ public void mouseClicked(MouseEvent evt) { JarAnalyzerForm.curRes = new ResObj(res.getMethod(), res.getClassName()); form.currentLabel.setText(JarAnalyzerForm.curRes.toString()); - form.currentLabel.setToolTipText(res.getMethod().getDescStd()); + form.currentLabel.setToolTipText(res.getMethod().getDescStd(JarAnalyzerForm.curRes)); form.sourceList.setModel(sourceDataList); form.callList.setModel(callDataList); diff --git a/src/main/java/com/chaitin/jar/analyzer/adapter/ChanMouseAdapter.java b/src/main/java/com/chaitin/jar/analyzer/adapter/ChanMouseAdapter.java index e602ef6..2436a88 100644 --- a/src/main/java/com/chaitin/jar/analyzer/adapter/ChanMouseAdapter.java +++ b/src/main/java/com/chaitin/jar/analyzer/adapter/ChanMouseAdapter.java @@ -35,7 +35,7 @@ public void mouseClicked(MouseEvent evt) { int index = l.locationToIndex(evt.getPoint()); if (index > -1) { ResObj res = (ResObj) m.getElementAt(index); - l.setToolTipText(res.getMethod().getDescStd()); + l.setToolTipText(res.getMethod().getDescStd(res)); ToolTipManager.sharedInstance().mouseMoved( new MouseEvent(l, 0, 0, 0, diff --git a/src/main/java/com/chaitin/jar/analyzer/adapter/ControllerMouseAdapter.java b/src/main/java/com/chaitin/jar/analyzer/adapter/ControllerMouseAdapter.java index 0e13cbe..4f8ded5 100644 --- a/src/main/java/com/chaitin/jar/analyzer/adapter/ControllerMouseAdapter.java +++ b/src/main/java/com/chaitin/jar/analyzer/adapter/ControllerMouseAdapter.java @@ -29,6 +29,7 @@ public void mouseClicked(MouseEvent evt) { int index = l.locationToIndex(evt.getPoint()); if (index > -1) { ClassObj res = (ClassObj) m.getElementAt(index); + l.setToolTipText(res.getJarFileName()); for (SpringController controller : JarAnalyzerForm.controllers) { if (controller.getClassName().equals(res.getHandle())) { DefaultListModel mappingDataList = new DefaultListModel<>(); diff --git a/src/main/java/com/chaitin/jar/analyzer/adapter/ListMouseAdapter.java b/src/main/java/com/chaitin/jar/analyzer/adapter/ListMouseAdapter.java index 28ee0ae..47aad7a 100644 --- a/src/main/java/com/chaitin/jar/analyzer/adapter/ListMouseAdapter.java +++ b/src/main/java/com/chaitin/jar/analyzer/adapter/ListMouseAdapter.java @@ -33,7 +33,7 @@ public void mouseClicked(MouseEvent evt) { int index = l.locationToIndex(evt.getPoint()); if (index > -1) { ResObj res = (ResObj) m.getElementAt(index); - l.setToolTipText(res.getMethod().getDescStd()); + l.setToolTipText(res.getMethod().getDescStd(res)); ToolTipManager.sharedInstance().mouseMoved( new MouseEvent(l, 0, 0, 0, diff --git a/src/main/java/com/chaitin/jar/analyzer/adapter/MappingMouseAdapter.java b/src/main/java/com/chaitin/jar/analyzer/adapter/MappingMouseAdapter.java index 47e2e4e..ee71586 100644 --- a/src/main/java/com/chaitin/jar/analyzer/adapter/MappingMouseAdapter.java +++ b/src/main/java/com/chaitin/jar/analyzer/adapter/MappingMouseAdapter.java @@ -41,6 +41,7 @@ public void mousePressed(MouseEvent evt) { } } + @SuppressWarnings("all") public void mouseClicked(MouseEvent evt) { JList list = (JList) evt.getSource(); if (evt.getClickCount() == 1) { @@ -49,7 +50,7 @@ public void mouseClicked(MouseEvent evt) { int index = l.locationToIndex(evt.getPoint()); if (index > -1) { MappingObj res = (MappingObj) m.getElementAt(index); - l.setToolTipText(res.getResObj().getMethod().getDescStd()); + l.setToolTipText(res.getResObj().getMethod().getDescStd(res)); ToolTipManager.sharedInstance().mouseMoved( new MouseEvent(l, 0, 0, 0, @@ -265,7 +266,7 @@ public void mouseClicked(MouseEvent evt) { JarAnalyzerForm.curRes = res.getResObj(); form.currentLabel.setText(res.toString()); - form.currentLabel.setToolTipText(res.getResObj().getMethod().getDescStd()); + form.currentLabel.setToolTipText(res.getResObj().getMethod().getDescStd(JarAnalyzerForm.curRes)); form.sourceList.setModel(sourceDataList); form.callList.setModel(callDataList); diff --git a/src/main/java/com/chaitin/jar/analyzer/core/MethodReference.java b/src/main/java/com/chaitin/jar/analyzer/core/MethodReference.java index 65d8880..a6c9bf0 100644 --- a/src/main/java/com/chaitin/jar/analyzer/core/MethodReference.java +++ b/src/main/java/com/chaitin/jar/analyzer/core/MethodReference.java @@ -1,5 +1,9 @@ package com.chaitin.jar.analyzer.core; +import com.chaitin.jar.analyzer.model.ClassObj; +import com.chaitin.jar.analyzer.model.MappingObj; +import com.chaitin.jar.analyzer.model.MethodObj; +import com.chaitin.jar.analyzer.model.ResObj; import org.objectweb.asm.Type; import java.util.Objects; @@ -69,7 +73,7 @@ public String getDesc() { return desc; } - public String getDescStd() { + public String getDescStd(Object res) { Type methodType = Type.getMethodType(desc); StringBuilder sb = new StringBuilder(); @@ -87,7 +91,18 @@ public String getDescStd() { .append(argTypes[ix].getClassName()); sb.append("\n"); } - sb.deleteCharAt(sb.length() - 1); + if(res instanceof ResObj){ + sb.append(((ResObj)res).getJarFileName()); + } + if(res instanceof MethodObj){ + sb.append(((MethodObj)res).getJarFileName()); + } + if (res instanceof ClassObj){ + sb.append(((ClassObj)res).getJarFileName()); + } + if (res instanceof MappingObj){ + sb.append(((MappingObj)res).getJarFileName()); + } return sb.toString(); } diff --git a/src/main/java/com/chaitin/jar/analyzer/form/JarAnalyzerForm.java b/src/main/java/com/chaitin/jar/analyzer/form/JarAnalyzerForm.java index ae339bb..f328f6a 100644 --- a/src/main/java/com/chaitin/jar/analyzer/form/JarAnalyzerForm.java +++ b/src/main/java/com/chaitin/jar/analyzer/form/JarAnalyzerForm.java @@ -505,9 +505,11 @@ public String getDescription() { public void coreClass(MouseEvent evt, JList list) { int index = list.locationToIndex(evt.getPoint()); ClassObj res = (ClassObj) list.getModel().getElementAt(index); + list.setToolTipText(res.getJarFileName()); coreClassInternal(res); } + @SuppressWarnings("all") private void coreClassInternal(ClassObj res) { String className = res.getClassName(); String tempPath = className.replace("/", File.separator); @@ -894,7 +896,7 @@ public void core(MouseEvent evt, JList list) { curRes = res; currentLabel.setText(res.toString()); - currentLabel.setToolTipText(res.getMethod().getDescStd()); + currentLabel.setToolTipText(res.getMethod().getDescStd(curRes)); sourceList.setModel(sourceDataList); callList.setModel(callDataList); diff --git a/src/main/java/com/chaitin/jar/analyzer/model/ClassObj.java b/src/main/java/com/chaitin/jar/analyzer/model/ClassObj.java index 32b5ed7..adda402 100644 --- a/src/main/java/com/chaitin/jar/analyzer/model/ClassObj.java +++ b/src/main/java/com/chaitin/jar/analyzer/model/ClassObj.java @@ -22,7 +22,7 @@ public String getClassName() { return this.className; } - private String getJarFileName() { + public String getJarFileName() { for (ClassFile cf : JarAnalyzerForm.classFileList) { String temp = this.className.replace(".", "/"); temp += ".class"; @@ -42,6 +42,6 @@ private String getJarFileName() { @Override public String toString() { - return this.className + " (" + getJarFileName() + ")"; + return this.className; } } diff --git a/src/main/java/com/chaitin/jar/analyzer/model/MappingObj.java b/src/main/java/com/chaitin/jar/analyzer/model/MappingObj.java index 188e409..44cb3a4 100644 --- a/src/main/java/com/chaitin/jar/analyzer/model/MappingObj.java +++ b/src/main/java/com/chaitin/jar/analyzer/model/MappingObj.java @@ -1,5 +1,7 @@ package com.chaitin.jar.analyzer.model; +import com.chaitin.jar.analyzer.core.ClassFile; +import com.chaitin.jar.analyzer.form.JarAnalyzerForm; import com.chaitin.jar.analyzer.spring.SpringMapping; public class MappingObj { @@ -22,6 +24,24 @@ public void setResObj(ResObj resObj) { this.resObj = resObj; } + public String getJarFileName() { + for (ClassFile cf : JarAnalyzerForm.classFileList) { + String temp = this.resObj.getClassName().replace(".", "/"); + temp += ".class"; + String target = cf.getClassName(); + if (target.contains("BOOT-INF")) { + target = target.substring(17); + } + if (target.contains("WEB-INF")) { + target = target.substring(16); + } + if (target.equals(temp)) { + return cf.jarName; + } + } + return "unknown"; + } + @Override public String toString() { String outputFormat = " method: %s \t path: %s"; diff --git a/src/main/java/com/chaitin/jar/analyzer/model/MethodObj.java b/src/main/java/com/chaitin/jar/analyzer/model/MethodObj.java index 9652cc5..6e7ca7c 100644 --- a/src/main/java/com/chaitin/jar/analyzer/model/MethodObj.java +++ b/src/main/java/com/chaitin/jar/analyzer/model/MethodObj.java @@ -38,7 +38,7 @@ private String getNumFromDesc() { return sb.toString(); } - private String getJarFileName() { + public String getJarFileName() { for (ClassFile cf : JarAnalyzerForm.classFileList) { String temp = this.className.replace(".", "/"); temp += ".class"; @@ -58,10 +58,9 @@ private String getJarFileName() { @Override public String toString() { - String outputFormat = "%s %s (%s)"; + String outputFormat = "%s %s"; return String.format(outputFormat, method.getName(), - getNumFromDesc(), - getJarFileName()); + getNumFromDesc()); } } diff --git a/src/main/java/com/chaitin/jar/analyzer/model/ResObj.java b/src/main/java/com/chaitin/jar/analyzer/model/ResObj.java index 857847f..72dd98b 100644 --- a/src/main/java/com/chaitin/jar/analyzer/model/ResObj.java +++ b/src/main/java/com/chaitin/jar/analyzer/model/ResObj.java @@ -27,16 +27,16 @@ private int getNumFromDesc() { return methodType.getArgumentTypes().length; } - private String getJarFileName() { + public String getJarFileName() { for (ClassFile cf : JarAnalyzerForm.classFileList) { String temp = this.className.replace(".", "/"); temp += ".class"; String target = cf.getClassName(); - if(target.contains("BOOT-INF")){ - target =target.substring(17); + if (target.contains("BOOT-INF")) { + target = target.substring(17); } - if(target.contains("WEB-INF")){ - target =target.substring(16); + if (target.contains("WEB-INF")) { + target = target.substring(16); } if (target.equals(temp)) { return cf.jarName; @@ -47,11 +47,10 @@ private String getJarFileName() { @Override public String toString() { - String outputFormat = "%s %s (params:%d) (%s)"; + String outputFormat = "%s %s (params:%d)"; return String.format(outputFormat, className, method.getName(), - getNumFromDesc(), - getJarFileName()); + getNumFromDesc()); } }