Example usage for org.apache.maven.plugin.logging Log info

List of usage examples for org.apache.maven.plugin.logging Log info

Introduction

In this page you can find the example usage for org.apache.maven.plugin.logging Log info.

Prototype

void info(Throwable error);

Source Link

Document

Send an exception to the user in the info error level.
The stack trace for this exception will be output when this error level is enabled.

Usage

From source file:org.apache.camel.maven.packaging.PackageArchetypeCatalogMojo.java

License:Apache License

public static void generateArchetypeCatalog(Log log, MavenProject project, MavenProjectHelper projectHelper,
        File projectBuildDir, File outDir) throws MojoExecutionException, IOException {

    File rootDir = projectBuildDir.getParentFile();
    log.info("Scanning for Camel Maven Archetypes from root directory " + rootDir);

    // find all archetypes which are in the parent dir of the build dir
    File[] dirs = rootDir.listFiles(new FileFilter() {
        @Override//ww w  . j  a va  2  s.co m
        public boolean accept(File pathname) {
            return pathname.getName().startsWith("camel-archetype") && pathname.isDirectory();
        }
    });

    List<ArchetypeModel> models = new ArrayList<ArchetypeModel>();

    for (File dir : dirs) {
        File pom = new File(dir, "pom.xml");
        if (!pom.exists() && !pom.isFile()) {
            continue;
        }

        boolean parent = false;
        ArchetypeModel model = new ArchetypeModel();

        // just use a simple line by line text parser (no need for DOM) just to grab 4 lines of data
        for (Object o : FileUtils.readLines(pom)) {

            String line = o.toString();

            // we only want to read version from parent
            if (line.contains("<parent>")) {
                parent = true;
                continue;
            }
            if (line.contains("</parent>")) {
                parent = false;
                continue;
            }
            if (parent) {
                // grab version from parent
                String version = between(line, "<version>", "</version>");
                if (version != null) {
                    model.setVersion(version);
                }
                continue;
            }

            String groupId = between(line, "<groupId>", "</groupId>");
            String artifactId = between(line, "<artifactId>", "</artifactId>");
            String description = between(line, "<description>", "</description>");

            if (groupId != null && model.getGroupId() == null) {
                model.setGroupId(groupId);
            }
            if (artifactId != null && model.getArtifactId() == null) {
                model.setArtifactId(artifactId);
            }
            if (description != null && model.getDescription() == null) {
                model.setDescription(description);
            }
        }

        if (model.getGroupId() != null && model.getArtifactId() != null && model.getVersion() != null) {
            models.add(model);
        }
    }

    log.info("Found " + models.size() + " archetypes");

    if (!models.isEmpty()) {

        // make sure there is a dir
        outDir.mkdirs();

        File out = new File(outDir, "archetype-catalog.xml");
        FileOutputStream fos = new FileOutputStream(out, false);

        // write top
        String top = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archetype-catalog>\n  <archetypes>";
        fos.write(top.getBytes());

        // write each archetype
        for (ArchetypeModel model : models) {
            fos.write("\n    <archetype>".getBytes());
            fos.write(("\n      <groupId>" + model.getGroupId() + "</groupId>").getBytes());
            fos.write(("\n      <artifactId>" + model.getArtifactId() + "</artifactId>").getBytes());
            fos.write(("\n      <version>" + model.getVersion() + "</version>").getBytes());
            if (model.getDescription() != null) {
                fos.write(("\n      <description>" + model.getDescription() + "</description>").getBytes());
            }
            fos.write("\n    </archetype>".getBytes());
        }

        // write bottom
        String bottom = "\n  </archetypes>\n</archetype-catalog>\n";
        fos.write(bottom.getBytes());

        fos.close();

        log.info("Saved archetype catalog to file " + out);

        try {
            if (projectHelper != null) {
                log.info("Attaching archetype catalog to Maven project: " + project.getArtifactId());

                List<String> includes = new ArrayList<String>();
                includes.add("archetype-catalog.xml");
                projectHelper.addResource(project, outDir.getPath(), includes, new ArrayList<String>());
                projectHelper.attachArtifact(project, "xml", "archetype-catalog", out);
            }
        } catch (Exception e) {
            throw new MojoExecutionException("Failed to attach artifact to Maven project. Reason: " + e, e);
        }
    }
}

From source file:org.apache.camel.maven.packaging.PackageComponentMojo.java

License:Apache License

