AnnotationUtils { public static IOType annotatedIoType(Class<? extends AlgoOperator> cls) { IoOpAnnotation annotation = cls.getAnnotation(IoOpAnnotation.class); return annotation == null ? null : annotation.ioType(); }  static String annotatedName(Class<?> clazz); static String annotatedAlias(Class<? extends BaseDB> cls); static String annotatedAlias(String name); static IOType annotatedIoType(Class<? extends AlgoOperator> cls); static ParamInfo<String> tableAliasParamKey(String name); static ParamInfo<String> tableAliasParamKey(Class<? extends BaseDB> dbClazz); static ParamInfo<String> dynamicParamKey(String key); static List<String> allDBAndOpNames(); static List<String> allFileSystemNames(); static BaseDB createDB(String name, Params parameter); static BaseFileSystem<?> createFileSystem(String name, Params parameter); static boolean isDB(String name); static boolean isDBHasTimestamp(String name); static boolean isIoOpHasTimestamp(String name, IOType type); static boolean isFileSystem(String name); static AlgoOperator createOp(String name, IOType type, Params parameter);  }
@Test public void testAnnotatedIoType() { Assert.assertEquals(IOType.SourceBatch, AnnotationUtils.annotatedIoType(FakeOp1.class)); Assert.assertEquals(IOType.SourceBatch, AnnotationUtils.annotatedIoType(FakeOp2.class)); Assert.assertNull(AnnotationUtils.annotatedIoType(FakeOp3.class)); }