Java源码示例:com.openpojo.reflection.PojoClassFilter

示例1
@Test
public void executeOpenPojoValidations() {
    final Validator pojoValidator =
            ValidatorBuilder.create()
                    .with(new GetterMustExistRule())
                    .with(new GetterTester())
                    .with(new SetterTester())
                    .build();

    final PojoClassFilter[] filters =
            new PojoClassFilter[] {
                pc -> !pc.getClazz().getName().contains(KeyVaultConfigTest.class.getSimpleName()),
                pc -> !pc.getClazz().isAssignableFrom(ObjectFactory.class),
                pc -> !pc.getClazz().getName().startsWith(JaxbConfigFactory.class.getName()),
                pc -> !pc.getClazz().isAssignableFrom(ConfigException.class),
                pc -> !pc.getClazz().getName().contains(ConfigItem.class.getName()),
                pc -> !pc.getClazz().getSimpleName().contains("Test"),
                pc -> !pc.isNestedClass()
            };

    pojoValidator.validate("com.quorum.tessera.config", filters);
}
 
示例2
public List<PojoClass> getPojoClassesRecursively(final String packageName, final PojoClassFilter pojoClassFilter) {
  final List<PojoClass> pojoClasses = new LinkedList<PojoClass>();
  final PojoClassFilter finalFilterChain = getFinalFilterChain(pojoClassFilter);

  final PojoPackage pojoPackage = PojoPackageFactory.getPojoPackage(packageName);

  Queue<PojoPackage> pending = new ConcurrentLinkedQueue<PojoPackage>();
  pending.add(pojoPackage);

  while (!pending.isEmpty()) {
    final PojoPackage entry = pending.remove();
    pending.addAll(entry.getPojoSubPackages());
    pojoClasses.addAll(entry.getPojoClasses(finalFilterChain));
  }
  return pojoClasses;
}
 
示例3
@Test
public void testInclude() {
  PojoClassFilter pojoClassFilter = new FilterNonConcrete();
  PojoClass stubPojoClass = PojoStubFactory.getStubPojoClass(false);

  Affirm.affirmTrue(String.format("Filter[%s] was supposed to filter OUT non concrete class", pojoClassFilter), stubPojoClass
      .isConcrete() == pojoClassFilter.include(stubPojoClass));

  stubPojoClass = PojoStubFactory.getStubPojoClass(true);
  Affirm.affirmTrue(String.format("Filter[%s] was supposed to filter IN concrete class", pojoClassFilter),
      stubPojoClass.isConcrete() == pojoClassFilter.include(stubPojoClass));

  final StubPojoClassFilter stubPojoClassFilter = new StubPojoClassFilter();
  pojoClassFilter = new FilterChain(new FilterNonConcrete(), stubPojoClassFilter);

  stubPojoClass = PojoStubFactory.getStubPojoClass(true);
  pojoClassFilter.include(stubPojoClass);
  Affirm.affirmTrue(String.format("Filter [%s] didn't invoke next in filter chain", pojoClassFilter), stubPojoClassFilter
      .includeCalled);
}
 
示例4
@Before
public void setup() {
  LogHelper.initializeLoggers();
  PojoClassFilter pojoClassFilter = new FilterChain(new FilterEnum(), new FilterPackageInfo());
  pojoClasses = PojoClassFactory.getPojoClassesRecursively(this.getClass().getPackage().getName() + ".sampleclasses",
      pojoClassFilter);

  ValidatorBuilder validatorBuilder = ValidatorBuilder.create();

  // Create Rules to validate structure for POJO_PACKAGE
  validatorBuilder.with(new NoPublicFieldsRule());
  validatorBuilder.with(new NoStaticExceptFinalRule());
  validatorBuilder.with(new GetterMustExistRule());
  validatorBuilder.with(new SetterMustExistRule());

  // Create Testers to validate behaviour for POJO_PACKAGE
  validatorBuilder.with(new DefaultValuesNullTester());
  validatorBuilder.with(new SetterTester());
  validatorBuilder.with(new GetterTester());

  pojoValidator = validatorBuilder.build();
}
 
