void (AntDomScriptDef scriptdef) { ProgressManager.checkCanceled(); final String customTagName = scriptdef.getName().getStringValue(); if (customTagName != null) { final String nsUri = scriptdef.getUri().getStringValue(); final ClassLoader classLoader = getClassLoader(scriptdef, myAntProject); // register the scriptdef addCustomDefinition(scriptdef, customTagName, nsUri, ClassProvider.EMPTY); // registering nested elements ReflectedProject reflectedProject = null; for (AntDomScriptdefElement element : scriptdef.getScriptdefElements()) { final String customSubTagName = element.getName().getStringValue(); if (customSubTagName != null) { final String classname = element.getClassname().getStringValue(); if (classname != null) { addCustomDefinition(element, customTagName, nsUri, ClassProvider.create(classname, classLoader)); } else { Class<?> clazz = null; final String typeName = element.getElementType().getStringValue(); if (typeName != null) { clazz = lookupClass(new XmlName(typeName)); if (clazz == null) { if (reflectedProject == null) { // lazy init reflectedProject = ReflectedProject.getProject(myAntProject.getClassLoader()); } Map<String, Class<?>> coreTasks = reflectedProject.getTaskDefinitions(); if (coreTasks != null) { clazz = coreTasks.get(typeName); } if (clazz == null) { Map<String, Class<?>> coreTypes = reflectedProject.getDataTypeDefinitions(); if (coreTypes != null) { clazz = coreTypes.get(typeName); } } } } addCustomDefinition(element, customSubTagName, nsUri, ClassProvider.create(clazz)); } } } } }