public static void prepareComponent(Log log, MavenProject project, MavenProjectHelper projectHelper,
        File componentOutDir) throws MojoExecutionException {
    File camelMetaDir = new File(componentOutDir, "META-INF/services/org/apache/camel/");

    StringBuilder buffer = new StringBuilder();
    int count = 0;
    for (Resource r : project.getBuild().getResources()) {
        File f = new File(r.getDirectory());
        if (!f.exists()) {
            f = new File(project.getBasedir(), r.getDirectory());
        }/*from   ww w .  java  2 s.  c om*/
        f = new File(f, "META-INF/services/org/apache/camel/component");

        if (f.exists() && f.isDirectory()) {
            File[] files = f.listFiles();
            if (files != null) {
                for (File file : files) {
                    // skip directories as there may be a sub .resolver directory
                    if (file.isDirectory()) {
                        continue;
                    }
                    String name = file.getName();
                    if (name.charAt(0) != '.') {
                        count++;
                        if (buffer.length() > 0) {
                            buffer.append(" ");
                        }
                        buffer.append(name);
                    }
                }
            }
        }
    }

    if (count > 0) {
        Properties properties = new Properties();
        String names = buffer.toString();
        properties.put("components", names);
        properties.put("groupId", project.getGroupId());
        properties.put("artifactId", project.getArtifactId());
        properties.put("version", project.getVersion());
        properties.put("projectName", project.getName());
        if (project.getDescription() != null) {
            properties.put("projectDescription", project.getDescription());
        }

        camelMetaDir.mkdirs();
        File outFile = new File(camelMetaDir, "component.properties");
        try {
            properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
            log.info("Generated " + outFile + " containing " + count + " Camel "
                    + (count > 1 ? "components: " : "component: ") + names);

            if (projectHelper != null) {
                List<String> includes = new ArrayList<String>();
                includes.add("**/component.properties");
                projectHelper.addResource(project, componentOutDir.getPath(), includes,
                        new ArrayList<String>());
                projectHelper.attachArtifact(project, "properties", "camelComponent", outFile);
            }
        } catch (IOException e) {
            throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e);
        }
    } else {
        log.debug(
                "No META-INF/services/org/apache/camel/component directory found. Are you sure you have created a Camel component?");
    }
}

From source file:org.apache.camel.maven.packaging.PackageDataFormatMojo.java

License:Apache License

public static void prepareDataFormat(Log log, MavenProject project, MavenProjectHelper projectHelper,
        File dataFormatOutDir, File schemaOutDir) throws MojoExecutionException {
    File camelMetaDir = new File(dataFormatOutDir, "META-INF/services/org/apache/camel/");

    Map<String, String> javaTypes = new HashMap<String, String>();

    StringBuilder buffer = new StringBuilder();
    int count = 0;
    for (Resource r : project.getBuild().getResources()) {
        File f = new File(r.getDirectory());
        if (!f.exists()) {
            f = new File(project.getBasedir(), r.getDirectory());
        }//from w w  w. ja  v a2  s .co m
        f = new File(f, "META-INF/services/org/apache/camel/dataformat");

        if (f.exists() && f.isDirectory()) {
            File[] files = f.listFiles();
            if (files != null) {
                for (File file : files) {
                    // skip directories as there may be a sub .resolver directory
                    if (file.isDirectory()) {
                        continue;
                    }
                    String name = file.getName();
                    if (name.charAt(0) != '.') {
                        count++;
                        if (buffer.length() > 0) {
                            buffer.append(" ");
                        }
                        buffer.append(name);
                    }

                    // find out the javaType for each data format
                    try {
                        String text = loadText(new FileInputStream(file));
                        Map<String, String> map = parseAsMap(text);
                        String javaType = map.get("class");
                        if (javaType != null) {
                            javaTypes.put(name, javaType);
                        }
                    } catch (IOException e) {
                        throw new MojoExecutionException("Failed to read file " + file + ". Reason: " + e, e);
                    }
                }
            }
        }
    }

    // find camel-core and grab the data format model from there, and enrich this model with information from this artifact
    // and create json schema model file for this data format
    try {
        if (count > 0) {
            Artifact camelCore = findCamelCoreArtifact(project);
            if (camelCore != null) {
                File core = camelCore.getFile();
                if (core != null) {
                    URL url = new URL("file", null, core.getAbsolutePath());
                    URLClassLoader loader = new URLClassLoader(new URL[] { url });
                    for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
                        String name = entry.getKey();
                        String javaType = entry.getValue();
                        String modelName = asModelName(name);

                        InputStream is = loader.getResourceAsStream(
                                "org/apache/camel/model/dataformat/" + modelName + ".json");
                        if (is == null) {
                            // use file input stream if we build camel-core itself, and thus do not have a JAR which can be loaded by URLClassLoader
                            is = new FileInputStream(
                                    new File(core, "org/apache/camel/model/dataformat/" + modelName + ".json"));
                        }
                        String json = loadText(is);
                        if (json != null) {
                            DataFormatModel dataFormatModel = new DataFormatModel();
                            dataFormatModel.setName(name);
                            dataFormatModel.setTitle("");
                            dataFormatModel.setModelName(modelName);
                            dataFormatModel.setLabel("");
                            dataFormatModel.setDescription(project.getDescription());
                            dataFormatModel.setJavaType(javaType);
                            dataFormatModel.setGroupId(project.getGroupId());
                            dataFormatModel.setArtifactId(project.getArtifactId());
                            dataFormatModel.setVersion(project.getVersion());

                            List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json,
                                    false);
                            for (Map<String, String> row : rows) {
                                if (row.containsKey("title")) {
                                    String title = row.get("title");
                                    dataFormatModel.setTitle(asModelTitle(name, title));
                                }
                                if (row.containsKey("label")) {
                                    dataFormatModel.setLabel(row.get("label"));
                                }
                                if (row.containsKey("javaType")) {
                                    dataFormatModel.setModelJavaType(row.get("javaType"));
                                }
                                // override description for camel-core, as otherwise its too generic
                                if ("camel-core".equals(project.getArtifactId())) {
                                    if (row.containsKey("description")) {
                                        dataFormatModel.setLabel(row.get("description"));
                                    }
                                }
                            }
                            log.debug("Model " + dataFormatModel);

                            // build json schema for the data format
                            String properties = after(json, "  \"properties\": {");
                            String schema = createParameterJsonSchema(dataFormatModel, properties);
                            log.debug("JSon schema\n" + schema);

                            // write this to the directory
                            File dir = new File(schemaOutDir,
                                    schemaSubDirectory(dataFormatModel.getJavaType()));
                            dir.mkdirs();

                            File out = new File(dir, name + ".json");
                            FileOutputStream fos = new FileOutputStream(out, false);
                            fos.write(schema.getBytes());
                            fos.close();

                            log.debug("Generated " + out + " containing JSon schema for " + name
                                    + " data format");
                        }
                    }
                }
            }
        }
    } catch (Exception e) {
        throw new MojoExecutionException("Error loading dataformat model from camel-core. Reason: " + e, e);
    }

    if (count > 0) {
        Properties properties = new Properties();
        String names = buffer.toString();
        properties.put("dataFormats", names);
        properties.put("groupId", project.getGroupId());
        properties.put("artifactId", project.getArtifactId());
        properties.put("version", project.getVersion());
        properties.put("projectName", project.getName());
        if (project.getDescription() != null) {
            properties.put("projectDescription", project.getDescription());
        }

        camelMetaDir.mkdirs();
        File outFile = new File(camelMetaDir, "dataformat.properties");
        try {
            properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
            log.info("Generated " + outFile + " containing " + count + " Camel "
                    + (count > 1 ? "dataformats: " : "dataformat: ") + names);

            if (projectHelper != null) {
                List<String> includes = new ArrayList<String>();
                includes.add("**/dataformat.properties");
                projectHelper.addResource(project, dataFormatOutDir.getPath(), includes,
                        new ArrayList<String>());
                projectHelper.attachArtifact(project, "properties", "camelDataFormat", outFile);
            }
        } catch (IOException e) {
            throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e);
        }
    } else {
        log.debug(
                "No META-INF/services/org/apache/camel/dataformat directory found. Are you sure you have created a Camel data format?");
    }
}

From source file:org.apache.camel.maven.packaging.PackageLanguageMojo.java

License:Apache License