示例5
public List<PojoClass> enumerateClassesByExtendingType(final String packageName, final Class<?> type,
                                                       final PojoClassFilter pojoClassFilter) {

  final FilterBasedOnInheritance inheritanceFilter = new FilterBasedOnInheritance(type);
  final FilterChain filterChain = new FilterChain(inheritanceFilter, pojoClassFilter);
  return getPojoClassesRecursively(packageName, filterChain);
}
 
示例6
public boolean include(PojoClass pojoClass) {
  for (PojoClassFilter filter : filters) {
    if (!filter.include(pojoClass))
      return false;
  }
  return true;
}
 
示例7
public List<PojoClass> getPojoClasses(final PojoClassFilter filter) {
  List<PojoClass> pojoClasses = new LinkedList<PojoClass>();

  for (Type type : jdkPackage.getTypes()) {
    PojoClass pojoClass = PojoClassFactory.getPojoClass((Class<?>) type);
    if (pojoClass != null && (filter == null || filter.include(pojoClass))) {
      pojoClasses.add(pojoClass);
    }
  }

  return pojoClasses;
}
 
示例8
public FilterChain(final PojoClassFilter... pojoClassFilters) {
  if (pojoClassFilters != null)
    for (PojoClassFilter pojoClassFilter : pojoClassFilters) {
      if (pojoClassFilter != null) {
        this.pojoClassFilters.add(pojoClassFilter);
      }
    }
}
 
示例9
public boolean include(final PojoClass pojoClass) {
  for (PojoClassFilter pojoClassFilter : pojoClassFilters) {
    if (!pojoClassFilter.include(pojoClass))
      return false;
  }
  return true;
}
 
示例10
private List<PojoClass> getGoodPojoClasses() {
  return PojoClassFactory.getPojoClasses(TESTPACKAGE, new PojoClassFilter() {
    public boolean include(PojoClass pojoClass) {
      return pojoClass.getClazz().getSimpleName().startsWith("Good_");
    }
  });
}
 
示例11
private List<PojoClass> getBadPojoClasses() {
  return PojoClassFactory.getPojoClassesRecursively(TESTPACKAGE, new PojoClassFilter() {

    public boolean include(final PojoClass pojoClass) {
      return pojoClass.getClazz().getSimpleName().startsWith("Bad_");
    }
  });
}
 
示例12
@Test
public void oneOneFilterAdded_FilterChainHasOneFilter() {
  PojoClassFilter dummyFilter = new DummyPojoClassFilter();
  FilterChain filter = new FilterChain(dummyFilter);
  Assert.assertEquals(1, filter.size());
  Assert.assertTrue(filter.getPojoClassFilters().contains(dummyFilter));
}
 
示例13
@Test
public void addingArrayWithNullFilters_ignored() {
  PojoClassFilter dummyFilter = new DummyPojoClassFilter();
  FilterChain filter = new FilterChain(dummyFilter, null);
  Assert.assertEquals(1, filter.size());
  Assert.assertTrue(filter.getPojoClassFilters().contains(dummyFilter));
}
 
示例14
@Test
public void testShouldExcludeFileName() {

  // Include only class names that are in the format of xSample
  final PojoClassFilter filter = new FilterClassName(".+Sample$");

  final String[] classNames = new String[] { "packagepath.packageSample.MyClass", "SampleClass", "Sample", "sample",
      "Somesample", "someSampleClass" };

  for (final String className : classNames) {
    PojoClass pojoClassStub = PojoStubFactory.getStubPojoClass(className);
    Affirm.affirmFalse(String.format("[%s] didn't exclude class [%s]!!", filter, className), filter.include(pojoClassStub));
  }

}
 
示例15
public List<PojoClass> validate(String packageName, PojoClassFilter... filters) {
  PojoClassFilter pojoClassFilter = new FilterChain(filters);
  List<PojoClass> pojoClasses = PojoClassFactory.getPojoClasses(packageName, pojoClassFilter);
  validate(pojoClasses);
  return pojoClasses;
}
 
