HadoopApplicationLaunchShortcut.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:
网格计算
开发平台:
Java
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.hadoop.eclipse.launch;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.logging.Logger;
- import org.apache.hadoop.eclipse.servers.RunOnHadoopWizard;
- import org.eclipse.core.resources.IFile;
- import org.eclipse.core.resources.IResource;
- import org.eclipse.core.runtime.CoreException;
- import org.eclipse.debug.core.ILaunchConfiguration;
- import org.eclipse.debug.core.ILaunchConfigurationType;
- import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
- import org.eclipse.jdt.core.IJavaProject;
- import org.eclipse.jdt.core.IType;
- import org.eclipse.jdt.core.JavaCore;
- import org.eclipse.jdt.internal.debug.ui.launcher.JavaApplicationLaunchShortcut;
- import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
- import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
- import org.eclipse.jdt.launching.JavaRuntime;
- import org.eclipse.jface.wizard.IWizard;
- import org.eclipse.jface.wizard.WizardDialog;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Shell;
- /**
- * Add a shortcut "Run on Hadoop" to the Run menu
- */
- public class HadoopApplicationLaunchShortcut extends
- JavaApplicationLaunchShortcut {
- static Logger log =
- Logger.getLogger(HadoopApplicationLaunchShortcut.class.getName());
- // private ActionDelegate delegate = new RunOnHadoopActionDelegate();
- public HadoopApplicationLaunchShortcut() {
- }
- /* @inheritDoc */
- @Override
- protected ILaunchConfiguration findLaunchConfiguration(IType type,
- ILaunchConfigurationType configType) {
- // Find an existing or create a launch configuration (Standard way)
- ILaunchConfiguration iConf =
- super.findLaunchConfiguration(type, configType);
- ILaunchConfigurationWorkingCopy iConfWC;
- try {
- /*
- * Tune the default launch configuration: setup run-time classpath
- * manually
- */
- iConfWC = iConf.getWorkingCopy();
- iConfWC.setAttribute(
- IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH, false);
- List<String> classPath = new ArrayList<String>();
- IResource resource = type.getResource();
- IJavaProject project =
- (IJavaProject) resource.getProject().getNature(JavaCore.NATURE_ID);
- IRuntimeClasspathEntry cpEntry =
- JavaRuntime.newDefaultProjectClasspathEntry(project);
- classPath.add(0, cpEntry.getMemento());
- iConfWC.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH,
- classPath);
- } catch (CoreException e) {
- e.printStackTrace();
- // FIXME Error dialog
- return null;
- }
- /*
- * Update the selected configuration with a specific Hadoop location
- * target
- */
- IResource resource = type.getResource();
- if (!(resource instanceof IFile))
- return null;
- RunOnHadoopWizard wizard =
- new RunOnHadoopWizard((IFile) resource, iConfWC);
- WizardDialog dialog =
- new WizardDialog(Display.getDefault().getActiveShell(), wizard);
- dialog.create();
- dialog.setBlockOnOpen(true);
- if (dialog.open() != WizardDialog.OK)
- return null;
- try {
- iConfWC.doSave();
- } catch (CoreException e) {
- e.printStackTrace();
- // FIXME Error dialog
- return null;
- }
- return iConfWC;
- }
- /**
- * Was used to run the RunOnHadoopWizard inside and provide it a
- * ProgressMonitor
- */
- static class Dialog extends WizardDialog {
- public Dialog(Shell parentShell, IWizard newWizard) {
- super(parentShell, newWizard);
- }
- @Override
- public void create() {
- super.create();
- ((RunOnHadoopWizard) getWizard())
- .setProgressMonitor(getProgressMonitor());
- }
- }
- }