Search in sources :

Example 1 with ManifestAndLocation

use of org.apache.ivy.osgi.repo.ManifestAndLocation in project ant-ivy by apache.

the class BuildOBRTask method doExecute.

public void doExecute() throws BuildException {
    if (file == null) {
        throw new BuildException("No output file specified: use the attribute 'out'");
    }
    Iterable<ManifestAndLocation> it;
    if (resolverName != null) {
        if (baseDir != null) {
            throw new BuildException("specify only one of 'resolver' or 'baseDir'");
        }
        if (cacheName != null) {
            throw new BuildException("specify only one of 'resolver' or 'cache'");
        }
        Ivy ivy = getIvyInstance();
        IvySettings settings = ivy.getSettings();
        DependencyResolver resolver = settings.getResolver(resolverName);
        if (resolver == null) {
            throw new BuildException("the resolver '" + resolverName + "' was not found");
        }
        if (!(resolver instanceof BasicResolver)) {
            throw new BuildException("the type of resolver '" + resolver.getClass().getName() + "' is not supported.");
        }
        it = new ResolverManifestIterable((BasicResolver) resolver);
    } else if (baseDir != null) {
        if (cacheName != null) {
            throw new BuildException("specify only one of 'baseDir' or 'cache'");
        }
        if (!baseDir.isDirectory()) {
            throw new BuildException(baseDir + " is not a directory");
        }
        it = new FSManifestIterable(baseDir);
    } else if (cacheName != null) {
        Ivy ivy = getIvyInstance();
        RepositoryCacheManager cacheManager = ivy.getSettings().getRepositoryCacheManager(cacheName);
        if (!(cacheManager instanceof DefaultRepositoryCacheManager)) {
            throw new BuildException("the type of cache '" + cacheManager.getClass().getName() + "' is not supported.");
        }
        File basedir = ((DefaultRepositoryCacheManager) cacheManager).getBasedir();
        it = new FSManifestIterable(basedir);
    } else {
        prepareAndCheck();
        try {
            it = new ArtifactReportManifestIterable(getArtifactReports(), sourceTypes);
        } catch (ParseException e) {
            throw new BuildException("Impossible to parse the artifact reports: " + e.getMessage(), e);
        }
    }
    OutputStream out;
    try {
        out = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        throw new BuildException(file + " was not found", e);
    }
    ContentHandler hd;
    try {
        hd = OBRXMLWriter.newHandler(out, encoding, indent);
    } catch (TransformerConfigurationException e) {
        throw new BuildException("Sax configuration error: " + e.getMessage(), e);
    }
    class AntMessageLogger2 extends AntMessageLogger {

        AntMessageLogger2() {
            super(BuildOBRTask.this);
        }
    }
    IvyContext.getContext().getMessageLogger();
    Message.setDefaultLogger(new AntMessageLogger2());
    try {
        OBRXMLWriter.writeManifests(it, hd, quiet);
    } catch (SAXException e) {
        throw new BuildException("Sax serialisation error: " + e.getMessage(), e);
    }
    try {
        out.flush();
        out.close();
    } catch (IOException e) {
    // don't care
    }
    Message.sumupProblems();
}
Also used : DefaultRepositoryCacheManager(org.apache.ivy.core.cache.DefaultRepositoryCacheManager) RepositoryCacheManager(org.apache.ivy.core.cache.RepositoryCacheManager) TransformerConfigurationException(javax.xml.transform.TransformerConfigurationException) OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) FileNotFoundException(java.io.FileNotFoundException) IvySettings(org.apache.ivy.core.settings.IvySettings) ArtifactReportManifestIterable(org.apache.ivy.osgi.repo.ArtifactReportManifestIterable) IOException(java.io.IOException) Ivy(org.apache.ivy.Ivy) DefaultRepositoryCacheManager(org.apache.ivy.core.cache.DefaultRepositoryCacheManager) ContentHandler(org.xml.sax.ContentHandler) DependencyResolver(org.apache.ivy.plugins.resolver.DependencyResolver) SAXException(org.xml.sax.SAXException) FSManifestIterable(org.apache.ivy.osgi.repo.FSManifestIterable) FileOutputStream(java.io.FileOutputStream) BasicResolver(org.apache.ivy.plugins.resolver.BasicResolver) ResolverManifestIterable(org.apache.ivy.osgi.repo.ResolverManifestIterable) ManifestAndLocation(org.apache.ivy.osgi.repo.ManifestAndLocation) BuildException(org.apache.tools.ant.BuildException) ParseException(java.text.ParseException) File(java.io.File)

