blob: 4aae82ee1c3a001df764f99c0badbfac6fc9d32f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 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
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20100420 307152 kchong@ca.ibm.com - Keith Chong, Web Service deployment fails without web.xml
*
*******************************************************************************/
package org.eclipse.jst.ws.internal.axis.creation.ui.command;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.jst.j2ee.internal.J2EEConstants;
import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
import org.eclipse.jst.jee.project.facet.IAppClientCreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.IConnectorCreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.ICreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.IEJBCreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.IEarCreateDeploymentFilesDataModelProperties;
import org.eclipse.jst.jee.project.facet.IWebCreateDeploymentFilesDataModelProperties;
import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.environment.IEnvironment;
import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
public class CreateDeploymentDescriptorCommand extends AbstractDataModelOperation {
private IProject project;
public CreateDeploymentDescriptorCommand() {
super();
}
public CreateDeploymentDescriptorCommand(IDataModel model) {
super(model);
}
public void setServerProject(IProject serverProject)
{
this.project = serverProject;
}
protected boolean hasDeploymentDescriptor(IProject project) {
boolean ret = true;
IPath ddFilePath = null;
if (JavaEEProjectUtilities.isEARProject(project)) {
ddFilePath = new Path(J2EEConstants.APPLICATION_DD_URI);
} else if (JavaEEProjectUtilities.isEJBProject(project)) {
ddFilePath = new Path(J2EEConstants.EJBJAR_DD_URI);
} else if (JavaEEProjectUtilities.isDynamicWebProject(project)) {
ddFilePath = new Path(J2EEConstants.WEBAPP_DD_URI);
} else if (JavaEEProjectUtilities.isApplicationClientProject(project)) {
ddFilePath = new Path(J2EEConstants.APP_CLIENT_DD_URI);
} else if (JavaEEProjectUtilities.isJCAProject(project)) {
ddFilePath = new Path(J2EEConstants.RAR_DD_URI);
}
IVirtualComponent component = ComponentCore.createComponent(project);
if (component.getRootFolder() != null
&& component.getRootFolder().getUnderlyingFolder() != null) {
IFile ddXmlFile = component.getRootFolder().getUnderlyingFolder()
.getFile(ddFilePath);
ret = ddXmlFile.exists();
}
return ret;
}
protected IDataModel getDataModel(IProject project) {
Class dataModelClass = null;
if (JavaEEProjectUtilities.isEARProject(project)) {
dataModelClass = IEarCreateDeploymentFilesDataModelProperties.class;
} else if (JavaEEProjectUtilities.isEJBProject(project)) {
dataModelClass = IEJBCreateDeploymentFilesDataModelProperties.class;
} else if (JavaEEProjectUtilities.isDynamicWebProject(project)) {
dataModelClass = IWebCreateDeploymentFilesDataModelProperties.class;
} else if (JavaEEProjectUtilities.isApplicationClientProject(project)) {
dataModelClass = IAppClientCreateDeploymentFilesDataModelProperties.class;
} else if (JavaEEProjectUtilities.isJCAProject(project)) {
dataModelClass = IConnectorCreateDeploymentFilesDataModelProperties.class;
}
IDataModel dataModel = DataModelFactory.createDataModel(dataModelClass);
dataModel.setProperty(
ICreateDeploymentFilesDataModelProperties.TARGET_PROJECT,
project);
return dataModel;
}
public IStatus execute(IProgressMonitor monitor, IAdaptable info) {
IEnvironment environment = getEnvironment();
IStatus status = Status.OK_STATUS;
if (project != null && !hasDeploymentDescriptor(project)) {
try {
getDataModel(project).getDefaultOperation().execute(new NullProgressMonitor(), null);
} catch (ExecutionException e) {
status = StatusUtils.errorStatus(e.getMessage(), e);
}
}
if (status.getSeverity() == Status.ERROR) {
environment.getStatusHandler().reportError(status);
return status;
}
return status;
}
}