JavaClassReferenceProvider (final GenericDomValue genericDomValue, ExtendClass extendClass, final JavaClassReferenceProvider provider) { if (extendClass != null) { if (extendClass.value().length > 0) { provider.setOption(JavaClassReferenceProvider.SUPER_CLASSES, Arrays.asList(extendClass.value())); } if (extendClass.instantiatable()) { provider.setOption(JavaClassReferenceProvider.INSTANTIATABLE, Boolean.TRUE); } if (!extendClass.allowAbstract()) { provider.setOption(JavaClassReferenceProvider.CONCRETE, Boolean.TRUE); } if (!extendClass.allowInterface()) { provider.setOption(JavaClassReferenceProvider.NOT_INTERFACE, Boolean.TRUE); } if (!extendClass.allowEnum()) { provider.setOption(JavaClassReferenceProvider.NOT_ENUM, Boolean.TRUE); } if (extendClass.jvmFormat()) { provider.setOption(JavaClassReferenceProvider.JVM_FORMAT, Boolean.TRUE); } provider.setAllowEmpty(extendClass.allowEmpty()); } ClassTemplate template = genericDomValue.getAnnotation(ClassTemplate.class); if (template != null) { if (StringUtil.isNotEmpty(template.value())) { provider.setOption(JavaClassReferenceProvider.CLASS_TEMPLATE, template.value()); } provider.setOption(JavaClassReferenceProvider.CLASS_KIND, template.kind()); } provider.setSoft(true); return provider; }