SIRONA-59 avoid to fail cause we try to load the class we are enhancing

git-svn-id: https://svn.apache.org/repos/asf/incubator/sirona/trunk@1735890 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/agent/javaagent/src/main/java/org/apache/sirona/javaagent/SironaTransformer.java b/agent/javaagent/src/main/java/org/apache/sirona/javaagent/SironaTransformer.java
index e1c0cf0..5784c95 100644
--- a/agent/javaagent/src/main/java/org/apache/sirona/javaagent/SironaTransformer.java
+++ b/agent/javaagent/src/main/java/org/apache/sirona/javaagent/SironaTransformer.java
@@ -82,7 +82,8 @@
     protected byte[] doTransform(final String className, final byte[] classfileBuffer) {
         try {
             final ClassReader reader = new ClassReader(classfileBuffer);
-            final ClassWriter writer = new SironaClassWriter(skipTempLoader ? null : tempClassLoaders, reader, ClassWriter.COMPUTE_FRAMES);
+            final ClassWriter writer = new SironaClassWriter(className == null ? null : className.replace('/', '.'),
+                    skipTempLoader ? null : tempClassLoaders, reader, ClassWriter.COMPUTE_FRAMES);
             final SironaClassVisitor advisor = new SironaClassVisitor(writer, className, classfileBuffer);
             reader.accept(advisor, ClassReader.SKIP_FRAMES);
 
@@ -119,10 +120,13 @@
 
     public static class SironaClassWriter extends ClassWriter {
         private final ConcurrentMap<ClassLoader, ClassLoader> tempClassLoaders;
+        private final String currentClass;
 
-        public SironaClassWriter(final ConcurrentMap<ClassLoader, ClassLoader> tempClassLoaders,
+        public SironaClassWriter(final String currentClass,
+                                 final ConcurrentMap<ClassLoader, ClassLoader> tempClassLoaders,
                                  final ClassReader classReader, final int flags) {
             super(classReader, flags);
+            this.currentClass = currentClass;
             this.tempClassLoaders = tempClassLoaders;
         }
 
@@ -180,7 +184,7 @@
         protected Class<?> findClass(final ClassLoader tccl, final String className)
                 throws ClassNotFoundException {
             try {
-                return Class.forName(className, false, tccl);
+                return currentClass.equals(className) ? Object.class : Class.forName(className, false, tccl);
             } catch (ClassNotFoundException e) {
                 return Class.forName(className, false, getClass().getClassLoader());
             }