static { try { HASH_CLOSE = DataProxy.sendMethodName(MSG_CLOSE); HASH_COMMIT = DataProxy.sendMethodName(MSG_COMMIT); HASH_AUTO_COMMIT_TRUE = DataProxy.sendMethodName(MSG_AUTO_COMMIT_TRUE); HASH_AUTO_COMMIT_FALSE = DataProxy.sendMethodName(MSG_AUTO_COMMIT_FALSE); } catch (Exception e) { } }
@Override public MethodVisitor visitMethod( int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); if (mv == null || mset.isA(name, desc) == false) { return mv; } if (AsmUtil.isSpecial(name)) { return mv; } Configure conf = Configure.getInstance(); boolean isPublic = conf.hook_method_access_public; boolean isProtected = conf.hook_method_access_protected; boolean isPrivate = conf.hook_method_access_private; boolean isNone = conf.hook_method_access_none; switch (access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED | Opcodes.ACC_PRIVATE)) { case Opcodes.ACC_PUBLIC: if (isPublic == false) return mv; break; case Opcodes.ACC_PROTECTED: if (isProtected == false) return mv; break; case Opcodes.ACC_PRIVATE: if (isPrivate == false) return mv; break; default: if (isNone == false) return mv; break; } // check prefix, to ignore simple method such as getter,setter if (conf.isIgnoreMethodPrefix(name)) return mv; String fullname = AsmUtil.add(className, name, desc); int fullname_hash = DataProxy.sendMethodName(fullname); return new MethodMV(access, desc, mv, fullname, fullname_hash); }