package cloudone.client.internal; import java.util.List; import javax.ws.rs.HttpMethod; import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import cloudone.ServiceFullName; import cloudone.client.AllInvoker; import cloudone.client.LaterAllInvoker; import cloudone.internal.ApplicationFullName; import org.glassfish.jersey.client.JerseyClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.reflect.generics.reflectiveObjects.NotImplementedException; /** * @author Martin Mares (martin.mares at oracle.com) */ public class AllInvokerImpl extends InvokerBase implements AllInvoker { private static final Logger LOGGER = LoggerFactory.getLogger(AllInvokerImpl.class); public AllInvokerImpl(JerseyClient client, UriBuilder targetUri, ServiceFullName[] serviceFullNames) { super(client, targetUri, serviceFullNames); } @Override protected boolean isResponseCodeAcceptable(int code) { return true; } @Override public LaterAllInvoker later() { return new LaterAllInvokerImpl(client, targetUri, serviceFullNames); } @Override public MultiResponseImpl method(String name, Entity<?> entity) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("method(" + name + ")"); } List<ApplicationFullName> targetApplications = super.findTargetApplications(name); MultiResponseImpl response = new MultiResponseImpl(); for (ApplicationFullName targetApplication : targetApplications) { response.add(targetApplication, () -> method(targetApplication, name, entity)); } return response; } @Override public MultiResponseImpl method(String name) { return method(name, null); } @Override public AllInvokerImpl accept(String... responseMediaTypes) { super.accept(responseMediaTypes); return this; } @Override public AllInvokerImpl accept(MediaType... mediaTypes) { super.accept(mediaTypes); return this; } @Override public MultiResponseImpl get() { return method(HttpMethod.GET); } @Override public MultiResponseImpl put(Entity<?> entity) { return method(HttpMethod.PUT, entity); } @Override public MultiResponseImpl post(Entity<?> entity) { return method(HttpMethod.POST, entity); } @Override public MultiResponseImpl delete() { return method(HttpMethod.DELETE); } @Override public MultiResponseImpl head() { return method(HttpMethod.HEAD); } @Override public MultiResponseImpl options() { return method(HttpMethod.OPTIONS); } @Override public MultiResponseImpl trace() { throw new NotImplementedException(); } }