Search in sources :

Example 81 with BuildException

use of org.apache.tools.ant.BuildException in project ant by apache.

the class AntXMLContext method setBuildFile.

/**
 * sets the build file to which the XML context belongs
 * @param buildFile  ant build file
 */
public void setBuildFile(File buildFile) {
    this.buildFile = buildFile;
    if (buildFile != null) {
        this.buildFileParent = new File(buildFile.getParent());
        implicitTarget.setLocation(new Location(buildFile.getAbsolutePath()));
        try {
            setBuildFile(FileUtils.getFileUtils().getFileURL(buildFile));
        } catch (MalformedURLException ex) {
            throw new BuildException(ex);
        }
    } else {
        this.buildFileParent = null;
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) Location(org.apache.tools.ant.Location)

Example 82 with BuildException

use of org.apache.tools.ant.BuildException in project ant by apache.

the class ProjectHelper2 method parse.

/**
 * Parses the project file, configuring the project as it goes.
 *
 * @param project the current project
 * @param source  the xml source
 * @param handler the root handler to use (contains the current context)
 * @exception BuildException if the configuration is invalid or cannot
 *                           be read
 */
public void parse(Project project, Object source, RootHandler handler) throws BuildException {
    AntXMLContext context = handler.context;
    File buildFile = null;
    URL url = null;
    String buildFileName = null;
    if (source instanceof File) {
        buildFile = (File) source;
    } else if (source instanceof URL) {
        url = (URL) source;
    } else if (source instanceof Resource) {
        FileProvider fp = ((Resource) source).as(FileProvider.class);
        if (fp != null) {
            buildFile = fp.getFile();
        } else {
            URLProvider up = ((Resource) source).as(URLProvider.class);
            if (up != null) {
                url = up.getURL();
            }
        }
    }
    if (buildFile != null) {
        buildFile = FILE_UTILS.normalize(buildFile.getAbsolutePath());
        context.setBuildFile(buildFile);
        buildFileName = buildFile.toString();
    } else if (url != null) {
        try {
            context.setBuildFile((File) null);
            context.setBuildFile(url);
        } catch (java.net.MalformedURLException ex) {
            throw new BuildException(ex);
        }
        buildFileName = url.toString();
    } else {
        throw new BuildException("Source " + source.getClass().getName() + " not supported by this plugin");
    }
    InputStream inputStream = null;
    InputSource inputSource = null;
    ZipFile zf = null;
    try {
        /**
         * SAX 2 style parser used to parse the given file.
         */
        XMLReader parser = JAXPUtils.getNamespaceXMLReader();
        String uri = null;
        if (buildFile != null) {
            uri = FILE_UTILS.toURI(buildFile.getAbsolutePath());
            inputStream = Files.newInputStream(buildFile.toPath());
        } else {
            uri = url.toString();
            int pling = -1;
            if (uri.startsWith("jar:file") && (pling = uri.indexOf("!/")) > -1) {
                zf = new ZipFile(org.apache.tools.ant.launch.Locator.fromJarURI(uri), "UTF-8");
                inputStream = zf.getInputStream(zf.getEntry(uri.substring(pling + 2)));
            } else {
                URLConnection conn = url.openConnection();
                conn.setUseCaches(false);
                inputStream = conn.getInputStream();
            }
        }
        inputSource = new InputSource(inputStream);
        if (uri != null) {
            inputSource.setSystemId(uri);
        }
        project.log("parsing buildfile " + buildFileName + " with URI = " + uri + (zf != null ? " from a zip file" : ""), Project.MSG_VERBOSE);
        DefaultHandler hb = handler;
        parser.setContentHandler(hb);
        parser.setEntityResolver(hb);
        parser.setErrorHandler(hb);
        parser.setDTDHandler(hb);
        parser.parse(inputSource);
    } catch (SAXParseException exc) {
        Location location = new Location(exc.getSystemId(), exc.getLineNumber(), exc.getColumnNumber());
        Throwable t = exc.getException();
        if (t instanceof BuildException) {
            BuildException be = (BuildException) t;
            if (be.getLocation() == Location.UNKNOWN_LOCATION) {
                be.setLocation(location);
            }
            throw be;
        }
        throw new BuildException(exc.getMessage(), t == null ? exc : t, location);
    } catch (SAXException exc) {
        Throwable t = exc.getException();
        if (t instanceof BuildException) {
            throw (BuildException) t;
        }
        throw new BuildException(exc.getMessage(), t == null ? exc : t);
    } catch (FileNotFoundException exc) {
        throw new BuildException(exc);
    } catch (UnsupportedEncodingException exc) {
        throw new BuildException("Encoding of project file " + buildFileName + " is invalid.", exc);
    } catch (IOException exc) {
        throw new BuildException("Error reading project file " + buildFileName + ": " + exc.getMessage(), exc);
    } finally {
        FileUtils.close(inputStream);
        ZipFile.closeQuietly(zf);
    }
}
Also used : InputSource(org.xml.sax.InputSource) URLProvider(org.apache.tools.ant.types.resources.URLProvider) InputStream(java.io.InputStream) Resource(org.apache.tools.ant.types.Resource) FileNotFoundException(java.io.FileNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) URL(java.net.URL) ExtensionPoint(org.apache.tools.ant.ExtensionPoint) URLConnection(java.net.URLConnection) DefaultHandler(org.xml.sax.helpers.DefaultHandler) SAXException(org.xml.sax.SAXException) ZipFile(org.apache.tools.zip.ZipFile) SAXParseException(org.xml.sax.SAXParseException) FileProvider(org.apache.tools.ant.types.resources.FileProvider) BuildException(org.apache.tools.ant.BuildException) ZipFile(org.apache.tools.zip.ZipFile) File(java.io.File) XMLReader(org.xml.sax.XMLReader) Location(org.apache.tools.ant.Location)

Example 83 with BuildException

use of org.apache.tools.ant.BuildException in project ant by apache.

the class ProjectHelper2 method parseUnknownElement.

/**
 * Parse an unknown element from a url
 *
 * @param project the current project
 * @param source  the url containing the task
 * @return a configured task
 * @exception BuildException if an error occurs
 */
public UnknownElement parseUnknownElement(Project project, URL source) throws BuildException {
    Target dummyTarget = new Target();
    dummyTarget.setProject(project);
    AntXMLContext context = new AntXMLContext(project);
    context.addTarget(dummyTarget);
    context.setImplicitTarget(dummyTarget);
    parse(context.getProject(), source, new RootHandler(context, elementHandler));
    Task[] tasks = dummyTarget.getTasks();
    if (tasks.length != 1) {
        throw new BuildException("No tasks defined");
    }
    return (UnknownElement) tasks[0];
}
Also used : Target(org.apache.tools.ant.Target) Task(org.apache.tools.ant.Task) UnknownElement(org.apache.tools.ant.UnknownElement) BuildException(org.apache.tools.ant.BuildException)

Example 84 with BuildException

use of org.apache.tools.ant.BuildException in project ant by apache.

the class ProjectHelperImpl method parse.

/**
 * Parses the project file, configuring the project as it goes.
 *
 * @param project project instance to be configured.
 * @param source the source from which the project is read.
 * @exception BuildException if the configuration is invalid or cannot
 *                           be read.
 */
public void parse(Project project, Object source) throws BuildException {
    if (!(source instanceof File)) {
        throw new BuildException("Only File source supported by " + "default plugin");
    }
    File bFile = (File) source;
    InputStream inputStream = null;
    InputSource inputSource = null;
    this.project = project;
    this.buildFile = new File(bFile.getAbsolutePath());
    buildFileParent = new File(this.buildFile.getParent());
    try {
        try {
            parser = JAXPUtils.getParser();
        } catch (BuildException e) {
            parser = new XMLReaderAdapter(JAXPUtils.getXMLReader());
        }
        String uri = FILE_UTILS.toURI(bFile.getAbsolutePath());
        inputStream = Files.newInputStream(bFile.toPath());
        inputSource = new InputSource(inputStream);
        inputSource.setSystemId(uri);
        project.log("parsing buildfile " + bFile + " with URI = " + uri, Project.MSG_VERBOSE);
        HandlerBase hb = new RootHandler(this);
        parser.setDocumentHandler(hb);
        parser.setEntityResolver(hb);
        parser.setErrorHandler(hb);
        parser.setDTDHandler(hb);
        parser.parse(inputSource);
    } catch (SAXParseException exc) {
        Location location = new Location(exc.getSystemId(), exc.getLineNumber(), exc.getColumnNumber());
        Throwable t = exc.getException();
        if (t instanceof BuildException) {
            BuildException be = (BuildException) t;
            if (be.getLocation() == Location.UNKNOWN_LOCATION) {
                be.setLocation(location);
            }
            throw be;
        }
        throw new BuildException(exc.getMessage(), t, location);
    } catch (SAXException exc) {
        Throwable t = exc.getException();
        if (t instanceof BuildException) {
            throw (BuildException) t;
        }
        throw new BuildException(exc.getMessage(), t);
    } catch (FileNotFoundException exc) {
        throw new BuildException(exc);
    } catch (UnsupportedEncodingException exc) {
        throw new BuildException("Encoding of project file is invalid.", exc);
    } catch (IOException exc) {
        throw new BuildException("Error reading project file: " + exc.getMessage(), exc);
    } finally {
        FileUtils.close(inputStream);
    }
}
Also used : InputSource(org.xml.sax.InputSource) InputStream(java.io.InputStream) FileNotFoundException(java.io.FileNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) SAXException(org.xml.sax.SAXException) SAXParseException(org.xml.sax.SAXParseException) HandlerBase(org.xml.sax.HandlerBase) XMLReaderAdapter(org.xml.sax.helpers.XMLReaderAdapter) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) Location(org.apache.tools.ant.Location)

