blob: bc35ec542749e20dc4fb646d656414caf1b44e51 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Composent, Inc. 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:
* Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.remoteservice.client;
import java.util.Arrays;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ecf.remoteservice.IRemoteCall;
/**
* Implementation of {@link IRemoteCallable}.
*
* @since 4.0
*/
public class RemoteCallable implements IRemoteCallable {
protected String method;
protected String resourcePath;
protected IRemoteCallParameter[] defaultParameters;
protected long defaultTimeout;
protected IRemoteCallableRequestType requestType;
public RemoteCallable(String method, String resourcePath, IRemoteCallParameter[] defaultParameters, IRemoteCallableRequestType requestType, long defaultTimeout) {
this.method = method;
Assert.isNotNull(method);
this.resourcePath = resourcePath;
Assert.isNotNull(resourcePath);
this.defaultParameters = defaultParameters;
this.requestType = requestType;
this.defaultTimeout = defaultTimeout;
}
public RemoteCallable(String method, String resourcePath, IRemoteCallParameter[] defaultParameters, IRemoteCallableRequestType requestType) {
this(method, resourcePath, defaultParameters, requestType, IRemoteCall.DEFAULT_TIMEOUT);
}
public String getMethod() {
return method;
}
public String getResourcePath() {
return resourcePath;
}
public IRemoteCallParameter[] getDefaultParameters() {
return defaultParameters;
}
public IRemoteCallableRequestType getRequestType() {
return requestType;
}
public long getDefaultTimeout() {
return defaultTimeout;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("RemoteCallable[defaultParameters="); //$NON-NLS-1$
buffer.append(defaultParameters != null ? Arrays.asList(defaultParameters) : null);
buffer.append(", defaultTimeout="); //$NON-NLS-1$
buffer.append(defaultTimeout);
buffer.append(", method="); //$NON-NLS-1$
buffer.append(method);
buffer.append(", requestType="); //$NON-NLS-1$
buffer.append(requestType);
buffer.append(", resourcePath="); //$NON-NLS-1$
buffer.append(resourcePath);
buffer.append("]"); //$NON-NLS-1$
return buffer.toString();
}
/**
* @since 8.5
*/
public static class Builder {
private final String methodName;
private final String resourcePath;
private IRemoteCallParameter[] defaultParameters;
private long timeout = IRemoteCall.DEFAULT_TIMEOUT;
private IRemoteCallableRequestType requestType;
public Builder(String methodName, String resourcePath) {
Assert.isNotNull(methodName);
this.methodName = methodName;
this.resourcePath = resourcePath;
Assert.isNotNull(resourcePath);
}
public Builder setDefaultParameters(IRemoteCallParameter[] defaultParameters) {
this.defaultParameters = defaultParameters;
return this;
}
public Builder setRequestTimeout(long timeout) {
this.timeout = timeout;
return this;
}
public Builder setRequestType(IRemoteCallableRequestType requestType) {
this.requestType = requestType;
return this;
}
public IRemoteCallable build() {
return new RemoteCallable(this.methodName, this.resourcePath, this.defaultParameters, this.requestType, this.timeout);
}
}
}