blob: c193e2a4c373643904e8014f2387afaadab2a11c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2006 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
* -------- -------- -----------------------------------------------------------
* 20060419 132905 cbrealey@ca.ibm.com - Chris Brealey
* 20061004 159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
*******************************************************************************/
package org.eclipse.jst.ws.internal.axis.creation.ui.command;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
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.axis.consumption.core.context.AxisEmitterContext;
import org.eclipse.jst.ws.internal.axis.consumption.core.plugin.WebServiceAxisConsumptionCorePlugin;
import org.eclipse.jst.ws.internal.conformance.JAXRPCWebServiceAnalyzer;
import org.eclipse.wst.common.environment.IEnvironment;
import org.eclipse.wst.common.environment.StatusException;
import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.ServerCore;
import org.eclipse.wst.ws.internal.wsrt.IWebService;
public class BUAxisInputCommand extends AbstractDataModelOperation {
private IWebService ws_;
private String serverProject_;
private String javaBeanName_;
private String serviceServerTypeID_;
private IServer serviceExistingServer_ = null;
/**
* Default CTOR
*/
public BUAxisInputCommand() {
}
public BUAxisInputCommand(IWebService ws, String project) {
ws_ = ws;
serverProject_ = project;
}
public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
{
String serverInstanceId = ws_.getWebServiceInfo().getServerInstanceId();
String serverFactoryId = ws_.getWebServiceInfo().getServerFactoryId();
javaBeanName_ = ws_.getWebServiceInfo().getImplURL();
// The following "if" block drives validation of the given
// Java service class (javaBeanName_) against JAX-RPC if the
// JAX-RPC validation preference is switched on.
// For the most part, the JAX-RPC analyzer returns warnings
// for violations of the JAX-RPC spec, and errors only if
// actual JDT model navigation fails due to bad classpaths.
// This allows users the choice of heeding or ignoring the
// messages returned by the analyzer.
IEnvironment environment = getEnvironment();
AxisEmitterContext context = WebServiceAxisConsumptionCorePlugin.getInstance().getAxisEmitterContext();
if (javaBeanName_ != null && context.isValidateAgainstJAXRPCEnabled())
{
JAXRPCWebServiceAnalyzer analyzer = new JAXRPCWebServiceAnalyzer();
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(serverProject_);
if (project != null)
{
IStatus status = analyzer.analyze(project,javaBeanName_,monitor);
if (!status.isOK())
{
try
{
environment.getStatusHandler().report(status);
}
catch (StatusException e)
{
return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"",null);
}
}
}
}
if (serverInstanceId != null) { // server exists
serviceExistingServer_ = ServerCore.findServer(serverInstanceId);
if (serviceExistingServer_ != null)
{
serviceServerTypeID_ = serviceExistingServer_.getServerType().getId();
}
}
else
{
serviceServerTypeID_ = serverFactoryId;
}
return Status.OK_STATUS;
}
/**
* @return Returns the serverProject.
*/
public String getServerProject()
{
return serverProject_;
}
public String getServiceServerTypeID()
{
return serviceServerTypeID_;
}
public String getJavaBeanName() {
return javaBeanName_;
}
public IServer getServiceExistingServer()
{
return serviceExistingServer_;
}
}