public TypeSourceResolver getTypeSourceResolver(KieModuleMetaData kieModuleMetaData) { return new TypeSourceResolver(kieModuleMetaData, javaResources); }
public TypeSource getTypeSource(final Class<?> clazz) { if (isDeclaredInDRL(clazz)) { return TypeSource.DECLARED; } else if (isDefinedInProjectOrWithinDependency(clazz)) { return TypeSource.JAVA_PROJECT; } else { return TypeSource.JAVA_DEPENDENCY; } }
private boolean isDefinedInProjectOrWithinDependency(final Class<?> clazz) { return javaResources.contains(toFQCN(clazz)); }
private void verifyClass(final String packageName, final String className) { try { final Class clazz = kieModuleMetaData.getClass(packageName, className); if (clazz != null) { if (TypeSource.JAVA_DEPENDENCY == typeSourceResolver.getTypeSource(clazz)) { verifyExternalClass(clazz); } } else { logger.warn(MessageFormat.format(ERROR_EXTERNAL_CLASS_VERIFICATION, toFQCN(packageName, className))); } } catch (Throwable e) { final String msg = MessageFormat.format(ERROR_EXTERNAL_CLASS_VERIFICATION, toFQCN(packageName, className), e.getMessage()); logger.warn(msg); logger.debug("This state is usually encountered when the Project references a class not on the classpath; e.g. in a Maven 'provided' scope or 'optional' dependency.", e); buildMessages.add(makeWarningMessage(msg)); } }
private void addClass(final String packageName, final String className) { try { final Class clazz = kieModuleMetaData.getClass(packageName, className); pdBuilder.addClass(clazz, kieModuleMetaData.getTypeMetaInfo(clazz).isEvent(), typeSourceResolver.getTypeSource(clazz)); } catch (Throwable e) { //Class resolution would have happened in Builder and reported as warnings so log error here at debug level to avoid flooding logs log.debug(e.getMessage()); } }