Android Open Source - task4java Reflection Cache






From Project

Back to project page task4java.

License

The source code is released under:

Apache License

If you think the Android project task4java listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *  Copyright (c) 2014 Andree Hagelstein, Maik Schulze, Deutsche Telekom AG. All Rights Reserved.
 *  //w w w .  ja  va  2s. c o m
 *  Filename: ReflectionCache.java
 */

package com.task4java.lang.reflect;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ReflectionCache {

  private static Map<Class<?>, List<Annotation>> _classAnnotations;
  private static Map<Field, Annotation[]> _fieldAnnotations;
  private static Map<Class<?>, List<Field>> _classFields;

  public static List<Field> getClassFields(Class<?> clazz) {

    if (_classFields == null) {
      _classFields = new HashMap<Class<?>, List<Field>>();
    }

    if (!_classFields.containsKey(clazz)) {
      List<Field> classFields = new ArrayList<Field>();

      addClassFields(clazz, classFields);

      _classFields.put(clazz, classFields);
    }

    return _classFields.get(clazz);
  }

  public static Annotation[] getFieldAnnotations(Field field) {

    if (_fieldAnnotations == null) {
      _fieldAnnotations = new HashMap<Field, Annotation[]>();
    }

    if (!_fieldAnnotations.containsKey(field)) {
      _fieldAnnotations.put(field, field.getAnnotations());
    }

    return _fieldAnnotations.get(field);
  }

  public static List<Annotation> getClassAnnotations(Class<?> clazz) {

    if (_classAnnotations == null) {
      _classAnnotations = new HashMap<Class<?>, List<Annotation>>();
    }

    if (!_classAnnotations.containsKey(clazz)) {
      List<Annotation> classAnnotations = new ArrayList<Annotation>();

      addClassAnnotations(clazz, classAnnotations);

      _classAnnotations.put(clazz, classAnnotations);
    }

    return _classAnnotations.get(clazz);
  }

  private static void addClassFields(Class<?> clazz, List<Field> fields) {

    for (Field classField : clazz.getDeclaredFields()) {
      fields.add(classField);
    }

    if (clazz.getSuperclass() != null) {
      addClassFields(clazz.getSuperclass(), fields);
    }
  }

  private static void addClassAnnotations(Class<?> clazz, List<Annotation> annotations) {

    for (Annotation annotation : clazz.getAnnotations()) {
      annotations.add(annotation);
    }

    if (clazz.getSuperclass() != null) {
      addClassAnnotations(clazz.getSuperclass(), annotations);
    }
  }
}




Java Source Code List

com.task4java.IndexedList.java
com.task4java.KeyValuePair.java
com.task4java.Stopwatch.java
com.task4java.StringUtils.java
com.task4java.Tuple.java
com.task4java.android.activity.ActivityUtils.java
com.task4java.android.activity.BaseActivity.java
com.task4java.android.annotation.Annotations.java
com.task4java.android.examples.App.java
com.task4java.android.examples.activity.AboutActivity.java
com.task4java.android.examples.activity.ExpandableListAdapter.java
com.task4java.android.examples.activity.MainActivity.java
com.task4java.android.examples.activity.WelcomeActivity.java
com.task4java.android.examples.backend.AndroidServiceClient.java
com.task4java.android.util.concurrent.ActivityExecutor.java
com.task4java.android.util.concurrent.HandlerExecutor.java
com.task4java.data.backend.IServiceClient.java
com.task4java.data.backend.ServiceClient.java
com.task4java.data.backend.model.MainMenuAnnotation.java
com.task4java.data.frontend.ApplicationClient.java
com.task4java.data.frontend.model.MainMenuItemGroupList.java
com.task4java.data.frontend.model.MainMenuItemGroup.java
com.task4java.data.frontend.model.MainMenuItem.java
com.task4java.http.HttpHeaders.java
com.task4java.http.HttpMimeTypes.java
com.task4java.http.HttpRequestMethods.java
com.task4java.http.HttpStatusCodes.java
com.task4java.http.client.HttpContent.java
com.task4java.http.client.HttpStringContent.java
com.task4java.http.client.IImageClient.java
com.task4java.http.client.IRestClient.java
com.task4java.http.client.ImageClientGingerbread.java
com.task4java.http.client.ImageClient.java
com.task4java.http.client.ImageResponse.java
com.task4java.http.client.RestClientGingerbread.java
com.task4java.http.client.RestClient.java
com.task4java.http.client.RestResponse.java
com.task4java.lang.reflect.ReflectionCache.java
com.task4java.net.URLBuilder.java
com.task4java.util.concurrent.CallableTask.java
com.task4java.util.concurrent.CallableValue2.java
com.task4java.util.concurrent.CallableValue.java
com.task4java.util.concurrent.ITaskStart.java
com.task4java.util.concurrent.ITask.java
com.task4java.util.concurrent.TaskCompletionSource.java
com.task4java.util.concurrent.TaskContinuationOptions.java
com.task4java.util.concurrent.TaskException.java
com.task4java.util.concurrent.TaskFactory.java
com.task4java.util.concurrent.TaskResultException.java
com.task4java.util.concurrent.TaskStartException.java
com.task4java.util.concurrent.Task.java
com.task4java.util.log.ConsoleLogger.java
com.task4java.util.log.ILog.java
com.task4java.util.log.Logger.java