package com.voxeo.moho.remote.impl;
import java.net.URI;
import java.util.Map;
import com.voxeo.moho.Call;
import com.voxeo.moho.CallableEndpoint;
import com.voxeo.moho.Endpoint;
import com.voxeo.moho.Subscription;
import com.voxeo.moho.Subscription.Type;
public class CallableEndpointImpl implements CallableEndpoint {
protected URI _uri;
protected MohoRemoteImpl _mohoRemote;
public CallableEndpointImpl(MohoRemoteImpl mohoRemote, URI uri) {
super();
this._uri = uri;
this._mohoRemote = mohoRemote;
}
@Override
public String getName() {
return _uri.toString();
}
@Override
public URI getURI() {
return _uri;
}
@Override
public Call call(Endpoint caller) {
return createCall(caller);
}
@Override
public Call call(Endpoint caller, Map<String, String> headers) {
return createCall(caller, headers);
}
@Override
public Call call(String caller) {
return createCall(caller);
}
@Override
public Call call(String caller, Map<String, String> headers) {
return createCall(caller, headers);
}
@Override
public Subscription subscribe(Endpoint subscriber, Type type, int expiration) {
throw new UnsupportedOperationException(Constants.unsupported_operation);
}
@Override
public Call createCall(Endpoint caller) {
return createCall(caller, null);
}
@Override
public Call createCall(Endpoint caller, Map<String, String> headers) {
return new OutgoingCallImpl(_mohoRemote, null, (CallableEndpoint) caller, this, headers);
}
@Override
public Call createCall(String caller) {
CallableEndpoint ed = (CallableEndpoint) _mohoRemote.createEndpoint(URI.create(caller));
return createCall(ed);
}
@Override
public Call createCall(String caller, Map<String, String> headers) {
CallableEndpoint ed = (CallableEndpoint) _mohoRemote.createEndpoint(URI.create(caller));
return createCall(ed, headers);
}
@Override
public Call createCall(Endpoint caller, Map<String, String> headers, Call originalCall) {
return createCall(caller, headers);
}
@Override
public Call createCall(String caller, Map<String, String> headers, Call originalCall) {
return createCall(caller, headers);
}
}