Skip to content

Instantly share code, notes, and snippets.

@emmanuelbernard
Last active December 11, 2015 22:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emmanuelbernard/4673863 to your computer and use it in GitHub Desktop.
Save emmanuelbernard/4673863 to your computer and use it in GitHub Desktop.
interface ValueHolder {
Object getValue();
}
//param
traversableResolver.isReachable(
new ValueHolderImpl(param0),
Node("arg0", ElementType.Kind.PARAMETER),
Gentleman.class,
path, // Node("wearSuit", Kind.METHOD)
elementType.PARAMETER);
//top bean
traversableResolver.isReachable(
new ValueHolderImpl(topBean),
Node(null, ElementType.Kind.BEAN),
TopBean.class,
emptyPath,
elementType.TYPE //or should it be null
);
public class JPATraversableResolver implements TraversableResolver {
public boolean isReachable(Object traversableObject,
Path.Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
ElementDescriptor.Kind kind = traversableProperty.getelementType().getKind();
if (trabversableObject == null) {
return true;
}
else if ( kind == ElementDescriptor.Kind.PARAMETER || kind == ElementDescriptor.Kind.RETURN_VALUE ) {
return Persistence.getPersistenceUtil().isLoaded( ( (ValueHolder) traversableObject ).getValue() );
}
else {
return traversableObject == null ||
Persistence.getPersistenceUtil().isLoaded(
traversableObject,
traversableProperty.getName() );
}
}
public boolean isCascadable(Object traversableObject,
Path.Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
return true;
}
}
public class JPATraversableResolver implements TraversableResolver {
public boolean isReachable(Object traversableObject,
Path.Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
ElementDescriptor.Kind kind = traversableProperty.getelementType().getKind();
if (trabversableObject == null) {
return true;
}
else if ( kind == ElementDescriptor.Kind.PARAMETER || kind == ElementDescriptor.Kind.RETURN_VALUE ) {
return true;
}
else {
return traversableObject == null ||
Persistence.getPersistenceUtil().isLoaded(
traversableObject,
traversableProperty.getName() );
}
}
public boolean isCascadable(Object traversableObject,
Path.Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
ElementDescriptor.Kind kind = traversableProperty.getelementType().getKind();
if ( kind == ElementDescriptorKind.PARAMETER || ElementDescriptor.kind == Kind.RETURN_VALUE ) {
return Persistence.getPersistenceUtil().isLoaded( ( (ValueHolder) traversableObject ).getValue() );
}
else {
return true;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment