public IStatus resolve()

in org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/resolve/IvyResolver.java [124:191]


    public IStatus resolve(Ivy ivy, ModuleDescriptor md, IProgressMonitor monitor, int step) {
        computeConfs(confInput, md);
        try {
            ivy.pushContext();

            IvyDEMessage.info("Resolving " + toString());

            IvyResolveJobListener ivyResolveJobListener = new IvyResolveJobListener(monitor, step);
            ivy.getEventManager().addIvyListener(ivyResolveJobListener);

            monitor.setTaskName("Resolve of " + toString());

            ResolveResult result = new ResolveResult();

            // context Classloader hook for commons logging used by httpclient
            // It will also be used by the SaxParserFactory in Ivy
            ClassLoader old = Thread.currentThread().getContextClassLoader();
            Thread.currentThread().setContextClassLoader(IvyResolver.class.getClassLoader());
            try {
                if (usePreviousResolveIfExist) {
                    result = resolveWithPrevious(ivy, md);
                } else {
                    result = doResolve(ivy, md);
                }

                if (result.getProblemMessages().isEmpty()) {
                    // only continue if we resolved correctly

                    IStatus retrieveStatus = maybeRetrieve(ivy, md, result, monitor);
                    if (!retrieveStatus.isOK()) {
                        return retrieveStatus;
                    }

                    postResolveOrRefresh(ivy, md, result, monitor);
                }
            } catch (ParseException e) {
                String errorMsg = "Error while parsing the Ivy file from " + this.toString() + "\n"
                        + e.getMessage();
                IvyDEMessage.error(errorMsg);
                return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, errorMsg, e);
            } catch (Exception e) {
                String errorMsg = "Error while resolving dependencies for " + this.toString()
                        + "\n" + e.getMessage();
                IvyDEMessage.error(errorMsg);
                return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, errorMsg, e);
            } finally {
                Thread.currentThread().setContextClassLoader(old);
                ivy.getEventManager().removeIvyListener(ivyResolveJobListener);
            }

            if (!result.getProblemMessages().isEmpty()) {
                MultiStatus multiStatus = new MultiStatus(IvyPlugin.ID, IStatus.ERROR,
                        "Impossible to resolve dependencies of " + md.getModuleRevisionId(), null);
                for (String s : result.getProblemMessages()) {
                    multiStatus.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
                            s, null));
                }
                return multiStatus;
            }

            return Status.OK_STATUS;
        } catch (Throwable e) {
            return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR, "The resolve job of "
                    + toString() + " has unexpectedly stopped", e);
        } finally {
            ivy.popContext();
        }
    }