@Override public String getClassName() { return c.getClassName(); }
private void visitType(final Type value) { buf.append(value.getClassName()).append(".class"); }
private void addName(final String name) { if (name == null) { return; } if (name.startsWith("java/") || name.startsWith("javax/")) { return; } if(name.equals(className)) { return; } allClasses.add(Type.getObjectType(name).getClassName()); }
SimpleAppInstrumentClass(String internalClassName) { this.internalClassName = internalClassName; this.className = Type.getObjectType(internalClassName).getClassName(); }
protected Class<?> getClass(final Type t) { try { if (t.getSort() == Type.ARRAY) { return Class.forName(t.getDescriptor().replace('/', '.'), false, loader); } return Class.forName(t.getClassName(), false, loader); } catch (ClassNotFoundException e) { throw new RuntimeException(e.toString()); } } }
private Member resolveMember() { ClassLoader loader = clazz.getClassLoader(); Class<?>[] classes = new Class<?>[args.length]; // resolve args for (int i = 0; i < args.length; i++) { classes[i] = Classes.forName(loader, args[i].getClassName()); } try { if (CONSTRUCTOR.equals(name)) { return clazz.getDeclaredConstructor(classes); } return clazz.getDeclaredMethod(name, classes); } catch (NoSuchMethodException ex) { throw new IllegalStateException("Method [" + name + "] was discovered in the .class file but cannot be resolved in the class object", ex); } }
@Override public void visitInnerClass(String name, String outerName, String innerName, int access) { if(!this.className.equals(name) && name.startsWith(this.className + "$")) { innerClasses.add(Type.getObjectType(name).getClassName()); } super.visitInnerClass(name, outerName, innerName, access); }
public static Map<String,Object> getAnnotationValues(AnnotationNode a) { Map<String,Object> map = new LinkedHashMap<>(); if(null != a.values) { for(int i=0;i<a.values.size();i++) { String name = (String)a.values.get(i); Object value = a.values.get(i+1); if(value instanceof String[]) { //enum value String[] array = (String[])value; Class<? extends Enum> enumType = (Class<? extends Enum>)Classes.forName(Type.getType(array[0]).getClassName()); map.put(name, Enums.nameOf(enumType, array[1])); }else{ map.put(name, value); } i+=1; } } return map; }
return "double"; case ARRAY: StringBuilder sb = new StringBuilder(getElementType().getClassName()); for (int i = getDimensions(); i > 0; --i) { sb.append("[]");
@Override public ClassDependency resolveDependentClassNames(Resource resource, byte[] bytes) { ClassReader cr = new ClassReader(bytes); DependencyVisitor visitor = new DependencyVisitor(); cr.accept(visitor,0); String className = Type.getObjectType(cr.getClassName()).getClassName(); String superName = className.equals("java.lang.Object") ? null : Type.getObjectType(cr.getSuperName()).getClassName(); return new SimpleClassDependency(className, superName, visitor.innerClasses, visitor.allClasses); }
public static Class<?> getClassType(Type type) { switch (type.getSort()) { case Type.BOOLEAN: return Boolean.TYPE; case Type.CHAR: return Character.TYPE; case Type.BYTE: return Byte.TYPE; case Type.SHORT: return Short.TYPE; case Type.INT: return Integer.TYPE; case Type.FLOAT: return Float.TYPE; case Type.LONG: return Long.TYPE; case Type.DOUBLE: return Double.TYPE; case Type.VOID: return Void.TYPE; } String cn = type.getInternalName(); cn = cn != null ? cn.replace('/', '.') : type.getClassName(); return Classes.forName(cn); }
protected void startMonitor() { //get the field of monitor provider. if(!methodBodyOnly) { getStatic(type,PROVIDER_FIELD,PROVIDER_TYPE); }else{ getStatic(MonitorInst.TYPE,"PROVIDER",PROVIDER_TYPE); } //Call startMethodMonitor mv.visitLdcInsn(type.getClassName()); //classname mv.visitLdcInsn(mn.name); //methodDesc if(argumentTypes.length > 0) { loadArgArray(); invokeInterface(PROVIDER_TYPE, START_MONITOR_METHOD_WITH_ARGS); }else{ invokeInterface(PROVIDER_TYPE, START_MONITOR_METHOD_NO_ARGS); } //store local variable. monitorLocal = newLocal(MONITOR_TYPE); storeLocal(monitorLocal); }