Skip to content

Commit

Permalink
HBX-2390: Create a JBoss Tools adaptation layer in Hibernate Tools
Browse files Browse the repository at this point in the history
  - Add new test case 'org.hibernate.tool.orm.jbt.wrp.ValueWrapperFactoryTest#testGetCollectionElement()'
  - Modify method 'org.hibernate.tool.orm.jbt.wrp.ValueWrapperFactory.ValueWrapperInvocationHandler#invoke(...)' to handle wrap a potential Value result value in the ValueExtension case

Signed-off-by: Koen Aers <[email protected]>
  • Loading branch information
koentsje committed Jul 1, 2023
1 parent 59de9e2 commit 48f0ac3
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,20 +115,26 @@ public ValueWrapperInvocationHandler(Value value) {

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
try {
Method valueClassMethod = lookupMethodInValueClass(extendedValue, method);
if (valueClassMethod != null) {
Object result = valueClassMethod.invoke(extendedValue, args);
result = valueClassMethod.invoke(extendedValue, args);
if (result != null && valueClassMethod.getReturnType().isAssignableFrom(Value.class)) {
result = ValueWrapperFactory.createValueWrapper((Value)result);
}
return result;
} else {
return method.invoke(this, args);
result = method.invoke(this, args);
if (!"getWrappedObject".equals(method.getName())
&& result != null
&& method.getReturnType().isAssignableFrom(Value.class)) {
result = ValueWrapperFactory.createValueWrapper((Value)result);
}
}
} catch (InvocationTargetException e) {
throw e.getTargetException();
}
return result;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,15 @@ public void testGetElement() {
assertNull(valueWrapper.getElement());
}

@Test
public void testGetCollectionElement() {
List valueTarget = new List(DummyMetadataBuildingContext.INSTANCE, null);
Value basicValue = new BasicValue(DummyMetadataBuildingContext.INSTANCE);
ValueWrapper valueWrapper = ValueWrapperFactory.createValueWrapper(valueTarget);
valueTarget.setElement(basicValue);
assertSame(basicValue, ((Wrapper)valueWrapper.getCollectionElement()).getWrappedObject());
valueTarget.setElement(null);
assertNull(valueWrapper.getCollectionElement());
}

}

0 comments on commit 48f0ac3

Please sign in to comment.