/** * Create a Tuple typed projection for the given expressions * * @param exprs arguments for the projection * @return factory expression */ public static QTuple tuple(ImmutableList<Expression<?>> exprs) { return new QTuple(exprs); }
/** * Create a Tuple typed projection for the given expressions * * @param exprs arguments for the projection * @return factory expression */ public static QTuple tuple(Expression<?>... exprs) { return new QTuple(exprs); }
/** * Create a Tuple typed projection for the given expressions * * @param exprs arguments for the projection * @return factory expression */ public static QTuple tuple(Expression<?>[]... exprs) { return new QTuple(exprs); }
/** * Create a new MappingProjection instance * * @param type * @param args */ @SuppressWarnings("unchecked") public MappingProjection(Class<? super T> type, Expression<?>[]... args) { super((Class) type); qTuple = new QTuple(ExpressionUtils.distinctList(args)); }
/** * Create a new MappingProjection instance * * @param type * @param args */ @SuppressWarnings("unchecked") public MappingProjection(Class<? super T> type, Expression<?>... args) { super((Class) type); qTuple = new QTuple(ExpressionUtils.distinctList(args)); }
@Test public void oneArray_getArgs() { assertEquals(Arrays.asList(str1, str2), new QTuple(exprs1).getArgs()); }
@Test public void twoExpressions_getArgs() { assertEquals(Arrays.asList(str1, str2), new QTuple(str1, str2).getArgs()); }
@Test public void twoExpressionArrays_getArgs() { assertEquals(Arrays.asList(str1, str2, str3, str4), new QTuple(exprs1, exprs2).getArgs()); }
@Test @Ignore public void duplicates2() { QTuple expr = new QTuple(ImmutableList.<Expression<?>>of(str1, str1)); assertEquals(1, expr.getArgs().size()); assertEquals(str1, expr.getArgs().get(0)); }
@Test public void nestedProjection_getArgs2() { assertEquals(Arrays.asList(str1, str2, str3), FactoryExpressionUtils.wrap(new QTuple(concat, str3)).getArgs()); }
@Test public void nestedProjection_getArgs() { assertEquals(Arrays.asList(str1, str2), FactoryExpressionUtils.wrap(new QTuple(concat)).getArgs()); }
@Test @Ignore public void duplicates() { QTuple expr = new QTuple(str1, str1); assertEquals(1, expr.getArgs().size()); assertEquals(str1, expr.getArgs().get(0)); }
@Test public void tuple_equals() { QTuple expr = new QTuple(str1, str2); assertEquals(expr.newInstance("str1", "str2"), expr.newInstance("str1", "str2")); }
@Test public void nestedProjection_newInstance() { QTuple expr = new QTuple(concat); assertEquals("1234", FactoryExpressionUtils.wrap(expr).newInstance("12", "34").get(concat)); }
@Test public void nestedProjection_newInstance2() { QTuple expr = new QTuple(str1, str2, concat); assertEquals("1234", FactoryExpressionUtils.wrap(expr).newInstance("1", "2", "12", "34").get(concat)); }
@Test public void serialize() throws ClassNotFoundException, IOException { QTuple e = new QTuple(Expressions.stringPath("x"), Expressions.numberPath(Integer.class, "y")); serialize(e); serialize(e.newInstance("a",1)); }
@Test public void tuple_hashCode() { QTuple expr = new QTuple(str1, str2); assertEquals(expr.newInstance("str1", "str2").hashCode(), expr.newInstance("str1", "str2").hashCode()); }
@Test public void alias() { Expression<?> expr = str1.as("s"); QTuple qTuple = new QTuple(expr); Tuple tuple = qTuple.newInstance("arg"); assertEquals("arg", tuple.get(expr)); assertEquals("arg", tuple.get(Expressions.stringPath("s"))); }
@Test public void deep_population_via_qTuple() { StringPath name = Expressions.stringPath("name"); StringPath id = Expressions.stringPath("id"); QBean<Entity2> entity2Bean = new QBean<Entity2>(Entity2.class, name, id); QTuple tupleExpr = new QTuple(entity2Bean); Tuple tuple = FactoryExpressionUtils.wrap(tupleExpr).newInstance("nameX","idX"); assertEquals("nameX", tuple.get(entity2Bean).getName()); assertEquals("idX", tuple.get(entity2Bean).getId()); }