/*
* 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.geode.management.internal.cli;
import java.text.DateFormat;
import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.management.internal.cli.json.GfJsonObject;
/**
*
* @since GemFire 7.0
*/
public class CommandResponse {
private final String sender;
private final String version;
private final int status;
private final String contentType;
private final String page;
private final String when;
private final String tokenAccessor;
private final String debugInfo;
private final Data data;
private final boolean failedToPersist;
CommandResponse(String sender, String contentType, int status, String page, String tokenAccessor,
String debugInfo, String header, GfJsonObject content, String footer,
boolean failedToPersist) {
this.sender = sender;
this.contentType = contentType;
this.status = status;
this.page = page;
this.tokenAccessor = tokenAccessor;
this.debugInfo = debugInfo;
this.data = new Data(header, content, footer);
this.when = DateFormat.getInstance().format(new java.util.Date());
this.version = GemFireVersion.getGemFireVersion();
this.failedToPersist = failedToPersist;
}
// For de-serializing
CommandResponse(GfJsonObject jsonObject) {
this.sender = jsonObject.getString("sender");
this.contentType = jsonObject.getString("contentType");
this.status = jsonObject.getInt("status");
this.page = jsonObject.getString("page");
this.tokenAccessor = jsonObject.getString("tokenAccessor");
this.debugInfo = jsonObject.getString("debugInfo");
this.data = new Data(jsonObject.getJSONObject("data"));
this.when = jsonObject.getString("when");
this.version = jsonObject.getString("version");
this.failedToPersist = jsonObject.getBoolean("failedToPersist");
}
/**
* @return the sender
*/
public String getSender() {
return sender;
}
/**
* @return the version
*/
public String getVersion() {
return version;
}
/**
* @return the status
*/
public int getStatus() {
return status;
}
/**
* @return the contentType
*/
public String getContentType() {
return contentType;
}
/**
* @return the page
*/
public String getPage() {
return page;
}
/**
* @return the when
*/
public String getWhen() {
return when;
}
/**
* @return the tokenAccessor
*/
public String getTokenAccessor() {
return tokenAccessor;
}
/**
* @return the data
*/
public Data getData() {
return data;
}
/**
* @return the debugInfo
*/
public String getDebugInfo() {
return debugInfo;
}
public boolean isFailedToPersist() {
return failedToPersist;
}
public static class Data {
private String header;
private GfJsonObject content;
private String footer;
public Data(String header, GfJsonObject content, String footer) {
this.header = header;
this.content = content;
this.footer = footer;
}
public Data(GfJsonObject dataJsonObject) {
this.header = dataJsonObject.getString("header");
this.content = dataJsonObject.getJSONObject("content");
this.footer = dataJsonObject.getString("footer");
}
/**
* @return the header
*/
public String getHeader() {
return header;
}
/**
* @return the content
*/
public Object getContent() {
return content.getInternalJsonObject();
}
/**
* @return the footer
*/
public String getFooter() {
return footer;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Data [header=").append(header).append(", content=").append(content)
.append(", footer=").append(footer).append("]");
return builder.toString();
}
}
}
/*
** TABLE
*
* { "sender": "member1", "version": "gemfire70", "contentType": "table", "page": "1/1",
* "tokenAccessor": "__NULL__", "status": "OK", "when": "January 12 2012", "debugData": [ "val1",
* "val2" ], "data": { "header": [ "Header1", "Header2", "Header3", "Header4" ], "content": [ [
* "val00", "val01", "val02", "val03" ], [ "val10", "val11", "val12", "val13" ], [ "val20", "val21",
* "val22", "val23" ] ] } }
**
* TABLE SCROLLABLE
*
* { "sender": "member1", "version": "gemfire70", "contentType": "table", "page": "1/5",
* "tokenHolder": "TOKEN12345", "status": "OK", "when": "January 12 2012", "debugData": [ "val1",
* "val2" ], "data": { "header": [ "Header1", "Header2", "Header3", "Header4" ], "content": [ [
* "val00", "val01", "val02", "val03" ], [ "val10", "val11", "val12", "val13" ], [ "val20", "val21",
* "val22", "val23" ] ] } }
**
*
* CATALOG
*
* { "sender": "member1", "version": "gemfire70", "contentType": "catalog", "page": "1/1",
* "tokenHolder": "__NULL__", "status": "OK", "when": "January 12 2012", "debugData": [ "val1",
* "val2" ], "data": { "content": [ { "key1": "val1", "key2": "val2", "key3": "val3", "key4":
* "val4", "key5": "val5", "key6": "val6", "key7": "val7" } ] } }
**
*
* CATALOG SCROLLABLE
*
* { "sender": "member1", "version": "gemfire70", "contentType": "catalog", "page": "1/10",
* "tokenHolder": "TOKEN1265765", "status": "OK", "when": "January 12 2012", "debugData": [ "val1",
* "val2" ], "data": { "content": [ { "key1": "val1", "key2": "val2", "key3": "val3", "key4":
* "val4", "key5": "val5", "key6": "val6", "key7": "val7" } ] } }
**
*
* Object as argument
*
* { "com.foo.bar.Employee": { "id": 1234, "name": "Foo BAR", "department": { "id": 456, "name":
* "support" } } }
*
*/