public void execute()

in xml2fastinfoset-plugin/src/main/java/org/apache/cxf/maven_plugin/xml2fastinfoset/XML2FastInfosetCompilerMojo.java [104:177]


    public void execute() throws MojoExecutionException {

        for (Iterator it = resources.iterator(); it.hasNext();) {
            Resource resource = (Resource)it.next();
            String targetPath = resource.getTargetPath();

            File resourceDirectory = new File(resource.getDirectory());
            if (!resourceDirectory.isAbsolute()) {
                resourceDirectory = new File(project.getBasedir(), resourceDirectory.getPath());
            }

            if (!resourceDirectory.exists()) {
                getLog().debug("Resource directory does not exist: " + resourceDirectory);
                continue;
            }

            Scanner scanner = buildContext.newScanner(resourceDirectory);

            if (includes != null && !includes.isEmpty()) {
                scanner.setIncludes((String[])includes.toArray(EMPTY_STRING_ARRAY));
            } else {
                scanner.setIncludes(DEFAULT_INCLUDES);
            }

            if (excludes != null && !excludes.isEmpty()) {
                scanner.setExcludes((String[])excludes.toArray(EMPTY_STRING_ARRAY));
            }

            scanner.addDefaultExcludes();
            scanner.scan();

            List includedFiles = Arrays.asList(scanner.getIncludedFiles());

            getLog().debug("FastInfosetting " + includedFiles.size() + " resource"
                              + (includedFiles.size() > 1 ? "s" : "")
                              + (targetPath == null ? "" : " to " + targetPath));

            if (includedFiles.size() > 0) {
                // this part is required in case the user specified "../something"
                // as destination
                // see MNG-1345
                if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
                    throw new MojoExecutionException("Cannot create resource output directory: "
                                                     + outputDirectory);
                }
            }
            
            for (Iterator j = includedFiles.iterator(); j.hasNext();) {
                String name = (String)j.next();

                String destination = name.replaceFirst("\\.xml$", ".fixml");

                if (targetPath != null) {
                    destination = targetPath + "/" + name;
                }
                
                File source = new File(resourceDirectory, name);

                File destinationFile = new File(outputDirectory, destination);

                if (!destinationFile.getParentFile().exists()) {
                    destinationFile.getParentFile().mkdirs();
                }

                try {
                    compileFile(source, destinationFile);
                } catch (Exception e) {
                    throw new MojoExecutionException("Error copying resource " + source, e);
                }
                buildContext.refresh(destinationFile);
            }

        }
    }