public static void prepareLanguage(Log log, MavenProject project, MavenProjectHelper projectHelper,
        File languageOutDir, File schemaOutDir) throws MojoExecutionException {
    File camelMetaDir = new File(languageOutDir, "META-INF/services/org/apache/camel/");

    Map<String, String> javaTypes = new HashMap<String, String>();

    StringBuilder buffer = new StringBuilder();
    int count = 0;
    for (Resource r : project.getBuild().getResources()) {
        File f = new File(r.getDirectory());
        if (!f.exists()) {
            f = new File(project.getBasedir(), r.getDirectory());
        }//from w  w w  . ja v a  2s. c om
        f = new File(f, "META-INF/services/org/apache/camel/language");

        if (f.exists() && f.isDirectory()) {
            File[] files = f.listFiles();
            if (files != null) {
                for (File file : files) {
                    // skip directories as there may be a sub .resolver directory such as in camel-script
                    if (file.isDirectory()) {
                        continue;
                    }
                    String name = file.getName();
                    if (name.charAt(0) != '.') {
                        count++;
                        if (buffer.length() > 0) {
                            buffer.append(" ");
                        }
                        buffer.append(name);
                    }

                    // find out the javaType for each data format
                    try {
                        String text = loadText(new FileInputStream(file));
                        Map<String, String> map = parseAsMap(text);
                        String javaType = map.get("class");
                        if (javaType != null) {
                            javaTypes.put(name, javaType);
                        }
                    } catch (IOException e) {
                        throw new MojoExecutionException("Failed to read file " + file + ". Reason: " + e, e);
                    }
                }
            }
        }
    }

    // find camel-core and grab the data format model from there, and enrich this model with information from this artifact
    // and create json schema model file for this data format
    try {
        if (count > 0) {
            Artifact camelCore = findCamelCoreArtifact(project);
            if (camelCore != null) {
                File core = camelCore.getFile();
                if (core != null) {
                    URL url = new URL("file", null, core.getAbsolutePath());
                    URLClassLoader loader = new URLClassLoader(new URL[] { url });
                    for (Map.Entry<String, String> entry : javaTypes.entrySet()) {
                        String name = entry.getKey();
                        String javaType = entry.getValue();
                        String modelName = asModelName(name);

                        InputStream is = loader
                                .getResourceAsStream("org/apache/camel/model/language/" + modelName + ".json");
                        if (is == null) {
                            // use file input stream if we build camel-core itself, and thus do not have a JAR which can be loaded by URLClassLoader
                            is = new FileInputStream(
                                    new File(core, "org/apache/camel/model/language/" + modelName + ".json"));
                        }
                        String json = loadText(is);
                        if (json != null) {
                            LanguageModel languageModel = new LanguageModel();
                            languageModel.setName(name);
                            languageModel.setTitle("");
                            languageModel.setModelName(modelName);
                            languageModel.setLabel("");
                            languageModel.setDescription("");
                            languageModel.setJavaType(javaType);
                            languageModel.setGroupId(project.getGroupId());
                            languageModel.setArtifactId(project.getArtifactId());
                            languageModel.setVersion(project.getVersion());

                            List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("model", json,
                                    false);
                            for (Map<String, String> row : rows) {
                                if (row.containsKey("title")) {
                                    languageModel.setTitle(row.get("title"));
                                }
                                if (row.containsKey("description")) {
                                    languageModel.setDescription(row.get("description"));
                                }
                                if (row.containsKey("label")) {
                                    languageModel.setLabel(row.get("label"));
                                }
                                if (row.containsKey("javaType")) {
                                    languageModel.setModelJavaType(row.get("javaType"));
                                }
                            }
                            log.debug("Model " + languageModel);

                            // build json schema for the data format
                            String properties = after(json, "  \"properties\": {");
                            String schema = createParameterJsonSchema(languageModel, properties);
                            log.debug("JSon schema\n" + schema);

                            // write this to the directory
                            File dir = new File(schemaOutDir, schemaSubDirectory(languageModel.getJavaType()));
                            dir.mkdirs();

                            File out = new File(dir, name + ".json");
                            FileOutputStream fos = new FileOutputStream(out, false);
                            fos.write(schema.getBytes());
                            fos.close();

                            log.debug("Generated " + out + " containing JSon schema for " + name + " language");
                        }
                    }
                }
            }
        }
    } catch (Exception e) {
        throw new MojoExecutionException("Error loading language model from camel-core. Reason: " + e, e);
    }

    if (count > 0) {
        Properties properties = new Properties();
        String names = buffer.toString();
        properties.put("languages", names);
        properties.put("groupId", project.getGroupId());
        properties.put("artifactId", project.getArtifactId());
        properties.put("version", project.getVersion());
        properties.put("projectName", project.getName());
        if (project.getDescription() != null) {
            properties.put("projectDescription", project.getDescription());
        }

        camelMetaDir.mkdirs();
        File outFile = new File(camelMetaDir, "language.properties");
        try {
            properties.store(new FileWriter(outFile), "Generated by camel-package-maven-plugin");
            log.info("Generated " + outFile + " containing " + count + " Camel "
                    + (count > 1 ? "languages: " : "language: ") + names);

            if (projectHelper != null) {
                List<String> includes = new ArrayList<String>();
                includes.add("**/language.properties");
                projectHelper.addResource(project, languageOutDir.getPath(), includes, new ArrayList<String>());
                projectHelper.attachArtifact(project, "properties", "camelLanguage", outFile);
            }
        } catch (IOException e) {
            throw new MojoExecutionException("Failed to write properties to " + outFile + ". Reason: " + e, e);
        }
    } else {
        log.debug(
                "No META-INF/services/org/apache/camel/language directory found. Are you sure you have created a Camel language?");
    }
}

