Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.oneeyedmen.tdb.internal;
 
 
 
 public class FieldAccess implements Invokable {
    private final Object object;
    public FieldAccess(Object object) {
        this. = object;
    }
    @Override
    public Object invoke(Invocation invocationthrows Throwable {
        Method method = invocation.getInvokedMethod();
        if (method.getParameterTypes().length == 0) {
            Field field = .getClass().getDeclaredField(fieldNameForAccessor(method));
            field.setAccessible(true);
            return field.get();
        } else {
            Field field = .getClass().getDeclaredField(fieldNameForMutator(method));
            field.setAccessible(true);
            field.set(invocation.getParametersAsArray()[0]);
            return null;
        }
    }
    private String fieldNameForMutator(Method method) {
        String methodName = method.getName();
        if (methodName.startsWith("set"))
            return Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);
        else
            return methodName;
    }
    private String fieldNameForAccessor(Method method) {
        String methodName = method.getName();
        if (methodName.startsWith("get")) {
            return removePrefixAnduncapitalise(methodName, 3);
        }
        else if (methodName.startsWith("is"))
            return removePrefixAnduncapitalise(methodName, 2);
        else
            return methodName;
    }
    private String removePrefixAnduncapitalise(String methodNameint index) {
        return Character.toLowerCase(methodName.charAt(index)) + methodName.substring(index + 1);
    }
New to GrepCode? Check out our FAQ X