org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of profitbricks-rest Show documentation
Show all versions of profitbricks-rest Show documentation
jclouds components to access an implementation of ProfitBricks
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jclouds.profitbricks.rest.binder;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Strings;
import com.google.common.base.Supplier;
import com.google.inject.Inject;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import org.jclouds.http.HttpRequest;
import org.jclouds.io.MutableContentMetadata;
import org.jclouds.io.payloads.BaseMutableContentMetadata;
import org.jclouds.json.Json;
import org.jclouds.rest.MapBinder;
public abstract class BaseProfitBricksRequestBinder implements MapBinder {
protected final Supplier endpointSupplier;
protected final String paramName;
protected final Map requestBuilder;
protected final Json jsonBinder;
@Inject
protected BaseProfitBricksRequestBinder(String paramName, Json jsonBinder, Supplier endpointSupplier) {
this.paramName = checkNotNull(paramName, "Initialize 'paramName' in constructor");
this.jsonBinder = jsonBinder;
this.requestBuilder = new HashMap();
this.endpointSupplier = endpointSupplier;
}
@SuppressWarnings("unchecked")
@Override
public R bindToRequest(R request, Map postParams) {
checkNotNull(request, "request");
Object obj = checkNotNull(postParams.get(paramName), "Param '%s' cannot be null.", paramName);
return createRequest(request, createPayload((T) obj));
}
@Override
public R bindToRequest(R request, Object input) {
throw new UnsupportedOperationException("Not supported yet.");
}
protected abstract String createPayload(T payload);
protected static String formatIfNotEmpty(String pattern, Object param) {
return Strings.isNullOrEmpty(nullableToString(param)) ? "" : String.format(pattern, param);
}
protected static String nullableToString(Object object) {
return object == null ? "" : object.toString();
}
protected R createRequest(R fromRequest, String payload) {
MutableContentMetadata metadata = new BaseMutableContentMetadata();
metadata.setContentType("application/json");
metadata.setContentLength(Long.valueOf(payload.getBytes().length));
fromRequest.setPayload(payload);
fromRequest.getPayload().setContentMetadata(metadata);
return fromRequest;
}
@SuppressWarnings("unchecked")
protected R genRequest(String path, R fromRequest) {
R request = (R) fromRequest.toBuilder()
.replacePath(endpointSupplier.get().getPath() + path)
.build();
return request;
}
protected void putIfPresent(Map list, String key, Object value) {
if (value != null) {
list.put(key, value);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy