Java 类org.reflections.ReflectionUtils 实例源码
项目:soundwave
文件:EsPropertyNamingStrategy.java
public EsPropertyNamingStrategy(Class type, Class<? extends EsStore> store) {
this.effectiveType = type;
for (Field field : ReflectionUtils.getAllFields(type)) {
JsonProperty jsonProperty = field.getAnnotation(JsonProperty.class);
EsStoreMappingProperty
storeSpecificProperty =
field.getAnnotation(EsStoreMappingProperty.class);
if ((jsonProperty == null && storeSpecificProperty == null)
|| (storeSpecificProperty != null && storeSpecificProperty.ignore())) {
continue;
}
if (storeSpecificProperty == null || storeSpecificProperty.store() != store) {
fieldToJsonMapping.put(jsonProperty.value(), jsonProperty.value());
} else if (storeSpecificProperty.value().indexOf('.') < 0) {
fieldToJsonMapping.put(jsonProperty.value(), storeSpecificProperty.value());
}
}
}
项目:xtf
文件:XTFTestSuiteHelper.java
private static<T> List<T> getDeclaredFilters(Class<?> suiteClass, Class<T> returnType) {
final Set<Method> methods = ReflectionUtils.getAllMethods(suiteClass,
withAnnotation(TestFilterMethod.class),
withModifier(Modifier.STATIC),
withParametersCount(0),
withReturnTypeAssignableTo(returnType));
return methods.stream().flatMap(m -> {
try {
final T filter = (T) m.invoke(null);
if (filter != null) {
return Stream.of(filter);
}
} catch (final Exception ex) {
log.warn("Unable to construct test filter ", ex);
}
return Stream.of();
}).collect(Collectors.toList());
}
项目:lambda-local
文件:LambdaLocalServletTest.java
@Test
public void invokeLambdaFunction_testFunction2_method1() throws Exception {
MockHttpServletRequest req = new MockHttpServletRequest();
req.setContent("tempo".getBytes());
MockHttpServletResponse resp = new MockHttpServletResponse();
lambdaLocalServlet.invokeLambdaFunction(req,
resp,
new LambdaFunction("/testPath2",
TestFunction2.class,
ReflectionUtils.getMethods(TestFunction2.class,
method -> method.getName().equals("method1")).stream()
.findFirst()
.get(),
new StringDeserializer(),
new StringSerializer()));
assertThat(resp.getContentAsString()).isEqualTo("hello tempo");
}
项目:lambda-local
文件:LambdaLocalServletTest.java
@Test
public void invokeLambdaFunction_testFunction2_method2() throws Exception {
MockHttpServletRequest req = new MockHttpServletRequest();
req.setContent("tempo".getBytes());
MockHttpServletResponse resp = new MockHttpServletResponse();
lambdaLocalServlet.invokeLambdaFunction(req,
resp,
new LambdaFunction("/testPath3",
TestFunction2.class,
ReflectionUtils.getMethods(TestFunction2.class,
method -> method.getName().equals("method2")).stream()
.findFirst()
.get(),
new StringDeserializer(),
new StringSerializer()));
assertThat(resp.getContentAsString()).isEqualTo("hi tempo");
}
项目:metasfresh-webui-api
文件:ViewColumnHelper.java
private static ClassViewDescriptor createClassViewDescriptor(final Class<?> dataType)
{
@SuppressWarnings("unchecked")
final Set<Field> fields = ReflectionUtils.getAllFields(dataType, ReflectionUtils.withAnnotations(ViewColumn.class));
final ImmutableList<ClassViewColumnDescriptor> columns = fields.stream()
.map(field -> createClassViewColumnDescriptor(field))
.collect(ImmutableList.toImmutableList());
if (columns.isEmpty())
{
return ClassViewDescriptor.EMPTY;
}
return ClassViewDescriptor.builder()
// .className(dataType.getName())
.columns(columns)
.build();
}
项目:metasfresh-webui-api
文件:WebuiProcessClassInfo.java
private static WebuiProcessClassInfo createWebuiProcessClassInfo(final Class<?> processClass) throws Exception
{
final ProcessClassInfo processClassInfo = ProcessClassInfo.of(processClass);
final WebuiProcess webuiProcessAnn = processClass.getAnnotation(WebuiProcess.class);
@SuppressWarnings("unchecked")
final Set<Method> lookupValuesProviderMethods = ReflectionUtils.getAllMethods(processClass, ReflectionUtils.withAnnotation(ProcessParamLookupValuesProvider.class));
final ImmutableMap<String, LookupDescriptorProvider> paramLookupValuesProviders = lookupValuesProviderMethods.stream()
.map(method -> createParamLookupValuesProvider(method))
.collect(GuavaCollectors.toImmutableMap());
//
// Check is there were no settings at all so we could return our NULL instance
if (ProcessClassInfo.isNull(processClassInfo)
&& paramLookupValuesProviders.isEmpty())
{
return NULL;
}
return new WebuiProcessClassInfo(processClassInfo, webuiProcessAnn, paramLookupValuesProviders);
}
项目:metasfresh-webui-api
文件:ViewActionDescriptorsFactory.java
private static final ViewActionDescriptorsList createFromClass(@NonNull final Class<?> clazz)
{
final ActionIdGenerator actionIdGenerator = new ActionIdGenerator();
@SuppressWarnings("unchecked")
final Set<Method> viewActionMethods = ReflectionUtils.getAllMethods(clazz, ReflectionUtils.withAnnotation(ViewAction.class));
final List<ViewActionDescriptor> viewActions = viewActionMethods.stream()
.map(viewActionMethod -> {
try
{
return createViewActionDescriptor(actionIdGenerator.getActionId(viewActionMethod), viewActionMethod);
}
catch (final Throwable ex)
{
logger.warn("Failed creating view action descriptor for {}. Ignored", viewActionMethod, ex);
return null;
}
})
.filter(actionDescriptor -> actionDescriptor != null)
.collect(Collectors.toList());
return ViewActionDescriptorsList.of(viewActions);
}
项目:graylog-plugin-pipeline-processor
文件:Rule.java
/**
* Creates a copy of this Rule with a new instance of the generated rule class if present.
*
* This prevents sharing instances across threads, which is not supported for performance reasons.
* Otherwise the generated code would need to be thread safe, adding to the runtime overhead.
* Instead we buy speed by spending more memory.
*
* @param functionRegistry the registered functions of the system
* @return a copy of this rule with a new instance of its generated code
*/
public Rule invokableCopy(FunctionRegistry functionRegistry) {
final Builder builder = toBuilder();
final Class<? extends GeneratedRule> ruleClass = generatedRuleClass();
if (ruleClass != null) {
try {
//noinspection unchecked
final Set<Constructor> constructors = ReflectionUtils.getConstructors(ruleClass);
final Constructor onlyElement = Iterables.getOnlyElement(constructors);
final GeneratedRule instance = (GeneratedRule) onlyElement.newInstance(functionRegistry);
builder.generatedRule(instance);
} catch (IllegalAccessException | InstantiationException | InvocationTargetException e) {
LOG.warn("Unable to generate code for rule {}: {}", id(), e);
}
}
return builder.build();
}
项目:es4j
文件:PackageScanner.java
Set<Class<? extends T>> scan(Class<? extends T> aClass) {
Configuration configuration = ConfigurationBuilder.build((Object[]) packages).addClassLoaders(classLoaders)
.addScanners(new AssignableScanner(aClass));
Reflections reflections = new Reflections(configuration);
Predicate<Class<? extends T>> classPredicate = klass ->
Modifier.isPublic(klass.getModifiers()) &&
(!klass.isMemberClass() || (klass.isMemberClass() && Modifier
.isStatic(klass.getModifiers()))) &&
!Modifier.isInterface(klass.getModifiers()) &&
!Modifier.isAbstract(klass.getModifiers());
HashSet<Class<? extends T>> subtypes = Sets.newHashSet(
ReflectionUtils.forNames(
reflections.getStore()
.getAll(AssignableScanner.class.getSimpleName(),
Collections.singletonList(aClass.getName())), classLoaders));
return subtypes.stream().filter(classPredicate).collect(Collectors.toSet());
}
项目:rest-hateoas-client
文件:OngoingResponseImpl.java
@SneakyThrows
private WebTarget resolveQueryParams(WebTarget target, SchemaLink link, String method) {
UriTemplate uriTemplate = link.getHref();
if (method.equalsIgnoreCase("get") && requestObject != null) {
List<String> vars = uriTemplate.getTemplateVariables();
Set<Field> matchingFields = ReflectionUtils.getAllFields(requestObject.getClass(),
f -> !vars.contains(f.getName()));
for (Field field : matchingFields) {
field.setAccessible(true);
if (field.get(requestObject) != null) {
if (Collection.class.isAssignableFrom(field.getType())) {
Collection<?> value = (Collection<?>) field.get(requestObject);
String[] values = value.stream().map(Object::toString).collect(Collectors.toList())
.toArray(new String[0]);
target = target.queryParam(field.getName(), values);
} else {
target = target.queryParam(field.getName(), field.get(requestObject).toString());
}
}
}
}
return target;
}
项目:spring-graphql-common
文件:GraphQLSchemaDfsTraversal.java
public GraphQLFieldDefinition getFieldDefinition(DfsContext dfsContext, Class<?> implClass, Field field) {
GraphQLFieldDefinition graphQLFieldDefinition = null;
ResolvableTypeAccessor resolvableTypeAccessor =
ResolvableTypeAccessor.forField(field, implClass);
if (resolvableTypeAccessor.isNotIgnorable()) {
GraphQLOutputType graphQLOutputType = (GraphQLOutputType) createGraphQLFieldType(dfsContext, resolvableTypeAccessor, true);
GraphQLFieldDefinition.Builder graphQLFieldDefinitionBuilder = GraphQLFieldDefinition.newFieldDefinition()
.name(resolvableTypeAccessor.getName())
.type(graphQLOutputType)
.deprecate(resolvableTypeAccessor.getGraphQLDeprecationReason())
.description(resolvableTypeAccessor.getDescription());
boolean isConstant = Modifier.isFinal(field.getModifiers()) && Modifier.isStatic(field.getModifiers());
if (isConstant) {
graphQLFieldDefinitionBuilder.staticValue(org.springframework.util.ReflectionUtils.getField(field, null));
}
graphQLFieldDefinition = graphQLFieldDefinitionBuilder.build();
addToFieldDefinitionResolverMap(dfsContext, graphQLFieldDefinition, resolvableTypeAccessor.getGraphQLComplexitySpelExpression());
}
return graphQLFieldDefinition;
}
项目:spring-graphql-common
文件:GraphQLSchemaDfsTraversal.java
public Object invokeMethodByName(DfsContext dfsContext, Class<?> implClass, String methodName, Object... args) {
Object defaultValue = null;
if (StringUtils.hasText(methodName)) {
Object object = null;
if (getGraphQLSchemaBeanFactory().containsBean(implClass))
object = getGraphQLSchemaBeanFactory().getBeanByType(implClass);
Method defaultValueProviderMethod = args == null ?
org.springframework.util.ReflectionUtils.findMethod(implClass, methodName) :
org.springframework.util.ReflectionUtils.findMethod(implClass, methodName, getArgumentClasses(args));
if (defaultValueProviderMethod != null) {
defaultValue = org.springframework.util.ReflectionUtils.invokeMethod(defaultValueProviderMethod, object, args);
}
}
return defaultValue;
}
项目:java-flagz
文件:FlagFieldScanner.java
@SuppressWarnings("unchecked")
@Override
public Set<FlagField<?>> scanAndBind() {
Set<FlagField<?>> fields = new HashSet<>();
for (Object obj : objectsToScan) {
ReflectionUtils.getAllFields(
obj.getClass(),
ReflectionUtils.withTypeAssignableTo(Flag.class),
ReflectionUtils.withAnnotation(FlagInfo.class),
ReflectionUtils.withModifier(Modifier.FINAL),
not(ReflectionUtils.withModifier(Modifier.STATIC)))
.stream()
.map(f -> boundFlagField(f, obj))
.forEach(fields::add);
}
return fields;
}
项目:gravitee-gateway
文件:ResourceFactory.java
private Constructor<? extends Resource> lookingForConstructor(Class<? extends Resource> resourceClass) {
LOGGER.debug("Looking for a constructor to inject resource configuration");
Constructor <? extends Resource> constructor = null;
Set<Constructor> resourceConstructors =
ReflectionUtils.getConstructors(resourceClass,
withModifier(Modifier.PUBLIC),
withParametersAssignableFrom(ResourceConfiguration.class),
withParametersCount(1));
if (resourceConstructors.isEmpty()) {
LOGGER.debug("No configuration can be injected for {} because there is no valid constructor. " +
"Using default empty constructor.", resourceClass.getName());
try {
constructor = resourceClass.getConstructor();
} catch (NoSuchMethodException nsme) {
LOGGER.error("Unable to find default empty constructor for {}", resourceClass.getName(), nsme);
}
} else if (resourceConstructors.size() == 1) {
constructor = resourceConstructors.iterator().next();
} else {
LOGGER.info("Too much constructors to instantiate resource {}", resourceClass.getName());
}
return constructor;
}
项目:metasfresh
文件:ModelClassInfo.java
@SuppressWarnings("unchecked")
private final Set<String> findDefinedColumnNames()
{
//
// Collect all columnnames
final ImmutableSet.Builder<String> columnNamesBuilder = ImmutableSet.builder();
ReflectionUtils.getAllFields(modelClass, new Predicate<Field>()
{
@Override
public boolean apply(final Field field)
{
final String fieldName = field.getName();
if (fieldName.startsWith("COLUMNNAME_"))
{
final String columnName = fieldName.substring("COLUMNNAME_".length());
columnNamesBuilder.add(columnName);
}
return false;
}
});
return columnNamesBuilder.build();
}
项目:metasfresh
文件:JavaAssistInterceptorInstance.java
public JavaAssistInterceptorInstance(final Class<? extends Annotation> annotationClass, final Object interceptorImpl)
{
super();
Check.assumeNotNull(annotationClass, "annotationClass not null");
this.annotationClass = annotationClass;
Check.assumeNotNull(interceptorImpl, "interceptorImpl not null");
this.interceptorImpl = interceptorImpl;
final Class<? extends Object> interceptorImplClass = interceptorImpl.getClass();
@SuppressWarnings("unchecked")
final Set<Method> aroundInvokeMethods = ReflectionUtils.getAllMethods(interceptorImplClass, ReflectionUtils.withAnnotation(AroundInvoke.class));
Check.errorIf(aroundInvokeMethods.size() != 1, "Class {} needs to have exactly one method annotated with @AroundInvoke. It has:{}", interceptorImpl, aroundInvokeMethods);
this.aroundInvokeMethod = aroundInvokeMethods.iterator().next();
Check.assumeNotNull(aroundInvokeMethod, "aroundInvokeMethod not null for {}", interceptorImplClass);
}
项目:dawg
文件:PluginController.java
/**
* Gets the config and display map. Display map is a mapping from field name to how the field
* should be displayed in the UI
* @param remoteType The remote type that identifies what plugin to get
* @return
* @throws IOException
*/
@SuppressWarnings({ "unchecked" })
@RequestMapping(method = { RequestMethod.GET }, value = "/plugins/remote/cdm/{remoteType}")
@ResponseBody
public Map<String, Object> getPluginConfigAndDisplayMap(@PathVariable String remoteType) throws IOException {
PluginConfiguration config = getRemotePlugin(remoteType);
if (config == null) return null;
Map<String, String> displayMap = new HashMap<String, String>();
Set<Field> fields = ReflectionUtils.getFields(config.getClass(), ReflectionUtils.withAnnotation(PluginConfigValue.class));
for (Field field : fields) {
String disp = field.getAnnotation(PluginConfigValue.class).display();
if (StringUtils.isEmpty(disp)) {
disp = field.getName();
}
displayMap.put(field.getName(), disp);
}
Map<String, Object> configAndDM = new HashMap<>();
configAndDM.put("config", config);
configAndDM.put("displayMap", displayMap);
return configAndDM;
}
项目:archie
文件:ModelInfoLookup.java
private Method getAddMethod(Class clazz, TypeToken typeToken, Field field, String javaFieldNameUpperCased, Method getMethod) {
Method addMethod = null;
if (Collection.class.isAssignableFrom(getMethod.getReturnType())) {
Type[] typeArguments = ((ParameterizedType) getMethod.getGenericReturnType()).getActualTypeArguments();
if (typeArguments.length == 1) {
TypeToken singularParameter = typeToken.resolveType(typeArguments[0]);
//TODO: does this work or should we use the typeArguments[0].getSomething?
String addMethodName = "add" + toSingular(javaFieldNameUpperCased);
addMethod = getMethod(clazz, addMethodName, singularParameter.getRawType());
if (addMethod == null) {
//Due to generics, this does not always work
Set<Method> allAddMethods = ReflectionUtils.getAllMethods(clazz, ReflectionUtils.withName(addMethodName));
if (allAddMethods.size() == 1) {
addMethod = allAddMethods.iterator().next();
} else {
logger.warn("strange number of add methods for field {} on class {}", field.getName(), clazz.getSimpleName());
}
}
}
}
return addMethod;
}
项目:casual-eventsourcing
文件:Aggregate.java
public String getEventStreamId() {
Set<Field> fields =
ReflectionUtils.getFields(getClass(),
ReflectionUtils.withAnnotation(EventStreamId.class));
if (fields.size() != 1) {
throw new RuntimeException(
String.format("No aggregate id field found in class %s", getClass()));
}
Field first = fields.iterator().next();
first.setAccessible(true);
try {
return (String) first.get(this);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
项目:casual-eventsourcing
文件:AggregateRepository.java
private void setEventStreamId(T aggregate, String id) {
Set<Field> fields =
ReflectionUtils.getFields(getAggregateClass(),
ReflectionUtils.withAnnotation(EventStreamId.class));
if (fields.size() != 1) {
throw new RuntimeException(
String.format("No aggregate id field found in class %s", getAggregateClass()));
}
Field first = fields.iterator().next();
try {
first.setAccessible(true);
first.set(aggregate, id);
} catch (IllegalAccessException e) {
throw new RuntimeException(
String.format("Could not set aggregate id on class %s", getAggregateClass()));
}
}
项目:casual-eventsourcing
文件:AggregateRepository.java
@SuppressWarnings("unchecked")
private T createAndReplayAggregate(String eventStreamId, EventStream stream) {
Set<Constructor> result =
ReflectionUtils.getConstructors(getAggregateClass(), ReflectionUtils.withParameters());
if (result.size() != 1) {
throw new DomainEventHandlerException("Only one no-arg constructor allowed for aggregates.");
}
try {
Constructor first = result.iterator().next();
first.setAccessible(true);
T object = (T) first.newInstance();
object.replay(stream);
setEventStreamId(object, eventStreamId);
return object;
} catch (Exception e) {
throw new DomainEventHandlerException(e);
}
}
项目:casual-eventsourcing
文件:EventUpgradeService.java
private Method getUpgradeMethod(DomainEvent event) {
Class<?> providerClass = eventTypeToProvider.get(event.getClass()).getClass();
Set<Method> methods =
ReflectionUtils.getMethods(providerClass,
ReflectionUtils.withAnnotation(EventUpgrader.class),
ReflectionUtils.withParametersCount(1),
ReflectionUtils.withParameters(event.getClass()));
if (methods.size() != 1) {
throw new RuntimeException(
String.format("Duplicate upgrade methods for event type %s in class %s.",
event.getClass(), providerClass));
}
return methods.stream().findFirst().get();
}
项目:casual-eventsourcing
文件:EventUpgradeService.java
Set<Class<DomainEvent>> supportedDomainEvents(Class<?> upgradeProvider) {
Set<Method> methods =
ReflectionUtils.getMethods(upgradeProvider,
ReflectionUtils.withAnnotation(EventUpgrader.class));
if (methods.isEmpty()) {
throw new RuntimeException(
String.format("No event eventTypeToProvider found in class %s", upgradeProvider));
}
Set<Class<DomainEvent>> result = new HashSet<>();
for (Method method : methods) {
if (method.getParameterCount() != 1) {
throw new RuntimeException(
String.format("Parameter count for upgrade method %s must be exactly one.", method));
}
result.add((Class<DomainEvent>) method.getParameters()[0].getType());
}
return result;
}
项目:swampmachine
文件:ImmutableRegistryPreparer.java
/**
* Extracts all beans with annotation {@link ImmutableRegistry} from Spring
* context and converts all fields with the type {@link Map} to
* {@link ImmutableMap}.
*
* @param context
*/
@SuppressWarnings("unchecked")
public static void invoke(ApplicationContext context) {
Collection<Object> registries = context.getBeansWithAnnotation(ImmutableRegistry.class).values();
for (Object registry : registries) {
Set<Field> mapFields = ReflectionUtils.getAllFields(registry.getClass(),
new AssignableFromPredicate(Map.class));
for (Field mapField : mapFields) {
try {
mapField.setAccessible(true);
Map<?, ?> sourceMap = (Map<?, ?>) mapField.get(registry);
if (sourceMap != null && !(sourceMap instanceof ImmutableMap)) {
mapField.set(registry, ImmutableMap.copyOf(sourceMap));
log.info("Convert to immutable map: " + registry + " -> " + mapField);
}
mapField.setAccessible(false);
} catch (IllegalArgumentException | IllegalAccessException e) {
throw new IllegalStateException(e);
}
}
}
}
项目:CRISIS
文件:Page_Parameters.java
private Set<Class<?>> getSubtypes(final Class<?> type) throws ComboBoxIsTooFullException {
final ClassLoader[] classloaders = new ClassLoader[] { currentModelHandler.getCustomClassLoader(),
currentModelHandler.getCustomClassLoader().getParent() };
final ConfigurationBuilder builder = new ConfigurationBuilder().
addUrls(ClasspathHelper.forClassLoader(currentModelHandler.getCustomClassLoader())).
addClassLoaders(classloaders).
setScanners(new SubTypesScanner(false));
final Reflections ref = new Reflections(builder);
final Set<Class<?>> result = new HashSet<Class<?>>();
final Set<String> subTypesStr = ref.getStore().getSubTypesOf(type.getName());
if (subTypesStr.size() > MAX_SIZE_OF_SUBPARAMETER_COMBOBOX)
throw new ComboBoxIsTooFullException();
for (final String clsName : subTypesStr) {
try {
result.add(ReflectionUtils.forName(clsName,classloaders));
} catch (final ReflectionsException e) {
// intentionally blank
}
}
return result;
}
项目:gecco
文件:JsonFieldRender.java
@Override
@SuppressWarnings({ "unchecked" })
public void render(HttpRequest request, HttpResponse response, BeanMap beanMap, SpiderBean bean) {
Map<String, Object> fieldMap = new HashMap<String, Object>();
Set<Field> jsonPathFields = ReflectionUtils.getAllFields(bean.getClass(), ReflectionUtils.withAnnotation(JSONPath.class));
String jsonStr = response.getContent();
jsonStr = jsonp2Json(jsonStr);
if (jsonStr == null) {
return;
}
try {
Object json = JSON.parse(jsonStr);
for (Field field : jsonPathFields) {
Object value = injectJsonField(request, field, json);
if(value != null) {
fieldMap.put(field.getName(), value);
}
}
} catch(JSONException ex) {
//throw new RenderException(ex.getMessage(), bean.getClass());
RenderException.log("json parse error : " + request.getUrl(), bean.getClass(), ex);
}
beanMap.putAll(fieldMap);
}
项目:valdr-bean-validation
文件:ConstraintParser.java
private Iterable<? extends Class<? extends Annotation>> getConfiguredCustomAnnotations() {
return Iterables.transform(options.getCustomAnnotationClasses(), new Function<String,
Class<? extends Annotation>>() {
@Override
@SuppressWarnings("unchecked")
public Class<? extends Annotation> apply(String className) {
Class<?> validatorClass = ReflectionUtils.forName(className);
if (validatorClass.isAnnotation()) {
return (Class<? extends Annotation>) validatorClass;
} else {
logger.warn("The configured custom annotation class '{}' is not an annotation. It will be ignored.",
validatorClass);
return null;
}
}
});
}
项目:chassis
文件:AppMetadata.java
@SuppressWarnings({ "rawtypes", "unchecked" })
private Method findLifecycleMethod(final Class lifecycleAnnotationClass) {
Set<Method> methods = ReflectionUtils.getMethods(declaringClass, new Predicate<Method>() {
@Override
public boolean apply(Method input) {
return input != null && input.getAnnotation(lifecycleAnnotationClass) != null;
}
});
if (methods.isEmpty()) {
return null;
}
if (methods.size() > 1) {
throw new BootstrapException("Found multiple " + lifecycleAnnotationClass.getSimpleName() + " methods in class " + declaringClass.getSimpleName() + ". Only 1 is allowed.");
}
return methods.iterator().next();
}
项目:xcelite
文件:ColumnsExtractor.java
@SuppressWarnings("unchecked")
private void extractAnyColumn() {
Set<Field> anyColumnFields = ReflectionUtils.getAllFields(type, withAnnotation(AnyColumn.class));
if (anyColumnFields.size() > 0) {
if (anyColumnFields.size() > 1) {
throw new XceliteException("Multiple AnyColumn fields are not allowed");
}
Field anyColumnField = anyColumnFields.iterator().next();
if (!anyColumnField.getType().isAssignableFrom(Map.class)) {
throw new XceliteException(
String.format("AnyColumn field \"%s\" should be of type Map.class or assignable from Map.class",
anyColumnField.getName()));
}
anyColumn = new Col(anyColumnField.getName(), anyColumnField.getName());
anyColumn.setAnyColumn(true);
AnyColumn annotation = anyColumnField.getAnnotation(AnyColumn.class);
anyColumn.setType(annotation.as());
if (annotation.converter() != NoConverterClass.class) {
anyColumn.setConverter(annotation.converter());
}
}
}
项目:pluggable
文件:InstallationPage.java
private void initializeInterceptor() {
AbstractWebApplication application = (AbstractWebApplication) getApplication();
for (Field field : ReflectionUtils.getAllFields(this.getClass())) {
if (field.getAnnotation(Setting.class) != null) {
Setting setting = field.getAnnotation(Setting.class);
if (field.getType() != FileUpload.class
&& field.getType() != FileUpload[].class) {
try {
FieldUtils.writeField(
field,
this,
application.select(setting.name(),
field.getType()), true);
} catch (IllegalAccessException e) {
}
}
}
}
org.apache.wicket.markup.html.form.TextField<String> repository = (org.apache.wicket.markup.html.form.TextField<String>) getFormComponent("repository");
getForm().add(new LocalRepositoryValidator(repository));
}
项目:pluggable
文件:ApplicationSettingPage.java
private void initializeInterceptor() {
AbstractWebApplication application = (AbstractWebApplication) getApplication();
for (Field field : ReflectionUtils.getAllFields(this.getClass())) {
if (field.getAnnotation(Setting.class) != null) {
Setting setting = field.getAnnotation(Setting.class);
if (field.getType() != FileUpload.class
&& field.getType() != FileUpload[].class) {
try {
FieldUtils.writeField(
field,
this,
application.select(setting.name(),
field.getType()), true);
} catch (IllegalAccessException e) {
}
}
}
}
org.apache.wicket.markup.html.form.TextField<String> local = (org.apache.wicket.markup.html.form.TextField<String>) getFormComponent("repository");
getForm().add(new LocalRepositoryValidator(local));
}
项目:pluggable
文件:GenericEntityMapper.java
@SuppressWarnings("unchecked")
public GenericEntityMapper(Class<T> clazz) {
this.clazz = clazz;
if (org.springframework.core.annotation.AnnotationUtils.findAnnotation(
this.clazz, Entity.class) == null) {
throw new DatabaseException(clazz.getSimpleName()
+ " is not entity");
}
for (Field field : ReflectionUtils.getAllFields(this.clazz)) {
Column column = field.getAnnotation(Column.class);
if (column != null) {
fields.put(column.name(), field.getName());
types.put(field.getName(), field);
}
}
}
项目:udidb
文件:HelpMessageProvider.java
private String createLongMessage(String name, String shortMessage, Class<? extends Operation> opClass)
{
List<Pair<Field, Operand>> operands =
ReflectionUtils.getAllFields(opClass, ReflectionUtils.withAnnotation(Operand.class))
.stream()
.map(f -> Pair.of(f, f.getAnnotation(Operand.class)))
.filter(p -> p.getRight() != null)
.sorted((p1, p2) -> Integer.compare(p1.getRight().order(), p2.getRight().order()))
.collect(Collectors.toList());
String header = name + " " + operands.stream()
.map(p -> getOperandIdentifier(p.getLeft(), p.getRight()))
.collect(Collectors.joining(" "));
String operandDescriptions = operands.stream()
.map(p -> String.format("%15s -- %s",
p.getLeft().getName(),
getOperandDescription(p.getLeft())))
.collect(Collectors.joining("\n"));
return header + "\n\n" + shortMessage + "\n\n" + operandDescriptions;
}
项目:reflections
文件:JavaCodeSerializer.java
public static Method resolveMethod(final Class aMethod) {
String methodOgnl = aMethod.getSimpleName();
try {
String methodName;
Class<?>[] paramTypes;
if (methodOgnl.contains(tokenSeparator)) {
methodName = methodOgnl.substring(0, methodOgnl.indexOf(tokenSeparator));
String[] params = methodOgnl.substring(methodOgnl.indexOf(tokenSeparator) + 1).split(doubleSeparator);
paramTypes = new Class<?>[params.length];
for (int i = 0; i < params.length; i++) {
String typeName = params[i].replace(arrayDescriptor, "[]").replace(pathSeparator, dotSeparator);
paramTypes[i] = ReflectionUtils.forName(typeName);
}
} else {
methodName = methodOgnl;
paramTypes = null;
}
Class<?> declaringClass = aMethod.getDeclaringClass().getDeclaringClass();
return resolveClassOf(declaringClass).getDeclaredMethod(methodName, paramTypes);
} catch (Exception e) {
throw new ReflectionsException("could not resolve to method " + aMethod.getName(), e);
}
}
项目:iiif-apis
文件:ModelUtilities.java
/**
* Obtain the "completeness" (i.e. "empty", "id and type", "it, type and label", "id only" or "complex") of
* a IIIF resource. Can be useful for determining how to serialize the resource, e.g. often resources with only
* an id are serialized as a string.
*
* @param res The IIIF resource to check the completeness of
* @param type The type of the IIIF resource
* @return The completeness
*/
public static Completeness getCompleteness(Object res, Class<?> type) {
Set<Method> getters = ReflectionUtils.getAllMethods(
type,
ReflectionUtils.withModifier(Modifier.PUBLIC),
ReflectionUtils.withPrefix("get"));
Set<String> gettersWithValues = getters.stream()
.filter(g -> g.getAnnotation(JsonIgnore.class) == null) // Only JSON-serializable fields
.filter(g -> returnsValue(g, res))
.map(Method::getName)
.collect(Collectors.toSet());
boolean hasOnlyTypeAndId = (
gettersWithValues.size() == 2 &&
Stream.of("getType", "getIdentifier").allMatch(gettersWithValues::contains));
if (gettersWithValues.isEmpty()) {
return Completeness.EMPTY;
} else if (containsOnly(gettersWithValues, "getType", "getIdentifier")) {
return Completeness.ID_AND_TYPE;
} else if (containsOnly(gettersWithValues, "getType", "getIdentifier", "getLabels")) {
return Completeness.ID_AND_TYPE_AND_LABEL;
} else if (containsOnly(gettersWithValues, "getIdentifier")) {
return Completeness.ID_ONLY;
} else {
return Completeness.COMPLEX;
}
}
项目:tasfe-framework
文件:JPAUtil.java
/**
* 获取实体中所有简单的数据库映射字段
*/
public static List<String> getSimpleORMFieldInEntity(Class entityClass){
if(entityClass==null){
return null ;
}
//获取所有声明的字段
Set<Field> fields = ReflectionUtils.getAllFields(entityClass) ;
List<String> simpleFields = new ArrayList<String>() ;
for (Field field : fields) {
if(isSimpleORMField(field)){
simpleFields.add(field.getName()) ;
}
}
return simpleFields ;
}
项目:soundwave
文件:ObjectAdapter.java
public static Map<String, Field> getAllFields(Class classType) {
if (!classAllFieldsCache.containsKey(classType)) {
Set<Field> objectFieldsSet = ReflectionUtils.getAllFields(classType);
Map<String, Field> objectFieldsMap = new HashMap<>();
for (Field f : objectFieldsSet) {
objectFieldsMap.put(f.getName(), f);
}
classAllFieldsCache.put(classType, objectFieldsMap);
}
return classAllFieldsCache.get(classType);
}
项目:factcast
文件:ValidatorConstraintResolver.java
private Class<?> getFollowUpClass(PropertyDescriptor propertyDescriptor, Class<?> clazzBefore) {
Class<?> clazz = propertyDescriptor.getElementClass();
if (Collection.class.isAssignableFrom(clazz)) {
final Predicate<? super Field> predicate = f -> f.getName().equals(propertyDescriptor
.getPropertyName());
@SuppressWarnings("unchecked")
Set<Field> field = ReflectionUtils.getAllFields(clazzBefore, predicate);
Type typeArgument = ((ParameterizedType) field.iterator().next().getGenericType())
.getActualTypeArguments()[0];
return (Class<?>) typeArgument;
} else {
return clazz;
}
}
项目:satisfy
文件:ScanningStepsFactory.java
private Set<Class<?>> typesAnnotatedWith(Reflections reflections,
Class<? extends Annotation>
annotation) {
Set<Class<?>> types = new HashSet<>();
Set<Method> methodsAnnotatedWith;
synchronized (ReflectionUtils.class) {
methodsAnnotatedWith = reflections
.getMethodsAnnotatedWith(annotation);
}
for (Method method : methodsAnnotatedWith) {
types.add(method.getDeclaringClass());
}
return types;
}
项目:rest-jersey-utils
文件:TestBinder.java
@Override
protected void configure() {
Set<Field> f = ReflectionUtils.getAllFields(instanceToReadMocksFrom.getClass());
for (Field field : f) {
if (field.getAnnotation(Mock.class) != null || field.getAnnotation(Spy.class) != null) {
try {
field.setAccessible(true);
bindReflectedInstance(field.get(instanceToReadMocksFrom), field.getType());
} catch (Exception e) {
throw new IllegalArgumentException("Unable to bind mock field " + field.getName() + " from "
+ instanceToReadMocksFrom.getClass().getName(), e);
}
}
}
}