org.eclipse.jst.j2ee.internal.UpdateManifestOperation.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jst.j2ee.internal.UpdateManifestOperation.java

Source

/*******************************************************************************
 * Copyright (c) 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
/*
 * Created on Jan 17, 2005
 */
package org.eclipse.jst.j2ee.internal;

import java.lang.reflect.InvocationTargetException;

import org.eclipse.core.resources.IProject;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifest;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifestImpl;
import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
import org.eclipse.wst.common.frameworks.internal.enablement.nonui.WFTWrappedException;

/**
 * @deprecated as of wtp 3.2
 * @author jialin
 */
public class UpdateManifestOperation implements org.eclipse.jface.operation.IRunnableWithProgress {
    protected String projectName;
    protected String classPathValue;
    protected boolean replace;

    /**
     * UpdateManifestOperation constructor comment.
     * @deprecated as of wtp 3.2
     */
    public UpdateManifestOperation(String aProjectName, String aSpaceDelimitedPath, boolean replaceInsteadOfMerge) {
        super();
        projectName = aProjectName;
        classPathValue = aSpaceDelimitedPath;
        replace = replaceInsteadOfMerge;
    }

    protected IProject getProject() {
        return J2EEPlugin.getWorkspace().getRoot().getProject(projectName);
    }

    /**
     * Runs this operation.  Progress should be reported to the given progress monitor.
     * This method is usually invoked by an <code>IRunnableContext</code>'s <code>run</code> method,
     * which supplies the progress monitor.
     * A request to cancel the operation should be honored and acknowledged 
     * by throwing <code>InterruptedException</code>.
     *
     * @param monitor the progress monitor to use to display progress and receive
     *   requests for cancelation
     * @exception InvocationTargetException if the run method must propagate a checked exception,
     *    it should wrap it inside an <code>InvocationTargetException</code>; runtime exceptions are automatically
     *  wrapped in an <code>InvocationTargetException</code> by the calling context
     * @exception InterruptedException if the operation detects a request to cancel, 
     *  using <code>IProgressMonitor.isCanceled()</code>, it should exit by throwing 
     *  <code>InterruptedException</code>
     *
     * @see IRunnableContext#run
     */
    public void run(org.eclipse.core.runtime.IProgressMonitor monitor)
            throws java.lang.reflect.InvocationTargetException, InterruptedException {
        IProject p = getProject();
        try {
            ArchiveManifest mf = J2EEProjectUtilities.readManifest(p);
            if (mf == null)
                mf = new ArchiveManifestImpl();
            mf.addVersionIfNecessary();
            if (replace)
                mf.setClassPath(classPathValue);
            else
                mf.mergeClassPath(ArchiveUtil.getTokens(classPathValue));
            J2EEProjectUtilities.writeManifest(p, mf);
        } catch (java.io.IOException ex) {
            throw new WFTWrappedException(ex);
        }
    }
}