use of org.eclipse.persistence.jpa.jpql.tools.spi.IType in project eclipselink by eclipse-ee4j.
the class JavaType method isAssignableTo.
@Override
public boolean isAssignableTo(IType otherType) {
if (equals(otherType)) {
return true;
}
if (!isResolvable() || !otherType.isResolvable()) {
return false;
}
// Make sure both types are not primitives since isAssignableFrom() does not work.
// For instance long and Long can't be compared but they are valid for JPQL query
TypeHelper typeHelper = typeRepository.getTypeHelper();
IType thisType = typeHelper.convertPrimitive(this);
otherType = typeHelper.convertPrimitive(otherType);
Class<?> thisClass = ((JavaType) thisType).type;
Class<?> otherClass = ((JavaType) otherType).type;
return otherClass.isAssignableFrom(thisClass);
}
use of org.eclipse.persistence.jpa.jpql.tools.spi.IType in project eclipselink by eclipse-ee4j.
the class JavaTypeDeclaration method buildParameterTypes.
protected ITypeDeclaration[] buildParameterTypes() {
List<ITypeDeclaration> parameterTypes = new ArrayList<>();
// Example: Class<T>
if (genericType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) genericType;
for (Type type : parameterizedType.getActualTypeArguments()) {
ITypeDeclaration typeParameter = buildTypeDeclaration(type);
parameterTypes.add(typeParameter);
}
} else // T[]
if (genericType instanceof GenericArrayType) {
GenericArrayType genericArrayType = (GenericArrayType) genericType;
parameterTypes.add(buildTypeDeclaration(genericArrayType.getGenericComponentType()));
} else // Example: Class
if (genericType.getClass() == Class.class) {
ITypeDeclaration typeParameter = buildTypeDeclaration((Class<?>) genericType);
parameterTypes.add(typeParameter);
} else // Example: <K, V>
if (genericType.getClass() == Class[].class) {
for (Class<?> javaType : ((Class<?>[]) genericType)) {
ITypeDeclaration typeParameter = buildTypeDeclaration(javaType);
parameterTypes.add(typeParameter);
}
} else // Example: <K, V>
if (genericType.getClass() == IType[].class) {
for (IType type : ((IType[]) genericType)) {
ITypeDeclaration typeParameter = new JavaTypeDeclaration(typeRepository, type, null, false);
parameterTypes.add(typeParameter);
}
}
return parameterTypes.toArray(new ITypeDeclaration[parameterTypes.size()]);
}
use of org.eclipse.persistence.jpa.jpql.tools.spi.IType in project eclipselink by eclipse-ee4j.
the class DefaultJPQLQueryHelperTest2_1 method test_ResultType_Treat_1.
@Test
public void test_ResultType_Treat_1() throws Exception {
// SELECT TREAT(TREAT(p.project LargeProject).parent AS LargeProject).endDate
// FROM Product p
IQuery namedQuery = namedQuery("Product", "product.treat");
AbstractJPQLQueryHelper helper = buildQueryHelper(namedQuery);
IType type = helper.getResultType();
assertNotNull("The type of TREAT(TREAT(p.project LargeProject).parent AS LargeProject).endDate should have been found", type);
assertEquals("The wrong type for TREAT(TREAT(p.project LargeProject).parent AS LargeProject).endDate was retrieved", getType(namedQuery, Date.class), type);
}
use of org.eclipse.persistence.jpa.jpql.tools.spi.IType in project eclipselink by eclipse-ee4j.
the class EclipseLinkJPQLQueryHelperTest method test_ResultType_Func_4.
@Test
public void test_ResultType_Func_4() throws Exception {
// SELECT FUNC('age', e.empId, ?name) FROM Employee e
IQuery namedQuery = namedQuery("Employee", "employee.func4");
AbstractJPQLQueryHelper helper = buildQueryHelper(namedQuery);
IType type = helper.getResultType();
assertNotNull("The type of FUNC('age', e.empId, ?name) should have been found", type);
assertEquals("The wrong type for FUNC('age', e.empId, ?name) was retrieved", getType(namedQuery, Object.class), type);
}
use of org.eclipse.persistence.jpa.jpql.tools.spi.IType in project eclipselink by eclipse-ee4j.
the class EclipseLinkJPQLQueryHelperTest2_4 method test_ResultType_FromSubquery_2.
@Test
public void test_ResultType_FromSubquery_2() throws Exception {
// Select e3.count from Employee e, (Select count(e2) as count, e2.department from Employee e2 group by e2.department) e3 where e.department = e3.department
IQuery namedQuery = namedQuery("Employee", "employee.fromSubquery3");
AbstractJPQLQueryHelper helper = buildQueryHelper(namedQuery);
IType type = helper.getResultType();
assertNotNull("The result type should have been found", type);
assertEquals("The result type was not calculated correctly", getType(namedQuery, Long.class), type);
}
Aggregations