/** * Create a constructor invocation projection for given type, parameter types and expressions * * @param type type of the projection * @param paramTypes constructor parameter types * @param exprs constructor parameters * @param <T> type of projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, Expression<?>... exprs) { return new ConstructorExpression<T>(type, paramTypes, exprs); }
/** * Create a constructor invocation projection for given type, parameter types and expressions * * @param type type of the projection * @param paramTypes constructor parameter types * @param exprs constructor parameters * @param <T> type of projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, ImmutableList<Expression<?>> exprs) { return new ConstructorExpression<T>(type, paramTypes, exprs); }
/** * Create a constructor invocation projection for the given type and expressions * * <p>Example</p> * <pre> * UserDTO dto = query.singleResult( * Projections.constructor(UserDTO.class, user.firstName, user.lastName)); * </pre> * * @param <T> type projection * @param type type of the projection * @param exprs arguments for the projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Expression<?>... exprs) { return new ConstructorExpression<T>(type, exprs); }
@Test public void constructor() { Expression<Long> longVal = ConstantImpl.create(1L); Expression<String> stringVal = ConstantImpl.create(""); ProjectionExample instance = new ConstructorExpression<ProjectionExample>(ProjectionExample.class, new Class<?>[]{long.class, String.class}, longVal, stringVal).newInstance(0L, ""); assertNotNull(instance); assertEquals((Long) 0L, instance.id); assertTrue(instance.text.isEmpty()); }
@SuppressWarnings("unchecked") @Test public void toString_() { SomeType alias = alias(SomeType.class, "alias"); // Path toString assertEquals("alias.name", $(alias.getName()).toString()); assertEquals("alias.ref.name", $(alias.getRef().getName()).toString()); assertEquals("alias.refs.get(0)", $(alias.getRefs().get(0)).toString()); // Operation toString assertEquals("lower(alias.name)", $(alias.getName()).lower().toString()); // ConstructorExpression ConstructorExpression<SomeType> someType = new ConstructorExpression<SomeType>(SomeType.class, new Class<?>[]{SomeType.class}, $(alias)); assertEquals("new SomeType(alias)", someType.toString()); // ArrayConstructorExpression ArrayConstructorExpression<SomeType> someTypeArray = new ArrayConstructorExpression<SomeType>(SomeType[].class,$(alias)); assertEquals("new SomeType[](alias)", someTypeArray.toString()); }
/** * Create a constructor invocation projection for given type, parameter types and expressions * * @param type type of the projection * @param paramTypes constructor parameter types * @param exprs constructor parameters * @param <T> type of projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, ImmutableList<Expression<?>> exprs) { return new ConstructorExpression<T>(type, paramTypes, exprs); }
/** * Create a constructor invocation projection for given type, parameter types and expressions * * @param type type of the projection * @param paramTypes constructor parameter types * @param exprs constructor parameters * @param <T> type of projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, Expression<?>... exprs) { return new ConstructorExpression<T>(type, paramTypes, exprs); }
/** * Create a constructor invocation projection for the given type and expressions * * <p>Example</p> * <pre> * UserDTO dto = query.singleResult( * Projections.constructor(UserDTO.class, user.firstName, user.lastName)); * </pre> * * @param <T> type projection * @param type type of the projection * @param exprs arguments for the projection * @return factory expression */ public static <T> ConstructorExpression<T> constructor(Class<? extends T> type, Expression<?>... exprs) { return new ConstructorExpression<T>(type, exprs); }