Last active
December 11, 2015 22:59
-
-
Save emmanuelbernard/4673863 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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