blob: 49919a67cc1abce1c7bb8ebb5c0d96f9421d143f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IONA Technologies PLC
* 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:
* IONA Technologies PLC - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.internal.cxf.creation.core.commands;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jst.ws.internal.cxf.core.CXFCorePlugin;
import org.eclipse.jst.ws.internal.cxf.core.model.WSDL2JavaDataModel;
import org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCoreMessages;
import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
/**
* This is stop gap workaround for bugs <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=243286">#243286</a>
* and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=243290">#243290</a>
*
* @author sclarke
*
*/
public class WSDL2JavaProjectSelectionCommand extends AbstractDataModelOperation {
private WSDL2JavaDataModel model;
private IProject initialProject;
private IProject serverProject;
private IProject currentProject;
public WSDL2JavaProjectSelectionCommand(WSDL2JavaDataModel model) {
this.model = model;
}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
IStatus status = Status.OK_STATUS;
if (currentProject == null && initialProject == null && serverProject != null) {
status = Status.OK_STATUS;
model.setProjectName(serverProject.getName());
return status;
}
if (currentProject == null && initialProject != null && !initialProject.equals(serverProject)) {
status = new Status(IStatus.ERROR, CXFCorePlugin.PLUGIN_ID, CXFCreationCoreMessages.bind(
CXFCreationCoreMessages.WSDL2JAVA_PROJECT_SELECTION_ERROR, new Object[]{
serverProject.getName(), initialProject.getName()}));
} else {
model.setProjectName(currentProject == null ? initialProject.getProject().getName() :
currentProject.getProject().getName());
status = Status.OK_STATUS;
}
return status;
}
/*
* The value to test against. Make sure the "Service Project"
* and the project that contains the wsdl file match.
*/
public void setServerProject(IProject serverProject) {
this.serverProject = serverProject;
}
/*
*
* The initial project will be null when there's nothing selected in the project explorer
* This forces the user to make a selection thus setting the project current project
* below.
*
* If there was an initial selection and the user changes from one top down service
* type to another then we had to check.
*/
public void setInitialProject(IProject project) {
initialProject = project;
}
/*
* If there was an initial selection in the project explorer the above value is set and
* this is set to null.
*
* This will change however if the user modifies the text field or browses for a
* wsdl file. Upon selecting a file in a valid location, this value gets set.
* No problem in that situation.
*/
public void setProject(IProject project) {
this.currentProject = project;
}
}