Example 85 with BuildException

use of org.apache.tools.ant.BuildException in project ant by apache.

the class DefaultInputHandler method handleInput.

/**
 * Prompts and requests input.  May loop until a valid input has
 * been entered.
 * @param request the request to handle
 * @throws BuildException if not possible to read from console
 */
public void handleInput(InputRequest request) throws BuildException {
    String prompt = getPrompt(request);
    BufferedReader r = null;
    boolean success = false;
    try {
        r = new BufferedReader(new InputStreamReader(getInputStream()));
        do {
            System.err.println(prompt);
            System.err.flush();
            try {
                String input = r.readLine();
                request.setInput(input);
            } catch (IOException e) {
                throw new BuildException("Failed to read input from" + " Console.", e);
            }
        } while (!request.isInputValid());
        success = true;
    } finally {
        if (r != null) {
            try {
                r.close();
            } catch (IOException e) {
                if (success) {
                    // NOSONAR
                    throw new BuildException("Failed to close input.", e);
                }
            }
        }
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) BuildException(org.apache.tools.ant.BuildException)

Aggregations

BuildException (org.apache.tools.ant.BuildException)930 IOException (java.io.IOException)390 File (java.io.File)365 DirectoryScanner (org.apache.tools.ant.DirectoryScanner)75 ArrayList (java.util.ArrayList)65 InputStream (java.io.InputStream)62 Project (org.apache.tools.ant.Project)61 Resource (org.apache.tools.ant.types.Resource)58 FileSet (org.apache.tools.ant.types.FileSet)52 Path (org.apache.tools.ant.types.Path)52 Commandline (org.apache.tools.ant.types.Commandline)51 Properties (java.util.Properties)50 OutputStream (java.io.OutputStream)44 FileOutputStream (java.io.FileOutputStream)42 FileResource (org.apache.tools.ant.types.resources.FileResource)42 FileInputStream (java.io.FileInputStream)41 URL (java.net.URL)40 BufferedReader (java.io.BufferedReader)37 Writer (java.io.Writer)37 MalformedURLException (java.net.MalformedURLException)37