blob: fd014e829782486b0d30db071e8d8dc5580c42f3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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
* -------- -------- -----------------------------------------------------------
* 20060728 145426 kathy@ca.ibm.com - Kathy Chan
*******************************************************************************/
package org.eclipse.jst.ws.internal.consumption.command.common;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.commands.ExecutionException;
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.wst.common.frameworks.datamodel.AbstractDataModelOperation;
public class ComputeProxyEndpointCommand extends AbstractDataModelOperation
{
private Boolean monitorService;
private Integer monitoredPort;
private String proxyEndpoint;
private String endpoint;
public ComputeProxyEndpointCommand()
{
}
/**
* @param monitoredPort The monitoredPort to set.
*/
public void setMonitoredPort(Integer monitoredPort)
{
this.monitoredPort = monitoredPort;
}
/**
* @param monitorService The monitorService to set.
*/
public void setMonitorService(Boolean monitorService)
{
this.monitorService = monitorService;
}
public String getEndpoint()
{
if (monitorService != null && monitorService.booleanValue() && monitoredPort != null)
{
// Use the endpoint that matches with the proxy the extension passes to us if it is set
if (proxyEndpoint != null) {
String location = proxyEndpoint;
try
{
URL url = new URL(location);
url = new URL(url.getProtocol(), url.getHost(), monitoredPort.intValue(), url.getFile());
return url.toString();
}
catch (MalformedURLException murle)
{
int protocolIndex = location.indexOf("://");
if (protocolIndex != -1)
{
String protocol = location.substring(0, protocolIndex+3);
int hostPortIndex = location.indexOf('/', protocolIndex+3);
String file;
if (hostPortIndex == -1)
{
hostPortIndex = location.length();
file = "";
}
else
file = location.substring(hostPortIndex, location.length());
String hostPort = location.substring(protocolIndex+3, hostPortIndex);
int hostIndex = hostPort.indexOf(':');
String host;
if (hostIndex != -1)
host = hostPort.substring(0, hostIndex+1);
else
host = hostPort + ':';
String newPort = String.valueOf(monitoredPort.intValue());
StringBuffer endpoint = new StringBuffer(protocol);
endpoint.append(host);
endpoint.append(newPort);
endpoint.append(file);
return endpoint.toString();
}
}
} else {
return endpoint;
}
}
return null;
}
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
{
return Status.OK_STATUS;
}
/**
* @param proxyEndpoint The proxyEndpoint to set.
*/
public void setProxyEndpoint(String proxyEndpoint) {
this.proxyEndpoint = proxyEndpoint;
}
/**
* @param endpoint The endpoint to set.
*/
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
}