Skip to content

Commit

Permalink
HHH-12119 - Fix NameQueryTupleTransformer discarding alias name case.
Browse files Browse the repository at this point in the history
  • Loading branch information
Naros committed Dec 11, 2017
1 parent db2e390 commit e3cc2d7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 15 deletions.
Expand Up @@ -55,6 +55,7 @@ private static class NativeTupleImpl implements Tuple {
private Object[] tuple; private Object[] tuple;


private Map<String, Object> aliasToValue = new LinkedHashMap<>(); private Map<String, Object> aliasToValue = new LinkedHashMap<>();
private Map<String, String> aliasReferences = new LinkedHashMap<>();


public NativeTupleImpl(Object[] tuple, String[] aliases) { public NativeTupleImpl(Object[] tuple, String[] aliases) {
if ( tuple == null ) { if ( tuple == null ) {
Expand All @@ -68,7 +69,8 @@ public NativeTupleImpl(Object[] tuple, String[] aliases) {
} }
this.tuple = tuple; this.tuple = tuple;
for ( int i = 0; i < tuple.length; i++ ) { for ( int i = 0; i < tuple.length; i++ ) {
aliasToValue.put( aliases[i].toLowerCase(), tuple[i] ); aliasToValue.put( aliases[i], tuple[i] );
aliasReferences.put( aliases[i].toLowerCase(), aliases[i] );
} }
} }


Expand All @@ -81,11 +83,11 @@ public <X> X get(String alias, Class<X> type) {


@Override @Override
public Object get(String alias) { public Object get(String alias) {
final String lowerCasedAlias = alias.toLowerCase(); final String aliasReference = aliasReferences.get( alias.toLowerCase() );
if (!aliasToValue.containsKey(lowerCasedAlias)) { if ( aliasReference != null && aliasToValue.containsKey( aliasReference ) ) {
throw new IllegalArgumentException( "Unknown alias [" + alias + "]" ); return aliasToValue.get( aliasReference );
} }
return aliasToValue.get(lowerCasedAlias); throw new IllegalArgumentException( "Unknown alias [" + alias + "]" );
} }


@Override @Override
Expand Down
Expand Up @@ -200,9 +200,9 @@ public void testGetElementsShouldWorkProperly() {
List<TupleElement<?>> result = tuples.get(0).getElements(); List<TupleElement<?>> result = tuples.get(0).getElements();
assertEquals(2, result.size()); assertEquals(2, result.size());
assertEquals(BigInteger.class, result.get(0).getJavaType()); assertEquals(BigInteger.class, result.get(0).getJavaType());
assertEquals("id", result.get(0).getAlias()); assertEquals("ID", result.get(0).getAlias());
assertEquals(String.class, result.get(1).getJavaType()); assertEquals(String.class, result.get(1).getJavaType());
assertEquals("firstname", result.get(1).getAlias()); assertEquals("FIRSTNAME", result.get(1).getAlias());
}); });
} }


Expand Down Expand Up @@ -362,9 +362,9 @@ public void testGetElementsWithNamedNativeQueryShouldWorkProperly() {
List<TupleElement<?>> result = tuples.get(0).getElements(); List<TupleElement<?>> result = tuples.get(0).getElements();
assertEquals(2, result.size()); assertEquals(2, result.size());
assertEquals(BigInteger.class, result.get(0).getJavaType()); assertEquals(BigInteger.class, result.get(0).getJavaType());
assertEquals("id", result.get(0).getAlias()); assertEquals("ID", result.get(0).getAlias());
assertEquals(String.class, result.get(1).getJavaType()); assertEquals(String.class, result.get(1).getJavaType());
assertEquals("firstname", result.get(1).getAlias()); assertEquals("FIRSTNAME", result.get(1).getAlias());
}); });
} }


Expand Down Expand Up @@ -524,9 +524,9 @@ public void testStreamedGetElementsShouldWorkProperly() {
List<TupleElement<?>> result = tuples.get(0).getElements(); List<TupleElement<?>> result = tuples.get(0).getElements();
assertEquals(2, result.size()); assertEquals(2, result.size());
assertEquals(BigInteger.class, result.get(0).getJavaType()); assertEquals(BigInteger.class, result.get(0).getJavaType());
assertEquals("id", result.get(0).getAlias()); assertEquals("ID", result.get(0).getAlias());
assertEquals(String.class, result.get(1).getJavaType()); assertEquals(String.class, result.get(1).getJavaType());
assertEquals("firstname", result.get(1).getAlias()); assertEquals("FIRSTNAME", result.get(1).getAlias());
}); });
} }


Expand Down Expand Up @@ -686,9 +686,9 @@ public void testStreamedGetElementsWithNamedNativeQueryShouldWorkProperly() {
List<TupleElement<?>> result = tuples.get(0).getElements(); List<TupleElement<?>> result = tuples.get(0).getElements();
assertEquals(2, result.size()); assertEquals(2, result.size());
assertEquals(BigInteger.class, result.get(0).getJavaType()); assertEquals(BigInteger.class, result.get(0).getJavaType());
assertEquals("id", result.get(0).getAlias()); assertEquals("ID", result.get(0).getAlias());
assertEquals(String.class, result.get(1).getJavaType()); assertEquals(String.class, result.get(1).getJavaType());
assertEquals("firstname", result.get(1).getAlias()); assertEquals("FIRSTNAME", result.get(1).getAlias());
}); });
} }


Expand All @@ -706,11 +706,11 @@ public void testGetElementsShouldNotThrowExceptionWhenResultContainsNullValue()
assertEquals(2, result.size()); assertEquals(2, result.size());
final TupleElement<?> firstTupleElement = result.get(0); final TupleElement<?> firstTupleElement = result.get(0);
assertEquals(BigInteger.class, firstTupleElement.getJavaType()); assertEquals(BigInteger.class, firstTupleElement.getJavaType());
assertEquals("id", firstTupleElement.getAlias()); assertEquals("ID", firstTupleElement.getAlias());
assertEquals(BigInteger.valueOf(1L), tuple.get(firstTupleElement.getAlias())); assertEquals(BigInteger.valueOf(1L), tuple.get(firstTupleElement.getAlias()));
final TupleElement<?> secondTupleElement = result.get(1); final TupleElement<?> secondTupleElement = result.get(1);
assertEquals(Object.class, secondTupleElement.getJavaType()); assertEquals(Object.class, secondTupleElement.getJavaType());
assertEquals("firstname", secondTupleElement.getAlias()); assertEquals("FIRSTNAME", secondTupleElement.getAlias());
assertNull(tuple.get(secondTupleElement.getAlias())); assertNull(tuple.get(secondTupleElement.getAlias()));
}); });
} }
Expand Down

0 comments on commit e3cc2d7

Please sign in to comment.