示例16
public List<PojoClass> validateRecursively(String packageName, PojoClassFilter... filters) {
  PojoClassFilter pojoClassFilter = new FilterChain(filters);
  List<PojoClass> pojoClasses = PojoClassFactory.getPojoClassesRecursively(packageName, pojoClassFilter);
  validate(pojoClasses);
  return pojoClasses;
}
 
示例17
List<PojoClass> enumerateClassesByExtendingType(final String packageName, final Class<?> type, final PojoClassFilter
pojoClassFilter);
 
示例18
public List<PojoClass> getPojoClasses(final String packageName, final PojoClassFilter pojoClassFilter) {
  return PojoPackageFactory.getPojoPackage(packageName).getPojoClasses(getFinalFilterChain(pojoClassFilter));
}
 
示例19
private PojoClassFilter getFinalFilterChain(PojoClassFilter pojoClassFilter) {
  return new FilterChain(pojoClassFilter, ServiceRegistrar.getInstance().getPojoCoverageFilterService());
}
 
示例20
public void add(PojoClassFilter pojoClassFilter) {
  if (pojoClassFilter != null) {
    filters.add(pojoClassFilter);
  }
}
 
示例21
@Override
public PojoClassFilter getPojoClassFilter() {
  return null;
}
 
示例22
@Override
public PojoClassFilter getPojoClassFilter() {
  return FilterCloverClasses.getInstance();
}
 
示例23
@Override
public PojoClassFilter getPojoClassFilter() {
  return FilterCloverClasses.getInstance();
}
 
示例24
@Override
public PojoClassFilter getPojoClassFilter() {
  return null;
}
 
示例25
public Collection<PojoClassFilter> getPojoClassFilters() {
  return Collections.unmodifiableSet(pojoClassFilters);
}
 
示例26
@Test
public void filterChain_shouldIgonreNullFilterArray() {
  FilterChain filter = new FilterChain((PojoClassFilter[]) null);
  Assert.assertEquals(0, filter.size());
}
 
示例27
/**
 * Validate for a given package and a filter.
 *
 * @param packageName
 *     The package name to run the validation against.
 * @param filters
 *     The filter(s) to be used for filtering which classes are to be included in the validation.
 *
 * @return the list of PojoClasses that were validated.
 */
List<PojoClass> validate(String packageName, PojoClassFilter... filters);
 
示例28
/**
 * Validate for a given package and all its sub-packages with a given filter.
 *
 * @param packageName
 *     The package name to run the validation against.
 * @param filters
 *     The filter(s) to be used for filtering which classes are to be included in the validation.
 *
 * @return the list of PojoClasses that were validated.
 */
List<PojoClass> validateRecursively(String packageName, PojoClassFilter... filters);
 
示例29
/**
 * This method returns a list of PojoClasses in a package representation with filtering capabilities.
 *
 * @param packageName
 *     Package to introspect (eg. com.mypackage.pojo).
 * @param pojoClassFilter
 *     The filter to apply to the list of PojoClasses.
 * @return A list of PojoClasses.
 */
public static List<PojoClass> getPojoClasses(final String packageName, final PojoClassFilter pojoClassFilter) {
  return ServiceRegistrar.getInstance().getPojoClassLookupService().getPojoClasses(packageName, pojoClassFilter);
}
 
示例30
/**
 * This method enumerates all classes in a package path. This method will enumerate using the class loader, so if
 * you're tests live in the same package as your code, make sure you pass in a filter that can weed those out for
 * testing.
 *
 * @param packageName
 *     The package name in question.
 * @param pojoClassFilter
 *     The filter to use.
 * @return List of PojoClasses enumerated.
 */
public static List<PojoClass> getPojoClassesRecursively(final String packageName, final PojoClassFilter pojoClassFilter) {
  return ServiceRegistrar.getInstance().getPojoClassLookupService().getPojoClassesRecursively(packageName, pojoClassFilter);
}