下面列出了怎么用org.json.simple.JSONAware的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* @see org.alfresco.repo.jscript.app.PropertyDecorator#decorate(org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable)
*/
@SuppressWarnings("unchecked")
public JSONAware decorate(QName propertyName, NodeRef nodeRef, Serializable value)
{
Collection<NodeRef> collection = (Collection<NodeRef>)value;
JSONArray array = new JSONArray();
for (NodeRef obj : collection)
{
try
{
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", this.nodeService.getProperty(obj, ContentModel.PROP_NAME));
jsonObj.put("nodeRef", obj.toString());
array.add(jsonObj);
}
catch (InvalidNodeRefException e)
{
logger.warn("Tag with nodeRef " + obj.toString() + " does not exist.");
}
}
return array;
}
/**
* @see org.alfresco.repo.jscript.app.PropertyDecorator#decorate(org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable)
*/
@SuppressWarnings("unchecked")
public JSONAware decorate(QName propertyName, NodeRef nodeRef, Serializable value)
{
Collection<NodeRef> collection = (Collection<NodeRef>)value;
JSONArray array = new JSONArray();
for (NodeRef obj : collection)
{
try
{
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", this.nodeService.getProperty(obj, ContentModel.PROP_NAME));
jsonObj.put("path", this.getPath(obj));
jsonObj.put("nodeRef", obj.toString());
array.add(jsonObj);
}
catch (InvalidNodeRefException e)
{
logger.warn("Category with nodeRef " + obj.toString() + " does not exist.");
}
}
return array;
}
/**
* Handles the work of converting values to JSON.
*
* @param nodeRef NodeRef
* @param propertyName QName
* @param key String
* @param value Serializable
* @return the JSON value
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
protected Object propertyToJSON(final NodeRef nodeRef, final QName propertyName, final String key, final Serializable value)
{
if (value != null)
{
// Has a decorator has been registered for this property?
if (propertyDecorators.containsKey(propertyName))
{
JSONAware jsonAware = propertyDecorators.get(propertyName).decorate(propertyName, nodeRef, value);
if (jsonAware != null)
{
return jsonAware;
}
}
else
{
// Built-in data type processing
if (value instanceof Date)
{
JSONObject dateObj = new JSONObject();
dateObj.put("value", JSONObject.escape(value.toString()));
dateObj.put("iso8601", JSONObject.escape(ISO8601DateFormat.format((Date)value)));
return dateObj;
}
else if (value instanceof List)
{
// Convert the List to a JSON list by recursively calling propertyToJSON
List<Object> jsonList = new ArrayList<Object>(((List<Serializable>) value).size());
for (Serializable listItem : (List<Serializable>) value)
{
jsonList.add(propertyToJSON(nodeRef, propertyName, key, listItem));
}
return jsonList;
}
else if (value instanceof Double)
{
return (Double.isInfinite((Double)value) || Double.isNaN((Double)value) ? null : value.toString());
}
else if (value instanceof Float)
{
return (Float.isInfinite((Float)value) || Float.isNaN((Float)value) ? null : value.toString());
}
else
{
return value.toString();
}
}
}
return null;
}
/**
* @see org.alfresco.repo.jscript.app.PropertyDecorator#decorate(QName, org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable)
*/
public JSONAware decorate(QName propertyName, NodeRef nodeRef, Serializable value)
{
return null;
}
/**
* @see org.alfresco.repo.jscript.app.PropertyDecorator#decorate(QName, org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable)
*/
@SuppressWarnings("unchecked")
public JSONAware decorate(QName propertyName, NodeRef nodeRef, Serializable value)
{
String username = value.toString();
String firstName = null;
String lastName = null;
JSONObject map = new JSONObject();
map.put("userName", username);
// DO NOT change this to just use getPersonOrNullImpl
// - there is Cloud THOR prod hack see personServiceImpl.personExists
// - and THOR-293
if (username.isEmpty())
{
firstName = "";
lastName = "";
}
// Check for System before going to the PersonService
else if (username.equals("System") || username.startsWith("[email protected]"))
{
firstName = "System";
lastName = "User";
}
else if (this.personService.personExists(username))
{
NodeRef personRef = this.personService.getPerson(username, false);
firstName = (String)this.nodeService.getProperty(personRef, ContentModel.PROP_FIRSTNAME);
lastName = (String)this.nodeService.getProperty(personRef, ContentModel.PROP_LASTNAME);
}
else
{
map.put("isDeleted", true);
return map;
}
map.put("firstName", firstName);
map.put("lastName", lastName);
map.put("displayName", ((firstName != null ? firstName + " " : "") + (lastName != null ? lastName : "")).replaceAll("^\\s+|\\s+$", ""));
return map;
}
JSONAware decorate(QName propertyName, NodeRef nodeRef, Serializable value);