Correct byte code generation: calculate max frames and locals by hand (they're constant anyway) to avoid altering the existing byte code; fix putfield operation.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@572587 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
index 12510f8..7e4016d 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
@@ -247,7 +247,7 @@
             final ClassReader reader = new ClassReader(new FileInputStream(fileName));
             reader.accept(cn, 0);
 
-            final ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+            final ClassWriter writer = new ClassWriter(0);
             cn.accept(writer);
             if ( createBind ) {
                 this.createMethod(writer, propertyName, className, true);
@@ -274,9 +274,9 @@
         } else {
             mv.visitInsn(Opcodes.ACONST_NULL);
         }
-        mv.visitFieldInsn(Opcodes.PUTFIELD, this.getName(), propertyName, type.toString());
+        mv.visitFieldInsn(Opcodes.PUTFIELD, this.getName().replace('.', '/'), propertyName, type.toString());
         mv.visitInsn(Opcodes.RETURN);
-        mv.visitMaxs(0, 0);
+        mv.visitMaxs(2, 2);
         // add to qdox
         final JavaParameter param = new JavaParameter(new Type(typeName), "param");
         final JavaParameter[] params = new JavaParameter[] {param};