sc sm support -c option (#766)

pull/808/head
zhangjin 6 years ago committed by hengyunabc
parent c8e8374ed1
commit a2d27f91d4

@ -42,6 +42,7 @@ public class SearchClassCommand extends AnnotatedCommand {
private boolean isDetail = false; private boolean isDetail = false;
private boolean isField = false; private boolean isField = false;
private boolean isRegEx = false; private boolean isRegEx = false;
private String hashCode = null;
private Integer expand; private Integer expand;
@Argument(argName = "class-pattern", index = 0) @Argument(argName = "class-pattern", index = 0)
@ -74,12 +75,18 @@ public class SearchClassCommand extends AnnotatedCommand {
this.expand = expand; this.expand = expand;
} }
@Option(shortName = "c", longName = "classloader")
@Description("The hash code of the special class's classLoader")
public void setHashCode(String hashCode) {
this.hashCode = hashCode;
}
@Override @Override
public void process(CommandProcess process) { public void process(CommandProcess process) {
// TODO: null check // TODO: null check
RowAffect affect = new RowAffect(); RowAffect affect = new RowAffect();
Instrumentation inst = process.session().getInstrumentation(); Instrumentation inst = process.session().getInstrumentation();
List<Class<?>> matchedClasses = new ArrayList<Class<?>>(SearchUtils.searchClass(inst, classPattern, isRegEx)); List<Class<?>> matchedClasses = new ArrayList<Class<?>>(SearchUtils.searchClass(inst, classPattern, isRegEx, hashCode));
Collections.sort(matchedClasses, new Comparator<Class<?>>() { Collections.sort(matchedClasses, new Comparator<Class<?>>() {
@Override @Override
public int compare(Class<?> c1, Class<?> c2) { public int compare(Class<?> c1, Class<?> c2) {

@ -49,6 +49,7 @@ public class SearchMethodCommand extends AnnotatedCommand {
private String classPattern; private String classPattern;
private String methodPattern; private String methodPattern;
private String hashCode = null;
private boolean isDetail = false; private boolean isDetail = false;
private boolean isRegEx = false; private boolean isRegEx = false;
@ -76,13 +77,19 @@ public class SearchMethodCommand extends AnnotatedCommand {
isRegEx = regEx; isRegEx = regEx;
} }
@Option(shortName = "c", longName = "classloader")
@Description("The hash code of the special class's classLoader")
public void setHashCode(String hashCode) {
this.hashCode = hashCode;
}
@Override @Override
public void process(CommandProcess process) { public void process(CommandProcess process) {
RowAffect affect = new RowAffect(); RowAffect affect = new RowAffect();
Instrumentation inst = process.session().getInstrumentation(); Instrumentation inst = process.session().getInstrumentation();
Matcher<String> methodNameMatcher = methodNameMatcher(); Matcher<String> methodNameMatcher = methodNameMatcher();
Set<Class<?>> matchedClasses = SearchUtils.searchClass(inst, classPattern, isRegEx); Set<Class<?>> matchedClasses = SearchUtils.searchClass(inst, classPattern, isRegEx, hashCode);
for (Class<?> clazz : matchedClasses) { for (Class<?> clazz : matchedClasses) {
for (Constructor<?> constructor : clazz.getDeclaredConstructors()) { for (Constructor<?> constructor : clazz.getDeclaredConstructors()) {

Loading…
Cancel
Save