OSDN Git Service

move classes about opcode extraction to the new project library
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Mon, 26 Apr 2010 09:56:20 +0000 (09:56 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Mon, 26 Apr 2010 09:56:20 +0000 (09:56 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/plugins/trunk@386 acee48c3-7b26-0410-bdac-b3d0e5314bbc

opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkElementBuilder.java [new file with mode: 0644]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/LabelOpcode.java [moved from wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/LabelOpcode.java with 90% similarity]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/Opcode.java [moved from wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/Opcode.java with 98% similarity]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractListener.java [new file with mode: 0644]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractMethodVisitor.java [moved from wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/OpcodeExtractionMethodVisitor.java with 87% similarity]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractVisitor.java [new file with mode: 0644]
opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeManager.java [moved from wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/OpcodeManager.java with 97% similarity]
wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/OpcodeExtractionFinishListener.java [deleted file]

diff --git a/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkElementBuilder.java b/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkElementBuilder.java
new file mode 100644 (file)
index 0000000..9f68998
--- /dev/null
@@ -0,0 +1,21 @@
+package jp.sourceforge.stigmata.birthmarks;
+
+/*
+ * $Id$
+ */
+
+import java.util.List;
+
+import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
+
+/**
+ *
+ *
+ * @author tamada
+ * @version $Revision$
+ */
+public interface BirthmarkElementBuilder {
+    public BirthmarkElement[] buildBirthmarkElements(List<Opcode> opcodes, BirthmarkContext context);
+}
+
diff --git a/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractListener.java b/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractListener.java
new file mode 100644 (file)
index 0000000..3474912
--- /dev/null
@@ -0,0 +1,16 @@
+package jp.sourceforge.stigmata.birthmarks;
+
+/*
+ * $Id$
+ */
+
+import java.util.List;
+
+/**
+ * 
+ * @author Haruaki Tamada
+ * @version $Revision$
+ */
+public interface OpcodeExtractListener{
+    public void extractOpcodesFinished(List<Opcode> opcodes);
+}
@@ -1,4 +1,4 @@
-package jp.sourceforge.stigmata.birthmarks.wsp;
+package jp.sourceforge.stigmata.birthmarks;
 
 /*
  * $Id$
 
 /*
  * $Id$
@@ -18,25 +18,25 @@ import org.objectweb.asm.Type;
  * @author Haruaki TAMADA
  * @version $Revision$ 
  */
  * @author Haruaki TAMADA
  * @version $Revision$ 
  */
-public class OpcodeExtractionMethodVisitor extends MethodAdapter{
+public class OpcodeExtractMethodVisitor extends MethodAdapter{
     private List<Opcode> opcodes;
     private OpcodeManager manager = OpcodeManager.getInstance();
     private List<Opcode> opcodes;
     private OpcodeManager manager = OpcodeManager.getInstance();
-    private List<OpcodeExtractionFinishListener> listeners = new ArrayList<OpcodeExtractionFinishListener>();
+    private List<OpcodeExtractListener> listeners = new ArrayList<OpcodeExtractListener>();
 
 
-    public OpcodeExtractionMethodVisitor(MethodVisitor visitor){
+    public OpcodeExtractMethodVisitor(MethodVisitor visitor){
         this(visitor, new ArrayList<Opcode>());
     }
 
         this(visitor, new ArrayList<Opcode>());
     }
 
-    public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List<Opcode> opcodes){
+    public OpcodeExtractMethodVisitor(MethodVisitor visitor, List<Opcode> opcodes){
         super(visitor);
         this.opcodes = opcodes;
     }
 
         super(visitor);
         this.opcodes = opcodes;
     }
 
-    public void addOpcodeExtractionFinishListener(OpcodeExtractionFinishListener listener){
+    public void addOpcodeExtractListener(OpcodeExtractionFinishListener listener){
         listeners.add(listener);
     }
 
         listeners.add(listener);
     }
 
-    public void removeOpcodeExtractionFinishListener(OpcodeExtractionFinishListener listener){
+    public void removeOpcodeExtractListener(OpcodeExtractionFinishListener listener){
         listeners.add(listener);
     }
 
         listeners.add(listener);
     }
 
@@ -165,7 +165,7 @@ public class OpcodeExtractionMethodVisitor extends MethodAdapter{
     @Override
     public void visitEnd(){
         for(OpcodeExtractionFinishListener listener: listeners){
     @Override
     public void visitEnd(){
         for(OpcodeExtractionFinishListener listener: listeners){
-            listener.finishExtractionOpcodes(opcodes);
+            listener.extractionOpcodesFinished(opcodes);
         }
     }
 }
         }
     }
 }
diff --git a/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractVisitor.java b/opcodes/src/main/java/jp/sourceforge/stigmata/birthmarks/OpcodeExtractVisitor.java
new file mode 100644 (file)
index 0000000..26cf87f
--- /dev/null
@@ -0,0 +1,47 @@
+package jp.sourceforge.stigmata.birthmarks;
+
+/*
+ * $Id$
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
+
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodVisitor;
+
+/**
+ *
+ *
+ * @author tamada
+ * @version $Revision$
+ */
+public class OpcodeExtractVisitor extends BirthmarkExtractVisitor{
+    private List<Opcode> opcodeList = new ArrayList<Opcode>();
+    private BirthmarkElementBuilder builder;
+
+    public OpcodeExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context, BirthmarkElementBuilder builder){
+        super(visitor, birthmark, context);
+        this.builder = builder;
+    }
+
+    public void visitEnd(){
+        BirthmarkElement[] elements = builder.buildBirthmarkElements(opcodeList, getContext());
+        for(BirthmarkElement element: elements){
+            addElement(element);
+        }
+    }
+
+    @Override
+    public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){
+        MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4);
+        OpcodeExtractMethodVisitor opcodeVisitor = new OpcodeExtractMethodVisitor(visitor, opcodeList);
+
+        return opcodeVisitor;
+    }
+}
diff --git a/wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/OpcodeExtractionFinishListener.java b/wsp/src/main/java/jp/sourceforge/stigmata/birthmarks/wsp/OpcodeExtractionFinishListener.java
deleted file mode 100644 (file)
index ae4b256..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-package jp.sourceforge.stigmata.birthmarks.wsp;
-
-/*
- * $Id$
- */
-
-import java.util.List;
-
-/**
- * 
- * @author Haruaki Tamada
- * @version $Revision$
- */
-public interface OpcodeExtractionFinishListener{
-    public void finishExtractionOpcodes(List<Opcode> opcodes);
-}