From b136f18d052c3d9535fbfcf47bdfcc2554269b20 Mon Sep 17 00:00:00 2001 From: dingjsh <47954233@qq.com> Date: Wed, 22 Aug 2018 22:20:01 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E9=87=8D=E6=9E=84javaagent,=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E6=A0=BC=E5=BC=8F=E6=94=B9=E4=B8=BAjson=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../thunisoft/agent/log/ExecuteLogUtils.java | 126 ++++++++++-------- .../agent/log/MethodExecuteJSONformatter.java | 75 +++++++++++ 3 files changed, 144 insertions(+), 59 deletions(-) create mode 100644 src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java diff --git a/pom.xml b/pom.xml index 5ea3e5a..3eeff2c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.dingjsh javaagent - 1.2.0 + 2.0.0 jar diff --git a/src/com/thunisoft/agent/log/ExecuteLogUtils.java b/src/com/thunisoft/agent/log/ExecuteLogUtils.java index 2f6aef2..4e965ce 100644 --- a/src/com/thunisoft/agent/log/ExecuteLogUtils.java +++ b/src/com/thunisoft/agent/log/ExecuteLogUtils.java @@ -9,12 +9,14 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; +import java.io.RandomAccessFile; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -42,10 +44,7 @@ public class ExecuteLogUtils { private static ScheduledThreadPoolExecutor counterLogExecutor; - private static boolean isOutputingLog; // 是否在输出日志,为避免阻塞,第一版处理方案是输出日志时舍弃新的输入 - - private static Map> exeuteCounterMap - = new ConcurrentHashMap>(); + private static Map> exeuteCounterMap; private static final Object executeCounterLock = new Object(); @@ -53,14 +52,16 @@ public class ExecuteLogUtils { private static final String ENCODING = "UTF-8"; - private static long intervalInMillis; - private static boolean isUsingNanoTime = false; private static boolean logAvgExecuteTime = false; private static boolean inited = false; + private ExecuteLogUtils() { + super(); + } + /** * 初使化 * @@ -74,7 +75,6 @@ public static synchronized void init() { logFileName = ConfigUtils.getLogFileName(); int interval = ConfigUtils.getLogInterval(); logAvgExecuteTime = ConfigUtils.isLogAvgExecuteTime(); - intervalInMillis = (long)interval * 1000; isUsingNanoTime = ConfigUtils.isUsingNanoTime(); if (AgentUtils.isBlank(logFileName)) { System.err.println("日志文件名为空"); @@ -82,6 +82,7 @@ public static synchronized void init() { } setNextDateStartTimeMillis(); initWriter(); + exeuteCounterMap = new ConcurrentHashMap>(); startTimemillis = System.currentTimeMillis(); counterLogExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory("pool-thread-agent-log", true)); counterLogExecutor.scheduleWithFixedDelay(new OutputLogRunnable(), interval, interval, TimeUnit.SECONDS); @@ -89,9 +90,6 @@ public static synchronized void init() { } public static void log(String className, String methodName, long currentTimemillis, long executeTime) { - if (isOutputingLog) { - return; - } logExecuteCounter(className, methodName, executeTime); } @@ -101,44 +99,36 @@ public static void log(String className, String methodName, long currentTimemill * @author dingjsh * @time 2015-7-28下午01:35:25 */ - public static void outputCounterLog() { - isOutputingLog = true; - // 如果下次日志记录时间是在第二天,则清空目前exeuteCounterMap的数据 - boolean needClearLog = System.currentTimeMillis() + intervalInMillis >= nextDayStartTimeMillis; - - writeLog("-----------------------");// 分隔线 - writeLog("startTime:{" + foramteTimeMillis(startTimemillis) + "}"); - Iterator>> ite = exeuteCounterMap.entrySet().iterator(); - while (ite.hasNext()) { + public synchronized static void outputCounterLog() throws IOException { + Map> exeuteCounterMapInner = exeuteCounterMap; + exeuteCounterMap = new ConcurrentHashMap>(); + String startTime = foramteTimeMillis(startTimemillis); + String endTime = foramteTimeMillis(System.currentTimeMillis()); + long byteLength = removeJSONArrayEndBracket(); + if (0 == byteLength) { + writeLog("[",true, startTimemillis); + } + + Set>> entrySet = exeuteCounterMapInner.entrySet(); + Iterator>> ite = entrySet.iterator(); + int length = entrySet.size(); + if (length > 0 && byteLength > 10) { // 说明文件不只是[],json数组中已经有内容 + writeLog(",", startTimemillis); + } + for (int index = 0; ite.hasNext(); index++) { Map.Entry> entry = ite.next(); String className = entry.getKey(); Map method2ExecuteMap = entry.getValue(); - writeLog("{"); - writeLog("className:{" + className + "}"); - Iterator> method2ExecuteIte = method2ExecuteMap.entrySet().iterator(); - while (method2ExecuteIte.hasNext()) { - Map.Entry methodEntry = method2ExecuteIte.next(); - String methodName = methodEntry.getKey(); - AtomicLong[] executeCounter = methodEntry.getValue(); - long counter = executeCounter[0].longValue(); - long timeInMillis - = isUsingNanoTime ? executeCounter[1].longValue() / 1000000 : executeCounter[1].longValue(); - String logInfo - = "methodName:{" + methodName + "},counter:{" + counter + "},time:{" + timeInMillis + "}"; - if (logAvgExecuteTime && counter > 0) { - logInfo += ",avg:{" + (timeInMillis / counter) + "}"; - } - writeLog(logInfo); + String methodExecuteJson = MethodExecuteJSONformatter.getMethodExecuteJSON(className, method2ExecuteMap, + startTime, endTime, isUsingNanoTime, logAvgExecuteTime); + writeLog(methodExecuteJson, startTimemillis); + if (index < length - 1) { + writeLog(",", true, startTimemillis); } - writeLog("}"); } - writeLog("endTime:{" + foramteTimeMillis(System.currentTimeMillis()) + "}"); - flushLog(); - if (needClearLog) { - exeuteCounterMap.clear(); - startTimemillis = System.currentTimeMillis(); - } - isOutputingLog = false; + writeLog("]", true,startTimemillis); + flushLogAndClose(); + startTimemillis = System.currentTimeMillis(); } private static void logExecuteCounter(String className, String methodName, long executeTime) { @@ -185,12 +175,12 @@ private static Map getOrCreateClassExecutesMapping(String return methodCounterMap; } - private static void writeLog(String logValue) { - writeLog(logValue, true); + private static void writeLog(String logValue, long currTimeMillis) { + writeLog(logValue, false, currTimeMillis); } - private static void writeLog(String logValue, boolean newLine) { - ensureLogFileUpToDate(); + private static void writeLog(String logValue, boolean newLine, long currTimeMillis) { + ensureLogFileUpToDate(currTimeMillis); try { counterLogWriter.write(logValue); if (newLine) { @@ -202,23 +192,27 @@ private static void writeLog(String logValue, boolean newLine) { } - private static void flushLog() { + private static void flushLogAndClose() { try { counterLogWriter.flush(); } catch (IOException e) { System.err.println(e); + } finally { + AgentUtils.closeQuietly(counterLogWriter); + counterLogWriter = null; } } /** * 确保日志文件没过时,日志文件都会加上日期后缀,如果当前日志文件 */ - private static void ensureLogFileUpToDate() { - long currTimeMillis = System.currentTimeMillis(); + private static void ensureLogFileUpToDate(long currTimeMillis) { if (currTimeMillis >= nextDayStartTimeMillis) { try { - counterLogWriter.flush(); - } catch (IOException e) { + if (null != counterLogWriter) { + counterLogWriter.flush(); + } + } catch (Exception e) { System.err.println(e); } finally { AgentUtils.closeQuietly(counterLogWriter); @@ -226,11 +220,15 @@ private static void ensureLogFileUpToDate() { initWriter(); setNextDateStartTimeMillis(); } + if (null == counterLogWriter) { + initWriter(); + } + } private static void initWriter() { try { - File logFile = getCounterLogFile(logFileName, true); + File logFile = getCounterLogFile(logFileName); counterLogWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile, true), ENCODING), BUFFER_SIZE); } catch (IOException e) { @@ -239,7 +237,7 @@ private static void initWriter() { } } - private static File getCounterLogFile(String logFileName, boolean appendDate) throws IOException { + private static File getCounterLogFile(String logFileName) throws IOException { String logFileNameWithDate = getCurrDateString(); int lastIndexOfDot = logFileName.lastIndexOf('.'); @@ -280,9 +278,6 @@ private static String getCurrDateString() { * 由开始日期转换为开始时间,一般在以时间为条件的查询中使用 */ private static Date date2StartTime(Date date) { - if (date == null) { - return null; - } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(date); Date startTime = null; @@ -311,4 +306,19 @@ private static String foramteTimeMillis(long timeMillis) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } -} + + private static long removeJSONArrayEndBracket() throws IOException { + File logFile = getCounterLogFile(logFileName); + RandomAccessFile f = new RandomAccessFile(logFile.getAbsolutePath(), "rw"); + long length = f.length(); + byte b = -1; + while (b != 93 && length > 0) { + length -= 1; + f.seek(length); + b = f.readByte(); + } + f.setLength(length); + f.close(); + return length; + } +} \ No newline at end of file diff --git a/src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java b/src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java new file mode 100644 index 0000000..67dac86 --- /dev/null +++ b/src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java @@ -0,0 +1,75 @@ +package com.thunisoft.agent.log; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; + +/** + * + * MethodExecuteJSONformatter + * + * @description 2.0.0 + * @author dingjsh + * @date 2018年8月22日 下午8:07:01 + * @version 2.0.0 + */ +class MethodExecuteJSONformatter { + + /** + * + * MethodExecuteJSONformatter + * + * @description 将方法执行监控数据格式化为json string + * @param className 类名 + * @param method2ExecuteMap Map<方法名, AtomicLong[]> 数组第一个是执行次数,第二个是执行时间 + * @param startTime 统计周期的开始时间,格式为 yyyy-MM-dd HH:mm:ss + * @param endTime 统计周期的结束时间,格式为 yyyy-MM-dd HH:mm:ss + * @return 格式化后的json string + * @author dingjsh + * @date 2018年8月22日 下午8:49:18 + * @version 2.0.0 + */ + public static String getMethodExecuteJSON(String className, Map method2ExecuteMap, + String startTime, String endTime, boolean isUsingNanoTime, boolean logAvgExecuteTime) { + StringBuilder json = new StringBuilder("{"); + appendString(json, "class", className).append(","); + appendString(json, "start", startTime).append(","); + appendString(json, "end", endTime).append(","); + appendKey(json, "methods").append("["); + Iterator> method2ExecuteIte = method2ExecuteMap.entrySet().iterator(); + while (method2ExecuteIte.hasNext()) { + Map.Entry methodEntry = method2ExecuteIte.next(); + String methodName = methodEntry.getKey(); + AtomicLong[] executeCounter = methodEntry.getValue(); + long counter = executeCounter[0].longValue(); + long timeInMillis + = isUsingNanoTime ? executeCounter[1].longValue() / 1000000 : executeCounter[1].longValue(); + json.append("{"); + appendString(json, "name", methodName).append(","); + appendLong(json, "counter", counter).append(","); + appendLong(json, "time", timeInMillis); + if (logAvgExecuteTime && counter > 0) { + json.append(","); + appendLong(json, "avg", timeInMillis / counter); + } + json.append("},"); + } + if (json.charAt(json.length() - 1) == ',') { + json.deleteCharAt(json.length() - 1); + } + json.append("]}"); + return json.toString(); + } + + private static StringBuilder appendString(StringBuilder jsonBuilder, String key, String value) { + return appendKey(jsonBuilder, key).append("\"").append(value).append("\""); + } + + private static StringBuilder appendLong(StringBuilder jsonBuilder, String key, long value) { + return appendKey(jsonBuilder, key).append(value); + } + + private static StringBuilder appendKey(StringBuilder jsonBuilder, String key) { + return jsonBuilder.append("\"").append(key).append("\":"); + } +} From 9479cd5d2de0c635cd71eff148bbd0dc80c9bd4d Mon Sep 17 00:00:00 2001 From: dingjsh <47954233@qq.com> Date: Tue, 4 Sep 2018 10:56:28 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?= =?UTF-8?q?=E4=B8=BAcom.wenshuo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- pom.xml | 20 ++------ .../{thunisoft => wenshuo}/agent/Agent.java | 8 ++-- .../agent/AgentUtils.java | 2 +- .../agent/ConfigConsts.java | 2 +- .../agent/ConfigUtils.java | 2 +- .../agent/ExecuteLogAnalyzer.java | 2 +- .../agent/NamedThreadFactory.java | 2 +- .../agent/PojoDetector.java | 4 +- .../agent/javassist/ByteArrayClassPath.java | 2 +- .../javassist/CannotCompileException.java | 4 +- .../agent/javassist/ClassClassPath.java | 2 +- .../agent/javassist/ClassMap.java | 4 +- .../agent/javassist/ClassPath.java | 2 +- .../agent/javassist/ClassPool.java | 6 +-- .../agent/javassist/ClassPoolTail.java | 2 +- .../agent/javassist/CodeConverter.java | 6 +-- .../agent/javassist/CtArray.java | 2 +- .../agent/javassist/CtBehavior.java | 10 ++-- .../agent/javassist/CtClass.java | 12 ++--- .../agent/javassist/CtClassType.java | 48 +++++++++---------- .../agent/javassist/CtConstructor.java | 8 ++-- .../agent/javassist/CtField.java | 20 ++++---- .../agent/javassist/CtMember.java | 2 +- .../agent/javassist/CtMethod.java | 4 +- .../agent/javassist/CtNewClass.java | 4 +- .../agent/javassist/CtNewConstructor.java | 10 ++-- .../agent/javassist/CtNewMethod.java | 10 ++-- .../agent/javassist/CtNewNestedClass.java | 8 ++-- .../javassist/CtNewWrappedConstructor.java | 6 +-- .../agent/javassist/CtNewWrappedMethod.java | 8 ++-- .../agent/javassist/CtPrimitiveType.java | 2 +- .../agent/javassist/Loader.java | 4 +- .../agent/javassist/LoaderClassPath.java | 2 +- .../agent/javassist/Modifier.java | 4 +- .../agent/javassist/NotFoundException.java | 2 +- .../agent/javassist/SerialVersionUID.java | 4 +- .../agent/javassist/Translator.java | 2 +- .../agent/javassist/URLClassPath.java | 2 +- .../agent/javassist/bytecode/AccessFlag.java | 2 +- .../bytecode/AnnotationDefaultAttribute.java | 8 ++-- .../bytecode/AnnotationsAttribute.java | 6 +-- .../javassist/bytecode/AttributeInfo.java | 2 +- .../agent/javassist/bytecode/BadBytecode.java | 2 +- .../bytecode/BootstrapMethodsAttribute.java | 2 +- .../agent/javassist/bytecode/ByteArray.java | 2 +- .../agent/javassist/bytecode/ByteStream.java | 2 +- .../agent/javassist/bytecode/Bytecode.java | 6 +-- .../agent/javassist/bytecode/ClassFile.java | 4 +- .../javassist/bytecode/ClassFilePrinter.java | 4 +- .../javassist/bytecode/ClassFileWriter.java | 2 +- .../javassist/bytecode/CodeAnalyzer.java | 2 +- .../javassist/bytecode/CodeAttribute.java | 2 +- .../javassist/bytecode/CodeIterator.java | 2 +- .../agent/javassist/bytecode/ConstPool.java | 4 +- .../javassist/bytecode/ConstantAttribute.java | 2 +- .../bytecode/DeprecatedAttribute.java | 2 +- .../agent/javassist/bytecode/Descriptor.java | 10 ++-- .../bytecode/DuplicateMemberException.java | 4 +- .../bytecode/EnclosingMethodAttribute.java | 4 +- .../javassist/bytecode/ExceptionTable.java | 2 +- .../bytecode/ExceptionsAttribute.java | 2 +- .../agent/javassist/bytecode/FieldInfo.java | 2 +- .../bytecode/InnerClassesAttribute.java | 2 +- .../bytecode/InstructionPrinter.java | 4 +- .../bytecode/LineNumberAttribute.java | 2 +- .../bytecode/LocalVariableAttribute.java | 2 +- .../bytecode/LocalVariableTypeAttribute.java | 2 +- .../agent/javassist/bytecode/LongVector.java | 2 +- .../agent/javassist/bytecode/MethodInfo.java | 6 +-- .../bytecode/MethodParametersAttribute.java | 2 +- .../agent/javassist/bytecode/Mnemonic.java | 2 +- .../agent/javassist/bytecode/Opcode.java | 2 +- .../ParameterAnnotationsAttribute.java | 10 ++-- .../bytecode/SignatureAttribute.java | 4 +- .../bytecode/SourceFileAttribute.java | 2 +- .../agent/javassist/bytecode/StackMap.java | 10 ++-- .../javassist/bytecode/StackMapTable.java | 4 +- .../bytecode/SyntheticAttribute.java | 2 +- .../bytecode/TypeAnnotationsAttribute.java | 4 +- .../javassist/bytecode/analysis/Analyzer.java | 28 +++++------ .../bytecode/analysis/ControlFlow.java | 12 ++--- .../javassist/bytecode/analysis/Executor.java | 22 ++++----- .../javassist/bytecode/analysis/Frame.java | 2 +- .../bytecode/analysis/FramePrinter.java | 24 +++++----- .../javassist/bytecode/analysis/IntQueue.java | 2 +- .../bytecode/analysis/MultiArrayType.java | 8 ++-- .../bytecode/analysis/MultiType.java | 4 +- .../bytecode/analysis/Subroutine.java | 2 +- .../bytecode/analysis/SubroutineScanner.java | 14 +++--- .../javassist/bytecode/analysis/Type.java | 8 ++-- .../javassist/bytecode/analysis/Util.java | 6 +-- .../javassist/bytecode/analysis/package.html | 0 .../bytecode/annotation/Annotation.java | 14 +++--- .../bytecode/annotation/AnnotationImpl.java | 14 +++--- .../annotation/AnnotationMemberValue.java | 6 +-- .../annotation/AnnotationsWriter.java | 6 +-- .../bytecode/annotation/ArrayMemberValue.java | 6 +-- .../annotation/BooleanMemberValue.java | 6 +-- .../bytecode/annotation/ByteMemberValue.java | 6 +-- .../bytecode/annotation/CharMemberValue.java | 6 +-- .../bytecode/annotation/ClassMemberValue.java | 12 ++--- .../annotation/DoubleMemberValue.java | 6 +-- .../bytecode/annotation/EnumMemberValue.java | 8 ++-- .../bytecode/annotation/FloatMemberValue.java | 6 +-- .../annotation/IntegerMemberValue.java | 6 +-- .../bytecode/annotation/LongMemberValue.java | 6 +-- .../bytecode/annotation/MemberValue.java | 8 ++-- .../annotation/MemberValueVisitor.java | 2 +- .../bytecode/annotation/NoSuchClassError.java | 2 +- .../bytecode/annotation/ShortMemberValue.java | 6 +-- .../annotation/StringMemberValue.java | 6 +-- .../annotation/TypeAnnotationsWriter.java | 4 +- .../bytecode/annotation/package.html | 0 .../agent/javassist/bytecode/package.html | 0 .../bytecode/stackmap/BasicBlock.java | 4 +- .../javassist/bytecode/stackmap/MapMaker.java | 10 ++-- .../javassist/bytecode/stackmap/Tracer.java | 16 +++---- .../javassist/bytecode/stackmap/TypeData.java | 18 +++---- .../javassist/bytecode/stackmap/TypeTag.java | 4 +- .../bytecode/stackmap/TypedBlock.java | 4 +- .../javassist/compiler/AccessorMaker.java | 6 +-- .../agent/javassist/compiler/CodeGen.java | 6 +-- .../javassist/compiler/CompileError.java | 6 +-- .../agent/javassist/compiler/Javac.java | 38 +++++++-------- .../agent/javassist/compiler/JvstCodeGen.java | 8 ++-- .../javassist/compiler/JvstTypeChecker.java | 6 +-- .../javassist/compiler/KeywordTable.java | 2 +- .../agent/javassist/compiler/Lex.java | 2 +- .../javassist/compiler/MemberCodeGen.java | 8 ++-- .../javassist/compiler/MemberResolver.java | 8 ++-- .../javassist/compiler/NoFieldException.java | 4 +- .../agent/javassist/compiler/Parser.java | 4 +- .../javassist/compiler/ProceedHandler.java | 6 +-- .../agent/javassist/compiler/SymbolTable.java | 4 +- .../agent/javassist/compiler/SyntaxError.java | 2 +- .../agent/javassist/compiler/TokenId.java | 2 +- .../agent/javassist/compiler/TypeChecker.java | 18 +++---- .../agent/javassist/compiler/ast/ASTList.java | 4 +- .../agent/javassist/compiler/ast/ASTree.java | 4 +- .../javassist/compiler/ast/ArrayInit.java | 4 +- .../javassist/compiler/ast/AssignExpr.java | 4 +- .../agent/javassist/compiler/ast/BinExpr.java | 4 +- .../javassist/compiler/ast/CallExpr.java | 8 ++-- .../javassist/compiler/ast/CastExpr.java | 6 +-- .../javassist/compiler/ast/CondExpr.java | 4 +- .../javassist/compiler/ast/Declarator.java | 6 +-- .../javassist/compiler/ast/DoubleConst.java | 6 +-- .../agent/javassist/compiler/ast/Expr.java | 6 +-- .../javassist/compiler/ast/FieldDecl.java | 4 +- .../compiler/ast/InstanceOfExpr.java | 4 +- .../javassist/compiler/ast/IntConst.java | 6 +-- .../agent/javassist/compiler/ast/Keyword.java | 4 +- .../agent/javassist/compiler/ast/Member.java | 6 +-- .../javassist/compiler/ast/MethodDecl.java | 4 +- .../agent/javassist/compiler/ast/NewExpr.java | 6 +-- .../agent/javassist/compiler/ast/Pair.java | 4 +- .../agent/javassist/compiler/ast/Stmnt.java | 6 +-- .../agent/javassist/compiler/ast/StringL.java | 4 +- .../agent/javassist/compiler/ast/Symbol.java | 4 +- .../javassist/compiler/ast/Variable.java | 4 +- .../agent/javassist/compiler/ast/Visitor.java | 4 +- .../convert/TransformAccessArrayField.java | 26 +++++----- .../javassist/convert/TransformAfter.java | 8 ++-- .../javassist/convert/TransformBefore.java | 10 ++-- .../javassist/convert/TransformCall.java | 16 +++---- .../convert/TransformFieldAccess.java | 10 ++-- .../agent/javassist/convert/TransformNew.java | 8 ++-- .../javassist/convert/TransformNewClass.java | 8 ++-- .../javassist/convert/TransformReadField.java | 14 +++--- .../convert/TransformWriteField.java | 8 ++-- .../agent/javassist/convert/Transformer.java | 20 ++++---- .../agent/javassist/expr/Cast.java | 10 ++-- .../agent/javassist/expr/ConstructorCall.java | 14 +++--- .../agent/javassist/expr/Expr.java | 42 ++++++++-------- .../agent/javassist/expr/ExprEditor.java | 8 ++-- .../agent/javassist/expr/FieldAccess.java | 10 ++-- .../agent/javassist/expr/Handler.java | 8 ++-- .../agent/javassist/expr/Instanceof.java | 10 ++-- .../agent/javassist/expr/MethodCall.java | 8 ++-- .../agent/javassist/expr/NewArray.java | 10 ++-- .../agent/javassist/expr/NewExpr.java | 10 ++-- .../agent/javassist/expr/package.html | 0 .../agent/javassist/package.html | 0 .../agent/javassist/runtime/Cflow.java | 2 +- .../agent/javassist/runtime/Desc.java | 2 +- .../agent/javassist/runtime/DotClass.java | 2 +- .../agent/javassist/runtime/Inner.java | 2 +- .../agent/javassist/runtime/package.html | 0 .../javassist/scopedpool/ScopedClassPool.java | 12 ++--- .../scopedpool/ScopedClassPoolFactory.java | 4 +- .../ScopedClassPoolFactoryImpl.java | 4 +- .../scopedpool/ScopedClassPoolRepository.java | 4 +- .../ScopedClassPoolRepositoryImpl.java | 6 +-- .../scopedpool/SoftValueHashMap.java | 2 +- .../agent/javassist/scopedpool/package.html | 0 .../agent/javassist/tools/Callback.java | 6 +-- .../agent/javassist/tools/Dump.java | 6 +-- .../agent/javassist/tools/framedump.java | 8 ++-- .../agent/javassist/tools/package.html | 0 .../tools/reflect/CannotCreateException.java | 2 +- .../tools/reflect/CannotInvokeException.java | 2 +- .../tools/reflect/CannotReflectException.java | 4 +- .../tools/reflect/ClassMetaobject.java | 2 +- .../javassist/tools/reflect/Compiler.java | 6 +-- .../agent/javassist/tools/reflect/Loader.java | 10 ++-- .../javassist/tools/reflect/Metalevel.java | 2 +- .../javassist/tools/reflect/Metaobject.java | 2 +- .../javassist/tools/reflect/Reflection.java | 12 ++--- .../agent/javassist/tools/reflect/Sample.java | 2 +- .../javassist/tools/reflect/package.html | 0 .../javassist/tools/rmi/AppletServer.java | 10 ++-- .../javassist/tools/rmi/ObjectImporter.java | 2 +- .../tools/rmi/ObjectNotFoundException.java | 2 +- .../agent/javassist/tools/rmi/Proxy.java | 2 +- .../javassist/tools/rmi/RemoteException.java | 2 +- .../agent/javassist/tools/rmi/RemoteRef.java | 2 +- .../agent/javassist/tools/rmi/Sample.java | 2 +- .../javassist/tools/rmi/StubGenerator.java | 6 +-- .../agent/javassist/tools/rmi/package.html | 0 .../javassist/tools/web/BadHttpRequest.java | 2 +- .../agent/javassist/tools/web/Viewer.java | 2 +- .../agent/javassist/tools/web/Webserver.java | 4 +- .../agent/javassist/tools/web/package.html | 0 .../agent/javassist/util/HotSwapper.java | 2 +- .../agent/javassist/util/package.html | 0 .../javassist/util/proxy/FactoryHelper.java | 6 +-- .../javassist/util/proxy/MethodFilter.java | 2 +- .../javassist/util/proxy/MethodHandler.java | 2 +- .../agent/javassist/util/proxy/Proxy.java | 2 +- .../javassist/util/proxy/ProxyFactory.java | 8 ++-- .../javassist/util/proxy/ProxyObject.java | 2 +- .../util/proxy/ProxyObjectInputStream.java | 2 +- .../util/proxy/ProxyObjectOutputStream.java | 2 +- .../javassist/util/proxy/RuntimeSupport.java | 2 +- .../javassist/util/proxy/SecurityActions.java | 2 +- .../javassist/util/proxy/SerializedProxy.java | 2 +- .../agent/javassist/util/proxy/package.html | 0 .../agent/log/ExecuteLogUtils.java | 8 ++-- .../agent/log/MethodExecuteJSONformatter.java | 2 +- .../agent/log/OutputLogRunnable.java | 2 +- .../AgentLogClassFileTransformer.java} | 33 +++++++------ src/props/agent.properties | 4 +- .../agent/test/TestCtMethod.java | 14 +++--- 244 files changed, 719 insertions(+), 734 deletions(-) rename src/com/{thunisoft => wenshuo}/agent/Agent.java (71%) rename src/com/{thunisoft => wenshuo}/agent/AgentUtils.java (99%) rename src/com/{thunisoft => wenshuo}/agent/ConfigConsts.java (97%) rename src/com/{thunisoft => wenshuo}/agent/ConfigUtils.java (99%) rename src/com/{thunisoft => wenshuo}/agent/ExecuteLogAnalyzer.java (96%) rename src/com/{thunisoft => wenshuo}/agent/NamedThreadFactory.java (98%) rename src/com/{thunisoft => wenshuo}/agent/PojoDetector.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ByteArrayClassPath.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CannotCompileException.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ClassClassPath.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ClassMap.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ClassPath.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ClassPool.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/ClassPoolTail.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CodeConverter.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtArray.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtBehavior.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtClass.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtClassType.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtConstructor.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtField.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtMember.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtMethod.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewClass.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewConstructor.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewMethod.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewNestedClass.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewWrappedConstructor.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtNewWrappedMethod.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/CtPrimitiveType.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/Loader.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/LoaderClassPath.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/Modifier.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/NotFoundException.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/SerialVersionUID.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/Translator.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/URLClassPath.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/AccessFlag.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/AnnotationDefaultAttribute.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/AnnotationsAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/AttributeInfo.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/BadBytecode.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/BootstrapMethodsAttribute.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ByteArray.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ByteStream.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/Bytecode.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ClassFile.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ClassFilePrinter.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ClassFileWriter.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/CodeAnalyzer.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/CodeAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/CodeIterator.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ConstPool.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ConstantAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/DeprecatedAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/Descriptor.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/DuplicateMemberException.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/EnclosingMethodAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ExceptionTable.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ExceptionsAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/FieldInfo.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/InnerClassesAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/InstructionPrinter.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/LineNumberAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/LocalVariableAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/LocalVariableTypeAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/LongVector.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/MethodInfo.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/MethodParametersAttribute.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/Mnemonic.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/Opcode.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/ParameterAnnotationsAttribute.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/SignatureAttribute.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/SourceFileAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/StackMap.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/StackMapTable.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/SyntheticAttribute.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/TypeAnnotationsAttribute.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Analyzer.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/ControlFlow.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Executor.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Frame.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/FramePrinter.java (85%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/IntQueue.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/MultiArrayType.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/MultiType.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Subroutine.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/SubroutineScanner.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Type.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/Util.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/analysis/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/Annotation.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/AnnotationImpl.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/AnnotationMemberValue.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/AnnotationsWriter.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/ArrayMemberValue.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/BooleanMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/ByteMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/CharMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/ClassMemberValue.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/DoubleMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/EnumMemberValue.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/FloatMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/IntegerMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/LongMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/MemberValue.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/MemberValueVisitor.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/NoSuchClassError.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/ShortMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/StringMemberValue.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/annotation/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/BasicBlock.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/MapMaker.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/Tracer.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/TypeData.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/TypeTag.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/bytecode/stackmap/TypedBlock.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/AccessorMaker.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/CodeGen.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/CompileError.java (89%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/Javac.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/JvstCodeGen.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/JvstTypeChecker.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/KeywordTable.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/Lex.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/MemberCodeGen.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/MemberResolver.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/NoFieldException.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/Parser.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ProceedHandler.java (86%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/SymbolTable.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/SyntaxError.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/TokenId.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/TypeChecker.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/ASTList.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/ASTree.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/ArrayInit.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/AssignExpr.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/BinExpr.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/CallExpr.java (85%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/CastExpr.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/CondExpr.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Declarator.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/DoubleConst.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Expr.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/FieldDecl.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/InstanceOfExpr.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/IntConst.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Keyword.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Member.java (88%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/MethodDecl.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/NewExpr.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Pair.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Stmnt.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/StringL.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Symbol.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Variable.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/compiler/ast/Visitor.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformAccessArrayField.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformAfter.java (88%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformBefore.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformCall.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformFieldAccess.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformNew.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformNewClass.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformReadField.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/TransformWriteField.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/convert/Transformer.java (75%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/Cast.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/ConstructorCall.java (84%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/Expr.java (90%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/ExprEditor.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/FieldAccess.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/Handler.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/Instanceof.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/MethodCall.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/NewArray.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/NewExpr.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/expr/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/runtime/Cflow.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/runtime/Desc.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/runtime/DotClass.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/runtime/Inner.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/runtime/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/ScopedClassPool.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/ScopedClassPoolFactory.java (92%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java (93%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/ScopedClassPoolRepository.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/SoftValueHashMap.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/scopedpool/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/Callback.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/Dump.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/framedump.java (88%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/CannotCreateException.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/CannotInvokeException.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/CannotReflectException.java (91%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/ClassMetaobject.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Compiler.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Loader.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Metalevel.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Metaobject.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Reflection.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/Sample.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/reflect/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/AppletServer.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/ObjectImporter.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/ObjectNotFoundException.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/Proxy.java (94%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/RemoteException.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/RemoteRef.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/Sample.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/StubGenerator.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/rmi/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/web/BadHttpRequest.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/web/Viewer.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/web/Webserver.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/tools/web/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/HotSwapper.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/FactoryHelper.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/MethodFilter.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/MethodHandler.java (97%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/Proxy.java (95%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/ProxyFactory.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/ProxyObject.java (96%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/ProxyObjectInputStream.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/ProxyObjectOutputStream.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/RuntimeSupport.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/SecurityActions.java (99%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/SerializedProxy.java (98%) rename src/com/{thunisoft => wenshuo}/agent/javassist/util/proxy/package.html (100%) rename src/com/{thunisoft => wenshuo}/agent/log/ExecuteLogUtils.java (98%) rename src/com/{thunisoft => wenshuo}/agent/log/MethodExecuteJSONformatter.java (98%) rename src/com/{thunisoft => wenshuo}/agent/log/OutputLogRunnable.java (94%) rename src/com/{thunisoft/agent/transformer/ThunisoftClassFileTransformer.java => wenshuo/agent/transformer/AgentLogClassFileTransformer.java} (84%) rename test/com/{thunisoft => wenshuo}/agent/test/TestCtMethod.java (77%) diff --git a/README.md b/README.md index 81a598d..ad09725 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ java启动参数中就有jaaagent,你只需要在JAVA_OPTS中加入`-javaagent:/ ### agent.properties说明 ``` # 你想监控哪些包,多个包用分号分隔,凡是不在该配置里的包中类都不会监控,所以不会去默认监控各种第三方包以及jre自带的类 -agent.include.package=com.thunisoft +agent.include.package=com.XXX # 你不想监控的包,多个包用分号分隔,include.package减去exclude.package就是你监控的包 agent.exclude.package= # 你不想监控的包的正则 diff --git a/pom.xml b/pom.xml index 3eeff2c..6812957 100644 --- a/pom.xml +++ b/pom.xml @@ -2,19 +2,15 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - com.dingjsh + com.wenshuo javaagent - 2.0.0 + 2.1.0 jar UTF-8 1.6 - - BeiJing Thunisoft Corporation Limited - http://www.thunisoft.com - dingjsh @@ -29,16 +25,6 @@ repo - - - public-repo - http://repo.thunisoft.com/maven2/content/repositories/cmptreleases/ - - - public-snapshots - http://repo.thunisoft.com/maven2/content/repositories/snapshots - - src @@ -74,7 +60,7 @@ - com.thunisoft.agent.Agent + com.wenshuo.agent.Agent diff --git a/src/com/thunisoft/agent/Agent.java b/src/com/wenshuo/agent/Agent.java similarity index 71% rename from src/com/thunisoft/agent/Agent.java rename to src/com/wenshuo/agent/Agent.java index b3eecd4..3fab5f6 100644 --- a/src/com/thunisoft/agent/Agent.java +++ b/src/com/wenshuo/agent/Agent.java @@ -4,13 +4,13 @@ * Copyright 2015 Thuisoft, Inc. All rights reserved. * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ -package com.thunisoft.agent; +package com.wenshuo.agent; import java.io.IOException; import java.lang.instrument.Instrumentation; -import com.thunisoft.agent.log.ExecuteLogUtils; -import com.thunisoft.agent.transformer.ThunisoftClassFileTransformer; +import com.wenshuo.agent.log.ExecuteLogUtils; +import com.wenshuo.agent.transformer.AgentLogClassFileTransformer; /** * Agent @@ -24,7 +24,7 @@ public static void premain(String agentArs, Instrumentation inst) // 初始化配置 ConfigUtils.initProperties(agentArs); ExecuteLogUtils.init(); - inst.addTransformer(new ThunisoftClassFileTransformer()); + inst.addTransformer(new AgentLogClassFileTransformer()); } } diff --git a/src/com/thunisoft/agent/AgentUtils.java b/src/com/wenshuo/agent/AgentUtils.java similarity index 99% rename from src/com/thunisoft/agent/AgentUtils.java rename to src/com/wenshuo/agent/AgentUtils.java index c00bbdb..e950a23 100644 --- a/src/com/thunisoft/agent/AgentUtils.java +++ b/src/com/wenshuo/agent/AgentUtils.java @@ -4,7 +4,7 @@ * Copyright 2015 Thuisoft, Inc. All rights reserved. * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ -package com.thunisoft.agent; +package com.wenshuo.agent; import java.io.ByteArrayOutputStream; import java.io.File; diff --git a/src/com/thunisoft/agent/ConfigConsts.java b/src/com/wenshuo/agent/ConfigConsts.java similarity index 97% rename from src/com/thunisoft/agent/ConfigConsts.java rename to src/com/wenshuo/agent/ConfigConsts.java index 38d94d1..257a287 100644 --- a/src/com/thunisoft/agent/ConfigConsts.java +++ b/src/com/wenshuo/agent/ConfigConsts.java @@ -4,7 +4,7 @@ * Copyright 2015 Thuisoft, Inc. All rights reserved. * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ -package com.thunisoft.agent; +package com.wenshuo.agent; /** * ConfigConsts diff --git a/src/com/thunisoft/agent/ConfigUtils.java b/src/com/wenshuo/agent/ConfigUtils.java similarity index 99% rename from src/com/thunisoft/agent/ConfigUtils.java rename to src/com/wenshuo/agent/ConfigUtils.java index 1e0d782..5fd66ca 100644 --- a/src/com/thunisoft/agent/ConfigUtils.java +++ b/src/com/wenshuo/agent/ConfigUtils.java @@ -1,4 +1,4 @@ -package com.thunisoft.agent; +package com.wenshuo.agent; import java.io.File; import java.io.FileInputStream; diff --git a/src/com/thunisoft/agent/ExecuteLogAnalyzer.java b/src/com/wenshuo/agent/ExecuteLogAnalyzer.java similarity index 96% rename from src/com/thunisoft/agent/ExecuteLogAnalyzer.java rename to src/com/wenshuo/agent/ExecuteLogAnalyzer.java index aa0d252..68af782 100644 --- a/src/com/thunisoft/agent/ExecuteLogAnalyzer.java +++ b/src/com/wenshuo/agent/ExecuteLogAnalyzer.java @@ -4,7 +4,7 @@ * Copyright 2015 Thuisoft, Inc. All rights reserved. * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ -package com.thunisoft.agent; +package com.wenshuo.agent; /** * ExecuteLogAnalyzer,分析方法执行日志 diff --git a/src/com/thunisoft/agent/NamedThreadFactory.java b/src/com/wenshuo/agent/NamedThreadFactory.java similarity index 98% rename from src/com/thunisoft/agent/NamedThreadFactory.java rename to src/com/wenshuo/agent/NamedThreadFactory.java index b5b5b67..61c007d 100644 --- a/src/com/thunisoft/agent/NamedThreadFactory.java +++ b/src/com/wenshuo/agent/NamedThreadFactory.java @@ -1,4 +1,4 @@ -package com.thunisoft.agent; +package com.wenshuo.agent; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/com/thunisoft/agent/PojoDetector.java b/src/com/wenshuo/agent/PojoDetector.java similarity index 96% rename from src/com/thunisoft/agent/PojoDetector.java rename to src/com/wenshuo/agent/PojoDetector.java index 8e8fc76..8c1387c 100644 --- a/src/com/thunisoft/agent/PojoDetector.java +++ b/src/com/wenshuo/agent/PojoDetector.java @@ -4,7 +4,7 @@ * Copyright 2016 Thuisoft, Inc. All rights reserved. * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ -package com.thunisoft.agent; +package com.wenshuo.agent; import java.util.Collections; import java.util.HashMap; @@ -12,7 +12,7 @@ import java.util.Map; import java.util.Set; -import com.thunisoft.agent.javassist.CtMethod; +import com.wenshuo.agent.javassist.CtMethod; /** * PojoDetector diff --git a/src/com/thunisoft/agent/javassist/ByteArrayClassPath.java b/src/com/wenshuo/agent/javassist/ByteArrayClassPath.java similarity index 98% rename from src/com/thunisoft/agent/javassist/ByteArrayClassPath.java rename to src/com/wenshuo/agent/javassist/ByteArrayClassPath.java index c19453d..d4d9347 100644 --- a/src/com/thunisoft/agent/javassist/ByteArrayClassPath.java +++ b/src/com/wenshuo/agent/javassist/ByteArrayClassPath.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.*; import java.net.URL; diff --git a/src/com/thunisoft/agent/javassist/CannotCompileException.java b/src/com/wenshuo/agent/javassist/CannotCompileException.java similarity index 97% rename from src/com/thunisoft/agent/javassist/CannotCompileException.java rename to src/com/wenshuo/agent/javassist/CannotCompileException.java index d2db61f..31057c8 100644 --- a/src/com/thunisoft/agent/javassist/CannotCompileException.java +++ b/src/com/wenshuo/agent/javassist/CannotCompileException.java @@ -14,9 +14,9 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.compiler.CompileError; /** * Thrown when bytecode transformation has failed. diff --git a/src/com/thunisoft/agent/javassist/ClassClassPath.java b/src/com/wenshuo/agent/javassist/ClassClassPath.java similarity index 98% rename from src/com/thunisoft/agent/javassist/ClassClassPath.java rename to src/com/wenshuo/agent/javassist/ClassClassPath.java index 680e830..be42a50 100644 --- a/src/com/thunisoft/agent/javassist/ClassClassPath.java +++ b/src/com/wenshuo/agent/javassist/ClassClassPath.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.InputStream; import java.net.URL; diff --git a/src/com/thunisoft/agent/javassist/ClassMap.java b/src/com/wenshuo/agent/javassist/ClassMap.java similarity index 98% rename from src/com/thunisoft/agent/javassist/ClassMap.java rename to src/com/wenshuo/agent/javassist/ClassMap.java index 88f7799..2dbf987 100644 --- a/src/com/thunisoft/agent/javassist/ClassMap.java +++ b/src/com/wenshuo/agent/javassist/ClassMap.java @@ -14,9 +14,9 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.Descriptor; +import com.wenshuo.agent.javassist.bytecode.Descriptor; /** * A hash table associating class names with different names. diff --git a/src/com/thunisoft/agent/javassist/ClassPath.java b/src/com/wenshuo/agent/javassist/ClassPath.java similarity index 98% rename from src/com/thunisoft/agent/javassist/ClassPath.java rename to src/com/wenshuo/agent/javassist/ClassPath.java index a5e109f..f0e90e2 100644 --- a/src/com/thunisoft/agent/javassist/ClassPath.java +++ b/src/com/wenshuo/agent/javassist/ClassPath.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.InputStream; import java.net.URL; diff --git a/src/com/thunisoft/agent/javassist/ClassPool.java b/src/com/wenshuo/agent/javassist/ClassPool.java similarity index 99% rename from src/com/thunisoft/agent/javassist/ClassPool.java rename to src/com/wenshuo/agent/javassist/ClassPool.java index 37755cc..2114b1f 100644 --- a/src/com/thunisoft/agent/javassist/ClassPool.java +++ b/src/com/wenshuo/agent/javassist/ClassPool.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.BufferedInputStream; import java.io.File; @@ -32,8 +32,8 @@ import java.util.ArrayList; import java.util.Enumeration; -import com.thunisoft.agent.javassist.bytecode.ClassFile; -import com.thunisoft.agent.javassist.bytecode.Descriptor; +import com.wenshuo.agent.javassist.bytecode.ClassFile; +import com.wenshuo.agent.javassist.bytecode.Descriptor; /** * A container of CtClass objects. diff --git a/src/com/thunisoft/agent/javassist/ClassPoolTail.java b/src/com/wenshuo/agent/javassist/ClassPoolTail.java similarity index 99% rename from src/com/thunisoft/agent/javassist/ClassPoolTail.java rename to src/com/wenshuo/agent/javassist/ClassPoolTail.java index bd68468..638d201 100644 --- a/src/com/thunisoft/agent/javassist/ClassPoolTail.java +++ b/src/com/wenshuo/agent/javassist/ClassPoolTail.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.*; import java.util.jar.*; diff --git a/src/com/thunisoft/agent/javassist/CodeConverter.java b/src/com/wenshuo/agent/javassist/CodeConverter.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CodeConverter.java rename to src/com/wenshuo/agent/javassist/CodeConverter.java index 6bd32f2..5bd3014 100644 --- a/src/com/thunisoft/agent/javassist/CodeConverter.java +++ b/src/com/wenshuo/agent/javassist/CodeConverter.java @@ -14,10 +14,10 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.convert.*; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.convert.*; /** * Simple translator of method bodies diff --git a/src/com/thunisoft/agent/javassist/CtArray.java b/src/com/wenshuo/agent/javassist/CtArray.java similarity index 98% rename from src/com/thunisoft/agent/javassist/CtArray.java rename to src/com/wenshuo/agent/javassist/CtArray.java index 16a7b9a..3864c6a 100644 --- a/src/com/thunisoft/agent/javassist/CtArray.java +++ b/src/com/wenshuo/agent/javassist/CtArray.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; /** * Array types. diff --git a/src/com/thunisoft/agent/javassist/CtBehavior.java b/src/com/wenshuo/agent/javassist/CtBehavior.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CtBehavior.java rename to src/com/wenshuo/agent/javassist/CtBehavior.java index 34a3356..ff03e03 100644 --- a/src/com/thunisoft/agent/javassist/CtBehavior.java +++ b/src/com/wenshuo/agent/javassist/CtBehavior.java @@ -14,12 +14,12 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.compiler.CompileError; -import com.thunisoft.agent.javassist.expr.ExprEditor; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.expr.ExprEditor; /** * CtBehavior represents a method, a constructor, diff --git a/src/com/thunisoft/agent/javassist/CtClass.java b/src/com/wenshuo/agent/javassist/CtClass.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CtClass.java rename to src/com/wenshuo/agent/javassist/CtClass.java index aec9160..21fe5ac 100644 --- a/src/com/thunisoft/agent/javassist/CtClass.java +++ b/src/com/wenshuo/agent/javassist/CtClass.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; @@ -27,10 +27,10 @@ import java.security.ProtectionDomain; import java.util.Collection; -import com.thunisoft.agent.javassist.bytecode.ClassFile; -import com.thunisoft.agent.javassist.bytecode.Descriptor; -import com.thunisoft.agent.javassist.bytecode.Opcode; -import com.thunisoft.agent.javassist.expr.ExprEditor; +import com.wenshuo.agent.javassist.bytecode.ClassFile; +import com.wenshuo.agent.javassist.bytecode.Descriptor; +import com.wenshuo.agent.javassist.bytecode.Opcode; +import com.wenshuo.agent.javassist.expr.ExprEditor; /* Note: * @@ -255,7 +255,7 @@ public ClassFile getClassFile() { /** * Undocumented method. Do not use; internal-use only. */ - public com.thunisoft.agent.javassist.compiler.AccessorMaker getAccessorMaker() { + public com.wenshuo.agent.javassist.compiler.AccessorMaker getAccessorMaker() { return null; } diff --git a/src/com/thunisoft/agent/javassist/CtClassType.java b/src/com/wenshuo/agent/javassist/CtClassType.java similarity index 97% rename from src/com/thunisoft/agent/javassist/CtClassType.java rename to src/com/wenshuo/agent/javassist/CtClassType.java index ae14c00..e7774e5 100644 --- a/src/com/thunisoft/agent/javassist/CtClassType.java +++ b/src/com/wenshuo/agent/javassist/CtClassType.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.lang.ref.WeakReference; import java.io.BufferedInputStream; @@ -31,28 +31,28 @@ import java.util.List; import java.util.Set; -import com.thunisoft.agent.javassist.bytecode.AccessFlag; -import com.thunisoft.agent.javassist.bytecode.AttributeInfo; -import com.thunisoft.agent.javassist.bytecode.AnnotationsAttribute; -import com.thunisoft.agent.javassist.bytecode.BadBytecode; -import com.thunisoft.agent.javassist.bytecode.Bytecode; -import com.thunisoft.agent.javassist.bytecode.ClassFile; -import com.thunisoft.agent.javassist.bytecode.CodeAttribute; -import com.thunisoft.agent.javassist.bytecode.ConstantAttribute; -import com.thunisoft.agent.javassist.bytecode.CodeIterator; -import com.thunisoft.agent.javassist.bytecode.ConstPool; -import com.thunisoft.agent.javassist.bytecode.Descriptor; -import com.thunisoft.agent.javassist.bytecode.EnclosingMethodAttribute; -import com.thunisoft.agent.javassist.bytecode.FieldInfo; -import com.thunisoft.agent.javassist.bytecode.InnerClassesAttribute; -import com.thunisoft.agent.javassist.bytecode.MethodInfo; -import com.thunisoft.agent.javassist.bytecode.ParameterAnnotationsAttribute; -import com.thunisoft.agent.javassist.bytecode.SignatureAttribute; -import com.thunisoft.agent.javassist.bytecode.annotation.Annotation; -import com.thunisoft.agent.javassist.compiler.AccessorMaker; -import com.thunisoft.agent.javassist.compiler.CompileError; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.expr.ExprEditor; +import com.wenshuo.agent.javassist.bytecode.AccessFlag; +import com.wenshuo.agent.javassist.bytecode.AttributeInfo; +import com.wenshuo.agent.javassist.bytecode.AnnotationsAttribute; +import com.wenshuo.agent.javassist.bytecode.BadBytecode; +import com.wenshuo.agent.javassist.bytecode.Bytecode; +import com.wenshuo.agent.javassist.bytecode.ClassFile; +import com.wenshuo.agent.javassist.bytecode.CodeAttribute; +import com.wenshuo.agent.javassist.bytecode.ConstantAttribute; +import com.wenshuo.agent.javassist.bytecode.CodeIterator; +import com.wenshuo.agent.javassist.bytecode.ConstPool; +import com.wenshuo.agent.javassist.bytecode.Descriptor; +import com.wenshuo.agent.javassist.bytecode.EnclosingMethodAttribute; +import com.wenshuo.agent.javassist.bytecode.FieldInfo; +import com.wenshuo.agent.javassist.bytecode.InnerClassesAttribute; +import com.wenshuo.agent.javassist.bytecode.MethodInfo; +import com.wenshuo.agent.javassist.bytecode.ParameterAnnotationsAttribute; +import com.wenshuo.agent.javassist.bytecode.SignatureAttribute; +import com.wenshuo.agent.javassist.bytecode.annotation.Annotation; +import com.wenshuo.agent.javassist.compiler.AccessorMaker; +import com.wenshuo.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.expr.ExprEditor; /** * Class types. @@ -688,7 +688,7 @@ private static Object toAnnoType(Annotation anno, ClassPool cp) catch (ClassNotFoundException e2){ try { Class clazz = cp.get(anno.getTypeName()).toClass(); - return com.thunisoft.agent.javassist.bytecode.annotation.AnnotationImpl.make( + return com.wenshuo.agent.javassist.bytecode.annotation.AnnotationImpl.make( clazz.getClassLoader(), clazz, cp, anno); } diff --git a/src/com/thunisoft/agent/javassist/CtConstructor.java b/src/com/wenshuo/agent/javassist/CtConstructor.java similarity index 98% rename from src/com/thunisoft/agent/javassist/CtConstructor.java rename to src/com/wenshuo/agent/javassist/CtConstructor.java index 6c03f71..58dd659 100644 --- a/src/com/thunisoft/agent/javassist/CtConstructor.java +++ b/src/com/wenshuo/agent/javassist/CtConstructor.java @@ -14,11 +14,11 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.compiler.CompileError; /** * An instance of CtConstructor represents a constructor. diff --git a/src/com/thunisoft/agent/javassist/CtField.java b/src/com/wenshuo/agent/javassist/CtField.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CtField.java rename to src/com/wenshuo/agent/javassist/CtField.java index 7240e27..7489d83 100644 --- a/src/com/thunisoft/agent/javassist/CtField.java +++ b/src/com/wenshuo/agent/javassist/CtField.java @@ -14,16 +14,16 @@ * License. */ -package com.thunisoft.agent.javassist; - -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.compiler.SymbolTable; -import com.thunisoft.agent.javassist.compiler.CompileError; -import com.thunisoft.agent.javassist.compiler.ast.ASTree; -import com.thunisoft.agent.javassist.compiler.ast.IntConst; -import com.thunisoft.agent.javassist.compiler.ast.DoubleConst; -import com.thunisoft.agent.javassist.compiler.ast.StringL; +package com.wenshuo.agent.javassist; + +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.compiler.SymbolTable; +import com.wenshuo.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.compiler.ast.ASTree; +import com.wenshuo.agent.javassist.compiler.ast.IntConst; +import com.wenshuo.agent.javassist.compiler.ast.DoubleConst; +import com.wenshuo.agent.javassist.compiler.ast.StringL; /** * An instance of CtField represents a field. diff --git a/src/com/thunisoft/agent/javassist/CtMember.java b/src/com/wenshuo/agent/javassist/CtMember.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CtMember.java rename to src/com/wenshuo/agent/javassist/CtMember.java index a8662e4..2e83f97 100644 --- a/src/com/thunisoft/agent/javassist/CtMember.java +++ b/src/com/wenshuo/agent/javassist/CtMember.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; /** * An instance of CtMember represents a field, a constructor, diff --git a/src/com/thunisoft/agent/javassist/CtMethod.java b/src/com/wenshuo/agent/javassist/CtMethod.java similarity index 99% rename from src/com/thunisoft/agent/javassist/CtMethod.java rename to src/com/wenshuo/agent/javassist/CtMethod.java index 4f22ce1..42d9f22 100644 --- a/src/com/thunisoft/agent/javassist/CtMethod.java +++ b/src/com/wenshuo/agent/javassist/CtMethod.java @@ -14,9 +14,9 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.bytecode.*; /** * An instance of CtMethod represents a method. diff --git a/src/com/thunisoft/agent/javassist/CtNewClass.java b/src/com/wenshuo/agent/javassist/CtNewClass.java similarity index 97% rename from src/com/thunisoft/agent/javassist/CtNewClass.java rename to src/com/wenshuo/agent/javassist/CtNewClass.java index 997982f..1db1989 100644 --- a/src/com/thunisoft/agent/javassist/CtNewClass.java +++ b/src/com/wenshuo/agent/javassist/CtNewClass.java @@ -14,11 +14,11 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.DataOutputStream; import java.io.IOException; -import com.thunisoft.agent.javassist.bytecode.ClassFile; +import com.wenshuo.agent.javassist.bytecode.ClassFile; class CtNewClass extends CtClassType { /* true if the class is an interface. diff --git a/src/com/thunisoft/agent/javassist/CtNewConstructor.java b/src/com/wenshuo/agent/javassist/CtNewConstructor.java similarity index 97% rename from src/com/thunisoft/agent/javassist/CtNewConstructor.java rename to src/com/wenshuo/agent/javassist/CtNewConstructor.java index b05448b..18c929d 100644 --- a/src/com/thunisoft/agent/javassist/CtNewConstructor.java +++ b/src/com/wenshuo/agent/javassist/CtNewConstructor.java @@ -14,12 +14,12 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.compiler.CompileError; -import com.thunisoft.agent.javassist.CtMethod.ConstParameter; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.CtMethod.ConstParameter; /** * A collection of static methods for creating a CtConstructor. diff --git a/src/com/thunisoft/agent/javassist/CtNewMethod.java b/src/com/wenshuo/agent/javassist/CtNewMethod.java similarity index 98% rename from src/com/thunisoft/agent/javassist/CtNewMethod.java rename to src/com/wenshuo/agent/javassist/CtNewMethod.java index ae03217..d55a464 100644 --- a/src/com/thunisoft/agent/javassist/CtNewMethod.java +++ b/src/com/wenshuo/agent/javassist/CtNewMethod.java @@ -14,12 +14,12 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.Javac; -import com.thunisoft.agent.javassist.compiler.CompileError; -import com.thunisoft.agent.javassist.CtMethod.ConstParameter; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.Javac; +import com.wenshuo.agent.javassist.compiler.CompileError; +import com.wenshuo.agent.javassist.CtMethod.ConstParameter; /** * A collection of static methods for creating a CtMethod. diff --git a/src/com/thunisoft/agent/javassist/CtNewNestedClass.java b/src/com/wenshuo/agent/javassist/CtNewNestedClass.java similarity index 91% rename from src/com/thunisoft/agent/javassist/CtNewNestedClass.java rename to src/com/wenshuo/agent/javassist/CtNewNestedClass.java index 292e55d..4fb89b0 100644 --- a/src/com/thunisoft/agent/javassist/CtNewNestedClass.java +++ b/src/com/wenshuo/agent/javassist/CtNewNestedClass.java @@ -14,11 +14,11 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.ClassFile; -import com.thunisoft.agent.javassist.bytecode.AccessFlag; -import com.thunisoft.agent.javassist.bytecode.InnerClassesAttribute; +import com.wenshuo.agent.javassist.bytecode.ClassFile; +import com.wenshuo.agent.javassist.bytecode.AccessFlag; +import com.wenshuo.agent.javassist.bytecode.InnerClassesAttribute; /** * A newly created public nested class. diff --git a/src/com/thunisoft/agent/javassist/CtNewWrappedConstructor.java b/src/com/wenshuo/agent/javassist/CtNewWrappedConstructor.java similarity index 96% rename from src/com/thunisoft/agent/javassist/CtNewWrappedConstructor.java rename to src/com/wenshuo/agent/javassist/CtNewWrappedConstructor.java index 8e05678..d507162 100644 --- a/src/com/thunisoft/agent/javassist/CtNewWrappedConstructor.java +++ b/src/com/wenshuo/agent/javassist/CtNewWrappedConstructor.java @@ -14,10 +14,10 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.CtMethod.ConstParameter; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.CtMethod.ConstParameter; class CtNewWrappedConstructor extends CtNewWrappedMethod { private static final int PASS_NONE = CtNewConstructor.PASS_NONE; diff --git a/src/com/thunisoft/agent/javassist/CtNewWrappedMethod.java b/src/com/wenshuo/agent/javassist/CtNewWrappedMethod.java similarity index 97% rename from src/com/thunisoft/agent/javassist/CtNewWrappedMethod.java rename to src/com/wenshuo/agent/javassist/CtNewWrappedMethod.java index d9cb02c..da2ad8b 100644 --- a/src/com/thunisoft/agent/javassist/CtNewWrappedMethod.java +++ b/src/com/wenshuo/agent/javassist/CtNewWrappedMethod.java @@ -14,12 +14,12 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; -import com.thunisoft.agent.javassist.bytecode.*; -import com.thunisoft.agent.javassist.compiler.JvstCodeGen; +import com.wenshuo.agent.javassist.bytecode.*; +import com.wenshuo.agent.javassist.compiler.JvstCodeGen; import java.util.Hashtable; -import com.thunisoft.agent.javassist.CtMethod.ConstParameter; +import com.wenshuo.agent.javassist.CtMethod.ConstParameter; class CtNewWrappedMethod { diff --git a/src/com/thunisoft/agent/javassist/CtPrimitiveType.java b/src/com/wenshuo/agent/javassist/CtPrimitiveType.java similarity index 98% rename from src/com/thunisoft/agent/javassist/CtPrimitiveType.java rename to src/com/wenshuo/agent/javassist/CtPrimitiveType.java index 0b02c5c..bdd961b 100644 --- a/src/com/thunisoft/agent/javassist/CtPrimitiveType.java +++ b/src/com/wenshuo/agent/javassist/CtPrimitiveType.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; /** * An instance of CtPrimitiveType represents a primitive type. diff --git a/src/com/thunisoft/agent/javassist/Loader.java b/src/com/wenshuo/agent/javassist/Loader.java similarity index 99% rename from src/com/thunisoft/agent/javassist/Loader.java rename to src/com/wenshuo/agent/javassist/Loader.java index 666d76f..2c2e52f 100644 --- a/src/com/thunisoft/agent/javassist/Loader.java +++ b/src/com/wenshuo/agent/javassist/Loader.java @@ -14,7 +14,7 @@ * License. */ -package com.thunisoft.agent.javassist; +package com.wenshuo.agent.javassist; import java.io.*; import java.util.Hashtable; @@ -41,7 +41,7 @@ * should be something like this: * *
- * import com.thunisoft.agent.javassist.*;
+ * import com.wenshuo.agent.javassist.*;
  *
  * public class Main {
  *   public static void main(String[] args) throws Throwable {
diff --git a/src/com/thunisoft/agent/javassist/LoaderClassPath.java b/src/com/wenshuo/agent/javassist/LoaderClassPath.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/LoaderClassPath.java
rename to src/com/wenshuo/agent/javassist/LoaderClassPath.java
index 936e9c2..e7c1029 100644
--- a/src/com/thunisoft/agent/javassist/LoaderClassPath.java
+++ b/src/com/wenshuo/agent/javassist/LoaderClassPath.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
 import java.io.InputStream;
 import java.net.URL;
diff --git a/src/com/thunisoft/agent/javassist/Modifier.java b/src/com/wenshuo/agent/javassist/Modifier.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/Modifier.java
rename to src/com/wenshuo/agent/javassist/Modifier.java
index 180f5bc..92f709c 100644
--- a/src/com/thunisoft/agent/javassist/Modifier.java
+++ b/src/com/wenshuo/agent/javassist/Modifier.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
-import com.thunisoft.agent.javassist.bytecode.AccessFlag;
+import com.wenshuo.agent.javassist.bytecode.AccessFlag;
 
 /**
  * The Modifier class provides static methods and constants to decode
diff --git a/src/com/thunisoft/agent/javassist/NotFoundException.java b/src/com/wenshuo/agent/javassist/NotFoundException.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/NotFoundException.java
rename to src/com/wenshuo/agent/javassist/NotFoundException.java
index 702b7c4..5569375 100644
--- a/src/com/thunisoft/agent/javassist/NotFoundException.java
+++ b/src/com/wenshuo/agent/javassist/NotFoundException.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
 /**
  * Signals that something could not be found.
diff --git a/src/com/thunisoft/agent/javassist/SerialVersionUID.java b/src/com/wenshuo/agent/javassist/SerialVersionUID.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/SerialVersionUID.java
rename to src/com/wenshuo/agent/javassist/SerialVersionUID.java
index e44434f..37f9add 100644
--- a/src/com/thunisoft/agent/javassist/SerialVersionUID.java
+++ b/src/com/wenshuo/agent/javassist/SerialVersionUID.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
 import java.io.*;
 import java.lang.reflect.Modifier;
 
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 import java.util.*;
 import java.security.*;
 
diff --git a/src/com/thunisoft/agent/javassist/Translator.java b/src/com/wenshuo/agent/javassist/Translator.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/Translator.java
rename to src/com/wenshuo/agent/javassist/Translator.java
index 782fc95..1492f31 100644
--- a/src/com/thunisoft/agent/javassist/Translator.java
+++ b/src/com/wenshuo/agent/javassist/Translator.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
 /**
  * An observer of Loader.
diff --git a/src/com/thunisoft/agent/javassist/URLClassPath.java b/src/com/wenshuo/agent/javassist/URLClassPath.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/URLClassPath.java
rename to src/com/wenshuo/agent/javassist/URLClassPath.java
index c2f72d7..a66b87a 100644
--- a/src/com/thunisoft/agent/javassist/URLClassPath.java
+++ b/src/com/wenshuo/agent/javassist/URLClassPath.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist;
+package com.wenshuo.agent.javassist;
 
 import java.io.*;
 import java.net.*;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/AccessFlag.java b/src/com/wenshuo/agent/javassist/bytecode/AccessFlag.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/AccessFlag.java
rename to src/com/wenshuo/agent/javassist/bytecode/AccessFlag.java
index ce3db4e..e550e23 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/AccessFlag.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/AccessFlag.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * A support class providing static methods and constants
diff --git a/src/com/thunisoft/agent/javassist/bytecode/AnnotationDefaultAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/AnnotationDefaultAttribute.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/bytecode/AnnotationDefaultAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/AnnotationDefaultAttribute.java
index 2e03fae..4bbddf3 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/AnnotationDefaultAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/AnnotationDefaultAttribute.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.bytecode.annotation.AnnotationsWriter;
-import com.thunisoft.agent.javassist.bytecode.annotation.MemberValue;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.bytecode.annotation.AnnotationsWriter;
+import com.wenshuo.agent.javassist.bytecode.annotation.MemberValue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/AnnotationsAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/AnnotationsAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/AnnotationsAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/AnnotationsAttribute.java
index a89909d..59fa6a4 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/AnnotationsAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/AnnotationsAttribute.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.util.Map;
 import java.util.HashMap;
 import java.io.IOException;
 import java.io.DataInputStream;
 import java.io.ByteArrayOutputStream;
-import com.thunisoft.agent.javassist.bytecode.annotation.*;
+import com.wenshuo.agent.javassist.bytecode.annotation.*;
 
 /**
  * A class representing
@@ -40,7 +40,7 @@
  * 

For example, * *

- * import com.thunisoft.agent.javassist.bytecode.annotation.Annotation;
+ * import com.wenshuo.agent.javassist.bytecode.annotation.Annotation;
  *    :
  * CtMethod m = ... ;
  * MethodInfo minfo = m.getMethodInfo();
diff --git a/src/com/thunisoft/agent/javassist/bytecode/AttributeInfo.java b/src/com/wenshuo/agent/javassist/bytecode/AttributeInfo.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/AttributeInfo.java
rename to src/com/wenshuo/agent/javassist/bytecode/AttributeInfo.java
index 06eb0de..b8f799a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/AttributeInfo.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/AttributeInfo.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/BadBytecode.java b/src/com/wenshuo/agent/javassist/bytecode/BadBytecode.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/BadBytecode.java
rename to src/com/wenshuo/agent/javassist/bytecode/BadBytecode.java
index a03c6b7..6aeafc7 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/BadBytecode.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/BadBytecode.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * Signals that a bad bytecode sequence has been found.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/BootstrapMethodsAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/BootstrapMethodsAttribute.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/BootstrapMethodsAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/BootstrapMethodsAttribute.java
index 9e772bc..194c431 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/BootstrapMethodsAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/BootstrapMethodsAttribute.java
@@ -1,4 +1,4 @@
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ByteArray.java b/src/com/wenshuo/agent/javassist/bytecode/ByteArray.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/ByteArray.java
rename to src/com/wenshuo/agent/javassist/bytecode/ByteArray.java
index cc8527c..ad8fc3f 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ByteArray.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ByteArray.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * A collection of static methods for reading and writing a byte array.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ByteStream.java b/src/com/wenshuo/agent/javassist/bytecode/ByteStream.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ByteStream.java
rename to src/com/wenshuo/agent/javassist/bytecode/ByteStream.java
index 492c58f..7206ea7 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ByteStream.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ByteStream.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.OutputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/Bytecode.java b/src/com/wenshuo/agent/javassist/bytecode/Bytecode.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/Bytecode.java
rename to src/com/wenshuo/agent/javassist/bytecode/Bytecode.java
index a0651bf..e04a85f 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/Bytecode.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/Bytecode.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtPrimitiveType;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtPrimitiveType;
 
 class ByteVector implements Cloneable {
     private byte[] buffer;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ClassFile.java b/src/com/wenshuo/agent/javassist/bytecode/ClassFile.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ClassFile.java
rename to src/com/wenshuo/agent/javassist/bytecode/ClassFile.java
index dfde433..5a6a70c 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ClassFile.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ClassFile.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -24,7 +24,7 @@
 import java.util.ListIterator;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 /**
  * ClassFile represents a Java .class file, which
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ClassFilePrinter.java b/src/com/wenshuo/agent/javassist/bytecode/ClassFilePrinter.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/ClassFilePrinter.java
rename to src/com/wenshuo/agent/javassist/bytecode/ClassFilePrinter.java
index 2d1c750..a7bd9c7 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ClassFilePrinter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ClassFilePrinter.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.PrintWriter;
-import com.thunisoft.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.Modifier;
 import java.util.List;
 
 /**
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ClassFileWriter.java b/src/com/wenshuo/agent/javassist/bytecode/ClassFileWriter.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ClassFileWriter.java
rename to src/com/wenshuo/agent/javassist/bytecode/ClassFileWriter.java
index 7b29301..39ab88b 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ClassFileWriter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ClassFileWriter.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.OutputStream;
 import java.io.DataOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/CodeAnalyzer.java b/src/com/wenshuo/agent/javassist/bytecode/CodeAnalyzer.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/CodeAnalyzer.java
rename to src/com/wenshuo/agent/javassist/bytecode/CodeAnalyzer.java
index 22bf0b0..8efc6d4 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/CodeAnalyzer.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/CodeAnalyzer.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * Utility for computing max_stack.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/CodeAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/CodeAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/CodeAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/CodeAttribute.java
index dc4dbc8..86e7bd9 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/CodeAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/CodeAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/CodeIterator.java b/src/com/wenshuo/agent/javassist/bytecode/CodeIterator.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/CodeIterator.java
rename to src/com/wenshuo/agent/javassist/bytecode/CodeIterator.java
index e4cc23a..7dfc316 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/CodeIterator.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/CodeIterator.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.util.ArrayList;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ConstPool.java b/src/com/wenshuo/agent/javassist/bytecode/ConstPool.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ConstPool.java
rename to src/com/wenshuo/agent/javassist/bytecode/ConstPool.java
index e2bbddc..a7d94ae 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ConstPool.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ConstPool.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -26,7 +26,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import com.thunisoft.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtClass;
 
 /**
  * Constant pool table.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ConstantAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/ConstantAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/ConstantAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/ConstantAttribute.java
index ce91174..900ce1a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ConstantAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ConstantAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.util.Map;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/DeprecatedAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/DeprecatedAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/DeprecatedAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/DeprecatedAttribute.java
index 6922602..fdf1a7f 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/DeprecatedAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/DeprecatedAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/Descriptor.java b/src/com/wenshuo/agent/javassist/bytecode/Descriptor.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/Descriptor.java
rename to src/com/wenshuo/agent/javassist/bytecode/Descriptor.java
index ec22950..7b8f2f1 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/Descriptor.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/Descriptor.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtPrimitiveType;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtPrimitiveType;
+import com.wenshuo.agent.javassist.NotFoundException;
 import java.util.Map;
 
 /**
diff --git a/src/com/thunisoft/agent/javassist/bytecode/DuplicateMemberException.java b/src/com/wenshuo/agent/javassist/bytecode/DuplicateMemberException.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/bytecode/DuplicateMemberException.java
rename to src/com/wenshuo/agent/javassist/bytecode/DuplicateMemberException.java
index 133f737..1035450 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/DuplicateMemberException.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/DuplicateMemberException.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 /**
  * An exception thrown when adding a duplicate member is requested.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/EnclosingMethodAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/EnclosingMethodAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/EnclosingMethodAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/EnclosingMethodAttribute.java
index ef6e01e..05a0f4a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/EnclosingMethodAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/EnclosingMethodAttribute.java
@@ -14,13 +14,13 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.CtConstructor;
+import com.wenshuo.agent.javassist.CtConstructor;
 
 /**
  * EnclosingMethod_attribute.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ExceptionTable.java b/src/com/wenshuo/agent/javassist/bytecode/ExceptionTable.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ExceptionTable.java
rename to src/com/wenshuo/agent/javassist/bytecode/ExceptionTable.java
index cfd65db..9ff2fa5 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ExceptionTable.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ExceptionTable.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ExceptionsAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/ExceptionsAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/ExceptionsAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/ExceptionsAttribute.java
index c346815..e20a621 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ExceptionsAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ExceptionsAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/FieldInfo.java b/src/com/wenshuo/agent/javassist/bytecode/FieldInfo.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/FieldInfo.java
rename to src/com/wenshuo/agent/javassist/bytecode/FieldInfo.java
index 630c5ac..62dd9fa 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/FieldInfo.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/FieldInfo.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/InnerClassesAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/InnerClassesAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/InnerClassesAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/InnerClassesAttribute.java
index 709c49f..895c320 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/InnerClassesAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/InnerClassesAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.util.Map;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/InstructionPrinter.java b/src/com/wenshuo/agent/javassist/bytecode/InstructionPrinter.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/InstructionPrinter.java
rename to src/com/wenshuo/agent/javassist/bytecode/InstructionPrinter.java
index c914db1..c9cc815 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/InstructionPrinter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/InstructionPrinter.java
@@ -13,11 +13,11 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.PrintStream;
 
-import com.thunisoft.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.CtMethod;
 
 /**
  * Simple utility class for printing the bytecode instructions of a method.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/LineNumberAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/LineNumberAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/LineNumberAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/LineNumberAttribute.java
index fccb14c..c8a9dcc 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/LineNumberAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/LineNumberAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/LocalVariableAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/LocalVariableAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/LocalVariableAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/LocalVariableAttribute.java
index 6feccb0..8ce0ccd 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/LocalVariableAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/LocalVariableAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/LocalVariableTypeAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/LocalVariableTypeAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/LocalVariableTypeAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/LocalVariableTypeAttribute.java
index f16c663..57bd395 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/LocalVariableTypeAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/LocalVariableTypeAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/LongVector.java b/src/com/wenshuo/agent/javassist/bytecode/LongVector.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/LongVector.java
rename to src/com/wenshuo/agent/javassist/bytecode/LongVector.java
index 32adc08..16f40e2 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/LongVector.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/LongVector.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 final class LongVector {
     static final int ASIZE = 128;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/MethodInfo.java b/src/com/wenshuo/agent/javassist/bytecode/MethodInfo.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/MethodInfo.java
rename to src/com/wenshuo/agent/javassist/bytecode/MethodInfo.java
index 114b59b..dbe32ca 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/MethodInfo.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/MethodInfo.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -23,8 +23,8 @@
 import java.util.List;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.stackmap.MapMaker;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.stackmap.MapMaker;
 
 /**
  * method_info structure.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/MethodParametersAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/MethodParametersAttribute.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/MethodParametersAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/MethodParametersAttribute.java
index 69ff189..67ed7f6 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/MethodParametersAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/MethodParametersAttribute.java
@@ -1,4 +1,4 @@
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/Mnemonic.java b/src/com/wenshuo/agent/javassist/bytecode/Mnemonic.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/Mnemonic.java
rename to src/com/wenshuo/agent/javassist/bytecode/Mnemonic.java
index bb3ebf8..d5e465d 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/Mnemonic.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/Mnemonic.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * JVM Instruction Names.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/Opcode.java b/src/com/wenshuo/agent/javassist/bytecode/Opcode.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/Opcode.java
rename to src/com/wenshuo/agent/javassist/bytecode/Opcode.java
index 1154835..0a8ea3a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/Opcode.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/Opcode.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 /**
  * JVM Instruction Set.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/ParameterAnnotationsAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/ParameterAnnotationsAttribute.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/bytecode/ParameterAnnotationsAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/ParameterAnnotationsAttribute.java
index 0ed0f8f..cdefada 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/ParameterAnnotationsAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/ParameterAnnotationsAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -22,10 +22,10 @@
 import java.io.DataInputStream;
 import java.io.ByteArrayOutputStream;
 
-import com.thunisoft.agent.javassist.bytecode.AnnotationsAttribute.Copier;
-import com.thunisoft.agent.javassist.bytecode.AnnotationsAttribute.Parser;
-import com.thunisoft.agent.javassist.bytecode.AnnotationsAttribute.Renamer;
-import com.thunisoft.agent.javassist.bytecode.annotation.*;
+import com.wenshuo.agent.javassist.bytecode.AnnotationsAttribute.Copier;
+import com.wenshuo.agent.javassist.bytecode.AnnotationsAttribute.Parser;
+import com.wenshuo.agent.javassist.bytecode.AnnotationsAttribute.Renamer;
+import com.wenshuo.agent.javassist.bytecode.annotation.*;
 
 /**
  * A class representing RuntimeVisibleAnnotations_attribute and
diff --git a/src/com/thunisoft/agent/javassist/bytecode/SignatureAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/SignatureAttribute.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/SignatureAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/SignatureAttribute.java
index c4f12ec..f560505 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/SignatureAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/SignatureAttribute.java
@@ -14,13 +14,13 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.Map;
 import java.util.ArrayList;
-import com.thunisoft.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtClass;
 
 /**
  * Signature_attribute.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/SourceFileAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/SourceFileAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/SourceFileAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/SourceFileAttribute.java
index 0c7f4a7..3f16225 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/SourceFileAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/SourceFileAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/StackMap.java b/src/com/wenshuo/agent/javassist/bytecode/StackMap.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/StackMap.java
rename to src/com/wenshuo/agent/javassist/bytecode/StackMap.java
index 50ece9b..541d6cd 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/StackMap.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/StackMap.java
@@ -14,17 +14,17 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.bytecode.StackMapTable.InsertLocal;
-import com.thunisoft.agent.javassist.bytecode.StackMapTable.NewRemover;
-import com.thunisoft.agent.javassist.bytecode.StackMapTable.Shifter;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.bytecode.StackMapTable.InsertLocal;
+import com.wenshuo.agent.javassist.bytecode.StackMapTable.NewRemover;
+import com.wenshuo.agent.javassist.bytecode.StackMapTable.Shifter;
 
 /**
  * Another stack_map attribute defined in CLDC 1.1 for J2ME.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/StackMapTable.java b/src/com/wenshuo/agent/javassist/bytecode/StackMapTable.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/StackMapTable.java
rename to src/com/wenshuo/agent/javassist/bytecode/StackMapTable.java
index e24dc89..5a843fe 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/StackMapTable.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/StackMapTable.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -22,7 +22,7 @@
 import java.io.PrintWriter;
 import java.io.IOException;
 import java.util.Map;
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 /**
  * stack_map attribute.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/SyntheticAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/SyntheticAttribute.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/SyntheticAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/SyntheticAttribute.java
index b437d88..52484b7 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/SyntheticAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/SyntheticAttribute.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/TypeAnnotationsAttribute.java b/src/com/wenshuo/agent/javassist/bytecode/TypeAnnotationsAttribute.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/TypeAnnotationsAttribute.java
rename to src/com/wenshuo/agent/javassist/bytecode/TypeAnnotationsAttribute.java
index fd1f182..29f075f 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/TypeAnnotationsAttribute.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/TypeAnnotationsAttribute.java
@@ -1,10 +1,10 @@
-package com.thunisoft.agent.javassist.bytecode;
+package com.wenshuo.agent.javassist.bytecode;
 
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
-import com.thunisoft.agent.javassist.bytecode.annotation.TypeAnnotationsWriter;
+import com.wenshuo.agent.javassist.bytecode.annotation.TypeAnnotationsWriter;
 
 /**
  * A class representing
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Analyzer.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Analyzer.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Analyzer.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Analyzer.java
index cb9f469..e70d005 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Analyzer.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Analyzer.java
@@ -13,23 +13,23 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.Iterator;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.AccessFlag;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.ExceptionTable;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.AccessFlag;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.ExceptionTable;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
 
 /**
  * A data-flow analyzer that determines the type state of the stack and local
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/ControlFlow.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/ControlFlow.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/ControlFlow.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/ControlFlow.java
index 24463e4..d37d84c 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/ControlFlow.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/ControlFlow.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.ArrayList;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.stackmap.BasicBlock;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.stackmap.BasicBlock;
 
 /**
  * Represents the control flow graph of a given method.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Executor.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Executor.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Executor.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Executor.java
index 724e6db..76e7e82 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Executor.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Executor.java
@@ -13,17 +13,17 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
-
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
+package com.wenshuo.agent.javassist.bytecode.analysis;
+
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
 
 /**
  * Executor is responsible for modeling the effects of a JVM instruction on a frame.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Frame.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Frame.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Frame.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Frame.java
index 6afadb8..10e87db 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Frame.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Frame.java
@@ -13,7 +13,7 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 
 /**
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/FramePrinter.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/FramePrinter.java
similarity index 85%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/FramePrinter.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/FramePrinter.java
index 3d6251a..84bd21c 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/FramePrinter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/FramePrinter.java
@@ -13,21 +13,21 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.io.PrintStream;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.InstructionPrinter;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.InstructionPrinter;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
 
 /**
  * A utility class for printing a merged view of the frame state and the
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/IntQueue.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/IntQueue.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/IntQueue.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/IntQueue.java
index 2ac68b7..52e3b53 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/IntQueue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/IntQueue.java
@@ -13,7 +13,7 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.NoSuchElementException;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/MultiArrayType.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/MultiArrayType.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/MultiArrayType.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/MultiArrayType.java
index a67d499..8a9eefa 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/MultiArrayType.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/MultiArrayType.java
@@ -13,11 +13,11 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 /**
  * Represents an array of {@link MultiType} instances.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/MultiType.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/MultiType.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/MultiType.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/MultiType.java
index 6c0e79b..6158535 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/MultiType.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/MultiType.java
@@ -13,13 +13,13 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtClass;
 
 /**
  * MultiType represents an unresolved type. Whenever two {@code Type}
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Subroutine.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Subroutine.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Subroutine.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Subroutine.java
index b9bb571..2f6f254 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Subroutine.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Subroutine.java
@@ -13,7 +13,7 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/SubroutineScanner.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/SubroutineScanner.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/SubroutineScanner.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/SubroutineScanner.java
index 04fe517..2b43955 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/SubroutineScanner.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/SubroutineScanner.java
@@ -13,19 +13,19 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ExceptionTable;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ExceptionTable;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
 
 /**
  * Discovers the subroutines in a method, and tracks all callers.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Type.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Type.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Type.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Type.java
index e0d1b1a..41b36b3 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Type.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Type.java
@@ -13,7 +13,7 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -21,9 +21,9 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 /**
  * Represents a JVM type in data-flow analysis. This abstraction is necessary since
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/Util.java b/src/com/wenshuo/agent/javassist/bytecode/analysis/Util.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/Util.java
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/Util.java
index 7beee7f..e935310 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/analysis/Util.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/analysis/Util.java
@@ -13,10 +13,10 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.analysis;
+package com.wenshuo.agent.javassist.bytecode.analysis;
 
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
 
 /**
  * A set of common utility methods.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/analysis/package.html b/src/com/wenshuo/agent/javassist/bytecode/analysis/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/bytecode/analysis/package.html
rename to src/com/wenshuo/agent/javassist/bytecode/analysis/package.html
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/Annotation.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/Annotation.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/Annotation.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/Annotation.java
index d6e502c..fa93f9a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/Annotation.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/Annotation.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 import java.io.IOException;
 import java.util.LinkedHashMap;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationImpl.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationImpl.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationImpl.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationImpl.java
index 416a468..faf72ad 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationImpl.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationImpl.java
@@ -14,18 +14,18 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.AnnotationDefaultAttribute;
-import com.thunisoft.agent.javassist.bytecode.ClassFile;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.AnnotationDefaultAttribute;
+import com.wenshuo.agent.javassist.bytecode.ClassFile;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
 
 /**
  * Internal-use only.  This is a helper class internally used for implementing
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationMemberValue.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationMemberValue.java
index 5ab9f7b..09932ec 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationMemberValue.java
@@ -13,10 +13,10 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationsWriter.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationsWriter.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationsWriter.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationsWriter.java
index 45dd5b8..33beb2d 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/AnnotationsWriter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/AnnotationsWriter.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 import java.io.*;
 
-import com.thunisoft.agent.javassist.bytecode.ByteArray;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.ByteArray;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 
 /**
  * A convenience class for constructing a
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/ArrayMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/ArrayMemberValue.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/ArrayMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/ArrayMemberValue.java
index 628efeb..ff0ab0e 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/ArrayMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/ArrayMemberValue.java
@@ -13,10 +13,10 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/BooleanMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/BooleanMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/BooleanMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/BooleanMemberValue.java
index db74f14..c03c2bb 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/BooleanMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/BooleanMemberValue.java
@@ -13,10 +13,10 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/ByteMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/ByteMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/ByteMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/ByteMemberValue.java
index 249efa2..c26d182 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/ByteMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/ByteMemberValue.java
@@ -13,10 +13,10 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/CharMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/CharMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/CharMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/CharMemberValue.java
index d414ca0..9fe9c4a 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/CharMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/CharMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/ClassMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/ClassMemberValue.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/ClassMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/ClassMemberValue.java
index 98750c0..4b3a697 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/ClassMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/ClassMemberValue.java
@@ -14,13 +14,13 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.SignatureAttribute;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.SignatureAttribute;
 
 import java.io.IOException;
 import java.lang.reflect.Method;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/DoubleMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/DoubleMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/DoubleMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/DoubleMemberValue.java
index 7624993..fcfdad0 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/DoubleMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/DoubleMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/EnumMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/EnumMemberValue.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/EnumMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/EnumMemberValue.java
index 72cfa3b..fca4034 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/EnumMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/EnumMemberValue.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 import java.io.IOException;
 import java.lang.reflect.Method;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
 
 /**
  * Enum constant value.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/FloatMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/FloatMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/FloatMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/FloatMemberValue.java
index b0f9e73..abb5095 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/FloatMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/FloatMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/IntegerMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/IntegerMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/IntegerMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/IntegerMemberValue.java
index 10091f5..a112e4c 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/IntegerMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/IntegerMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/LongMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/LongMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/LongMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/LongMemberValue.java
index 02d4fb8..9be1876 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/LongMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/LongMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValue.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValue.java
index 5c662aa..fcbd86f 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValue.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
 
 import java.io.IOException;
 import java.lang.reflect.Array;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValueVisitor.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValueVisitor.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValueVisitor.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValueVisitor.java
index a2d7584..e20d31e 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/MemberValueVisitor.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/MemberValueVisitor.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 /**
  * Visitor for traversing member values included in an annotation.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/NoSuchClassError.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/NoSuchClassError.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/NoSuchClassError.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/NoSuchClassError.java
index adc99c5..9b99786 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/NoSuchClassError.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/NoSuchClassError.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 /**
  * Thrown if the linkage fails.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/ShortMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/ShortMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/ShortMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/ShortMemberValue.java
index 732d2b7..8dd4970 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/ShortMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/ShortMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/StringMemberValue.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/StringMemberValue.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/StringMemberValue.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/StringMemberValue.java
index 4eaf30f..61ac276 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/StringMemberValue.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/StringMemberValue.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 import java.io.IOException;
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java b/src/com/wenshuo/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java
index c492580..c35185e 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/annotation/TypeAnnotationsWriter.java
@@ -1,9 +1,9 @@
-package com.thunisoft.agent.javassist.bytecode.annotation;
+package com.wenshuo.agent.javassist.bytecode.annotation;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
 
 /**
  * A convenience class for constructing a
diff --git a/src/com/thunisoft/agent/javassist/bytecode/annotation/package.html b/src/com/wenshuo/agent/javassist/bytecode/annotation/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/bytecode/annotation/package.html
rename to src/com/wenshuo/agent/javassist/bytecode/annotation/package.html
diff --git a/src/com/thunisoft/agent/javassist/bytecode/package.html b/src/com/wenshuo/agent/javassist/bytecode/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/bytecode/package.html
rename to src/com/wenshuo/agent/javassist/bytecode/package.html
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/BasicBlock.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/BasicBlock.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/BasicBlock.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/BasicBlock.java
index 16f7d48..f85821b 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/BasicBlock.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/BasicBlock.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
 
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 import java.util.HashMap;
 import java.util.ArrayList;
 
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/MapMaker.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/MapMaker.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/MapMaker.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/MapMaker.java
index 3dea7c4..19f64d5 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/MapMaker.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/MapMaker.java
@@ -14,13 +14,13 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
 
 import java.util.ArrayList;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 /**
  * Stack map maker.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/Tracer.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/Tracer.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/Tracer.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/Tracer.java
index 7535787..caef5c9 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/Tracer.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/Tracer.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
-
-import com.thunisoft.agent.javassist.bytecode.ByteArray;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.ClassPool;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
+
+import com.wenshuo.agent.javassist.bytecode.ByteArray;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.ClassPool;
 
 /*
  * A class for performing abstract interpretation.
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeData.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeData.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeData.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeData.java
index a443323..afab68c 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeData.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeData.java
@@ -14,15 +14,15 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
-
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.StackMapTable;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
+
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.StackMapTable;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.ArrayList;
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeTag.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeTag.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeTag.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeTag.java
index d82ca48..89aa4e3 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypeTag.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypeTag.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
 
-import com.thunisoft.agent.javassist.bytecode.StackMapTable;
+import com.wenshuo.agent.javassist.bytecode.StackMapTable;
 
 public interface TypeTag {
     String TOP_TYPE = "*top*";
diff --git a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypedBlock.java b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypedBlock.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/bytecode/stackmap/TypedBlock.java
rename to src/com/wenshuo/agent/javassist/bytecode/stackmap/TypedBlock.java
index 9a50e99..631bfbd 100644
--- a/src/com/thunisoft/agent/javassist/bytecode/stackmap/TypedBlock.java
+++ b/src/com/wenshuo/agent/javassist/bytecode/stackmap/TypedBlock.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.bytecode.stackmap;
+package com.wenshuo.agent.javassist.bytecode.stackmap;
 
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 public class TypedBlock extends BasicBlock {
     public int stackTop, numLocals;
diff --git a/src/com/thunisoft/agent/javassist/compiler/AccessorMaker.java b/src/com/wenshuo/agent/javassist/compiler/AccessorMaker.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/compiler/AccessorMaker.java
rename to src/com/wenshuo/agent/javassist/compiler/AccessorMaker.java
index 623c99d..f35025f 100644
--- a/src/com/thunisoft/agent/javassist/compiler/AccessorMaker.java
+++ b/src/com/wenshuo/agent/javassist/compiler/AccessorMaker.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 import java.util.HashMap;
 
 /**
diff --git a/src/com/thunisoft/agent/javassist/compiler/CodeGen.java b/src/com/wenshuo/agent/javassist/compiler/CodeGen.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/CodeGen.java
rename to src/com/wenshuo/agent/javassist/compiler/CodeGen.java
index f5cd61e..3345abc 100644
--- a/src/com/thunisoft/agent/javassist/compiler/CodeGen.java
+++ b/src/com/wenshuo/agent/javassist/compiler/CodeGen.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import com.thunisoft.agent.javassist.compiler.ast.*;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 /* The code generator is implemeted by three files:
  * CodeGen.java, MemberCodeGen.java, and JvstCodeGen.
diff --git a/src/com/thunisoft/agent/javassist/compiler/CompileError.java b/src/com/wenshuo/agent/javassist/compiler/CompileError.java
similarity index 89%
rename from src/com/thunisoft/agent/javassist/compiler/CompileError.java
rename to src/com/wenshuo/agent/javassist/compiler/CompileError.java
index 17d005a..7944620 100644
--- a/src/com/thunisoft/agent/javassist/compiler/CompileError.java
+++ b/src/com/wenshuo/agent/javassist/compiler/CompileError.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 public class CompileError extends Exception {
     private Lex lex;
diff --git a/src/com/thunisoft/agent/javassist/compiler/Javac.java b/src/com/wenshuo/agent/javassist/compiler/Javac.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/compiler/Javac.java
rename to src/com/wenshuo/agent/javassist/compiler/Javac.java
index f2b1835..cfbeb4b 100644
--- a/src/com/thunisoft/agent/javassist/compiler/Javac.java
+++ b/src/com/wenshuo/agent/javassist/compiler/Javac.java
@@ -14,25 +14,25 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
-
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtPrimitiveType;
-import com.thunisoft.agent.javassist.CtMember;
-import com.thunisoft.agent.javassist.CtField;
-import com.thunisoft.agent.javassist.CtBehavior;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.CtConstructor;
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.bytecode.Bytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.LocalVariableAttribute;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
-import com.thunisoft.agent.javassist.NotFoundException;
-
-import com.thunisoft.agent.javassist.compiler.ast.*;
+package com.wenshuo.agent.javassist.compiler;
+
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtPrimitiveType;
+import com.wenshuo.agent.javassist.CtMember;
+import com.wenshuo.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.CtBehavior;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.CtConstructor;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.bytecode.Bytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.LocalVariableAttribute;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.NotFoundException;
+
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 public class Javac {
     JvstCodeGen gen;
diff --git a/src/com/thunisoft/agent/javassist/compiler/JvstCodeGen.java b/src/com/wenshuo/agent/javassist/compiler/JvstCodeGen.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/JvstCodeGen.java
rename to src/com/wenshuo/agent/javassist/compiler/JvstCodeGen.java
index d2425f8..7eb03ab 100644
--- a/src/com/thunisoft/agent/javassist/compiler/JvstCodeGen.java
+++ b/src/com/wenshuo/agent/javassist/compiler/JvstCodeGen.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 /* Code generator accepting extended Java syntax for Javassist.
  */
diff --git a/src/com/thunisoft/agent/javassist/compiler/JvstTypeChecker.java b/src/com/wenshuo/agent/javassist/compiler/JvstTypeChecker.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/compiler/JvstTypeChecker.java
rename to src/com/wenshuo/agent/javassist/compiler/JvstTypeChecker.java
index d56a604..a28aaad 100644
--- a/src/com/thunisoft/agent/javassist/compiler/JvstTypeChecker.java
+++ b/src/com/wenshuo/agent/javassist/compiler/JvstTypeChecker.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 /* Type checker accepting extended Java syntax for Javassist.
  */
diff --git a/src/com/thunisoft/agent/javassist/compiler/KeywordTable.java b/src/com/wenshuo/agent/javassist/compiler/KeywordTable.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/compiler/KeywordTable.java
rename to src/com/wenshuo/agent/javassist/compiler/KeywordTable.java
index f50ed66..8f4aa18 100644
--- a/src/com/thunisoft/agent/javassist/compiler/KeywordTable.java
+++ b/src/com/wenshuo/agent/javassist/compiler/KeywordTable.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 public final class KeywordTable extends java.util.HashMap {
     public KeywordTable() { super(); }
diff --git a/src/com/thunisoft/agent/javassist/compiler/Lex.java b/src/com/wenshuo/agent/javassist/compiler/Lex.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/Lex.java
rename to src/com/wenshuo/agent/javassist/compiler/Lex.java
index 414fb8b..f83e802 100644
--- a/src/com/thunisoft/agent/javassist/compiler/Lex.java
+++ b/src/com/wenshuo/agent/javassist/compiler/Lex.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 class Token {
     public Token next = null;
diff --git a/src/com/thunisoft/agent/javassist/compiler/MemberCodeGen.java b/src/com/wenshuo/agent/javassist/compiler/MemberCodeGen.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/MemberCodeGen.java
rename to src/com/wenshuo/agent/javassist/compiler/MemberCodeGen.java
index 0d0666f..91d3d28 100644
--- a/src/com/thunisoft/agent/javassist/compiler/MemberCodeGen.java
+++ b/src/com/wenshuo/agent/javassist/compiler/MemberCodeGen.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 import java.util.ArrayList;
 
diff --git a/src/com/thunisoft/agent/javassist/compiler/MemberResolver.java b/src/com/wenshuo/agent/javassist/compiler/MemberResolver.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/MemberResolver.java
rename to src/com/wenshuo/agent/javassist/compiler/MemberResolver.java
index b203e91..933a626 100644
--- a/src/com/thunisoft/agent/javassist/compiler/MemberResolver.java
+++ b/src/com/wenshuo/agent/javassist/compiler/MemberResolver.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 import java.util.Hashtable;
 import java.lang.ref.WeakReference;
@@ -22,9 +22,9 @@
 import java.util.List;
 import java.util.Iterator;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 /* Code generator methods depending on javassist.* classes.
  */
diff --git a/src/com/thunisoft/agent/javassist/compiler/NoFieldException.java b/src/com/wenshuo/agent/javassist/compiler/NoFieldException.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/compiler/NoFieldException.java
rename to src/com/wenshuo/agent/javassist/compiler/NoFieldException.java
index 0cf8f2e..5b35107 100644
--- a/src/com/thunisoft/agent/javassist/compiler/NoFieldException.java
+++ b/src/com/wenshuo/agent/javassist/compiler/NoFieldException.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.compiler.ast.ASTree;
+import com.wenshuo.agent.javassist.compiler.ast.ASTree;
 
 public class NoFieldException extends CompileError {
     private String fieldName;
diff --git a/src/com/thunisoft/agent/javassist/compiler/Parser.java b/src/com/wenshuo/agent/javassist/compiler/Parser.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/compiler/Parser.java
rename to src/com/wenshuo/agent/javassist/compiler/Parser.java
index a61b8d3..4e15650 100644
--- a/src/com/thunisoft/agent/javassist/compiler/Parser.java
+++ b/src/com/wenshuo/agent/javassist/compiler/Parser.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.compiler.ast.*;
 
 public final class Parser implements TokenId {
     private Lex lex;
diff --git a/src/com/thunisoft/agent/javassist/compiler/ProceedHandler.java b/src/com/wenshuo/agent/javassist/compiler/ProceedHandler.java
similarity index 86%
rename from src/com/thunisoft/agent/javassist/compiler/ProceedHandler.java
rename to src/com/wenshuo/agent/javassist/compiler/ProceedHandler.java
index dd9be5f..7cb7ef4 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ProceedHandler.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ProceedHandler.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
-import com.thunisoft.agent.javassist.bytecode.Bytecode;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.bytecode.Bytecode;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * An interface to an object for implementing $proceed().
diff --git a/src/com/thunisoft/agent/javassist/compiler/SymbolTable.java b/src/com/wenshuo/agent/javassist/compiler/SymbolTable.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/compiler/SymbolTable.java
rename to src/com/wenshuo/agent/javassist/compiler/SymbolTable.java
index 9419897..1a3edc0 100644
--- a/src/com/thunisoft/agent/javassist/compiler/SymbolTable.java
+++ b/src/com/wenshuo/agent/javassist/compiler/SymbolTable.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 import java.util.HashMap;
-import com.thunisoft.agent.javassist.compiler.ast.Declarator;
+import com.wenshuo.agent.javassist.compiler.ast.Declarator;
 
 public final class SymbolTable extends HashMap {
     private SymbolTable parent;
diff --git a/src/com/thunisoft/agent/javassist/compiler/SyntaxError.java b/src/com/wenshuo/agent/javassist/compiler/SyntaxError.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/compiler/SyntaxError.java
rename to src/com/wenshuo/agent/javassist/compiler/SyntaxError.java
index 695c841..5a6f4b4 100644
--- a/src/com/thunisoft/agent/javassist/compiler/SyntaxError.java
+++ b/src/com/wenshuo/agent/javassist/compiler/SyntaxError.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 public class SyntaxError extends CompileError {
     public SyntaxError(Lex lexer) {
diff --git a/src/com/thunisoft/agent/javassist/compiler/TokenId.java b/src/com/wenshuo/agent/javassist/compiler/TokenId.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/compiler/TokenId.java
rename to src/com/wenshuo/agent/javassist/compiler/TokenId.java
index 0168464..58538a6 100644
--- a/src/com/thunisoft/agent/javassist/compiler/TokenId.java
+++ b/src/com/wenshuo/agent/javassist/compiler/TokenId.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
+package com.wenshuo.agent.javassist.compiler;
 
 public interface TokenId {
     int ABSTRACT = 300;
diff --git a/src/com/thunisoft/agent/javassist/compiler/TypeChecker.java b/src/com/wenshuo/agent/javassist/compiler/TypeChecker.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/compiler/TypeChecker.java
rename to src/com/wenshuo/agent/javassist/compiler/TypeChecker.java
index 5331617..80153d0 100644
--- a/src/com/thunisoft/agent/javassist/compiler/TypeChecker.java
+++ b/src/com/wenshuo/agent/javassist/compiler/TypeChecker.java
@@ -14,15 +14,15 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler;
-
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtField;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.compiler.ast.*;
-import com.thunisoft.agent.javassist.bytecode.*;
+package com.wenshuo.agent.javassist.compiler;
+
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.compiler.ast.*;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 public class TypeChecker extends Visitor implements Opcode, TokenId {
     static final String javaLangObject = "java.lang.Object";
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/ASTList.java b/src/com/wenshuo/agent/javassist/compiler/ast/ASTList.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/compiler/ast/ASTList.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/ASTList.java
index 16099a3..9c6966d 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/ASTList.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/ASTList.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * A linked list.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/ASTree.java b/src/com/wenshuo/agent/javassist/compiler/ast/ASTree.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/compiler/ast/ASTree.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/ASTree.java
index d3630f2..b464ec0 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/ASTree.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/ASTree.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
 import java.io.Serializable;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Abstract Syntax Tree.  An ASTree object represents a node of
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/ArrayInit.java b/src/com/wenshuo/agent/javassist/compiler/ast/ArrayInit.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/ArrayInit.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/ArrayInit.java
index 26973c3..aff9430 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/ArrayInit.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/ArrayInit.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Array initializer such as { 1, 2, 3 }.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/AssignExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/AssignExpr.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/compiler/ast/AssignExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/AssignExpr.java
index 523aae4..5e49831 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/AssignExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/AssignExpr.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Assignment expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/BinExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/BinExpr.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/compiler/ast/BinExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/BinExpr.java
index c878f45..41005c1 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/BinExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/BinExpr.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Binary expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/CallExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/CallExpr.java
similarity index 85%
rename from src/com/thunisoft/agent/javassist/compiler/ast/CallExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/CallExpr.java
index e0d21ec..f2b1fb1 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/CallExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/CallExpr.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.MemberResolver;
+import com.wenshuo.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.MemberResolver;
 
 /**
  * Method call expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/CastExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/CastExpr.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/CastExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/CastExpr.java
index d3d07b9..60f7b43 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/CastExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/CastExpr.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Cast expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/CondExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/CondExpr.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/compiler/ast/CondExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/CondExpr.java
index d795732..f11690f 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/CondExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/CondExpr.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Conditional expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Declarator.java b/src/com/wenshuo/agent/javassist/compiler/ast/Declarator.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Declarator.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Declarator.java
index 213f239..be7c1cd 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Declarator.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Declarator.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Variable declarator.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/DoubleConst.java b/src/com/wenshuo/agent/javassist/compiler/ast/DoubleConst.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/compiler/ast/DoubleConst.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/DoubleConst.java
index 4940315..777e3cf 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/DoubleConst.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/DoubleConst.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
-import com.thunisoft.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
 
 /**
  * Double constant.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Expr.java b/src/com/wenshuo/agent/javassist/compiler/ast/Expr.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Expr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Expr.java
index ff5ceeb..d49ca3e 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Expr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Expr.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/FieldDecl.java b/src/com/wenshuo/agent/javassist/compiler/ast/FieldDecl.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/compiler/ast/FieldDecl.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/FieldDecl.java
index f60f2b3..968a97b 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/FieldDecl.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/FieldDecl.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 public class FieldDecl extends ASTList {
     public FieldDecl(ASTree _head, ASTList _tail) {
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/InstanceOfExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/InstanceOfExpr.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/compiler/ast/InstanceOfExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/InstanceOfExpr.java
index f40b177..e7fa6d3 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/InstanceOfExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/InstanceOfExpr.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Instanceof expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/IntConst.java b/src/com/wenshuo/agent/javassist/compiler/ast/IntConst.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/compiler/ast/IntConst.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/IntConst.java
index 9f3be72..b4d83ca 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/IntConst.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/IntConst.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
-import com.thunisoft.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
 
 /**
  * Integer constant.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Keyword.java b/src/com/wenshuo/agent/javassist/compiler/ast/Keyword.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Keyword.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Keyword.java
index 98f18ce..d1b63dd 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Keyword.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Keyword.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Keyword.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Member.java b/src/com/wenshuo/agent/javassist/compiler/ast/Member.java
similarity index 88%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Member.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Member.java
index f5f0b90..cc5c4d1 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Member.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Member.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
-import com.thunisoft.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.CtField;
 
 /**
  * Member name.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/MethodDecl.java b/src/com/wenshuo/agent/javassist/compiler/ast/MethodDecl.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/compiler/ast/MethodDecl.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/MethodDecl.java
index 81b08fe..a80e374 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/MethodDecl.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/MethodDecl.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 public class MethodDecl extends ASTList {
     public static final String initName = "";
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/NewExpr.java b/src/com/wenshuo/agent/javassist/compiler/ast/NewExpr.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/compiler/ast/NewExpr.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/NewExpr.java
index 8b644d7..4b064f2 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/NewExpr.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/NewExpr.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * New Expression.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Pair.java b/src/com/wenshuo/agent/javassist/compiler/ast/Pair.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Pair.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Pair.java
index ff8f74c..56cb3e6 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Pair.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Pair.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * A node of a a binary tree.  This class provides concrete methods
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Stmnt.java b/src/com/wenshuo/agent/javassist/compiler/ast/Stmnt.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Stmnt.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Stmnt.java
index d766b1f..0d81286 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Stmnt.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Stmnt.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.TokenId;
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.TokenId;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Statement.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/StringL.java b/src/com/wenshuo/agent/javassist/compiler/ast/StringL.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/StringL.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/StringL.java
index d905bd6..d7c43c0 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/StringL.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/StringL.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * String literal.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Symbol.java b/src/com/wenshuo/agent/javassist/compiler/ast/Symbol.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Symbol.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Symbol.java
index ecf9d98..b305cbd 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Symbol.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Symbol.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Identifier.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Variable.java b/src/com/wenshuo/agent/javassist/compiler/ast/Variable.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Variable.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Variable.java
index 4b5bdae..0b7741a 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Variable.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Variable.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * Variable.
diff --git a/src/com/thunisoft/agent/javassist/compiler/ast/Visitor.java b/src/com/wenshuo/agent/javassist/compiler/ast/Visitor.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/compiler/ast/Visitor.java
rename to src/com/wenshuo/agent/javassist/compiler/ast/Visitor.java
index 4f7aeef..e4c6e44 100644
--- a/src/com/thunisoft/agent/javassist/compiler/ast/Visitor.java
+++ b/src/com/wenshuo/agent/javassist/compiler/ast/Visitor.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.compiler.ast;
+package com.wenshuo.agent.javassist.compiler.ast;
 
-import com.thunisoft.agent.javassist.compiler.CompileError;
+import com.wenshuo.agent.javassist.compiler.CompileError;
 
 /**
  * The visitor pattern.
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformAccessArrayField.java b/src/com/wenshuo/agent/javassist/convert/TransformAccessArrayField.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/convert/TransformAccessArrayField.java
rename to src/com/wenshuo/agent/javassist/convert/TransformAccessArrayField.java
index 718fe41..3942bd7 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformAccessArrayField.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformAccessArrayField.java
@@ -13,20 +13,20 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.CodeConverter.ArrayAccessReplacementMethodNames;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.Descriptor;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.analysis.Analyzer;
-import com.thunisoft.agent.javassist.bytecode.analysis.Frame;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.CodeConverter.ArrayAccessReplacementMethodNames;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.Descriptor;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.analysis.Analyzer;
+import com.wenshuo.agent.javassist.bytecode.analysis.Frame;
 
 /**
  * A transformer which replaces array access with static method invocations.
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformAfter.java b/src/com/wenshuo/agent/javassist/convert/TransformAfter.java
similarity index 88%
rename from src/com/thunisoft/agent/javassist/convert/TransformAfter.java
rename to src/com/wenshuo/agent/javassist/convert/TransformAfter.java
index 38293f6..ebe8c61 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformAfter.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformAfter.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 public class TransformAfter extends TransformBefore {
     public TransformAfter(Transformer next,
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformBefore.java b/src/com/wenshuo/agent/javassist/convert/TransformBefore.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/convert/TransformBefore.java
rename to src/com/wenshuo/agent/javassist/convert/TransformBefore.java
index 176314b..ff75939 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformBefore.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformBefore.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 public class TransformBefore extends TransformCall {
     protected CtClass[] parameterTypes;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformCall.java b/src/com/wenshuo/agent/javassist/convert/TransformCall.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/convert/TransformCall.java
rename to src/com/wenshuo/agent/javassist/convert/TransformCall.java
index 21197fe..317bda3 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformCall.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformCall.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
-
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.*;
+package com.wenshuo.agent.javassist.convert;
+
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 public class TransformCall extends Transformer {
     protected String classname, methodname, methodDescriptor;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformFieldAccess.java b/src/com/wenshuo/agent/javassist/convert/TransformFieldAccess.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/convert/TransformFieldAccess.java
rename to src/com/wenshuo/agent/javassist/convert/TransformFieldAccess.java
index 04fc5da..08ed468 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformFieldAccess.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformFieldAccess.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtField;
-import com.thunisoft.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.Modifier;
 
 final public class TransformFieldAccess extends Transformer {
     private String newClassname, newFieldname;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformNew.java b/src/com/wenshuo/agent/javassist/convert/TransformNew.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/convert/TransformNew.java
rename to src/com/wenshuo/agent/javassist/convert/TransformNew.java
index aa5e485..a85d750 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformNew.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformNew.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 final public class TransformNew extends Transformer {
     private int nested;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformNewClass.java b/src/com/wenshuo/agent/javassist/convert/TransformNewClass.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/convert/TransformNewClass.java
rename to src/com/wenshuo/agent/javassist/convert/TransformNewClass.java
index c769c24..513b8ef 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformNewClass.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformNewClass.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 final public class TransformNewClass extends Transformer {
     private int nested;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformReadField.java b/src/com/wenshuo/agent/javassist/convert/TransformReadField.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/convert/TransformReadField.java
rename to src/com/wenshuo/agent/javassist/convert/TransformReadField.java
index f0cd9c4..d8477c8 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformReadField.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformReadField.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtField;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.Modifier;
 
 public class TransformReadField extends Transformer {
     protected String fieldname;
diff --git a/src/com/thunisoft/agent/javassist/convert/TransformWriteField.java b/src/com/wenshuo/agent/javassist/convert/TransformWriteField.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/convert/TransformWriteField.java
rename to src/com/wenshuo/agent/javassist/convert/TransformWriteField.java
index 1ce0064..ecc3f38 100644
--- a/src/com/thunisoft/agent/javassist/convert/TransformWriteField.java
+++ b/src/com/wenshuo/agent/javassist/convert/TransformWriteField.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
+package com.wenshuo.agent.javassist.convert;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtField;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtField;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 final public class TransformWriteField extends TransformReadField {
     public TransformWriteField(Transformer next, CtField field,
diff --git a/src/com/thunisoft/agent/javassist/convert/Transformer.java b/src/com/wenshuo/agent/javassist/convert/Transformer.java
similarity index 75%
rename from src/com/thunisoft/agent/javassist/convert/Transformer.java
rename to src/com/wenshuo/agent/javassist/convert/Transformer.java
index 01b44e4..573dcf6 100644
--- a/src/com/thunisoft/agent/javassist/convert/Transformer.java
+++ b/src/com/wenshuo/agent/javassist/convert/Transformer.java
@@ -14,16 +14,16 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.convert;
-
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
+package com.wenshuo.agent.javassist.convert;
+
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
 
 /**
  * Transformer and its subclasses are used for executing
diff --git a/src/com/thunisoft/agent/javassist/expr/Cast.java b/src/com/wenshuo/agent/javassist/expr/Cast.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/expr/Cast.java
rename to src/com/wenshuo/agent/javassist/expr/Cast.java
index 960dbbc..2f47ebf 100644
--- a/src/com/thunisoft/agent/javassist/expr/Cast.java
+++ b/src/com/wenshuo/agent/javassist/expr/Cast.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * Explicit type cast.
diff --git a/src/com/thunisoft/agent/javassist/expr/ConstructorCall.java b/src/com/wenshuo/agent/javassist/expr/ConstructorCall.java
similarity index 84%
rename from src/com/thunisoft/agent/javassist/expr/ConstructorCall.java
rename to src/com/wenshuo/agent/javassist/expr/ConstructorCall.java
index d25fb56..b99bddc 100644
--- a/src/com/thunisoft/agent/javassist/expr/ConstructorCall.java
+++ b/src/com/wenshuo/agent/javassist/expr/ConstructorCall.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtConstructor;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtConstructor;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
 
 /**
  * Constructor call such as this() and super()
diff --git a/src/com/thunisoft/agent/javassist/expr/Expr.java b/src/com/wenshuo/agent/javassist/expr/Expr.java
similarity index 90%
rename from src/com/thunisoft/agent/javassist/expr/Expr.java
rename to src/com/wenshuo/agent/javassist/expr/Expr.java
index e825ec2..6dd56b9 100644
--- a/src/com/thunisoft/agent/javassist/expr/Expr.java
+++ b/src/com/wenshuo/agent/javassist/expr/Expr.java
@@ -14,27 +14,27 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
-
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtBehavior;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtConstructor;
-import com.thunisoft.agent.javassist.CtPrimitiveType;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.AccessFlag;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.Bytecode;
-import com.thunisoft.agent.javassist.bytecode.ClassFile;
-import com.thunisoft.agent.javassist.bytecode.CodeAttribute;
-import com.thunisoft.agent.javassist.bytecode.CodeIterator;
-import com.thunisoft.agent.javassist.bytecode.ConstPool;
-import com.thunisoft.agent.javassist.bytecode.ExceptionTable;
-import com.thunisoft.agent.javassist.bytecode.ExceptionsAttribute;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
-import com.thunisoft.agent.javassist.bytecode.Opcode;
-import com.thunisoft.agent.javassist.compiler.Javac;
+package com.wenshuo.agent.javassist.expr;
+
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtBehavior;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtConstructor;
+import com.wenshuo.agent.javassist.CtPrimitiveType;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.AccessFlag;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.Bytecode;
+import com.wenshuo.agent.javassist.bytecode.ClassFile;
+import com.wenshuo.agent.javassist.bytecode.CodeAttribute;
+import com.wenshuo.agent.javassist.bytecode.CodeIterator;
+import com.wenshuo.agent.javassist.bytecode.ConstPool;
+import com.wenshuo.agent.javassist.bytecode.ExceptionTable;
+import com.wenshuo.agent.javassist.bytecode.ExceptionsAttribute;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.bytecode.Opcode;
+import com.wenshuo.agent.javassist.compiler.Javac;
 
 import java.util.Iterator;
 import java.util.LinkedList;
diff --git a/src/com/thunisoft/agent/javassist/expr/ExprEditor.java b/src/com/wenshuo/agent/javassist/expr/ExprEditor.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/expr/ExprEditor.java
rename to src/com/wenshuo/agent/javassist/expr/ExprEditor.java
index afb337b..c4711bd 100644
--- a/src/com/thunisoft/agent/javassist/expr/ExprEditor.java
+++ b/src/com/wenshuo/agent/javassist/expr/ExprEditor.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 /**
  * A translator of method bodies.
diff --git a/src/com/thunisoft/agent/javassist/expr/FieldAccess.java b/src/com/wenshuo/agent/javassist/expr/FieldAccess.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/expr/FieldAccess.java
rename to src/com/wenshuo/agent/javassist/expr/FieldAccess.java
index f4fbd81..523277e 100644
--- a/src/com/thunisoft/agent/javassist/expr/FieldAccess.java
+++ b/src/com/wenshuo/agent/javassist/expr/FieldAccess.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * Expression for accessing a field.
diff --git a/src/com/thunisoft/agent/javassist/expr/Handler.java b/src/com/wenshuo/agent/javassist/expr/Handler.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/expr/Handler.java
rename to src/com/wenshuo/agent/javassist/expr/Handler.java
index a5e923a..66665c3 100644
--- a/src/com/thunisoft/agent/javassist/expr/Handler.java
+++ b/src/com/wenshuo/agent/javassist/expr/Handler.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
 
 /**
  * A catch clause or a finally block.
diff --git a/src/com/thunisoft/agent/javassist/expr/Instanceof.java b/src/com/wenshuo/agent/javassist/expr/Instanceof.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/expr/Instanceof.java
rename to src/com/wenshuo/agent/javassist/expr/Instanceof.java
index 708555f..1ea4ee1 100644
--- a/src/com/thunisoft/agent/javassist/expr/Instanceof.java
+++ b/src/com/wenshuo/agent/javassist/expr/Instanceof.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * Instanceof operator.
diff --git a/src/com/thunisoft/agent/javassist/expr/MethodCall.java b/src/com/wenshuo/agent/javassist/expr/MethodCall.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/expr/MethodCall.java
rename to src/com/wenshuo/agent/javassist/expr/MethodCall.java
index e167e23..70496b1 100644
--- a/src/com/thunisoft/agent/javassist/expr/MethodCall.java
+++ b/src/com/wenshuo/agent/javassist/expr/MethodCall.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
 
 /**
  * Method invocation (caller-side expression).
diff --git a/src/com/thunisoft/agent/javassist/expr/NewArray.java b/src/com/wenshuo/agent/javassist/expr/NewArray.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/expr/NewArray.java
rename to src/com/wenshuo/agent/javassist/expr/NewArray.java
index b5ab72c..1c8f1e6 100644
--- a/src/com/thunisoft/agent/javassist/expr/NewArray.java
+++ b/src/com/wenshuo/agent/javassist/expr/NewArray.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * Array creation.
diff --git a/src/com/thunisoft/agent/javassist/expr/NewExpr.java b/src/com/wenshuo/agent/javassist/expr/NewExpr.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/expr/NewExpr.java
rename to src/com/wenshuo/agent/javassist/expr/NewExpr.java
index ee4ef3d..e3f1a14 100644
--- a/src/com/thunisoft/agent/javassist/expr/NewExpr.java
+++ b/src/com/wenshuo/agent/javassist/expr/NewExpr.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.expr;
+package com.wenshuo.agent.javassist.expr;
 
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.bytecode.*;
-import com.thunisoft.agent.javassist.compiler.*;
-import com.thunisoft.agent.javassist.compiler.ast.ASTList;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.compiler.*;
+import com.wenshuo.agent.javassist.compiler.ast.ASTList;
 
 /**
  * Object creation (new expression).
diff --git a/src/com/thunisoft/agent/javassist/expr/package.html b/src/com/wenshuo/agent/javassist/expr/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/expr/package.html
rename to src/com/wenshuo/agent/javassist/expr/package.html
diff --git a/src/com/thunisoft/agent/javassist/package.html b/src/com/wenshuo/agent/javassist/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/package.html
rename to src/com/wenshuo/agent/javassist/package.html
diff --git a/src/com/thunisoft/agent/javassist/runtime/Cflow.java b/src/com/wenshuo/agent/javassist/runtime/Cflow.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/runtime/Cflow.java
rename to src/com/wenshuo/agent/javassist/runtime/Cflow.java
index 8dc88f3..f2c7b6a 100644
--- a/src/com/thunisoft/agent/javassist/runtime/Cflow.java
+++ b/src/com/wenshuo/agent/javassist/runtime/Cflow.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.runtime;
+package com.wenshuo.agent.javassist.runtime;
 
 /**
  * A support class for implementing $cflow.
diff --git a/src/com/thunisoft/agent/javassist/runtime/Desc.java b/src/com/wenshuo/agent/javassist/runtime/Desc.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/runtime/Desc.java
rename to src/com/wenshuo/agent/javassist/runtime/Desc.java
index bbd5344..e8ed8bf 100644
--- a/src/com/thunisoft/agent/javassist/runtime/Desc.java
+++ b/src/com/wenshuo/agent/javassist/runtime/Desc.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.runtime;
+package com.wenshuo.agent.javassist.runtime;
 
 /**
  * A support class for implementing $sig and
diff --git a/src/com/thunisoft/agent/javassist/runtime/DotClass.java b/src/com/wenshuo/agent/javassist/runtime/DotClass.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/runtime/DotClass.java
rename to src/com/wenshuo/agent/javassist/runtime/DotClass.java
index 2fd8f96..e3adef4 100644
--- a/src/com/thunisoft/agent/javassist/runtime/DotClass.java
+++ b/src/com/wenshuo/agent/javassist/runtime/DotClass.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.runtime;
+package com.wenshuo.agent.javassist.runtime;
 
 /**
  * A support class for implementing .class notation.
diff --git a/src/com/thunisoft/agent/javassist/runtime/Inner.java b/src/com/wenshuo/agent/javassist/runtime/Inner.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/runtime/Inner.java
rename to src/com/wenshuo/agent/javassist/runtime/Inner.java
index da62ea2..e51ab88 100644
--- a/src/com/thunisoft/agent/javassist/runtime/Inner.java
+++ b/src/com/wenshuo/agent/javassist/runtime/Inner.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.runtime;
+package com.wenshuo.agent.javassist.runtime;
 
 /**
  * A support class for compiling a method declared in an inner class.
diff --git a/src/com/thunisoft/agent/javassist/runtime/package.html b/src/com/wenshuo/agent/javassist/runtime/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/runtime/package.html
rename to src/com/wenshuo/agent/javassist/runtime/package.html
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPool.java b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPool.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPool.java
rename to src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPool.java
index 38762c5..ce0dbd8 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPool.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPool.java
@@ -14,17 +14,17 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
 import java.lang.ref.WeakReference;
 import java.security.ProtectionDomain;
 import java.util.Iterator;
 import java.util.Map;
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.LoaderClassPath;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.LoaderClassPath;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 /**
  * A scoped class pool.
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactory.java b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactory.java
similarity index 92%
rename from src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactory.java
rename to src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactory.java
index bff84dc..2dd05b4 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactory.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactory.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.ClassPool;
 
 /**
  * A factory interface.
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java
similarity index 93%
rename from src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java
rename to src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java
index f8040a2..1386fff 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolFactoryImpl.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.ClassPool;
 
 /**
  * An implementation of factory.
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepository.java b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepository.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepository.java
rename to src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepository.java
index 09eecda..4965cff 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepository.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepository.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
 import java.util.Map;
 
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.ClassPool;
 
 /**
  * An interface to ScopedClassPoolRepositoryImpl.
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java
rename to src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java
index 01dbc09..3f0e5ae 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/ScopedClassPoolRepositoryImpl.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -22,8 +22,8 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.LoaderClassPath;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.LoaderClassPath;
 
 /**
  * An implementation of ScopedClassPoolRepository.
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/SoftValueHashMap.java b/src/com/wenshuo/agent/javassist/scopedpool/SoftValueHashMap.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/scopedpool/SoftValueHashMap.java
rename to src/com/wenshuo/agent/javassist/scopedpool/SoftValueHashMap.java
index 1e26612..3743ca6 100644
--- a/src/com/thunisoft/agent/javassist/scopedpool/SoftValueHashMap.java
+++ b/src/com/wenshuo/agent/javassist/scopedpool/SoftValueHashMap.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.scopedpool;
+package com.wenshuo.agent.javassist.scopedpool;
 
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
diff --git a/src/com/thunisoft/agent/javassist/scopedpool/package.html b/src/com/wenshuo/agent/javassist/scopedpool/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/scopedpool/package.html
rename to src/com/wenshuo/agent/javassist/scopedpool/package.html
diff --git a/src/com/thunisoft/agent/javassist/tools/Callback.java b/src/com/wenshuo/agent/javassist/tools/Callback.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/tools/Callback.java
rename to src/com/wenshuo/agent/javassist/tools/Callback.java
index 7ae9944..56ba4fb 100644
--- a/src/com/thunisoft/agent/javassist/tools/Callback.java
+++ b/src/com/wenshuo/agent/javassist/tools/Callback.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools;
+package com.wenshuo.agent.javassist.tools;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.CtBehavior;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CtBehavior;
 
 import java.util.HashMap;
 import java.util.UUID;
diff --git a/src/com/thunisoft/agent/javassist/tools/Dump.java b/src/com/wenshuo/agent/javassist/tools/Dump.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/tools/Dump.java
rename to src/com/wenshuo/agent/javassist/tools/Dump.java
index 43e7c51..8a504ee 100644
--- a/src/com/thunisoft/agent/javassist/tools/Dump.java
+++ b/src/com/wenshuo/agent/javassist/tools/Dump.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools;
+package com.wenshuo.agent.javassist.tools;
 
 import java.io.*;
-import com.thunisoft.agent.javassist.bytecode.ClassFile;
-import com.thunisoft.agent.javassist.bytecode.ClassFilePrinter;
+import com.wenshuo.agent.javassist.bytecode.ClassFile;
+import com.wenshuo.agent.javassist.bytecode.ClassFilePrinter;
 
 /**
  * Dump is a tool for viewing the class definition in the given
diff --git a/src/com/thunisoft/agent/javassist/tools/framedump.java b/src/com/wenshuo/agent/javassist/tools/framedump.java
similarity index 88%
rename from src/com/thunisoft/agent/javassist/tools/framedump.java
rename to src/com/wenshuo/agent/javassist/tools/framedump.java
index cd10a7f..623ffc3 100644
--- a/src/com/thunisoft/agent/javassist/tools/framedump.java
+++ b/src/com/wenshuo/agent/javassist/tools/framedump.java
@@ -13,11 +13,11 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.tools;
+package com.wenshuo.agent.javassist.tools;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.bytecode.analysis.FramePrinter;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.bytecode.analysis.FramePrinter;
 
 /**
  * framedump is a tool for viewing a merged combination of the instructions and frame state
diff --git a/src/com/thunisoft/agent/javassist/tools/package.html b/src/com/wenshuo/agent/javassist/tools/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/tools/package.html
rename to src/com/wenshuo/agent/javassist/tools/package.html
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/CannotCreateException.java b/src/com/wenshuo/agent/javassist/tools/reflect/CannotCreateException.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/tools/reflect/CannotCreateException.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/CannotCreateException.java
index d82ef16..de3c782 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/CannotCreateException.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/CannotCreateException.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 /**
  * Signals that ClassMetaobject.newInstance() fails.
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/CannotInvokeException.java b/src/com/wenshuo/agent/javassist/tools/reflect/CannotInvokeException.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/tools/reflect/CannotInvokeException.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/CannotInvokeException.java
index 587c0b5..7907022 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/CannotInvokeException.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/CannotInvokeException.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.IllegalAccessException;
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/CannotReflectException.java b/src/com/wenshuo/agent/javassist/tools/reflect/CannotReflectException.java
similarity index 91%
rename from src/com/thunisoft/agent/javassist/tools/reflect/CannotReflectException.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/CannotReflectException.java
index 8578200..f2673c9 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/CannotReflectException.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/CannotReflectException.java
@@ -14,9 +14,9 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.CannotCompileException;
 
 /**
  * Thrown by makeReflective() in Reflection
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/ClassMetaobject.java b/src/com/wenshuo/agent/javassist/tools/reflect/ClassMetaobject.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/tools/reflect/ClassMetaobject.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/ClassMetaobject.java
index f1dd36c..78fb42f 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/ClassMetaobject.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/ClassMetaobject.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 import java.lang.reflect.*;
 import java.util.Arrays;
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Compiler.java b/src/com/wenshuo/agent/javassist/tools/reflect/Compiler.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Compiler.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Compiler.java
index a3f9a6a..0953163 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Compiler.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Compiler.java
@@ -14,10 +14,10 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.ClassPool;
 import java.io.PrintStream;
 
 class CompiledClass {
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Loader.java b/src/com/wenshuo/agent/javassist/tools/reflect/Loader.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Loader.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Loader.java
index ae2fe98..4b9d1e3 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Loader.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Loader.java
@@ -14,11 +14,11 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
 
 /**
  * A class loader for reflection.
@@ -107,7 +107,7 @@
  * @see javassist.tools.reflect.Compiler
  * @see javassist.Loader
  */
-public class Loader extends com.thunisoft.agent.javassist.Loader {
+public class Loader extends com.wenshuo.agent.javassist.Loader {
     protected Reflection reflection;
 
     /**
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Metalevel.java b/src/com/wenshuo/agent/javassist/tools/reflect/Metalevel.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Metalevel.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Metalevel.java
index 660397f..d8c1f4a 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Metalevel.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Metalevel.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 /**
  * An interface to access a metaobject and a class metaobject.
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Metaobject.java b/src/com/wenshuo/agent/javassist/tools/reflect/Metaobject.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Metaobject.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Metaobject.java
index 3596605..f96444e 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Metaobject.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Metaobject.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 import java.lang.reflect.Method;
 import java.io.Serializable;
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Reflection.java b/src/com/wenshuo/agent/javassist/tools/reflect/Reflection.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Reflection.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Reflection.java
index d65342f..4e2219f 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Reflection.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Reflection.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 import java.util.Iterator;
-import com.thunisoft.agent.javassist.*;
-import com.thunisoft.agent.javassist.CtMethod.ConstParameter;
-import com.thunisoft.agent.javassist.bytecode.ClassFile;
-import com.thunisoft.agent.javassist.bytecode.BadBytecode;
-import com.thunisoft.agent.javassist.bytecode.MethodInfo;
+import com.wenshuo.agent.javassist.*;
+import com.wenshuo.agent.javassist.CtMethod.ConstParameter;
+import com.wenshuo.agent.javassist.bytecode.ClassFile;
+import com.wenshuo.agent.javassist.bytecode.BadBytecode;
+import com.wenshuo.agent.javassist.bytecode.MethodInfo;
 
 /**
  * The class implementing the behavioral reflection mechanism.
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/Sample.java b/src/com/wenshuo/agent/javassist/tools/reflect/Sample.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/tools/reflect/Sample.java
rename to src/com/wenshuo/agent/javassist/tools/reflect/Sample.java
index 579ad7c..9622be5 100644
--- a/src/com/thunisoft/agent/javassist/tools/reflect/Sample.java
+++ b/src/com/wenshuo/agent/javassist/tools/reflect/Sample.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.reflect;
+package com.wenshuo.agent.javassist.tools.reflect;
 
 /**
  * A template used for defining a reflective class.
diff --git a/src/com/thunisoft/agent/javassist/tools/reflect/package.html b/src/com/wenshuo/agent/javassist/tools/reflect/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/tools/reflect/package.html
rename to src/com/wenshuo/agent/javassist/tools/reflect/package.html
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/AppletServer.java b/src/com/wenshuo/agent/javassist/tools/rmi/AppletServer.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/tools/rmi/AppletServer.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/AppletServer.java
index 6f31dc4..4ffcc7a 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/AppletServer.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/AppletServer.java
@@ -14,14 +14,14 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 import java.io.*;
 
-import com.thunisoft.agent.javassist.tools.web.*;
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.tools.web.*;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
 import java.lang.reflect.Method;
 import java.util.Hashtable;
 import java.util.Vector;
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/ObjectImporter.java b/src/com/wenshuo/agent/javassist/tools/rmi/ObjectImporter.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/tools/rmi/ObjectImporter.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/ObjectImporter.java
index c4caee1..776160e 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/ObjectImporter.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/ObjectImporter.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 import java.io.*;
 import java.net.*;
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/ObjectNotFoundException.java b/src/com/wenshuo/agent/javassist/tools/rmi/ObjectNotFoundException.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/rmi/ObjectNotFoundException.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/ObjectNotFoundException.java
index ca70da9..cc4f801 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/ObjectNotFoundException.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/ObjectNotFoundException.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 public class ObjectNotFoundException extends Exception {
     public ObjectNotFoundException(String name) {
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/Proxy.java b/src/com/wenshuo/agent/javassist/tools/rmi/Proxy.java
similarity index 94%
rename from src/com/thunisoft/agent/javassist/tools/rmi/Proxy.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/Proxy.java
index 8254010..9be28be 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/Proxy.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/Proxy.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 /**
  * An interface implemented by proxy classes.
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/RemoteException.java b/src/com/wenshuo/agent/javassist/tools/rmi/RemoteException.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/rmi/RemoteException.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/RemoteException.java
index c64d529..9d6a3c7 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/RemoteException.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/RemoteException.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 /**
  * RemoteException represents any exception thrown
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/RemoteRef.java b/src/com/wenshuo/agent/javassist/tools/rmi/RemoteRef.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/rmi/RemoteRef.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/RemoteRef.java
index 073479a..a35a417 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/RemoteRef.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/RemoteRef.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 /**
  * Remote reference.  This class is internally used for sending a remote
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/Sample.java b/src/com/wenshuo/agent/javassist/tools/rmi/Sample.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/tools/rmi/Sample.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/Sample.java
index 31f708b..409e959 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/Sample.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/Sample.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
 /**
  * A template used for defining a proxy class.
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/StubGenerator.java b/src/com/wenshuo/agent/javassist/tools/rmi/StubGenerator.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/tools/rmi/StubGenerator.java
rename to src/com/wenshuo/agent/javassist/tools/rmi/StubGenerator.java
index 3745b52..9eaf6bf 100644
--- a/src/com/thunisoft/agent/javassist/tools/rmi/StubGenerator.java
+++ b/src/com/wenshuo/agent/javassist/tools/rmi/StubGenerator.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.rmi;
+package com.wenshuo.agent.javassist.tools.rmi;
 
-import com.thunisoft.agent.javassist.*;
+import com.wenshuo.agent.javassist.*;
 import java.lang.reflect.Method;
 import java.util.Hashtable;
-import com.thunisoft.agent.javassist.CtMethod.ConstParameter;
+import com.wenshuo.agent.javassist.CtMethod.ConstParameter;
 
 /**
  * A stub-code generator.  It is used for producing a proxy class.
diff --git a/src/com/thunisoft/agent/javassist/tools/rmi/package.html b/src/com/wenshuo/agent/javassist/tools/rmi/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/tools/rmi/package.html
rename to src/com/wenshuo/agent/javassist/tools/rmi/package.html
diff --git a/src/com/thunisoft/agent/javassist/tools/web/BadHttpRequest.java b/src/com/wenshuo/agent/javassist/tools/web/BadHttpRequest.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/tools/web/BadHttpRequest.java
rename to src/com/wenshuo/agent/javassist/tools/web/BadHttpRequest.java
index 29296a0..93cf67c 100644
--- a/src/com/thunisoft/agent/javassist/tools/web/BadHttpRequest.java
+++ b/src/com/wenshuo/agent/javassist/tools/web/BadHttpRequest.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.web;
+package com.wenshuo.agent.javassist.tools.web;
 
 /**
  * Thrown when receiving an invalid HTTP request.
diff --git a/src/com/thunisoft/agent/javassist/tools/web/Viewer.java b/src/com/wenshuo/agent/javassist/tools/web/Viewer.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/tools/web/Viewer.java
rename to src/com/wenshuo/agent/javassist/tools/web/Viewer.java
index f23123f..52d5416 100644
--- a/src/com/thunisoft/agent/javassist/tools/web/Viewer.java
+++ b/src/com/wenshuo/agent/javassist/tools/web/Viewer.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.web;
+package com.wenshuo.agent.javassist.tools.web;
 
 import java.io.*;
 import java.net.*;
diff --git a/src/com/thunisoft/agent/javassist/tools/web/Webserver.java b/src/com/wenshuo/agent/javassist/tools/web/Webserver.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/tools/web/Webserver.java
rename to src/com/wenshuo/agent/javassist/tools/web/Webserver.java
index 9dd7e52..5511ef2 100644
--- a/src/com/thunisoft/agent/javassist/tools/web/Webserver.java
+++ b/src/com/wenshuo/agent/javassist/tools/web/Webserver.java
@@ -14,12 +14,12 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.tools.web;
+package com.wenshuo.agent.javassist.tools.web;
 
 import java.net.*;
 import java.io.*;
 import java.util.Date;
-import com.thunisoft.agent.javassist.*;
+import com.wenshuo.agent.javassist.*;
 
 /**
  * A web server for running sample programs.
diff --git a/src/com/thunisoft/agent/javassist/tools/web/package.html b/src/com/wenshuo/agent/javassist/tools/web/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/tools/web/package.html
rename to src/com/wenshuo/agent/javassist/tools/web/package.html
diff --git a/src/com/thunisoft/agent/javassist/util/HotSwapper.java b/src/com/wenshuo/agent/javassist/util/HotSwapper.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/util/HotSwapper.java
rename to src/com/wenshuo/agent/javassist/util/HotSwapper.java
index f069132..45836bf 100644
--- a/src/com/thunisoft/agent/javassist/util/HotSwapper.java
+++ b/src/com/wenshuo/agent/javassist/util/HotSwapper.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util;
+package com.wenshuo.agent.javassist.util;
 
 import com.sun.jdi.*;
 import com.sun.jdi.connect.*;
diff --git a/src/com/thunisoft/agent/javassist/util/package.html b/src/com/wenshuo/agent/javassist/util/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/util/package.html
rename to src/com/wenshuo/agent/javassist/util/package.html
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/FactoryHelper.java b/src/com/wenshuo/agent/javassist/util/proxy/FactoryHelper.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/util/proxy/FactoryHelper.java
rename to src/com/wenshuo/agent/javassist/util/proxy/FactoryHelper.java
index d3ad473..02f961e 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/FactoryHelper.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/FactoryHelper.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.Method;
 import java.io.BufferedOutputStream;
@@ -25,8 +25,8 @@
 import java.io.IOException;
 import java.security.ProtectionDomain;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.bytecode.ClassFile;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.bytecode.ClassFile;
 
 /**
  * A helper class for implementing ProxyFactory.
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/MethodFilter.java b/src/com/wenshuo/agent/javassist/util/proxy/MethodFilter.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/util/proxy/MethodFilter.java
rename to src/com/wenshuo/agent/javassist/util/proxy/MethodFilter.java
index 798e0bf..4ebe168 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/MethodFilter.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/MethodFilter.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/MethodHandler.java b/src/com/wenshuo/agent/javassist/util/proxy/MethodHandler.java
similarity index 97%
rename from src/com/thunisoft/agent/javassist/util/proxy/MethodHandler.java
rename to src/com/wenshuo/agent/javassist/util/proxy/MethodHandler.java
index 9bf4f9f..546dc76 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/MethodHandler.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/MethodHandler.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.Method;
 
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/Proxy.java b/src/com/wenshuo/agent/javassist/util/proxy/Proxy.java
similarity index 95%
rename from src/com/thunisoft/agent/javassist/util/proxy/Proxy.java
rename to src/com/wenshuo/agent/javassist/util/proxy/Proxy.java
index 5c2909a..3907742 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/Proxy.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/Proxy.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 /**
  * The interface implemented by proxy classes.
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/ProxyFactory.java b/src/com/wenshuo/agent/javassist/util/proxy/ProxyFactory.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/util/proxy/ProxyFactory.java
rename to src/com/wenshuo/agent/javassist/util/proxy/ProxyFactory.java
index 520d797..270fc56 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/ProxyFactory.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/ProxyFactory.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
@@ -26,9 +26,9 @@
 import java.util.*;
 import java.lang.ref.WeakReference;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.NotFoundException;
-import com.thunisoft.agent.javassist.bytecode.*;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.bytecode.*;
 
 /*
  * This class is implemented only with the lower-level API of Javassist.
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObject.java b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObject.java
similarity index 96%
rename from src/com/thunisoft/agent/javassist/util/proxy/ProxyObject.java
rename to src/com/wenshuo/agent/javassist/util/proxy/ProxyObject.java
index c6a6751..59f8f8b 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObject.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObject.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 /**
  * The interface implemented by proxy classes.
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectInputStream.java b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectInputStream.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectInputStream.java
rename to src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectInputStream.java
index 8aa351f..ee81e88 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectInputStream.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectInputStream.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectOutputStream.java b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectOutputStream.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectOutputStream.java
rename to src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectOutputStream.java
index bef2649..84ac6cb 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/ProxyObjectOutputStream.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/ProxyObjectOutputStream.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.io.IOException;
 import java.io.ObjectOutputStream;
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/RuntimeSupport.java b/src/com/wenshuo/agent/javassist/util/proxy/RuntimeSupport.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/util/proxy/RuntimeSupport.java
rename to src/com/wenshuo/agent/javassist/util/proxy/RuntimeSupport.java
index 4c94b6a..9f4bbf5 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/RuntimeSupport.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/RuntimeSupport.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.Method;
 import java.io.Serializable;
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/SecurityActions.java b/src/com/wenshuo/agent/javassist/util/proxy/SecurityActions.java
similarity index 99%
rename from src/com/thunisoft/agent/javassist/util/proxy/SecurityActions.java
rename to src/com/wenshuo/agent/javassist/util/proxy/SecurityActions.java
index ed2e9a3..d8e8a77 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/SecurityActions.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/SecurityActions.java
@@ -13,7 +13,7 @@
  * for the specific language governing rights and limitations under the
  * License.
  */
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Constructor;
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/SerializedProxy.java b/src/com/wenshuo/agent/javassist/util/proxy/SerializedProxy.java
similarity index 98%
rename from src/com/thunisoft/agent/javassist/util/proxy/SerializedProxy.java
rename to src/com/wenshuo/agent/javassist/util/proxy/SerializedProxy.java
index 63601d9..70e6469 100644
--- a/src/com/thunisoft/agent/javassist/util/proxy/SerializedProxy.java
+++ b/src/com/wenshuo/agent/javassist/util/proxy/SerializedProxy.java
@@ -14,7 +14,7 @@
  * License.
  */
 
-package com.thunisoft.agent.javassist.util.proxy;
+package com.wenshuo.agent.javassist.util.proxy;
 
 import java.io.Serializable;
 import java.io.ObjectStreamException;
diff --git a/src/com/thunisoft/agent/javassist/util/proxy/package.html b/src/com/wenshuo/agent/javassist/util/proxy/package.html
similarity index 100%
rename from src/com/thunisoft/agent/javassist/util/proxy/package.html
rename to src/com/wenshuo/agent/javassist/util/proxy/package.html
diff --git a/src/com/thunisoft/agent/log/ExecuteLogUtils.java b/src/com/wenshuo/agent/log/ExecuteLogUtils.java
similarity index 98%
rename from src/com/thunisoft/agent/log/ExecuteLogUtils.java
rename to src/com/wenshuo/agent/log/ExecuteLogUtils.java
index 4e965ce..2cb24f0 100644
--- a/src/com/thunisoft/agent/log/ExecuteLogUtils.java
+++ b/src/com/wenshuo/agent/log/ExecuteLogUtils.java
@@ -2,7 +2,7 @@
  * @(#)ExecuteLogUtils.java 2015-7-27 下午05:57:01 javaagent Copyright 2015 Thuisoft, Inc. All rights reserved. THUNISOFT
  * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
-package com.thunisoft.agent.log;
+package com.wenshuo.agent.log;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -22,9 +22,9 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
-import com.thunisoft.agent.AgentUtils;
-import com.thunisoft.agent.ConfigUtils;
-import com.thunisoft.agent.NamedThreadFactory;
+import com.wenshuo.agent.AgentUtils;
+import com.wenshuo.agent.ConfigUtils;
+import com.wenshuo.agent.NamedThreadFactory;
 
 /**
  * ExecuteLogUtils
diff --git a/src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java b/src/com/wenshuo/agent/log/MethodExecuteJSONformatter.java
similarity index 98%
rename from src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java
rename to src/com/wenshuo/agent/log/MethodExecuteJSONformatter.java
index 67dac86..a35225a 100644
--- a/src/com/thunisoft/agent/log/MethodExecuteJSONformatter.java
+++ b/src/com/wenshuo/agent/log/MethodExecuteJSONformatter.java
@@ -1,4 +1,4 @@
-package com.thunisoft.agent.log;
+package com.wenshuo.agent.log;
 
 import java.util.Iterator;
 import java.util.Map;
diff --git a/src/com/thunisoft/agent/log/OutputLogRunnable.java b/src/com/wenshuo/agent/log/OutputLogRunnable.java
similarity index 94%
rename from src/com/thunisoft/agent/log/OutputLogRunnable.java
rename to src/com/wenshuo/agent/log/OutputLogRunnable.java
index 050ba25..f60cd7b 100644
--- a/src/com/thunisoft/agent/log/OutputLogRunnable.java
+++ b/src/com/wenshuo/agent/log/OutputLogRunnable.java
@@ -4,7 +4,7 @@
  * Copyright 2015 Thuisoft, Inc. All rights reserved.
  * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
-package com.thunisoft.agent.log;
+package com.wenshuo.agent.log;
 
 /**
  * OutputLogRunnable
diff --git a/src/com/thunisoft/agent/transformer/ThunisoftClassFileTransformer.java b/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
similarity index 84%
rename from src/com/thunisoft/agent/transformer/ThunisoftClassFileTransformer.java
rename to src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
index 31de547..9322f19 100644
--- a/src/com/thunisoft/agent/transformer/ThunisoftClassFileTransformer.java
+++ b/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
@@ -2,7 +2,7 @@
  * @(#)ThunisoftClassFileTransformer.java 2015-7-24 上午09:53:44 javaagent Copyright 2015 Thuisoft, Inc. All rights
  * reserved. THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
-package com.thunisoft.agent.transformer;
+package com.wenshuo.agent.transformer;
 
 import java.io.IOException;
 import java.lang.instrument.ClassFileTransformer;
@@ -12,28 +12,28 @@
 import java.util.Set;
 import java.util.regex.Pattern;
 
-import com.thunisoft.agent.javassist.CannotCompileException;
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.LoaderClassPath;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.CannotCompileException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.LoaderClassPath;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.NotFoundException;
 
-import com.thunisoft.agent.ConfigUtils;
-import com.thunisoft.agent.PojoDetector;
+import com.wenshuo.agent.ConfigUtils;
+import com.wenshuo.agent.PojoDetector;
 
 /**
- * ThunisoftClassFileTransformer
+ * AgentLogClassFileTransformer 类增强,增加agent日志
  * 
  * @author dingjsh
  * @time 2015-7-24上午09:53:44
  */
-public class ThunisoftClassFileTransformer implements ClassFileTransformer {
+public class AgentLogClassFileTransformer implements ClassFileTransformer {
 
-    private static final String LOG_UTILS = "com.thunisoft.agent.log.ExecuteLogUtils";
+    private static final String LOG_UTILS = "com.wenshuo.agent.log.ExecuteLogUtils";
 
-    private static final String AGENT_PACKAGE_NAME = "com.thunisoft.agent";
+    private static final String AGENT_PACKAGE_NAME = "com.wenshuo.agent";
 
     /*
      * (non-Javadoc)
@@ -109,9 +109,8 @@ private void aopLog(String className, CtMethod m) throws CannotCompileException
 
         // 避免变量名重复
         m.addLocalVariable("dingjsh_javaagent_elapsedTime", CtClass.longType);
-        m.insertBefore("dingjsh_javaagent_elapsedTime = "+timeMethodStr+";");
-        m.insertAfter(
-            "dingjsh_javaagent_elapsedTime = "+timeMethodStr+" - dingjsh_javaagent_elapsedTime;");
+        m.insertBefore("dingjsh_javaagent_elapsedTime = " + timeMethodStr + ";");
+        m.insertAfter("dingjsh_javaagent_elapsedTime = " + timeMethodStr + " - dingjsh_javaagent_elapsedTime;");
         m.insertAfter(LOG_UTILS + ".log(" + aopClassName + ",\"" + m.getName()
             + "\",java.lang.System.currentTimeMillis(),(long)dingjsh_javaagent_elapsedTime" + ");");
     }
diff --git a/src/props/agent.properties b/src/props/agent.properties
index 1c354c8..3bb7637 100644
--- a/src/props/agent.properties
+++ b/src/props/agent.properties
@@ -1,11 +1,11 @@
 #the default packages that you don't want to monitor,multi config separated by semicolon 
 # such as tomcat,jre's method
-agent.exclude.package.default=com.thunisoft.tas
+agent.exclude.package.default=
 #the  packages that you don't want to monitor,multi config separated by semicolon 
 agent.exclude.package=
 #the packages you want to monitor,the agent only monitor the packages and subpackages thar configed in here,
 #multi config separated by semicolon 
-agent.include.package=com.thunisoft
+agent.include.package=com.XXX
 #the log file name,it will add current date automatically
 agent.log.file=d\:\\agent.log
 #how much seconds per time do the log output
diff --git a/test/com/thunisoft/agent/test/TestCtMethod.java b/test/com/wenshuo/agent/test/TestCtMethod.java
similarity index 77%
rename from test/com/thunisoft/agent/test/TestCtMethod.java
rename to test/com/wenshuo/agent/test/TestCtMethod.java
index e2df8fe..ecca591 100644
--- a/test/com/thunisoft/agent/test/TestCtMethod.java
+++ b/test/com/wenshuo/agent/test/TestCtMethod.java
@@ -1,4 +1,4 @@
-package com.thunisoft.agent.test;
+package com.wenshuo.agent.test;
 
 import java.util.Arrays;
 import java.util.List;
@@ -6,11 +6,11 @@
 import org.junit.Assert;
 import org.junit.Test;
 
-import com.thunisoft.agent.javassist.ClassPool;
-import com.thunisoft.agent.javassist.CtClass;
-import com.thunisoft.agent.javassist.CtMethod;
-import com.thunisoft.agent.javassist.Modifier;
-import com.thunisoft.agent.javassist.NotFoundException;
+import com.wenshuo.agent.javassist.ClassPool;
+import com.wenshuo.agent.javassist.CtClass;
+import com.wenshuo.agent.javassist.CtMethod;
+import com.wenshuo.agent.javassist.Modifier;
+import com.wenshuo.agent.javassist.NotFoundException;
 
 public class TestCtMethod {
     
@@ -19,7 +19,7 @@ public class TestCtMethod {
     @Test
     public void staticMethodTest() throws NotFoundException{
         ClassPool cp = ClassPool.getDefault();
-        CtClass ctClass = cp.get("com.thunisoft.agent.test.TestCtMethod");
+        CtClass ctClass = cp.get("com.wenshuo.agent.test.TestCtMethod");
         CtMethod[] ctMethods = ctClass.getDeclaredMethods();
         for(CtMethod ctMethod : ctMethods){
             String methodName = ctMethod.getName();

From 18be861e1c8b7e653b846a6ff1e34d9bf648c114 Mon Sep 17 00:00:00 2001
From: dingjsh <47954233@qq.com>
Date: Tue, 4 Sep 2018 11:33:51 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?=
 =?UTF-8?q?=E4=B8=BAcom.wenshuo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/com/wenshuo/agent/Agent.java                              | 4 ++--
 src/com/wenshuo/agent/AgentUtils.java                         | 4 ++--
 src/com/wenshuo/agent/ConfigConsts.java                       | 4 ++--
 src/com/wenshuo/agent/ExecuteLogAnalyzer.java                 | 4 ++--
 src/com/wenshuo/agent/PojoDetector.java                       | 4 ++--
 src/com/wenshuo/agent/log/ExecuteLogUtils.java                | 2 +-
 src/com/wenshuo/agent/log/OutputLogRunnable.java              | 4 ++--
 .../agent/transformer/AgentLogClassFileTransformer.java       | 4 ----
 8 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/src/com/wenshuo/agent/Agent.java b/src/com/wenshuo/agent/Agent.java
index 3fab5f6..f655005 100644
--- a/src/com/wenshuo/agent/Agent.java
+++ b/src/com/wenshuo/agent/Agent.java
@@ -1,8 +1,8 @@
 /*
  * @(#)Agent.java	2015-7-24 上午09:49:34
  * javaagent
- * Copyright 2015 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2015 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent;
 
diff --git a/src/com/wenshuo/agent/AgentUtils.java b/src/com/wenshuo/agent/AgentUtils.java
index e950a23..6ee752b 100644
--- a/src/com/wenshuo/agent/AgentUtils.java
+++ b/src/com/wenshuo/agent/AgentUtils.java
@@ -1,8 +1,8 @@
 /*
  * @(#)AgentUtils.java  2015-7-27 下午05:26:24
  * javaagent
- * Copyright 2015 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2015 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent;
 
diff --git a/src/com/wenshuo/agent/ConfigConsts.java b/src/com/wenshuo/agent/ConfigConsts.java
index 257a287..6edd2c4 100644
--- a/src/com/wenshuo/agent/ConfigConsts.java
+++ b/src/com/wenshuo/agent/ConfigConsts.java
@@ -1,8 +1,8 @@
 /*
  * @(#)ConfigConsts.java	2015-7-27 下午06:06:23
  * javaagent
- * Copyright 2015 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2015 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent;
 
diff --git a/src/com/wenshuo/agent/ExecuteLogAnalyzer.java b/src/com/wenshuo/agent/ExecuteLogAnalyzer.java
index 68af782..1d40630 100644
--- a/src/com/wenshuo/agent/ExecuteLogAnalyzer.java
+++ b/src/com/wenshuo/agent/ExecuteLogAnalyzer.java
@@ -1,8 +1,8 @@
 /*
  * @(#)ExecuteLogAnalyzer.java	2015-8-3 上午09:15:41
  * javaagent
- * Copyright 2015 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2015 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent;
 
diff --git a/src/com/wenshuo/agent/PojoDetector.java b/src/com/wenshuo/agent/PojoDetector.java
index 8c1387c..ad471ca 100644
--- a/src/com/wenshuo/agent/PojoDetector.java
+++ b/src/com/wenshuo/agent/PojoDetector.java
@@ -1,8 +1,8 @@
 /*
  * @(#)PojoDetector.java	2016-5-7 下午04:18:14
  * javaagent
- * Copyright 2016 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2016 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent;
 
diff --git a/src/com/wenshuo/agent/log/ExecuteLogUtils.java b/src/com/wenshuo/agent/log/ExecuteLogUtils.java
index 2cb24f0..9b00887 100644
--- a/src/com/wenshuo/agent/log/ExecuteLogUtils.java
+++ b/src/com/wenshuo/agent/log/ExecuteLogUtils.java
@@ -1,5 +1,5 @@
 /*
- * @(#)ExecuteLogUtils.java 2015-7-27 下午05:57:01 javaagent Copyright 2015 Thuisoft, Inc. All rights reserved. THUNISOFT
+ * @(#)ExecuteLogUtils.java 2015-7-27 下午05:57:01 javaagent Copyright 2015 wenshuo, Inc. All rights reserved. wenshuo
  * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent.log;
diff --git a/src/com/wenshuo/agent/log/OutputLogRunnable.java b/src/com/wenshuo/agent/log/OutputLogRunnable.java
index f60cd7b..3a08620 100644
--- a/src/com/wenshuo/agent/log/OutputLogRunnable.java
+++ b/src/com/wenshuo/agent/log/OutputLogRunnable.java
@@ -1,8 +1,8 @@
 /*
  * @(#)OutputLogRunnable.java	2015-7-28 下午03:27:20
  * javaagent
- * Copyright 2015 Thuisoft, Inc. All rights reserved.
- * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * Copyright 2015 wenshuo, Inc. All rights reserved.
+ * wenshuo PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  */
 package com.wenshuo.agent.log;
 
diff --git a/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java b/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
index 9322f19..3eaf15d 100644
--- a/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
+++ b/src/com/wenshuo/agent/transformer/AgentLogClassFileTransformer.java
@@ -1,7 +1,3 @@
-/*
- * @(#)ThunisoftClassFileTransformer.java 2015-7-24 上午09:53:44 javaagent Copyright 2015 Thuisoft, Inc. All rights
- * reserved. THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
 package com.wenshuo.agent.transformer;
 
 import java.io.IOException;

From aada56f1aae128053184040f24de671ea6c22f67 Mon Sep 17 00:00:00 2001
From: dingjsh <47954233@qq.com>
Date: Wed, 26 Sep 2018 16:43:01 +0800
Subject: [PATCH 4/5] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BD=BF=E7=94=A8nano?=
 =?UTF-8?q?=E7=BA=A7=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/props/agent.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/props/agent.properties b/src/props/agent.properties
index 3bb7637..1f131f3 100644
--- a/src/props/agent.properties
+++ b/src/props/agent.properties
@@ -19,4 +19,4 @@ agent.exclude.class.regex.default=.*EnhancerByCGLIB.*;.*FastClassByCGLIB.*
 
 agent.pojo.monitor.open=false
 #\u8bb0\u5f55\u65b9\u6cd5\u7684\u8017\u65f6\u65f6\u662f\u91c7\u7528nanoTime,\u8fd8\u662fcurrentTimeMillis,nanoTime\u66f4\u51c6\u786e\uff0c\u4f46\u662f\u4f1a\u8017\u65f6\u4e00\u4e9b
-agent.log.nano=false
+agent.log.nano=true

From c757134da3d89f6e92c3817bee37a53e62644f7a Mon Sep 17 00:00:00 2001
From: dingjsh <47954233@qq.com>
Date: Wed, 26 Sep 2018 21:33:17 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E5=8F=91=E5=B8=832.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                  |  28 +-
 README_en_US.md            |  30 --
 resources/JQL/JQL.py       | 601 -------------------------------------
 resources/JQL/JQLCore.py   | 107 -------
 resources/JQL/Readme       |  41 ---
 resources/images/JQL.png   | Bin 99371 -> 0 bytes
 src/props/agent.properties |  22 +-
 7 files changed, 21 insertions(+), 808 deletions(-)
 delete mode 100644 README_en_US.md
 delete mode 100644 resources/JQL/JQL.py
 delete mode 100644 resources/JQL/JQLCore.py
 delete mode 100644 resources/JQL/Readme
 delete mode 100644 resources/images/JQL.png

diff --git a/README.md b/README.md
index ad09725..23077e8 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,28 @@
 # Javaagent
 ## 概述
-javaagent是一个简单优雅的java agent,利用java自带的instrument特性+javassist字节码编辑技术,实现了无侵入的方法级性能监控。相比于NewRelic或者开源的[pinpoint](https://github.com/naver/pinpoint),本工具主打的是简单,我们只记录每个方法的执行次数和时间,并输出到日志。基于javaagent的日志,你可以使用[JQL](https://github.com/dingjs/javaagent/tree/master/resources/JQL)工具进行分析查询,也可以自己去写分析器,这样可以让你快速定位生产环境的性能瓶颈。
+javaagent是一个简单优雅的java agent,利用java自带的instrument特性+javassist字节码编辑技术,实现了无侵入的方法级性能监控。相比于NewRelic或者开源的[pinpoint](https://github.com/naver/pinpoint),以及阿里的[arthas](https://github.com/alibaba/arthas),本工具主打的是简单,我们只记录每个方法的执行次数和时间,并输出到json格式的日志文件中。基于javaagent的日志,你可以使用严丽同学开发的[agent日志分析工具](https://pan.baidu.com/s/1Ma4iEWRmBonGO1TapeEF-g)进行分析查询,也可以自己去写分析器,这样可以让你快速定位生产环境的性能瓶颈。
 
 ## 集成
 java启动参数中就有jaaagent,你只需要在JAVA_OPTS中加入`-javaagent:/opt/javaagent/javaagent.jar=/opt/javaagent/agent.properties`就实现了方法级监控。其中`=`前指定的是jar包的路径,`=`后指定的是对agent的一些配置参数。
 
 ### agent.properties说明
 ```
-# 你想监控哪些包,多个包用分号分隔,凡是不在该配置里的包中类都不会监控,所以不会去默认监控各种第三方包以及jre自带的类
+# 需要监控的包,多个包用分号分隔
 agent.include.package=com.XXX
-# 你不想监控的包,多个包用分号分隔,include.package减去exclude.package就是你监控的包
+# 不需要监控的包,多个包用分号分隔。 需要监控的包-不需要监控的包就是真正要监控的包
 agent.exclude.package=
-# 你不想监控的包的正则
-agent.exclude.class.regex=
-# 日志文件路径,会自动带上日期
-agent.log.file=/opt/logs/agent.log
-# 你希望多长时间输出一次日志,以秒为单位,建议生产环境配置600或者1200
+# 日志文件,会自动增加日期后缀
+agent.log.file=d\:\\agent.log
+# 日志输出周期
 agent.log.interval.seconds=600
-# 你是否需要计算平均时间,对于生产环境,建议配成false,通过JQL查询时会进行计算
+# 不需要监控的类的正则表达式
+agent.exclude.class.regex=
+# 是否记录平均时间
 agent.log.avg.execute.time=false
-# 是否监控pojo的get set方法,如果不开启的话,则不监控,避免出现大量pojo相关的日志。
-agent.pojo.monitor.open=false
+# 默认不需要监控的类的正则表达式
+agent.exclude.class.regex.default=.*EnhancerByCGLIB.*;.*FastClassByCGLIB.*
+# 记录方法的耗时时是采用nanoTime,还是currentTimeMillis,nanoTime更准确,但是会耗时一些
+agent.log.nano=true
 ```
-### JQL
-JQL是用金雷同学用python写的一个agent日志分析工具,你可以用这个工具做查询、排序、limit等。详细用法,请参考[JQL完全指南](https://github.com/dingjs/javaagent/tree/master/resources/JQL)。
-
-![JQL截图](https://github.com/dingjs/javaagent/blob/master/resources/images/JQL.png?raw=true)
    
    
diff --git a/README_en_US.md b/README_en_US.md
deleted file mode 100644
index 7a5beda..0000000
--- a/README_en_US.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Javaagent
-## Overview
-Javaagent a simple yet elegant java agent tool, to monitor every method's execute frequency and time consuming.
-It uses jre's built-in feature Instrument and take use of javassist bytecode edit tool,monitor the mthod call and output to the log file.You can use [JQL](https://github.com/dingjs/javaagent/tree/master/resources/JQL) to analyze the agent log,find your application's performance bottlenecks.
-
-## How to use
-You can add the following options in the JAVA_OPTS
->`-javaagent:/opt/javaagent/javaagent.jar=/opt/javaagent/agent.properties`
-
-### agent.properties
-```
-# The packages which you  want to monitor,seprated by semicolon.Only the packages configed in here will be monitored.
-agent.include.package=
-# The packages which you don't want to monitor,seprated by semicolon.
-agent.exclude.package=
-# The classes of regex format which you don't want to monitor 
-agent.exclude.class.regex=
-# The log file path,will add date string in the filename automatically
-agent.log.file=/opt/logs/agent.log
-# How long do you want to output the agent log to the log file,600 or 1200 is recommended.
-agent.log.interval.seconds=600
-# true means calculate the avg time for  every method.
-agent.log.avg.execute.time=false
-# Monitor pojo get set method or not,false means don't monitor get set method.
-agent.pojo.monitor.open=false
-```
-### JQL
-JQL is a python tool to analyze the agent logs, developed by my collegue jinlei. Read [JQL complete guide](https://github.com/dingjs/javaagent/tree/master/resources/JQL)for the details if you can read Chinese.
-
-![JQL screenshot](https://github.com/dingjs/javaagent/blob/master/resources/images/JQL.png?raw=true)
diff --git a/resources/JQL/JQL.py b/resources/JQL/JQL.py
deleted file mode 100644
index d1210df..0000000
--- a/resources/JQL/JQL.py
+++ /dev/null
@@ -1,601 +0,0 @@
-#coding=utf-8
-import re, io, os, sys, time
-from JQLCore import AgentLogTableTitles, ColumnDefinition, QueryDefinition
-from JQLCore import CompareItem, JQL_COMPARE, SortItem
-
-
-START_TIME_PATTERN = re.compile(r"startTime:{.*}")
-END_TIME_PATTERN = re.compile(r"endTime:{.*}")
-CLASS_NAME_PATTERN = re.compile(r"className:{.*}")
-METHOD_NAME_PATTERN = re.compile(r"methodName:.*")
-COUNTER_PATTERN = re.compile(r"counter.*")
-TIME_PATTERN = re.compile(r"time.*")
-EARLIEST_TIME = time.strptime('1970-01-01 12:00:00', '%Y-%m-%d %H:%M:%S')
-JQL_SPLIT_KEY = r"select|from|where|order by|limit|;"
-ORDER_PATTERN = re.compile(r"asc|desc")
-
-def checkJQL(jql):
-    """校验jql
-    
-    校验规则:
-        1. 关键字顺序必须为:select, from, where, order by, limit
-        2. from为必填项
-    """
-    
-    if len(jql.strip()) == 0:
-        raise Exception("JQL empty error")
-    
-    max = -1
-    pos = jql.find("select")
-    if pos != -1:
-        if pos > max:
-            max = pos
-        else:
-            raise Exception('select order error')
-            
-    pos = jql.find("from")
-    if pos != -1:
-        if pos > max:
-            max = pos
-        else:
-            raise Exception('from order error')
-    else:
-        raise Exception('no from error')
-        
-    pos = jql.find("where")
-    if pos != -1:
-        if pos > max:
-            max = pos
-        else:
-            raise Exception('where order error')
-             
-    pos = jql.find("order by")
-    if pos != -1:
-        if pos > max:
-            max = pos
-        else:
-            raise Exception('order by order error')
-    
-    pos = jql.find("limit")
-    if pos != -1:
-        if pos > max:
-            max = pos
-        else:
-            raise Exception('limit order error')
-
-def parseJQL(jql):
-    """解析查询语句
-    
-    Args:
-        jql: 查询语句
-    Return:
-        QueryDefinition: 解析查询语句得到的定义
-    """
-    
-    #分片
-    segments = re.split(JQL_SPLIT_KEY, jql)
-    
-    i = 1
-    #处理select
-    titleList = []
-    if jql.find("select") != -1:
-        selectStr = segments[i].strip()
-        i += 1
-        
-        if len(selectStr) == 0:
-            raise Exception('select no values error')
-            
-        for title in selectStr.split(","):
-            title = title.strip()
-            
-            if len(title) == 0:
-                raise Exception('selct empty value error: select ' + selectStr) 
-            
-            if title not in AgentLogTableTitles:
-                raise Exception('select value error:\'' + title + '\'')
-                
-            titleList.append(title)
-    else:
-        # 默认表头
-        titleList = AgentLogTableTitles
-
-    #处理from
-    fileList = []
-    if jql.find("from") != -1:
-        fromStr = segments[i].strip()
-        i += 1
-        
-        if len(fromStr) == 0:
-            raise Exception('from no values error')
-        
-        for root in fromStr.split(","):
-            root = root.strip()
-            if len(root) == 0:
-                raise Exception('from empty value error: where ' + fromStr)
-                
-            if os.path.isdir(root):
-                files = os.listdir(root)
-                for file in files:
-                    fileList.append(os.path.join(root, file))
-            elif os.path.isfile(root):
-                fileList.append(root)
-            else:
-                raise Exception('from value error: ' + root + ' is not a file or dir')
-    else:
-        raise Exception('no from error')
-        
-    #处理where
-    encoding = "utf-8" 
-    compareList = []
-    if jql.find("where") != -1:
-        whereStr = segments[i].strip()
-        i += 1
-        
-        if len(whereStr) == 0:
-            raise Exception('where no values error')
-            
-        #得到文件编码、过滤条件
-        filterList = []
-        for param in whereStr.split("and"):
-            elements = param.split('=')
-            key = elements[0].strip()
-            if key == "encoding":
-                encoding = elements[1].strip()
-            else:
-                filterList.append(param)
-
-        #根据过滤得到比较列表
-        for filter in filterList:
-            operator = None
-            if filter.find(">=") != -1:
-                operator = ">="
-            elif filter.find("<=") != -1:
-                operator = "<="
-            elif filter.find("=") != -1:
-                operator = "="
-            elif filter.find(">") != -1:
-                operator = ">"
-            elif filter.find("<") != -1:
-                operator = "<"
-            else:
-                continue
-        
-            elements = filter.split(operator)
-            if len(elements) != 2:
-                continue
-                
-            ci = CompareItem(elements[0].strip(), operator, elements[1].strip())
-            compareList.append(ci)
-        
-    #处理order by
-    keyList = []
-    orderList = []
-    if jql.find("order by") != -1:
-        orderByStr = segments[i].strip()
-        i += 1
-        
-        if len(fromStr) == 0:
-            raise Exception('order by no values error')
-         
-        for order in orderByStr.split(","):
-            order = order.strip()
-            
-            if len(order) == 0:
-                raise Exception('order by empty values error')     
-            else:
-                pos = re.search(ORDER_PATTERN, order)
-                key = None
-                keyOrder = None
-                if pos is None:
-                    # 默认升序
-                    key = order
-                    keyOrder = "asc"
-                else:
-                    key = order[: pos.start()].strip()
-                    keyOrder = order[pos.start() : pos.end()]
-         
-                if key not in AgentLogTableTitles:
-                    raise Exception('order by no support key error. key = ' + key)
-                    
-                keyList.append(key)
-                orderList.append(keyOrder)
-    
-    #处理limit
-    limit = -1
-    if jql.find("limit") != -1:
-        limitStr = segments[i].strip()
-        i += 1
-         
-        if len(limitStr) == 0:
-            raise Exception('limit no values error')
-        
-        if limitStr.isdigit() == False:
-            raise Exception("limit value type error, value must be a nonnegative integer , value = " + limitStr)
-        
-        limit = limitStr
-    
-    return QueryDefinition(titleList, fileList, encoding, keyList, orderList, compareList, limit)
-
-def getValueInBrackets(str):
-    """得到括号内的值
-    
-    Args:
-        str: 包括{}的字符串
-
-    Return:
-        {}内的值(去除了2端的空格)
-    """
-
-    return getValueBetweenKey1AndKey2(str, "{", "}")
-
-def getValueBetweenKey1AndKey2(str, key1, key2):
-    """得到关键字1和关键字2之间的值
-    
-    Args:
-        str: 包括key1、key2的字符串
-        key1: 关键字1
-        key2: 关键字2
-        
-    Return:
-        key1 ... key2 内的值(去除了2端的空格)
-    """
-    
-    offset = len(key1)
-    start = str.find(key1) + offset
-    end = str.find(key2)
-    value = str[start : end]
-    return value.strip()
-    
-def queryDatas(queryDef):
-    """查询并过滤数据
-    
-    Args:
-        queryDef: 查询定义
-    Return:
-        SortItem List:待排序的数据列表
-    """
-    
-    result = []
-    #查询所有文件的数据
-    for file in queryDef.fileList:
-        temp = []
-        startTime = None
-        clazz = None
-        method = None
-        count = 0
-        totalTime = 0
-        avgTime = 0
-        with io.open(file, 'r', encoding=queryDef.encoding) as fd:
-            for line in fd:
-                #处理startTime:...行
-                match = START_TIME_PATTERN.match(line)
-                if match: 
-                    #如果开始时间有变化,则保存结果,否则丢弃
-                    newStartTime = getValueInBrackets(line)
-                    if newStartTime != startTime: 
-                        result.extend(temp)
-                        startTime = newStartTime
-                    temp = []
-                    continue
-                     
-                #处理endTime:...行
-                match = END_TIME_PATTERN.match(line)
-                if match:
-                    endTime = getValueInBrackets(line)
-                    for item in temp:
-                        item.endTime = endTime
-                    continue
-            
-                #解析className...行
-                match = CLASS_NAME_PATTERN.match(line)
-                if match:
-                    clazz = getValueInBrackets(line)
-                    continue
-                    
-                #解析methodName...行
-                match = METHOD_NAME_PATTERN.match(line)
-                if match:
-                    for str in line.split(','):
-                        #处理methodName
-                        match = METHOD_NAME_PATTERN.match(str)
-                        if match:
-                            method = getValueInBrackets(str)
-                            continue
-                            
-                        #处理counter
-                        match = COUNTER_PATTERN.match(str)
-                        if match:
-                            count = getValueInBrackets(str)
-                            continue
-                            
-                         #处理time
-                        match = TIME_PATTERN.match(str)
-                        if match:
-                            totalTime = getValueInBrackets(str)
-                            continue
-                    
-                    item = SortItem(clazz, method, count, totalTime, startTime)
-                    temp.append(item)
-        
-        #保存最后一个时间域的数据
-        result.extend(temp)
-    
-    return result
-   
-def filterDatas(itemList, queryDef):
-    """过滤数据列表
-    
-    Args:
-        itemList: 数据
-        queryDef: 查询定义
-    Return:
-        dataList: 过滤后的数据
-    """
-    
-    dataList = []
-    for item in itemList:
-        if checkItem(item, queryDef):
-            dataList.append(item)
-             
-    return dataList     
-      
-def checkItem(item, queryDef):
-    """校验数据
-    
-    Args:
-        item: 数据
-        queryDef: 查询定义
-    """
-    
-    result = True
-    for ci in queryDef.compareList:    
-        if ci.key == "time":
-            result = JQL_COMPARE.get(ci.operator)(item.time, int(ci.value))
-        elif ci.key == "count":
-            result = JQL_COMPARE.get(ci.operator)(item.count, int(ci.value))
-        elif ci.key == "avg time":
-            result = JQL_COMPARE.get(ci.operator)(item.avgTime, int(ci.value))
-        elif ci.key == "method":
-            result = JQL_COMPARE.get(ci.operator)(item.method.lower(), ci.value)
-        elif ci.key == "class":
-            result = JQL_COMPARE.get(ci.operator)(item.clazz.lower(), ci.value)
-        elif ci.key == "start time":
-            result = JQL_COMPARE.get(ci.operator)(
-                            time.strptime(item.startTime, '%Y-%m-%d %H:%M:%S'),
-                            time.strptime(ci.value, '%Y-%m-%d %H:%M:%S')
-                            )
-        elif ci.key == "end time":
-            result = JQL_COMPARE.get(ci.operator)(
-                            time.strptime(item.endTime, '%Y-%m-%d %H:%M:%S'), 
-                            time.strptime(ci.value, '%Y-%m-%d %H:%M:%S')
-                            )
-                            
-        if result == False:
-            break
-        
-    return result
-   
-def sortAndCut(itemList, queryDef):
-    """将itemList根据查询条件排序
-    
-    Args:
-        itemList: 数据
-        queryDef:查询定义
-    Return:
-        dataList: 排序和过滤后的结果
-    """
-    
-    #处理排序
-    for key, order in zip(reversed(queryDef.keyList), reversed(queryDef.orderList)):
-        #得到lambda函数
-        keyLambda = None
-        if key == 'count':
-            keyLambda = lambda item: item.count
-        elif key == 'time':
-            keyLambda = lambda item: item.time
-        elif key == 'avg time':
-            keyLambda = lambda item: item.avgTime
-        elif key == 'start time': 
-            keyLambda = lambda item: time.strptime(item.startTime, '%Y-%m-%d %H:%M:%S') if item.startTime != None else EARLIEST_TIME
-        elif key == 'end time':
-            keyLambda = lambda item: time.strptime(item.endTime, '%Y-%m-%d %H:%M:%S') if item.endTime != None else EARLIEST_TIME
-        else:
-            continue
-        
-        #判断是否逆排序(默认递增排序)
-        rev = (order == 'desc')
-        
-        itemList.sort(key=keyLambda, reverse=rev)
-
-    return itemList[0 : queryDef.limit] if queryDef.limit != -1 else itemList
-
-def drawTable(itemList, queryDef):
-    """画表格
-    
-    Args:
-        itemList: 数据
-        queryDef: 查询定义
-    
-    Example:
-    +---------+----------+-----------+------------+--------------+
-    | count   | time     | avg time  | method     | class        |
-    +---------+----------+-----------+------------+--------------+
-    | 10      | 500      | 50        | sayHello   | Test.java    |
-    +---------+----------+-----------+------------+--------------+
-    """
-    
-    # 画表头
-    drawLine(queryDef)
-    drawTitle(queryDef)
-    drawLine(queryDef)
-   
-    # 画数据行
-    drawDataRows(itemList, queryDef)
-    
-    # 画结尾行
-    drawLine(queryDef)
-
-def drawLine(queryDef):
-    """画分割线
-    
-    Args:
-        queryDef: 查询定义
-    """
-    
-    formatStr = ""
-    valueList = []
-    for title in queryDef.titleList:
-        colDef = queryDef.tableCols[title]
-        size = colDef.size + 2
-        formatStr += ('+' + formatString("string", size, False))
-        valueList.append("-"*size)
-    
-    formatStr += "+"
-    
-    print(formatStr % tuple(valueList))
-
-def drawTitle(queryDef):
-    """画表头
-    
-    Args:
-        queryDef: 查询定义
-    """
-    
-    formatStr = ""
-    valueList = []
-    for title in queryDef.titleList:
-        colDef = queryDef.tableCols[title]
-        formatStr += ('| ' + formatString("string", colDef.size) + ' ')
-        valueList.append(title)
-    
-    formatStr += "|" 
-    print(formatStr % tuple(valueList))
-  
-def drawDataRows(dataList, queryDef):
-    """画数据行
-    
-    Args:
-        itemList: 数据
-        queryDef: 查询定义
-    """
-
-    for data in dataList:
-        formatStr = ""
-        valueList = []
-        for title in queryDef.titleList:
-            colDef = queryDef.tableCols[title]
-            formatStr += ('| ' + formatString(colDef.type, colDef.size) + ' ')
-            
-            if title == 'time':
-                valueList.append(data.time)
-            elif title == 'count':
-                valueList.append(data.count)
-            elif title == 'avg time':
-                valueList.append(data.avgTime)
-            elif title == 'method':
-                valueList.append(data.method)
-            elif title == 'class':
-                valueList.append(data.clazz)
-            elif title == 'start time':
-                valueList.append(data.startTime)
-            elif title == 'end time':
-                valueList.append(data.endTime)
-                
-        formatStr += "|"
-        print(formatStr % tuple(valueList))
-               
-def formatString(type, size, leftAlignment=True):
-    """得到格式化占位符
-    
-    Args:
-        type: 数据类型
-        size: 位数
-        leftAlignment:是否左对齐
-        
-    Return:
-        格式化占位符
-    """
-    
-    prefix = ('-' if leftAlignment else '')
-    result = '%' + prefix + str(size)
-    
-    if type == "int":
-        result += 'd'
-    elif type == "float":
-        result += '.2f'
-    else:
-        result += 's'
-        
-    return result
-
-def executeQuery(jql):
-    """执行jql,并输出表格
-    
-    Args:
-        jql: 查询语句
-    """
-    
-    try: 
-        print("")
-        
-        #校验jql
-        none, checkTime = JQL_TIMER(checkJQL, jql)
-        #解析jql
-        queryDef, parseTime = JQL_TIMER(parseJQL, jql)
-        #查询数据
-        dataList, queryTime = JQL_TIMER(queryDatas, queryDef)
-        #过滤数据
-        dataList, filterTime = JQL_TIMER(filterDatas, dataList, queryDef)
-        #排序、裁剪数据
-        dataList, sortTime = JQL_TIMER(sortAndCut, dataList, queryDef)
-        #画表
-        none, drawTime = JQL_TIMER(drawTable, dataList, queryDef)
-       
-        total = checkTime + parseTime + queryTime + filterTime + sortTime + drawTime
-        
-        print("spend %.2fs(check: %.2fs, parse: %.2fs, query: %.2fs, filter: %.2fs, sort: %.2fs, draw: %.2fs)\n" % 
-            (total, checkTime, parseTime, queryTime, filterTime, sortTime, drawTime))
-    except Exception as err:
-        msg = "[JQL] {0}".format(err)
-        length = len(msg)
-        print("%s\n%s\n%s\n" % ("*"*length, msg, "*"*length))
-        
-def JQL_TIMER(func, *args):
-    """计时函数
-    
-    Args:
-        func: 函数名
-        args: 可变参数
-    Return:
-        函数执行结果, 函数执行时间
-    """
-    
-    start = time.time()
-    result = func(*args)
-    end = time.time()
-    return result, end - start
-    
-def main():
-    """主函数"""
-    
-    if len(sys.argv) > 1:
-        executeQuery(sys.argv[1])
-    else:
-        print("Please input JQL\ninput 'q!' for quit, input ';' for execute jql\n")
-        jql = ""
-        while (True):
-            line = input(">>> ").lower()
-            if (line == "q!"):
-                print("Thanks.")
-                sys.exit()
-            elif line.find(";") != -1:
-                line = line.split(";")
-                jql += (' ' + line[0].strip() + ';')
-                executeQuery(jql)
-                jql = ""
-            else:
-                jql += (' ' + line.strip())
-      
-if __name__ == "__main__":
-    main()
- 
diff --git a/resources/JQL/JQLCore.py b/resources/JQL/JQLCore.py
deleted file mode 100644
index 327367b..0000000
--- a/resources/JQL/JQLCore.py
+++ /dev/null
@@ -1,107 +0,0 @@
-#coding=utf-8
-
-class ColumnDefinition:
-    """列定义"""
-    
-    def __init__(self, name, type, size):
-        self.name = name
-        self.type = type
-        self.size = int(size)
-
-#java-agent-log-table表头定义
-AgentLogTableTitles = ['time', 'count', 'avg time', 'method', 'class', 'start time', 'end time']
-        
-#java-agent-log-table定义
-AgentLogTable = {
-    'time': ColumnDefinition('time', 'int', 10),
-    'count': ColumnDefinition('count', 'int', 10),
-    'avg time': ColumnDefinition('avg time', 'int', 10),
-    'method': ColumnDefinition('method', 'string', 35),
-    'class': ColumnDefinition('method', 'string', 100),
-    'start time': ColumnDefinition('start time', 'string', 20),
-    'end time': ColumnDefinition('end time', 'string', 20)
-}
-           
-class QueryDefinition:
-    """查询定义
-    
-    将解析后的查询条件保存于此,用于查询方法间的参数传递
-    """
-    
-    def __init__(self, titleList, fileList, encoding, keyList, orderList=[], compareList=[],  limit=-1):
-        self.titleList = titleList
-        self.fileList = fileList
-        self.encoding = encoding
-        self.keyList = keyList
-        self.orderList = orderList
-        self.compareList = compareList
-        self.limit = int(limit)
-        self.tableCols= AgentLogTable
-        
-class CompareItem:
-    """比较项"""
-    
-    def __init__(self, key, operator, value):
-        self.key = key
-        self.operator = operator
-        self.value = value
-
-def equal(x, y):
-    return x == y
-    
-def lessThan(x, y):
-    return x < y
-    
-def lessThanOrEqualTo(x, y):
-    return x <= y
-        
-def greaterThan(x, y):
-    return x > y
-    
-def greaterThanOrEqualTo(x, y):
-    return x >= y 
-
-#jql比较操作
-JQL_COMPARE = {
-    "=": equal,
-    "<": lessThan,
-    "<=": lessThanOrEqualTo,
-    ">": greaterThan,
-    ">=": greaterThanOrEqualTo
-}
-
-class SortItem:
-    """排序项"""
-    
-    def __init__(self, clazz, method, count, time, startTime, endTime=None):
-        """
-        Args:
-            clazz: 类名
-            method: 方法
-            count: 方法调用总次数
-            time: 方法调用总时间
-            startTime: 开始时间
-        """
-        
-        self.clazz = clazz
-        self.method = method
-        self.count = int(count)
-        self.time = int(time)
-        self.startTime = startTime
-        self.endTime = endTime
-        self.avgTime = float(self.time / self.count) #方法调用平均时间
- 
-    def copy(self):
-        """复制"""
-
-        return SortItem(self.clazz, self.method, self.count, self.time, self.startTime)
-    
-    def equals(self, other):
-        """比较是否相等"""
-        
-        return (self.clazz == other.clazz 
-            and self.method == other.method
-            and self.count == other.count 
-            and self.time == other.time
-            and self.startTime == other.startTime 
-            and self.avgTime == other.avgTime)
diff --git a/resources/JQL/Readme b/resources/JQL/Readme
deleted file mode 100644
index 1e7b013..0000000
--- a/resources/JQL/Readme
+++ /dev/null
@@ -1,41 +0,0 @@
-JQL工具由北京华宇信息技术有限公司-金雷(人送外号金大侠)开发。
-
-[目录说明]
-/JQL -- 代码目录
-    JQL.py -- 实现JQL查询
-    JQLCore.py -- JQL核心数据结构定义
-
-    
-[使用说明]
-1. 确保python34安装完毕,并且在环境变量里配置了其path
-2. 进入JQL目录,空白处按住shift+右键,选择"在"在此处打开命令窗口",弹出命令窗口
-3. 在命令窗口输入jql,进入JQL程序,如果看到如下字符串表示启动成功
-Please input JQL
-input 'q!' for quit, input ';' for execute jql
-
->>>_
-4. 打开JQL例子.txt,随意复制一个jql查询语句进去,按回车,JQL将返回一个表格做为结构
-
-[JQL语法说明]
-[ select < col1 [ , col2, col3, ... ] > ]
-< from < file1|folder1 [ , file2|folder2, file3|folder3, ... ] > >
-[ where  ]
-[ order by ]
-[ limit  ]
-
-补充说明:
-from里如果是文件夹,则统计文件夹下所有文件
-where条件目前只支持and
-如果表格看起来很混乱,需要右击命令窗口 > 属性 > 布局, 将屏幕缓冲区大小调大点即可,我的参数是 宽度:3000 * 高度 6000
-
-[版本说明]
-JQL0.1Beta刚刚诞生,目前非常不成熟,还只支持一种log:即丁建水的thunisoft-javaagent产生的日志
-
-[后续工作]
-0.2版:计划支持所有主流log,where条件支持同select
-0.3版:计划支持C/S结构
-0.4版:计划支持主-主结构,主-从结构
-0.5版:计划用QT实现一个界面
-1.0版:系统稳定,正式发版
-
-1.0版发布后,可能实现身份证系统识别,也可能鸽了,看心情
diff --git a/resources/images/JQL.png b/resources/images/JQL.png
deleted file mode 100644
index 5f982a88632ec656426a41b84a3f51cf42479ab7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 99371
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
CzxlZU

diff --git a/src/props/agent.properties b/src/props/agent.properties
index 1f131f3..7d62605 100644
--- a/src/props/agent.properties
+++ b/src/props/agent.properties
@@ -1,22 +1,16 @@
-#the default packages that you don't want to monitor,multi config separated by semicolon 
-# such as tomcat,jre's method
-agent.exclude.package.default=
-#the  packages that you don't want to monitor,multi config separated by semicolon 
-agent.exclude.package=
-#the packages you want to monitor,the agent only monitor the packages and subpackages thar configed in here,
-#multi config separated by semicolon 
+#\u9700\u8981\u76d1\u63a7\u7684\u5305\uff0c\u591a\u4e2a\u5305\u7528\u5206\u53f7\u5206\u9694
 agent.include.package=com.XXX
-#the log file name,it will add current date automatically
+#\u4e0d\u9700\u8981\u76d1\u63a7\u7684\u5305\uff0c\u591a\u4e2a\u5305\u7528\u5206\u53f7\u5206\u9694\u3002 \u9700\u8981\u76d1\u63a7\u7684\u5305-\u4e0d\u9700\u8981\u76d1\u63a7\u7684\u5305\u5c31\u662f\u771f\u6b63\u8981\u76d1\u63a7\u7684\u5305
+agent.exclude.package=
+#\u65e5\u5fd7\u6587\u4ef6\uff0c\u4f1a\u81ea\u52a8\u589e\u52a0\u65e5\u671f\u540e\u7f00
 agent.log.file=d\:\\agent.log
-#how much seconds per time do the log output
+#\u65e5\u5fd7\u8f93\u51fa\u5468\u671f
 agent.log.interval.seconds=600
-#the class name't regex pattern that you don't want to monitor
+#\u4e0d\u9700\u8981\u76d1\u63a7\u7684\u7c7b\u7684\u6b63\u5219\u8868\u8fbe\u5f0f
 agent.exclude.class.regex=
-#do you want to calculate the avg execute time
+#\u662f\u5426\u8bb0\u5f55\u5e73\u5747\u65f6\u95f4
 agent.log.avg.execute.time=false
-#the default class name't regex pattern that you don't want to monitor
+#\u9ed8\u8ba4\u4e0d\u9700\u8981\u76d1\u63a7\u7684\u7c7b\u7684\u6b63\u5219\u8868\u8fbe\u5f0f
 agent.exclude.class.regex.default=.*EnhancerByCGLIB.*;.*FastClassByCGLIB.*
-
-agent.pojo.monitor.open=false
 #\u8bb0\u5f55\u65b9\u6cd5\u7684\u8017\u65f6\u65f6\u662f\u91c7\u7528nanoTime,\u8fd8\u662fcurrentTimeMillis,nanoTime\u66f4\u51c6\u786e\uff0c\u4f46\u662f\u4f1a\u8017\u65f6\u4e00\u4e9b
 agent.log.nano=true