Package: libcglib-java
Version: 2.2.2+dfsg-5
Severity: important
Tags: patch

Dear Maintainer,

The current version of libcglib in debian breaks the libmockito-java
package. I've put together a test class (With code taken from
http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#13
)

|List list = new LinkedList();
|List spy = spy(list);
|
|// using the spy calls real methods
|spy.add("one");
|spy.add("two");

Trying to run this yields : 

|java.lang.RuntimeException: Unable to set MockitoNamingPolicy on cglib 
generator which creates FastClasses
|at 
org.mockito.internal.creation.cglib.CGLIBHacker.setMockitoNamingPolicy(CGLIBHacker.java:29)
|at 
org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:42)
|at $java.util.LinkedList$$EnhancerByMockitoWithCGLIB$$440d9615.add(<generated>)
|at testSpy.spying(testSpy.java:17)
|Caused by: java.lang.NullPointerException
|at 
org.mockito.internal.creation.cglib.CGLIBHacker.setMockitoNamingPolicy(CGLIBHacker.java:23)

Downgrading libcglib to 2.2+dfsg-2 (squeeze) fixes this. 

Browsing the changes in cglib, I traced this down to the
MethodProxy.java class, particularly this change: 
http://cglib.cvs.sourceforge.net/viewvc/cglib/cglib/src/proxy/net/sf/cglib/proxy/MethodProxy.java?r1=1.14&r2=1.15

I believe the change was accidental, so the attached patch restores the
old behaviour. Applying it to libcglib-java makes my test run. 

This is just a workaround, but it is the minimal change to get Mockito
working again in Debian. 

-- System Information:
Debian Release: 7.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libcglib-java depends on:
ii  libasm3-java  3.3.2-1

libcglib-java recommends no packages.

libcglib-java suggests no packages.

-- no debconf information

-- 
Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war.
Bertolt Brecht
--- a/src/proxy/net/sf/cglib/proxy/MethodProxy.java
+++ b/src/proxy/net/sf/cglib/proxy/MethodProxy.java
@@ -76,7 +76,6 @@
                     fci.i1 = fci.f1.getIndex(sig1);
                     fci.i2 = fci.f2.getIndex(sig2);
                     fastClassInfo = fci;
-                    createInfo = null;
                 }
             }
         }
import static org.mockito.Mockito.spy;

import java.util.LinkedList;
import java.util.List;

import org.junit.Test;

public class testSpy {

	@Test
	public void spying() {
		List list = new LinkedList();
		List spy = spy(list);

		// using the spy calls real methods
		spy.add("one");
		spy.add("two");
	}
}

Attachment: signature.asc
Description: Digital signature

__
This is the maintainer address of Debian's Java team
<http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-maintainers>. 
Please use
debian-j...@lists.debian.org for discussions and questions.

Reply via email to