/*
* Copyright (c) 2016, Huawei Technologies Co., Ltd.
*
* Licensed 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.openo.baseservice.roa.util.clientsdk;
import org.openo.baseservice.remoteservice.exception.ServiceException;
import org.openo.baseservice.roa.util.restclient.Restful;
import org.openo.baseservice.roa.util.restclient.RestfulAsyncCallback;
import org.openo.baseservice.roa.util.restclient.RestfulParametes;
import org.openo.baseservice.roa.util.restclient.RestfulResponse;
import java.util.HashSet;
import java.util.Set;
/**
* Rest Client Tools.
*
*
*
*
* @author
* @version SDNO 0.5 28-May-2016
*/
public class RestClientUtil {
private static Set> ret = new HashSet<>();
static {
ret.add(Boolean.class);
ret.add(Character.class);
ret.add(Byte.class);
ret.add(Short.class);
ret.add(Integer.class);
ret.add(Long.class);
ret.add(Float.class);
ret.add(Double.class);
ret.add(Void.class);
ret.add(String.class);
}
private RestClientUtil() {
}
/**
* Processing HTTP requests.
*
*
* @param method method name.
* @param path request path.
* @param parameters parameters.
* @param restFull ReST request instance
* @return The ReST response.
* @throws ServiceException Exception information.
* @since SDNO 0.5
*/
public static RestfulResponse invokeMethod(final String method, final String path,
final RestfulParametes parameters, final Restful restFull) throws ServiceException {
RestfulResponse response;
if("get".equalsIgnoreCase(method)) {
response = restFull.get(path, parameters);
} else if("put".equalsIgnoreCase(method)) {
response = restFull.put(path, parameters);
} else if("post".equalsIgnoreCase(method)) {
response = restFull.post(path, parameters);
} else if("delete".equalsIgnoreCase(method)) {
response = restFull.delete(path, parameters);
} else if("patch".equalsIgnoreCase(method)) {
response = restFull.patch(path, parameters);
} else {
throw new ServiceException("NotSuppertMethod", 400);
}
return response;
}
/**
* An asynchronous HTTP request.
*
*
* @param method http method.
* @param path request path.
* @param parameters request parameters.
* @param restFull restFull instance.
* @param callback callback function.
* @throws ServiceException in case error.
* @since SDNO 0.5
*/
public static void invokeAsyncMethod(final String method, final String path, final RestfulParametes parameters,
final Restful restFull, final RestfulAsyncCallback callback) throws ServiceException {
if("get".equalsIgnoreCase(method)) {
restFull.asyncGet(path, parameters, callback);
} else if("put".equalsIgnoreCase(method)) {
restFull.asyncPut(path, parameters, callback);
} else if("post".equalsIgnoreCase(method)) {
restFull.asyncPost(path, parameters, callback);
} else if("delete".equalsIgnoreCase(method)) {
restFull.asyncDelete(path, parameters, callback);
} else if("patch".equalsIgnoreCase(method)) {
restFull.asyncPatch(path, parameters, callback);
} else {
throw new ServiceException("NotSuppertMethod", 400);
}
}
/**
* Determine whether a class is a native.
*
* @param clazz: class type.
* @return whether primitive or not.
* @since SDNO 0.5
*/
public static boolean isPrimitive(final Class> clazz) {
if(clazz.isPrimitive()) {
return true;
}
if(ret.contains(clazz)) {
return true;
}
return false;
}
}