Files
allwpilib/networktables/java/lib/jmock/jmock-legacy-2.6.0-RC2.jar

272 lines
18 KiB
Plaintext
Raw Normal View History

PK
<00><><EFBFBD>< META-INF/<2F><>PK
<00><><EFBFBD><:<3A><>WffMETA-INF/MANIFEST.MFManifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 14.2-b01 (Sun Microsystems Inc.)
PK
<00><><EFBFBD><org/PK
<00><><EFBFBD><
org/jmock/PK
<00><><EFBFBD><org/jmock/lib/PK
<00><><EFBFBD><org/jmock/lib/legacy/PK
<00><><EFBFBD><若<><E88BA5><00>.org/jmock/lib/legacy/ClassImposteriser$1.class<73><73><EFBFBD><EFBFBD>1-
!
 "
#
$
%&'<init>()VCodeLineNumberTableLocalVariableTablethis InnerClasses*Lorg/jmock/lib/legacy/ClassImposteriser$1; getClassNameg(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lnet/sf/cglib/core/Predicate;)Ljava/lang/String;prefixLjava/lang/String;sourcekeyLjava/lang/Object;namesLnet/sf/cglib/core/Predicate;
SourceFileClassImposteriser.javaEnclosingMethod(
java/lang/StringBuilderorg.jmock.codegen. )*  +,(org/jmock/lib/legacy/ClassImposteriser$1%net/sf/cglib/core/DefaultNamingPolicy&org/jmock/lib/legacy/ClassImposteriserappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;0 
 /*<2A><01> %  n<1C>Y<><04>*+,-<04><06><05><07> (4
PK
<00><><EFBFBD><Ұ챬<00>.org/jmock/lib/legacy/ClassImposteriser$2.class<73><73><EFBFBD><EFBFBD>1!

<init>()VCodeLineNumberTableLocalVariableTablethis InnerClasses*Lorg/jmock/lib/legacy/ClassImposteriser$2;accept(Ljava/lang/reflect/Method;)ImethodLjava/lang/reflect/Method;
SourceFileClassImposteriser.javaEnclosingMethod   (org/jmock/lib/legacy/ClassImposteriser$2java/lang/Object!net/sf/cglib/proxy/CallbackFilter&org/jmock/lib/legacy/ClassImposteriserjava/lang/reflect/MethodisBridge()Z0/*<2A><01> ,
 A +<2B><02><04><03> .
  
PK
<00><><EFBFBD><1v<31>.EE.org/jmock/lib/legacy/ClassImposteriser$3.class<73><73><EFBFBD><EFBFBD>1# 
this$0(Lorg/jmock/lib/legacy/ClassImposteriser;<init>+(Lorg/jmock/lib/legacy/ClassImposteriser;)VCodeLineNumberTableLocalVariableTablethis InnerClasses*Lorg/jmock/lib/legacy/ClassImposteriser$3;filterConstructors$(Ljava/lang/Class;Ljava/util/List;)VscLjava/lang/Class; constructorsLjava/util/List;
SourceFileClassImposteriser.javaEnclosingMethod !  "(org/jmock/lib/legacy/ClassImposteriser$3net/sf/cglib/proxy/Enhancer&org/jmock/lib/legacy/ClassImposterisercreateProxyClass6(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Class;()V  4
*+<2B>*<2A><02>
a 
 ?<01>
f  
PK
<00><><EFBFBD>5##.org/jmock/lib/legacy/ClassImposteriser$4.class<73><73><EFBFBD><EFBFBD>18 & '
()
* +,-./val$mockObjectLorg/jmock/api/Invokable;this$0(Lorg/jmock/lib/legacy/ClassImposteriser;<init>D(Lorg/jmock/lib/legacy/ClassImposteriser;Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis InnerClasses*Lorg/jmock/lib/legacy/ClassImposteriser$4;invokeS(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;receiverLjava/lang/Object;methodLjava/lang/reflect/Method;args[Ljava/lang/Object;
Exceptions0
SourceFileClassImposteriser.javaEnclosingMethod1 23
4org/jmock/api/Invocation 56 7(org/jmock/lib/legacy/ClassImposteriser$4java/lang/Object$net/sf/cglib/proxy/InvocationHandlerjava/lang/Throwable&org/jmock/lib/legacy/ClassImposteriser createProxy>(Ljava/lang/Class;Lorg/jmock/api/Invokable;)Ljava/lang/Object;()VB(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Vorg/jmock/api/Invokable.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;  
 9*+<2B>*,<2C>*<2A><03><00> \*<2A><02>Y+,-<2D><05><00><00>* !"#$%
PK
<00><><EFBFBD><찛<>Torg/jmock/lib/legacy/ClassImposteriser$ClassWithSuperclassToWorkAroundCglibBug.class<73><73><EFBFBD><EFBFBD>1
<init>()VCodeLineNumberTableLocalVariableTablethis'ClassWithSuperclassToWorkAroundCglibBug InnerClassesPLorg/jmock/lib/legacy/ClassImposteriser$ClassWithSuperclassToWorkAroundCglibBug;
SourceFileClassImposteriser.java Norg/jmock/lib/legacy/ClassImposteriser$ClassWithSuperclassToWorkAroundCglibBugjava/lang/Object&org/jmock/lib/legacy/ClassImposteriser!/*<2A><01><00>   

PK
<00><><EFBFBD><6<><36>/<2F><00>,org/jmock/lib/legacy/ClassImposteriser.class<73><73><EFBFBD><EFBFBD>1
$<00><00>
<00> C<00>
<00>
<00>
<00><00>
<00>
C<00><00><00>
<00>
<00>
<00><00>
<00>
<00>
C<00>
C<00>
C<00>
<00>p<00>
<00>
<00><00><00><00><00>
<00><00><00><00>
<00>
<00>
<00><00><00><00><00>
&<00>
<00><00>
<00><00>
<00><00>
<00><00>
C<00>
<00><00><00><00>
<00><00> C<00>
<00><00>
<00> C<00>
<00><00>
<00><00><00><00>
<00>
<00> <00><00><00><00><00>
><00> /<00> <<00>
<00><00><00>
C<00> C<00><00>
F<00><00>
H<00><00>'ClassWithSuperclassToWorkAroundCglibBug InnerClassesINSTANCELorg/jmock/api/Imposteriser;GNAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES Lnet/sf/cglib/core/NamingPolicy;IGNORE_BRIDGE_METHODS#Lnet/sf/cglib/proxy/CallbackFilter; objenesisLorg/objenesis/Objenesis;<init>()VCodeLineNumberTableLocalVariableTablethis(Lorg/jmock/lib/legacy/ClassImposteriser;canImposterise(Ljava/lang/Class;)ZtypeLjava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; Signature(Ljava/lang/Class<*>;)Z imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
proxyClass
mockObjectLorg/jmock/api/Invokable;
mockedTypeancilliaryTypes[Ljava/lang/Class;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;_<T:Ljava/lang/Object;>(Lorg/jmock/api/Invokable;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;)TT;toStringMethodIsFinaltoStringLjava/lang/reflect/Method;eLjava/lang/SecurityException;!Ljava/lang/NoSuchMethodException;setConstructorsAccessible(Ljava/lang/Class;Z)V constructorLjava/lang/reflect/Constructor;arr$ [Ljava/lang/reflect/Constructor;len$Ii$
accessibleZ"Ljava/lang/reflect/Constructor<*>;(Ljava/lang/Class<*>;Z)VcreateProxyClass6(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Class;+Lnet/sf/cglib/core/CodeGenerationException;possibleMockedTypeenhancerLnet/sf/cglib/proxy/Enhancer;U<T:Ljava/lang/Object;>(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>; createProxy>(Ljava/lang/Class;Lorg/jmock/api/Invokable;)Ljava/lang/Object;proxyLnet/sf/cglib/proxy/Factory;A(Ljava/lang/Class<*>;Lorg/jmock/api/Invokable;)Ljava/lang/Object;prepend7(Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;firstrestall@(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)[Ljava/lang/Class<*>;<clinit>
SourceFileClassImposteriser.java UVorg/objenesis/ObjenesisStd ST <00><00> <00><00><00> <00><00> <00><00> o]"java/lang/IllegalArgumentExceptionjava/lang/StringBuilder <00><00> <00><00> has a final toString method p<00> U<00> uv <00><00> <00><00> <00><00>java/lang/Class <00><00><00>java/lang/SecurityExceptionjava/lang/IllegalStateException)not allowed to reflect on toString method U<00>java/lang/NoSuchMethodExceptionjava/lang/Errorno public toString method found <00><00><00> <00><00>java/lang/ObjectNorg/jmock/lib/legacy/ClassImposteriser$ClassWithSuperclassToWorkAroundCglibBug(org/jmock/lib/legacy/ClassImposteriser$3 U<00><00> <00><00><00> <00><00> <00><00>  <00><00> $net/sf/cglib/proxy/InvocationHandlernet/sf/cglib/proxy/NoOp  QR   OP  
  )net/sf/cglib/core/CodeGenerationExceptioncould not imposterise <00>  net/sf/cglib/proxy/Factorynet/sf/cglib/proxy/Callback(org/jmock/lib/legacy/ClassImposteriser$4 U M  &org/jmock/lib/legacy/ClassImposteriser MN(org/jmock/lib/legacy/ClassImposteriser$1(org/jmock/lib/legacy/ClassImposteriser$2org/jmock/api/Imposteriser isPrimitive()Z getModifiers()Ijava/lang/reflect/ModifierisFinal(I)Z isInterfacegetName()Ljava/lang/String;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(Ljava/lang/String;)Vcast&(Ljava/lang/Object;)Ljava/lang/Object; getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;java/lang/reflect/Method*(Ljava/lang/String;Ljava/lang/Throwable;)VgetDeclaredConstructors"()[Ljava/lang/reflect/Constructor;java/lang/reflect/Constructor setAccessible(Z)V+(Lorg/jmock/lib/legacy/ClassImposteriser;)V'org/jmock/internal/SearchingClassLoadercombineLoadersOf<(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/ClassLoader;net/sf/cglib/proxy/EnhancersetClassLoader(Ljava/lang/ClassLoader;)V setUseFactory setSuperclass(Ljava/lang/Class;)V setInterfaces([Ljava/lang/Class;)VsetCallbackTypessetCallbackFilter&(Lnet/sf/cglib/proxy/CallbackFilter;)V
getSigners()[Ljava/lang/Object;setNamingPolicy#(Lnet/sf/cglib/core/NamingPolicy;)V createClass()Ljava/lang/Class;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;org/objenesis/Objenesis newInstance%(Ljava/lang/Class;)Ljava/lang/Object;D(Lorg/jmock/lib/legacy/ClassImposteriser;Lorg/jmock/api/Invokable;)VLnet/sf/cglib/proxy/NoOp; setCallbacks!([Lnet/sf/cglib/proxy/Callback;)Vjava/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V!C$JMNOPQRST UVWB*<2A>*<2A>Y<><03><04>X#2#Y Z[\]Wl&+<2B><05> +<2B><06><07>+<2B><08> *+<2B> <09><04><03>X5Y&Z[&^_` &^abc<00>deW<00>\,<2C><08>)*,<2C> <09>!<21>
Y<EFBFBD> Y<> ,<2C> <0A><0F><0E><10><11>*,<04>*,-<2D>:,*+<2B><14>:*,<03><05>:*,<03><06>-HQQSQX;<-@3A;BHEY4;f_\Z[\gh\i_\jk` ;fa\il\jmbno]W<00>++<03><17>M,<2C><19><07>M<EFBFBD>Y,<2C><1D>M<EFBFBD>Y ,<2C>!<21>XK LOPR SY4 pq rs rt+Z[+^_` +^abcuvW<00>&+<2B>"N-<2D>66<04>-2:<1C>#<23><01><><EFBFBD><EFBFBD>XXYX%[YHwx yz {| }|&Z[&i_&~`w<00>&iab<00><00><00><00>Wi<00>+$<24> %<25>+N<>&Y*<2A>':-,<2C>(<28>)<04>*-<2D><08>$<24>+*-,<2C>,<2C>-<2D>-<2D>+,<2C>-<05>Y.SY/S<>0<04>1<>2-<2D>3<> <04>4<>5<04>6<>:<05>
Y<EFBFBD> Y<> 8<>-<2D>9<><05>:<3A>~<00><00>7XB^ah#i)j0k8lFoLpRrgsotvu~y<00>{<00>Y><00>r<00><00>Z[<00><00>_<00>jk<00>i_<00><00><00>` <00><00>a<00>jm<00>iab<00><00><00>W<00>,*<2A>+<2B>;<00><N-<05>=Y<03>>Y*,<2C>?SY<04>@S<>A-<2D>X<00><00>*<00>Y*,Z[,f_,gh<00><00>` ,fab<00><00><00><00>W<00>,<2C>`<60>N-+S,-,<2C><>B-<2D>X<00><00> <00><00>Y*Z[<00>_<00>k<00>k` <00>a<00>m<00>mb<00><00>VW?<1F>CY<43>D<>E<>FY<46>G<>4<>HY<48>I<>1<>X!
%,<00><00>L*%CK &>FHPK
<00><>K96<39>`O<><00>+org/jmock/lib/legacy/ClassImposteriser.javapackage org.jmock.lib.legacy;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.List;
import net.sf.cglib.core.CodeGenerationException;
import net.sf.cglib.core.DefaultNamingPolicy;
import net.sf.cglib.core.NamingPolicy;
import net.sf.cglib.core.Predicate;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.CallbackFilter;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.Factory;
import net.sf.cglib.proxy.InvocationHandler;
import net.sf.cglib.proxy.NoOp;
import org.jmock.api.Imposteriser;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.internal.SearchingClassLoader;
import org.objenesis.Objenesis;
import org.objenesis.ObjenesisStd;
/**
* This class lets you imposterise abstract and concrete classes
* <em>without</em> calling the constructors of the mocked class.
*
* @author npryce
*/
public class ClassImposteriser implements Imposteriser {
public static final Imposteriser INSTANCE = new ClassImposteriser();
private ClassImposteriser() {}
private static final NamingPolicy NAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES = new DefaultNamingPolicy() {
@Override
public String getClassName(String prefix, String source, Object key, Predicate names) {
return "org.jmock.codegen." + super.getClassName(prefix, source, key, names);
}
};
private static final CallbackFilter IGNORE_BRIDGE_METHODS = new CallbackFilter() {
public int accept(Method method) {
return method.isBridge() ? 1 : 0;
}
};
private final Objenesis objenesis = new ObjenesisStd();
public boolean canImposterise(Class<?> type) {
return !type.isPrimitive() &&
!Modifier.isFinal(type.getModifiers()) &&
(type.isInterface() || !toStringMethodIsFinal(type));
}
public <T> T imposterise(final Invokable mockObject, Class<T> mockedType, Class<?>... ancilliaryTypes) {
if (!mockedType.isInterface() && toStringMethodIsFinal(mockedType)) {
throw new IllegalArgumentException(mockedType.getName() + " has a final toString method");
}
try {
setConstructorsAccessible(mockedType, true);
Class<?> proxyClass = createProxyClass(mockedType, ancilliaryTypes);
return mockedType.cast(createProxy(proxyClass, mockObject));
}
finally {
setConstructorsAccessible(mockedType, false);
}
}
private boolean toStringMethodIsFinal(Class<?> type) {
try {
Method toString = type.getMethod("toString");
return Modifier.isFinal(toString.getModifiers());
}
catch (SecurityException e) {
throw new IllegalStateException("not allowed to reflect on toString method", e);
}
catch (NoSuchMethodException e) {
throw new Error("no public toString method found", e);
}
}
private void setConstructorsAccessible(Class<?> mockedType, boolean accessible) {
for (Constructor<?> constructor : mockedType.getDeclaredConstructors()) {
constructor.setAccessible(accessible);
}
}
private <T> Class<?> createProxyClass(Class<?> possibleMockedType, Class<?>... ancilliaryTypes) {
Class<?> mockedType =
possibleMockedType == Object.class ? ClassWithSuperclassToWorkAroundCglibBug.class : possibleMockedType;
Enhancer enhancer = new Enhancer() {
@Override
@SuppressWarnings("unchecked")
protected void filterConstructors(Class sc, List constructors) {
// Don't filter
}
};
enhancer.setClassLoader(SearchingClassLoader.combineLoadersOf(mockedType, ancilliaryTypes));
enhancer.setUseFactory(true);
if (mockedType.isInterface()) {
enhancer.setSuperclass(Object.class);
enhancer.setInterfaces(prepend(mockedType, ancilliaryTypes));
}
else {
enhancer.setSuperclass(mockedType);
enhancer.setInterfaces(ancilliaryTypes);
}
enhancer.setCallbackTypes(new Class[]{InvocationHandler.class, NoOp.class});
enhancer.setCallbackFilter(IGNORE_BRIDGE_METHODS);
if (mockedType.getSigners() != null) {
enhancer.setNamingPolicy(NAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES);
}
try {
return enhancer.createClass();
}
catch (CodeGenerationException e) {
// Note: I've only been able to manually test this. It exists to help people writing
// Eclipse plug-ins or using other environments that have sophisticated class loader
// structures.
throw new IllegalArgumentException("could not imposterise " + mockedType, e);
}
}
private Object createProxy(Class<?> proxyClass, final Invokable mockObject) {
Factory proxy = (Factory)objenesis.newInstance(proxyClass);
proxy.setCallbacks(new Callback[] {
new InvocationHandler() {
public Object invoke(Object receiver, Method method, Object[] args) throws Throwable {
return mockObject.invoke(new Invocation(receiver, method, args));
}
},
NoOp.INSTANCE
});
return proxy;
}
private Class<?>[] prepend(Class<?> first, Class<?>... rest) {
Class<?>[] all = new Class<?>[rest.length+1];
all[0] = first;
System.arraycopy(rest, 0, all, 1, rest.length);
return all;
}
public static class ClassWithSuperclassToWorkAroundCglibBug {}
}
PK
<00><><EFBFBD>< <00>AMETA-INF/<2F><>PK
<00><><EFBFBD><:<3A><>Wff<00><>+META-INF/MANIFEST.MFPK
<00><><EFBFBD><<00>A<EFBFBD>org/PK
<00><><EFBFBD><
<00>A<EFBFBD>org/jmock/PK
<00><><EFBFBD><<00>A org/jmock/lib/PK
<00><><EFBFBD><<00>A9org/jmock/lib/legacy/PK
<00><><EFBFBD><若<><E88BA5><00>.<00><>lorg/jmock/lib/legacy/ClassImposteriser$1.classPK
<00><><EFBFBD><Ұ챬<00>.<00><><EFBFBD>org/jmock/lib/legacy/ClassImposteriser$2.classPK
<00><><EFBFBD><1v<31>.EE.<00><><EFBFBD>org/jmock/lib/legacy/ClassImposteriser$3.classPK
<00><><EFBFBD>5##.<00><> org/jmock/lib/legacy/ClassImposteriser$4.classPK
<00><><EFBFBD><찛<>T<00><><EFBFBD>org/jmock/lib/legacy/ClassImposteriser$ClassWithSuperclassToWorkAroundCglibBug.classPK
<00><><EFBFBD><6<><36>/<2F><00>,<00><><EFBFBD>org/jmock/lib/legacy/ClassImposteriser.classPK
<00><>K96<39>`O<><00>+<00><>
.org/jmock/lib/legacy/ClassImposteriser.javaPK HE