diff options
author | ChrisC <cc697w@intl.att.com> | 2017-01-31 13:57:24 +0100 |
---|---|---|
committer | ChrisC <cc697w@intl.att.com> | 2017-01-31 14:55:11 +0100 |
commit | 2e984294ac28c6f2ede290c38164c5d536ccaf4a (patch) | |
tree | 5eba5a929b7a961c98749fa69e03cfea58e1a724 /quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java | |
parent | 86c0f28c8ed469486b64d6422dc53e3a7bcc8adb (diff) |
Initial OpenECOMP MSO OpenStack SDK lib commit
Change-Id: Ieaacb2b2c0dcc469669880e73f0cda9fa59a6c5a
Signed-off-by: ChrisC <cc697w@intl.att.com>
Diffstat (limited to 'quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java')
-rw-r--r-- | quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java b/quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java new file mode 100644 index 0000000..8de5abf --- /dev/null +++ b/quantum-client/src/main/java/com/woorea/openstack/quantum/api/query/AbsOpenStackCmd.java @@ -0,0 +1,80 @@ +package com.woorea.openstack.quantum.api.query; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +import org.codehaus.jackson.annotate.JsonProperty; + +import com.woorea.openstack.base.client.OpenStackRequest; + +public class AbsOpenStackCmd<T> extends OpenStackRequest<T> { + + private T query; + + protected AbsOpenStackCmd(T query) + { + this.setQuery(query); + } + + /** + * @param query the query to set + */ + public void setQuery(T query) { + this.query = query; + } + + /** + * @return the query + */ + public T getQuery() { + return query; + } + + private String getFieldValue(Field field, T target) + { + try { + field.setAccessible(true); + Object obj = field.get(target); + if (obj == null) + return null; + return obj.toString(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private Map<String, String> getObjectParamMap(T target) + { + Map<String, String> resultMap = new HashMap<String, String>(); + if (target == null) + return resultMap; + + Field[] paramMap = target.getClass().getDeclaredFields(); + for (Field field : paramMap) { + String resultName = field.getName(); + String value = getFieldValue(field, target); + if (value != null) { + JsonProperty prop = field.getAnnotation(JsonProperty.class); + if (prop != null) { + resultMap.put(prop.value(), getFieldValue(field, target)); + } else { + resultMap.put(resultName, getFieldValue(field, target)); + } + } + } + + return resultMap; + } + + /* + public WebTarget queryParam(WebTarget target) { + Map<String, String> map = getObjectParamMap(this.query); + for (String fieldName : map.keySet()) { + target = target.queryParam(fieldName, map.get(fieldName)); + } + return target; + } + */ + +} |