From source file:org.apache.felix.obr.plugin.ObrDeploy.java

License:Apache License

public void execute() throws MojoExecutionException {
    if (!supportedProjectTypes.contains(project.getPackaging())) {
        getLog().info("Ignoring packaging type " + project.getPackaging());
        return;// www.  ja  va2s .com
    } else if ("NONE".equalsIgnoreCase(obrRepository)) {
        getLog().info("OBR update disabled (enable with -DobrRepository)");
        return;
    }

    URI tempURI = ObrUtils.findRepositoryXml("", obrRepository);
    String repositoryName = new File(tempURI.getPath()).getName();

    Log log = getLog();
    ObrUpdate update;

    RemoteFileManager remoteFile = new RemoteFileManager(m_wagonManager, settings, log);
    openRepositoryConnection(remoteFile);

    // ======== LOCK REMOTE OBR ========
    log.info("LOCK " + remoteFile + '/' + repositoryName);
    remoteFile.lockFile(repositoryName, ignoreLock);
    File downloadedRepositoryXml = null;

    try {
        // ======== DOWNLOAD REMOTE OBR ========
        log.info("Downloading " + repositoryName);
        downloadedRepositoryXml = remoteFile.get(repositoryName, ".xml");

        String mavenRepository = localRepository.getBasedir();

        URI repositoryXml = downloadedRepositoryXml.toURI();
        URI obrXmlFile = ObrUtils.findObrXml(project.getResources());
        URI bundleJar = ObrUtils.findBundleJar(localRepository, project.getArtifact());

        Config userConfig = new Config();
        userConfig.setPathRelative(true);
        userConfig.setRemoteFile(true);

        update = new ObrUpdate(repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log);

        update.updateRepository();

        if (downloadedRepositoryXml.exists()) {
            // ======== UPLOAD MODIFIED OBR ========
            log.info("Uploading " + repositoryName);
            remoteFile.put(downloadedRepositoryXml, repositoryName);
        }
    } catch (Exception e) {
        log.warn("Exception while updating remote OBR: " + e.getLocalizedMessage(), e);
    } finally {
        // ======== UNLOCK REMOTE OBR ========
        log.info("UNLOCK " + remoteFile + '/' + repositoryName);
        remoteFile.unlockFile(repositoryName);
        remoteFile.disconnect();

        if (null != downloadedRepositoryXml) {
            downloadedRepositoryXml.delete();
        }
    }
}

From source file:org.apache.felix.obr.plugin.ObrDeployFile.java

License:Apache License

public void execute() throws MojoExecutionException {
    MavenProject project = getProject();

    if (!supportedProjectTypes.contains(project.getPackaging())) {
        getLog().info("Ignoring packaging type " + project.getPackaging());
        return;/* w ww.jav a  2s.c o m*/
    } else if ("NONE".equalsIgnoreCase(obrRepository)) {
        getLog().info("OBR update disabled (enable with -DobrRepository)");
        return;
    }

    URI tempURI = ObrUtils.findRepositoryXml("", obrRepository);
    String repositoryName = new File(tempURI.getPath()).getName();

    Log log = getLog();
    ObrUpdate update;

    RemoteFileManager remoteFile = new RemoteFileManager(m_wagonManager, settings, log);
    remoteFile.connect(repositoryId, url);

    // ======== LOCK REMOTE OBR ========
    log.info("LOCK " + remoteFile + '/' + repositoryName);
    remoteFile.lockFile(repositoryName, ignoreLock);
    File downloadedRepositoryXml = null;

    try {
        // ======== DOWNLOAD REMOTE OBR ========
        log.info("Downloading " + repositoryName);
        downloadedRepositoryXml = remoteFile.get(repositoryName, ".xml");

        String mavenRepository = localRepository.getBasedir();

        URI repositoryXml = downloadedRepositoryXml.toURI();
        URI obrXmlFile = ObrUtils.toFileURI(obrXml);
        URI bundleJar;

        if (null == file) {
            bundleJar = ObrUtils.findBundleJar(localRepository, project.getArtifact());
        } else {
            bundleJar = file.toURI();
        }

        URI remoteBundleURI = null;
        if (null != bundleUrl) {
            remoteBundleURI = URI.create(bundleUrl);
        } else if (null != file) {
            remoteBundleURI = URI.create(localRepository.pathOf(project.getArtifact()));
        }

        Config userConfig = new Config();
        userConfig.setRemoteBundle(remoteBundleURI);
        userConfig.setPathRelative(true);
        userConfig.setRemoteFile(true);

        update = new ObrUpdate(repositoryXml, obrXmlFile, project, bundleJar, mavenRepository, userConfig, log);

        update.updateRepository();

        if (downloadedRepositoryXml.exists()) {
            // ======== UPLOAD MODIFIED OBR ========
            log.info("Uploading " + repositoryName);
            remoteFile.put(downloadedRepositoryXml, repositoryName);
        }
    } catch (Exception e) {
        log.warn("Exception while updating remote OBR: " + e.getLocalizedMessage(), e);
    } finally {
        // ======== UNLOCK REMOTE OBR ========
        log.info("UNLOCK " + remoteFile + '/' + repositoryName);
        remoteFile.unlockFile(repositoryName);
        remoteFile.disconnect();

        if (null != downloadedRepositoryXml) {
            downloadedRepositoryXml.delete();
        }
    }
}

