/** * Parses an external file using LibLoader and returns the parsed result as an object of type * <code>targetClass</code>. The file is given as relative pathname (relative to the current * source file). The current helper-methods are used as parse-parameters for the external parsing. * * @param file the file to be parsed. * @param targetClass the target type of the parse operation. * @param map the map of parse parameters. * @return the result, never null. * @throws ParseException if parsing the result failed for some reason. * @throws ResourceLoadingException if there was an IO error loading the resource. * @see #deriveParseParameters() */ protected Object performExternalParsing(final String file, final Class targetClass, final Map map) throws ParseException, ResourceLoadingException { try { final ResourceManager resourceManager = rootHandler.getResourceManager(); final ResourceKey source = rootHandler.getSource(); final ResourceKey target = resourceManager.deriveKey(source, file, map); final DependencyCollector dc = rootHandler.getDependencyCollector(); final Resource resource = resourceManager.create(target, rootHandler.getContext(), targetClass); dc.add(resource); return resource.getResource(); } catch (ResourceLoadingException rle) { throw rle; } catch (ResourceException e) { throw new ParseException("Failure while loading data: " + file, e, getLocator()); } }