try { if ( type == CtPrimitiveType.booleanType ) { f.replace("$_ = ___bytes.getBool"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.byteType ) { f.replace("$_ = ___bytes.get"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.charType ) { f.replace("$_ = ___bytes.getChar"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.shortType ) { f.replace("$_ = ___bytes.getShort"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.intType ) { f.replace("$_ = ___bytes.getInt"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.longType ) { f.replace("$_ = ___bytes.getLong"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.floatType ) { f.replace("$_ = ___bytes.getFloat"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.doubleType ) { f.replace("$_ = ___bytes.getDouble"+insert+"("+off+"+___offset);"); } else { // object ref or obje array String typeString = type.getName(); "$_ = tmp; " + "}";
final String body = "___bytes.putBool" + insert + "((long)" + off + "+___offset, $1 );"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,1,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.put"+insert+"("+off+"+___offset,$1);"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,1,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.putChar"+insert+"("+off+"+___offset,$1);"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,2,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.putShort"+insert+"("+off+"+___offset,$1);"; if (trackChanges) {
final String body = "___bytes.putBool" + insert + "((long)" + off + "+___offset, $1 );"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,1,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.put"+insert+"("+off+"+___offset,$1);"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,1,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.putChar"+insert+"("+off+"+___offset,$1);"; if (trackChanges) { f.replace("{" + body + "if (tracker!=null) tracker.addChange("+off+"+___offset,2,"+ fieldName +");" + "}"); } else { f.replace(body); final String body = "___bytes.putShort"+insert+"("+off+"+___offset,$1);"; if (trackChanges) {
try { if ( type == CtPrimitiveType.booleanType ) { f.replace("$_ = ___bytes.getBool"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.byteType ) { f.replace("$_ = ___bytes.get"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.charType ) { f.replace("$_ = ___bytes.getChar"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.shortType ) { f.replace("$_ = ___bytes.getShort"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.intType ) { f.replace("$_ = ___bytes.getInt"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.longType ) { f.replace("$_ = ___bytes.getLong"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.floatType ) { f.replace("$_ = ___bytes.getFloat"+insert+"("+off+"+___offset);"); } else if ( type == CtPrimitiveType.doubleType ) { f.replace("$_ = ___bytes.getDouble"+insert+"("+off+"+___offset);"); } else { // object ref or obje array String typeString = type.getName(); "$_ = tmp; " + "}";
@Override public void edit(FieldAccess f) throws CannotCompileException { if ("lastPolledAge".equals(f.getFieldName())) { StringBuilder replacement = new StringBuilder(); replacement.append("$_ = creatureagemod.getAdjustedLastPolledAge(this, reborn);"); f.replace(replacement.toString()); } } });
ClassPool classPool = ClassPool.getDefault(); CtClass greetCtClass = classPool.get(Greet.class.getName()); greetCtClass.instrument(new ExprEditor() { @Override public void edit(FieldAccess fieldAccess) throws CannotCompileException { if (fieldAccess.getFieldName().equals("knowncount")) { fieldAccess .replace(" { System.out.println(\"A read operation on a field is encountered \"); $_ = $proceed($$); } "); } } }); greetCtClass .writeFile("<ROOT DIRECTORY WHERE THE CLASSES ARE>");
public void edit(FieldAccess access) throws CannotCompileException { if (COLLECTIONS.equals(access.getClassName())) { if ("EMPTY_LIST".equals(access.getFieldName())) access.replace("$_ = " + COLLECTIONS + ".emptyList();"); else if ("EMPTY_SET".equals(access.getFieldName())) access.replace("$_ = " + COLLECTIONS + ".emptySet();"); else if ("EMPTY_MAP".equals(access.getFieldName())) access.replace("$_ = " + COLLECTIONS + ".emptyMap();"); } }
@Override public void edit(FieldAccess f) throws CannotCompileException { if (f.isWriter() && f.getClassName().equals("com.wurmonline.server.creatures.Communicator") && f.getFieldName().equals("commandMessage")) { StringBuffer code = new StringBuffer(); code.append("$proceed($$);\n"); code.append(String.format("if (%s#communicatorMessageHook(this, $1, title)) { return; };\n", ProxyServerHook.class.getName())); f.replace(code.toString()); } } });
@Override public void edit(FieldAccess f) throws CannotCompileException { if (f.getClassName().equals("com.wurmonline.server.creatures.CreatureTemplate") && f.getFieldName().equals("isHorse")) { f.replace("{ String name = org.gotti.wurmunlimited.modsupport.creatures.ModCreatures.getTraitName(this); if (name != null) { corpse.setDescription(name); $_ = false; } else { $_ = $proceed($$); } }"); } }
@Override public void edit(FieldAccess f) throws CannotCompileException { if (f.getClassName().equals("com.wurmonline.server.behaviours.BehaviourDispatcher") && f.getFieldName().equals("emptyActions")) { StringBuffer code = new StringBuffer(); code.append("{\n"); code.append(" com.wurmonline.server.creatures.Creature creature = comm.getPlayer();\n"); code.append(" com.wurmonline.server.behaviours.Behaviour behaviour = com.wurmonline.server.behaviours.Action.getBehaviour(target, creature.isOnSurface());\n"); code.append(" org.gotti.wurmunlimited.modsupport.actions.BehaviourProvider behaviourProvider = org.gotti.wurmunlimited.modsupport.actions.ModActions.getBehaviourProvider(behaviour);\n"); code.append(" com.wurmonline.server.skills.Skill skill = org.gotti.wurmunlimited.modsupport.actions.ModActions.getSkillOrNull(creature, skillid);\n"); code.append(" if (skill != null && behaviourProvider != null) {\n"); code.append(" $_ = behaviourProvider.getBehavioursFor(creature, skill);\n"); code.append(" } else {\n"); code.append(" $_ = $proceed();\n"); code.append(" }\n"); code.append("}\n"); f.replace(code.toString()); } }
@Override public void edit(final FieldAccess access) throws CannotCompileException { if (access.getFieldName().equals(fieldName)) { access.replace(newCode); markEdited(); } } }.instrument(method);
@Override public void edit(final FieldAccess access) throws CannotCompileException { if (access.getFieldName().equals(fieldName)) { access.replace(newCode); markEdited(); } } }.instrument(method);
protected void replaceWrite(FieldAccess fieldAccess) throws CannotCompileException { String fieldWrite = fieldWrite(field.getName()); if (fieldAccess.isStatic()) { String code = " { " + " " + fieldWrite + "(null, $1);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " " + fieldWrite + "($0, $1);" + " } " + ""; fieldAccess.replace(code); } }
protected void replaceWrite(FieldAccess fieldAccess) throws CannotCompileException { String fieldWrite = fieldWrite(field.getName()); if (fieldAccess.isStatic()) { String code = " { " + " " + fieldWrite + "(null, $1);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " " + fieldWrite + "($0, $1);" + " } " + ""; fieldAccess.replace(code); } } }
protected void replaceWrite(FieldAccess fieldAccess) throws CannotCompileException { String fieldWrite = fieldWrite(field.getName()); if (fieldAccess.isStatic()) { String code = " { " + " " + fieldWrite + "(null, $1);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " " + fieldWrite + "($0, $1);" + " } " + ""; fieldAccess.replace(code); } } }
protected void replaceRead(FieldAccess fieldAccess) throws CannotCompileException { if (fieldAccess.isStatic()) { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "(null);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "($0);" + " } " + ""; fieldAccess.replace(code); } }
protected void replaceRead(FieldAccess fieldAccess) throws CannotCompileException { if (fieldAccess.isStatic()) { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "(null);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "($0);" + " } " + ""; fieldAccess.replace(code); } }
protected void replaceRead(FieldAccess fieldAccess) throws CannotCompileException { if (fieldAccess.isStatic()) { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "(null);" + " } " + ""; fieldAccess.replace(code); } else { String code = " { " + " $_ = ($r)" + fieldRead(field.getName()) + "($0);" + " } " + ""; fieldAccess.replace(code); } }
" $_ = " + getCorrectReturnValueType(returnTypeAsCtClass) + ";" + "}}"; f.replace(code);
@Override public void edit(FieldAccess fieldAccess) throws CannotCompileException { try { if (isThreadedFieldAccess(fieldAccess.getField())) { if (fieldAccess.isReader()) { fieldAccess.replace("$_ = ($r)play.utils.Java.invokeStatic($type, \"current\");"); } } } catch (Exception e) { Logger.error(e, "Error in ControllersEnhancer. %s.%s has not been properly enhanced (fieldAccess %s).", applicationClass.name, ctMethod.getName(), fieldAccess); throw new UnexpectedException(e); } } });