From source file:org.apache.felix.obrplugin.ObrDeploy.java

License:Apache License

public void execute() throws MojoExecutionException {
    String projectType = project.getPackaging();

    // ignore unsupported project types, useful when bundleplugin is configured in parent pom
    if (!supportedProjectTypes.contains(projectType)) {
        getLog().warn(//w w w  .  jav  a 2  s.c om
                "Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes);
        return;
    } else if ("NONE".equalsIgnoreCase(remoteOBR) || "false".equalsIgnoreCase(remoteOBR)) {
        getLog().info("Remote OBR update disabled (enable with -DremoteOBR)");
        return;
    }

    // check for any attached sources or docs
    for (Iterator i = attachedArtifacts.iterator(); i.hasNext();) {
        Artifact artifact = (Artifact) i.next();
        if ("sources".equals(artifact.getClassifier())) {
            m_sourceArtifact = artifact;
        } else if ("javadoc".equals(artifact.getClassifier())) {
            m_docArtifact = artifact;
        }
    }

    // if the user doesn't supply an explicit name for the remote OBR file, use the local name instead
    if (null == remoteOBR || remoteOBR.trim().length() == 0 || "true".equalsIgnoreCase(remoteOBR)) {
        remoteOBR = obrRepository;
    }

    URI tempURI = ObrUtils.findRepositoryXml("", remoteOBR);
    String repositoryName = new File(tempURI.getSchemeSpecificPart()).getName();

    Log log = getLog();
    ObrUpdate update;

    RemoteFileManager remoteFile = new RemoteFileManager(m_wagonManager, settings, log);
    openRepositoryConnection(remoteFile);

    // ======== LOCK REMOTE OBR ========
    log.info("LOCK " + remoteFile + '/' + repositoryName);
    remoteFile.lockFile(repositoryName, ignoreLock);
    File downloadedRepositoryXml = null;

    try {
        // ======== DOWNLOAD REMOTE OBR ========
        log.info("Downloading " + repositoryName);
        downloadedRepositoryXml = remoteFile.get(repositoryName, ".xml");

        String mavenRepository = localRepository.getBasedir();

        URI repositoryXml = downloadedRepositoryXml.toURI();
        URI obrXmlFile = ObrUtils.findObrXml(project.getResources());

        Config userConfig = new Config();
        userConfig.setRemoteFile(true);

        if (bundleUrl != null) {
            // public URL differs from the bundle file location
            URI uri = URI.create(bundleUrl);
            log.info("Computed bundle uri: " + uri);
            userConfig.setRemoteBundle(uri);
        } else if (prefixUrl != null) {
            // support absolute bundle URLs based on given prefix
            URI bundleJar = ObrUtils.getArtifactURI(localRepository, project.getArtifact());
            String relative = ObrUtils.getRelativeURI(ObrUtils.toFileURI(mavenRepository), bundleJar)
                    .toASCIIString();
            URL resourceURL = new URL(new URL(prefixUrl + '/'), relative);
            URI uri = URI.create(resourceURL.toString());
            log.info("Computed bundle uri: " + uri);
            userConfig.setRemoteBundle(uri);
        }

        update = new ObrUpdate(repositoryXml, obrXmlFile, project, mavenRepository, userConfig, log);
        update.parseRepositoryXml();

        updateRemoteBundleMetadata(project.getArtifact(), update);
        for (Iterator i = attachedArtifacts.iterator(); i.hasNext();) {
            updateRemoteBundleMetadata((Artifact) i.next(), update);
        }

        update.writeRepositoryXml();

        if (downloadedRepositoryXml.exists()) {
            // ======== UPLOAD MODIFIED OBR ========
            log.info("Uploading " + repositoryName);
            remoteFile.put(downloadedRepositoryXml, repositoryName);
        }
    } catch (Exception e) {
        log.warn("Exception while updating remote OBR: " + e.getLocalizedMessage(), e);
    } finally {
        // ======== UNLOCK REMOTE OBR ========
        log.info("UNLOCK " + remoteFile + '/' + repositoryName);
        remoteFile.unlockFile(repositoryName);
        remoteFile.disconnect();

        if (null != downloadedRepositoryXml) {
            downloadedRepositoryXml.delete();
        }
    }
}

From source file:org.apache.felix.obrplugin.ObrDeployFile.java

License:Apache License

public void execute() throws MojoExecutionException {
    MavenProject project = getProject();
    String projectType = project.getPackaging();

    // ignore unsupported project types, useful when bundleplugin is configured in parent pom
    if (!supportedProjectTypes.contains(projectType)) {
        getLog().warn(//  w ww .  ja  v  a 2  s  .  c o m
                "Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes);
        return;
    } else if ("NONE".equalsIgnoreCase(remoteOBR) || "false".equalsIgnoreCase(remoteOBR)) {
        getLog().info("Remote OBR update disabled (enable with -DremoteOBR)");
        return;
    }

    // if the user doesn't supply an explicit name for the remote OBR file, use the local name instead
    if (null == remoteOBR || remoteOBR.trim().length() == 0 || "true".equalsIgnoreCase(remoteOBR)) {
        remoteOBR = obrRepository;
    }

    URI tempURI = ObrUtils.findRepositoryXml("", remoteOBR);
    String repositoryName = new File(tempURI.getSchemeSpecificPart()).getName();

    Log log = getLog();
    ObrUpdate update;

    RemoteFileManager remoteFile = new RemoteFileManager(m_wagonManager, settings, log);
    remoteFile.connect(repositoryId, url);

    // ======== LOCK REMOTE OBR ========
    log.info("LOCK " + remoteFile + '/' + repositoryName);
    remoteFile.lockFile(repositoryName, ignoreLock);
    File downloadedRepositoryXml = null;

    try {
        // ======== DOWNLOAD REMOTE OBR ========
        log.info("Downloading " + repositoryName);
        downloadedRepositoryXml = remoteFile.get(repositoryName, ".xml");

        String mavenRepository = localRepository.getBasedir();

        URI repositoryXml = downloadedRepositoryXml.toURI();
        URI obrXmlFile = ObrUtils.toFileURI(obrXml);
        URI bundleJar;

        if (null == file) {
            bundleJar = ObrUtils.getArtifactURI(localRepository, project.getArtifact());
        } else {
            bundleJar = file.toURI();
        }

        Config userConfig = new Config();
        userConfig.setRemoteFile(true);

        if (null != bundleUrl) {
            // public URL differs from the bundle file location
            URI uri = URI.create(bundleUrl);
            log.info("Computed bundle uri: " + uri);
            userConfig.setRemoteBundle(uri);
        } else if (null != file) {
            // assume file will be deployed in remote repository, so find the remote relative location
            URI uri = URI.create(localRepository.pathOf(project.getArtifact()));
            log.info("Computed bundle uri: " + uri);
            userConfig.setRemoteBundle(uri);
        }

        update = new ObrUpdate(repositoryXml, obrXmlFile, project, mavenRepository, userConfig, log);
        update.parseRepositoryXml();

        update.updateRepository(bundleJar, null, null);

        update.writeRepositoryXml();

        if (downloadedRepositoryXml.exists()) {
            // ======== UPLOAD MODIFIED OBR ========
            log.info("Uploading " + repositoryName);
            remoteFile.put(downloadedRepositoryXml, repositoryName);
        }
    } catch (Exception e) {
        log.warn("Exception while updating remote OBR: " + e.getLocalizedMessage(), e);
    } finally {
        // ======== UNLOCK REMOTE OBR ========
        log.info("UNLOCK " + remoteFile + '/' + repositoryName);
        remoteFile.unlockFile(repositoryName);
        remoteFile.disconnect();

        if (null != downloadedRepositoryXml) {
            downloadedRepositoryXml.delete();
        }
    }
}

From source file:org.apache.felix.obrplugin.ObrIndex.java

License:Apache License

public void execute() throws MojoExecutionException {
    Log log = getLog();
    try {/*from   www. j av a2 s .  c om*/
        log.info("Indexing...");

        String repo = mavenRepository;
        if (repo == null) {
            repo = localRepository.getBasedir();
        }
        URI mavenRepoUri = new File(repo).toURI();

        URI repositoryXml = ObrUtils.findRepositoryXml(repo, obrRepository);

        log.info("Repository:   " + mavenRepoUri);
        log.info("OBR xml:      " + repositoryXml);
        log.info("URL template: " + urlTemplate);

        List<File> files = new ArrayList<File>();
        findAllJars(new File(repo), files);

        DataModelHelperImpl dmh = new DataModelHelperImpl();
        RepositoryImpl repository;

        File obrRepoFile = new File(repositoryXml);
        if (obrRepoFile.isFile()) {
            repository = (RepositoryImpl) dmh.repository(repositoryXml.toURL());
        } else {
            repository = new RepositoryImpl();
        }

        for (File file : files) {
            try {
                ResourceImpl resource = (ResourceImpl) dmh.createResource(file.toURI().toURL());
                if (resource != null) {
                    repository.addResource(resource);
                    doTemplate(mavenRepoUri, file, resource);
                    log.info("Adding resource: " + file);
                } else {
                    log.info("Ignoring non OSGi bundle: " + file);
                }
            } catch (Exception e) {
                log.warn("Error processing bundle: " + file + " " + e.getMessage());
            }
        }
        Writer writer = new FileWriter(obrRepoFile);
        try {
            dmh.writeRepository(repository, writer);
        } finally {
            writer.close();
        }
    } catch (Exception e) {
        log.warn("Exception while updating local OBR: " + e.getLocalizedMessage(), e);
    }
}

From source file:org.apache.felix.obrplugin.ObrRemoteClean.java

License:Apache License

public void execute() throws MojoExecutionException {
    String projectType = project.getPackaging();

    // ignore unsupported project types, useful when bundleplugin is configured in parent pom
    if (!supportedProjectTypes.contains(projectType)) {
        getLog().warn(//from ww w.  ja v a  2  s.  c o  m
                "Ignoring project type " + projectType + " - supportedProjectTypes = " + supportedProjectTypes);
        return;
    } else if ("NONE".equalsIgnoreCase(remoteOBR) || "false".equalsIgnoreCase(remoteOBR)) {
        getLog().info("Remote OBR update disabled (enable with -DremoteOBR)");
        return;
    }

    // if the user doesn't supply an explicit name for the remote OBR file, use the local name instead
    if (null == remoteOBR || remoteOBR.trim().length() == 0 || "true".equalsIgnoreCase(remoteOBR)) {
        remoteOBR = obrRepository;
    }

    URI tempURI = ObrUtils.findRepositoryXml("", remoteOBR);
    String repositoryName = new File(tempURI.getSchemeSpecificPart()).getName();

    Log log = getLog();

    RemoteFileManager remoteFile = new RemoteFileManager(m_wagonManager, settings, log);
    openRepositoryConnection(remoteFile);
    if (null == prefixUrl) {
        prefixUrl = remoteFile.toString();
    }

    // ======== LOCK REMOTE OBR ========
    log.info("LOCK " + remoteFile + '/' + repositoryName);
    remoteFile.lockFile(repositoryName, ignoreLock);
    File downloadedRepositoryXml = null;

    try {
        // ======== DOWNLOAD REMOTE OBR ========
        log.info("Downloading " + repositoryName);
        downloadedRepositoryXml = remoteFile.get(repositoryName, ".xml");

        URI repositoryXml = downloadedRepositoryXml.toURI();

        Config userConfig = new Config();
        userConfig.setRemoteFile(true);

        // Clean the downloaded file.
        Document doc = parseFile(new File(repositoryXml), initConstructor());
        Node finalDocument = cleanDocument(doc.getDocumentElement());

        if (finalDocument == null) {
            getLog().info("Nothing to clean in " + repositoryName);
        } else {
            writeToFile(repositoryXml, finalDocument); // Write the new file
            getLog().info("Repository " + repositoryName + " cleaned");
            // ======== UPLOAD MODIFIED OBR ========
            log.info("Uploading " + repositoryName);
            remoteFile.put(downloadedRepositoryXml, repositoryName);
        }
    } catch (Exception e) {
        log.warn("Exception while updating remote OBR: " + e.getLocalizedMessage(), e);
    } finally {
        // ======== UNLOCK REMOTE OBR ========
        log.info("UNLOCK " + remoteFile + '/' + repositoryName);
        remoteFile.unlockFile(repositoryName);
        remoteFile.disconnect();

        if (null != downloadedRepositoryXml) {
            downloadedRepositoryXml.delete();
        }
    }
}