private String getPropertyName(String name) { if (name.length() == 1) { return name.toLowerCase(); } if (Character.isUpperCase(name.charAt(1))) { return name; } return Character.toLowerCase(name.charAt(0)) + name.substring(1); }
private void castAndSetProperty( InvokeInstruction insn, String property, List<Instruction> instructions, Class<?> primitive) { Variable castVar = program.createVariable(); InvokeInstruction castInvoke = new InvokeInstruction(); castInvoke.setType(InvocationType.SPECIAL); String primitiveCapitalized = primitive.getName(); primitiveCapitalized = Character.toUpperCase(primitiveCapitalized.charAt(0)) + primitiveCapitalized.substring(1); castInvoke.setMethod( new MethodReference( ResourceAccessor.class, "castFrom" + primitiveCapitalized, primitive, Object.class)); castInvoke.getArguments().add(insn.getArguments().get(0)); castInvoke.setReceiver(castVar); instructions.add(castInvoke); setProperty(insn, property, instructions, castVar); }