ca.getstatic(asm.getName(), strategyField, StubStrategy.class);
c.getstatic(file.getName(), currentState.httpStringFieldName, HTTP_STRING_DESCRIPTOR); stateMachine.handleStateMachineMatchedToken(c); c.getstatic(className, state.httpStringFieldName, HTTP_STRING_DESCRIPTOR); c.astore(STATE_CURRENT_VAR); c.getstatic(className, state.fieldName, "[B"); c.astore(STATE_CURRENT_BYTES_VAR); c.iconst(state.soFar.length());
asm.addField(Modifier.PRIVATE + Modifier.STATIC, ID_FIELD_NAME, String[].class); final CodeAttribute idMethod = asm.addMethod(Modifier.PUBLIC + Modifier.FINAL, "_ids", "[Ljava/lang/String;").getCodeAttribute(); idMethod.getstatic(stubClassName, ID_FIELD_NAME, "[Ljava/lang/String;"); idMethod.returnInstruction();
public void getstatic(String className, String field, Class<?> fieldType) { getstatic(className, field, DescriptorUtils.makeDescriptor(fieldType)); }
public void getstatic(String className, String field, Class<?> fieldType) { getstatic(className, field, DescriptorUtils.makeDescriptor(fieldType)); }
public void getstatic(String className, String field, Class<?> fieldType) { getstatic(className, field, DescriptorUtils.makeDescriptor(fieldType)); }
public void getstatic(String className, String field, Class<?> fieldType) { getstatic(className, field, DescriptorUtils.makeDescriptor(fieldType)); }
public void getstatic(String className, String field, Class<?> fieldType) { getstatic(className, field, DescriptorUtils.makeDescriptor(fieldType)); }
switch (type) { case 'I': b.getstatic(Integer.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'J': b.getstatic(Long.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'S': b.getstatic(Short.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'F': b.getstatic(Float.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'D': b.getstatic(Double.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'B': b.getstatic(Byte.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'C': b.getstatic(Character.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'Z': b.getstatic(Boolean.class.getName(), TYPE, LJAVA_LANG_CLASS); break; default:
switch (type) { case 'I': b.getstatic(Integer.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'J': b.getstatic(Long.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'S': b.getstatic(Short.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'F': b.getstatic(Float.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'D': b.getstatic(Double.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'B': b.getstatic(Byte.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'C': b.getstatic(Character.class.getName(), TYPE, LJAVA_LANG_CLASS); break; case 'Z': b.getstatic(Boolean.class.getName(), TYPE, LJAVA_LANG_CLASS); break; default:
switch (type) { case 'I': getstatic(Integer.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'J': getstatic(Long.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'S': getstatic(Short.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'F': getstatic(Float.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'D': getstatic(Double.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'B': getstatic(Byte.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'C': getstatic(Character.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'Z': getstatic(Boolean.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'V': getstatic(Void.class.getName(), "TYPE", "Ljava/lang/Class;"); break; default:
switch (type) { case 'I': getstatic(Integer.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'J': getstatic(Long.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'S': getstatic(Short.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'F': getstatic(Float.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'D': getstatic(Double.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'B': getstatic(Byte.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'C': getstatic(Character.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'Z': getstatic(Boolean.class.getName(), "TYPE", "Ljava/lang/Class;"); break; case 'V': getstatic(Void.class.getName(), "TYPE", "Ljava/lang/Class;"); break; default:
/** * Writes the bytecode to load an instance of Method for the given method onto the stack * <p/> * If loadMethod has not already been called for the given method then a static field to hold the method is added to the * class, and code is added to the static constructor to initialize the field to the correct Method. * * @param methodToLoad the method to load * @param method the subclass method to populate */ protected void loadMethodIdentifier(Method methodToLoad, ClassMethod method) { if (!methodIdentifiers.containsKey(methodToLoad)) { int identifierNo = identifierCount++; String fieldName = METHOD_FIELD_PREFIX + identifierNo; classFile.addField(AccessFlag.PRIVATE | AccessFlag.STATIC, fieldName, Method.class); methodIdentifiers.put(methodToLoad, identifierNo); } final Integer fieldNo = methodIdentifiers.get(methodToLoad); method.getCodeAttribute().getstatic(getClassName(), METHOD_FIELD_PREFIX + fieldNo, METHOD_FIELD_DESCRIPTOR); }
ca.getstatic(MethodStore.class.getName(), "METHODS", "Ljava/util/Map;"); ca.newInstruction(ClassIdentifier.class); ca.dup();
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }
@Override public void getDeclaredMethod(final ClassMethod classMethod, final String declaringClass, final String methodName, final String[] parameterTypes, ClassMethod staticConstructor) { String weldMemberName = WELD_MEMBER_PREFIX + METHOD_COUNT.incrementAndGet(); staticConstructor.getClassFile().addField(AccessFlag.PRIVATE | AccessFlag.STATIC, weldMemberName, LJAVA_LANG_REFLECT_METHOD); final CodeAttribute code = staticConstructor.getCodeAttribute(); addInitMethod(declaringClass, methodName, parameterTypes, weldMemberName, staticConstructor.getClassFile()); code.invokestatic(staticConstructor.getClassFile().getName(), weldMemberName, "()Ljava/lang/reflect/Method;"); code.putstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); CodeAttribute methodCode = classMethod.getCodeAttribute(); methodCode.getstatic(classMethod.getClassFile().getName(), weldMemberName, LJAVA_LANG_REFLECT_METHOD); }