import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import org.wamblee.reflection.ReflectionUtils;
/**
- * Factory which creates a {@link Persistent} object for a given entity for
+ * Factory which creates a {@link Persistent} object for a given JPA entity for
* interfacing with the primary key and version of the entity.
*
* This utility only treats primary keys and fields that are annotated with @Id
@Override
public T get(Object aEntity) {
try {
- return (T) field.get(aEntity);
+ T value = (T) field.get(aEntity);
+ return value;
} catch (Exception e) {
throw new RuntimeException(e);
- }
+ }
}
@Override
setter.invoke(aEntity, aValue);
} catch (Exception e) {
throw new RuntimeException(e);
- }
+ }
}
public Method getGetter() {
@Override
public Serializable getPrimaryKey() {
- return (Serializable)accessor.getPk().get(entity);
+ if (accessor == null || accessor.getPk() == null) {
+ return null;
+ }
+ return (Serializable) accessor.getPk().get(entity);
}
@Override
public void setPrimaryKey(Serializable aKey) {
+ if (accessor == null || accessor.getPk() == null) {
+ return;
+ }
accessor.getPk().set(entity, aKey);
- }
+ }
@Override
public Number getPersistedVersion() {
- return (Number)accessor.getVersion().get(entity);
+ if (accessor == null || accessor.getVersion() == null) {
+ return null;
+ }
+ return (Number) accessor.getVersion().get(entity);
}
@Override
public void setPersistedVersion(Number aVersion) {
+ if (accessor == null || accessor.getVersion() == null) {
+ return;
+ }
accessor.getVersion().set(entity, aVersion);
}
}
}
try {
Class returnType = method.getReturnType();
- Method setter = method.getDeclaringClass().getDeclaredMethod(setterName, returnType);
+ Method setter = method.getDeclaringClass()
+ .getDeclaredMethod(setterName, returnType);
return new PropertyAccessor(method, setter);
} catch (NoSuchMethodException e) {
throw new RuntimeException("Error obtaining setter for " +
}
/**
- * Creates the {@link Persistent} wrapper for interfacing with primary key and
- * version of the entity.
- * @param aEntity Entity to use.
- * @return Persistent object or null if this is not an entity.
+ * Creates the {@link Persistent} wrapper for interfacing with primary key
+ * and version of the entity.
+ *
+ * @param aEntity
+ * Entity to use.
+ * @return Persistent object or null if this is not an entity.
*/
- public static Persistent create(Object aEntity) {
+ public static Persistent create(Object aEntity) {
EntityAccessor accessor = createEntityAccessor(aEntity.getClass());
- if ( accessor == null ) {
- return null;
+ if (accessor == null) {
+ return null;
}
return new EntityObjectAccessor(aEntity, accessor);
}