List of usage examples for org.springframework.core ResolvableType getRawClass
@Nullable
public Class<?> getRawClass()
From source file:com.fitbur.jestify.junit.spring.injector.IndexMockInjector.java
@Override public void inject() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Field field = fieldDescriptor.getField(); Mock mock = fieldDescriptor.getMock().get(); Integer index = mock.index(); Optional<ParameterDescriptor> optional = parameterDescriptors.values().parallelStream() .filter(p -> index.equals(p.getIndex())).findFirst(); ParameterDescriptor parameterDescriptor = optional.get(); Parameter parameter = parameterDescriptor.getParameter(); Type fieldType = field.getGenericType(); Type parameterType = parameter.getParameterizedType(); checkArgument(fieldType.equals(parameterType), "Can not mock field '%s'. Test class field type '%s' and class under test " + "constructor parameter type '%s' at '%d' index do not match.", field.getName(), field.getGenericType(), parameterType, index); ResolvableType resolver = ResolvableType.forType(parameterType); Class rawType;/*from w ww. j a v a 2 s.c om*/ if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = (Class) parameterType; } checkArgument(arguments[index] == null, "Can not mock field '%s'. Multipe test class fields have the same index of '%d'", field.getName(), index); Object instance = testReifier.reifyField(fieldDescriptor, parameterDescriptor); arguments[index] = instance; }
From source file:com.fitbur.jestify.junit.spring.injector.NameMockInjector.java
@Override public void inject() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Field field = fieldDescriptor.getField(); Type fieldType = field.getGenericType(); Mock mock = fieldDescriptor.getMock().get(); String mockName = mock.name(); DescriptorKey descriptorKey = new DescriptorKey(fieldType, mockName); ParameterDescriptor parameterDescriptor = parameterDescriptors.get(descriptorKey); checkArgument(parameterDescriptor != null, "Can not mock field '%s'. Could not find class under test constructor " + "argument with the name '%s'.", field.getName(), mockName);/*from w w w . ja v a 2s.c o m*/ Parameter parameter = parameterDescriptor.getParameter(); Integer index = parameterDescriptor.getIndex(); Type parameterType = parameter.getParameterizedType(); checkArgument(fieldType.equals(parameterType), "Can not mock field '%s'. Test class field type '%s' and class under test " + "constructor parameter type '%s' with name '%s' do not match.", field.getName(), field.getGenericType(), parameterType, mockName); ResolvableType resolver = ResolvableType.forType(parameterType); Class rawType; if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = (Class) parameterType; } checkArgument(arguments[index] == null, "Can not mock field '%s'. Multipe test class fields have the same index of '%d'", field.getName(), index); Object instance = testReifier.reifyField(fieldDescriptor, parameterDescriptor); arguments[index] = instance; }
From source file:com.fitbur.jestify.junit.spring.injector.TypeMockInjector.java
@Override public void inject() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Field field = fieldDescriptor.getField(); Mock mock = fieldDescriptor.getMock().get(); Type fieldType = field.getGenericType(); String fieldName = field.getName(); DescriptorKey descriptorKey = new DescriptorKey(fieldType, fieldName); //if there is a parameter descriptor that matches the field then lets use that if (parameterDescriptors.containsKey(descriptorKey)) { ParameterDescriptor descriptor = parameterDescriptors.get(descriptorKey); Parameter parameter = descriptor.getParameter(); Integer index = descriptor.getIndex(); ResolvableType resolver = ResolvableType.forType(fieldType); Class rawType;//from w w w .j av a 2s. c o m if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = (Class) fieldType; } Object instance = testReifier.reifyField(fieldDescriptor, descriptor); arguments[index] = instance; } else { //otherwise find the right parameter based on the type of the field Collection<ParameterDescriptor> descriptors = parameterDescriptors.values(); for (ParameterDescriptor descriptor : descriptors) { Parameter parameter = descriptor.getParameter(); Type parameterType = parameter.getParameterizedType(); Integer index = descriptor.getIndex(); ResolvableType resolver = ResolvableType.forType(parameterType); Class rawType; if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = resolver.resolve(); } if (arguments[index] != null) { continue; } if (parameterType.equals(fieldType)) { Object instance = testReifier.reifyField(fieldDescriptor, descriptor); arguments[index] = instance; break; } } } }
From source file:com.fitbur.jestify.junit.spring.IntegrationTestReifier.java
@Override public Object reifyCut(CutDescriptor cutDescriptor, Object[] arguments) { return AccessController.doPrivileged((PrivilegedAction<Object>) () -> { try {//from w ww .j a va 2s.com Cut cut = cutDescriptor.getCut(); Field field = cutDescriptor.getField(); Type fieldType = field.getGenericType(); String fieldName = field.getName(); field.setAccessible(true); Constructor<?> constructor = cutDescriptor.getConstructor(); constructor.setAccessible(true); ResolvableType resolver = ResolvableType.forType(fieldType); Class rawType; if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = resolver.resolve(); } Module module = testInstance.getClass().getDeclaredAnnotation(Module.class); GenericBeanDefinition bean = new GenericBeanDefinition(); bean.setBeanClass(rawType); bean.setAutowireCandidate(false); bean.setScope(SCOPE_PROTOTYPE); bean.setPrimary(true); bean.setLazyInit(true); bean.setRole(RootBeanDefinition.ROLE_APPLICATION); bean.setAutowireMode(RootBeanDefinition.AUTOWIRE_NO); appContext.registerBeanDefinition(fieldName, bean); if (module != null) { appContext.register(module.value()); } appContext.refresh(); Object instance = appContext.getBean(fieldName, arguments); if (cut.value()) { instance = spy(instance); } field.set(testInstance, instance); return instance; } catch (SecurityException | IllegalAccessException | IllegalArgumentException e) { throw new RuntimeException(e); } }); }
From source file:com.fitbur.jestify.junit.spring.IntegrationTestReifier.java
@Override public Object reifyField(FieldDescriptor fieldDescriptor, ParameterDescriptor parameterDescriptor) { return AccessController.doPrivileged((PrivilegedAction<Object>) () -> { try {/* w w w .j av a 2s .co m*/ Object instance; Field field = fieldDescriptor.getField(); Type fieldType = field.getGenericType(); field.setAccessible(true); Optional<Mock> optMock = fieldDescriptor.getMock(); if (optMock.isPresent()) { Mock mock = optMock.get(); Object value = field.get(testInstance); //if the field value is set then create a mock otherwise create a mock //that delegates to the value if (value == null) { MockSettings settings = withSettings().defaultAnswer(mock.answer()); if (mock.extraInterfaces().length > 0) { settings.extraInterfaces(mock.extraInterfaces()); } instance = mock(field.getType(), settings); } else { instance = mock(field.getType(), delegatesTo(value)); } } else { ResolvableType resolver = ResolvableType.forType(fieldType); Class rawType; if (resolver.hasGenerics()) { if (resolver.isAssignableFrom(Provider.class) || resolver.isAssignableFrom(Optional.class)) { rawType = resolver.getRawClass(); } else { rawType = resolver.resolve(); } } else { rawType = (Class) fieldType; } instance = appContext.getBean(rawType); } field.set(testInstance, instance); fieldDescriptor.setInstance(instance); parameterDescriptor.setInstance(instance); return instance; } catch (IllegalAccessException | IllegalArgumentException e) { throw new RuntimeException(e); } }); }
From source file:com.nestedbird.modules.formparser.FormParse.java
/** * Is value a period.//from w w w. ja v a2s . c o m * * @param type type of value * @return the boolean */ private Boolean isValuePeriod(final ResolvableType type) { return type.getRawClass().isAssignableFrom(Period.class); }
From source file:com.nestedbird.modules.formparser.FormParse.java
/** * Is value an enum/* w w w.ja va 2 s . c om*/ * * @param type type of the value * @return boolean */ private Boolean isValueEnum(final ResolvableType type) { return Enum.class.isAssignableFrom(type.getRawClass()); }
From source file:com.nestedbird.modules.formparser.FormParse.java
/** * Is value a database index//from www. j ava 2 s . c o m * * @param type the type of value * @return boolean */ private Boolean isValueDatabaseIndex(final ResolvableType type) { return type.getRawClass().getAnnotation(SchemaRepository.class) != null; }
From source file:com.nestedbird.modules.formparser.FormParse.java
/** * Is value a JODA DateTime/*from www . ja v a 2s . c om*/ * * @param value the value * @param type the type of the value * @return boolean */ private Boolean isValueDateTime(final Object value, final ResolvableType type) { return (type.getRawClass().isAssignableFrom(DateTime.class)) && (value.toString().length() > 0); }
From source file:com.nestedbird.modules.formparser.FormParse.java
/** * Is value a comma separated value of database indexes * * @param type the type of the value//w w w .j ava 2 s . c o m * @return boolean */ private Boolean isValueCSVDatabaseIndexes(final ResolvableType type) { return java.util.Collection.class.isAssignableFrom(type.getRawClass()) && (type.getGeneric(0) != null) && (type.getGeneric(0).getRawClass().getAnnotation(SchemaRepository.class) != null); }