Example 2 with ManifestAndLocation

use of org.apache.ivy.osgi.repo.ManifestAndLocation in project ant-ivy by apache.

the class OBRXMLWriter method writeManifests.

public static void writeManifests(Iterable<ManifestAndLocation> manifestAndLocations, ContentHandler handler, boolean quiet) throws SAXException {
    int level = quiet ? Message.MSG_DEBUG : Message.MSG_WARN;
    handler.startDocument();
    AttributesImpl atts = new AttributesImpl();
    handler.startElement("", RepositoryHandler.REPOSITORY, RepositoryHandler.REPOSITORY, atts);
    int nbOk = 0;
    int nbRejected = 0;
    for (ManifestAndLocation manifestAndLocation : manifestAndLocations) {
        BundleInfo bundleInfo;
        try {
            bundleInfo = ManifestParser.parseManifest(manifestAndLocation.getManifest());
            bundleInfo.addArtifact(new BundleArtifact(false, manifestAndLocation.getUri(), null));
            if (manifestAndLocation.getSourceURI() != null) {
                bundleInfo.addArtifact(new BundleArtifact(true, manifestAndLocation.getSourceURI(), null));
            }
            nbOk++;
        } catch (ParseException e) {
            nbRejected++;
            IvyContext.getContext().getMessageLogger().log("Rejected " + manifestAndLocation.getUri() + ": " + e.getMessage(), level);
            continue;
        }
        saxBundleInfo(bundleInfo, handler);
    }
    handler.endElement("", RepositoryHandler.REPOSITORY, RepositoryHandler.REPOSITORY);
    handler.endDocument();
    Message.info(nbOk + " bundle" + (nbOk > 1 ? "s" : "") + " added, " + nbRejected + " bundle" + (nbRejected > 1 ? "s" : "") + " rejected.");
}
Also used : AttributesImpl(org.xml.sax.helpers.AttributesImpl) BundleInfo(org.apache.ivy.osgi.core.BundleInfo) BundleArtifact(org.apache.ivy.osgi.core.BundleArtifact) ManifestAndLocation(org.apache.ivy.osgi.repo.ManifestAndLocation) ParseException(java.text.ParseException)

Aggregations

ParseException (java.text.ParseException)2 ManifestAndLocation (org.apache.ivy.osgi.repo.ManifestAndLocation)2 File (java.io.File)1 FileNotFoundException (java.io.FileNotFoundException)1 FileOutputStream (java.io.FileOutputStream)1 IOException (java.io.IOException)1 OutputStream (java.io.OutputStream)1 TransformerConfigurationException (javax.xml.transform.TransformerConfigurationException)1 Ivy (org.apache.ivy.Ivy)1 DefaultRepositoryCacheManager (org.apache.ivy.core.cache.DefaultRepositoryCacheManager)1 RepositoryCacheManager (org.apache.ivy.core.cache.RepositoryCacheManager)1 IvySettings (org.apache.ivy.core.settings.IvySettings)1 BundleArtifact (org.apache.ivy.osgi.core.BundleArtifact)1 BundleInfo (org.apache.ivy.osgi.core.BundleInfo)1 ArtifactReportManifestIterable (org.apache.ivy.osgi.repo.ArtifactReportManifestIterable)1 FSManifestIterable (org.apache.ivy.osgi.repo.FSManifestIterable)1 ResolverManifestIterable (org.apache.ivy.osgi.repo.ResolverManifestIterable)1 BasicResolver (org.apache.ivy.plugins.resolver.BasicResolver)1 DependencyResolver (org.apache.ivy.plugins.resolver.DependencyResolver)1 BuildException (org.apache.tools.ant.BuildException)1