WSO2 Governance Registry is a big part of wso2 governance product stack. Even though it is primarily aimed at managing, versioning, rating, and commenting on SOA artifacts it can also be used as a simple data store. with the 3.0 version the G-Reg gave support to custom query execution from the client side. This feature helps immensely when you use the registry for non-standard tasks. For me I had to do some pagination work for the comments that belongs to a particular resource, hence my approach was to write few custom quires to get the job done. The code is as follows.
/**
* Returns a chunk of comments
*
* @param resPath Path to the comment
* @param start The beginning index
* @param size Size of the chunk
* @return an array of comments
*/
public Comment[] getCommentSet(String resPath, int start, int size) {
Registry registry = null;
try {
registry = ; // get an instance of the registry
Resource comQuery = registry.newResource();
// The Sql Statement
String sql = "SELECT REG_COMMENT_ID FROM REG_RESOURCE_COMMENT RC, REG_RESOURCE R, REG_PATH P WHERE "
+ "RC.REG_VERSION=R.REG_VERSION AND "
+ "R.REG_NAME=? AND "
+ "P.REG_PATH_VALUE=? AND "
+ "P.REG_PATH_ID=R.REG_PATH_ID LIMIT ?, ?";
// Set SQL statement as the resource content
comQuery.setContent(sql);
// Setting the media type and properties
comQuery.setMediaType(RegistryConstants.SQL_QUERY_MEDIA_TYPE);
comQuery.addProperty(RegistryConstants.RESULT_TYPE_PROPERTY_NAME, RegistryConstants.COMMENTS_RESULT_TYPE);
registry.put("system/myQueries/query", comQuery);
String resourceName = "testResource";
String pathToResource = "/system/myResources"
Map params = new HashMap();
//Setting the parameters
params.put("1", resourceName);
params.put("2", pathToResource);
params.put("3", start);
params.put("4", size);
// Executing the SQL statement
Collection qResults = registry.executeQuery("system/myQueries/query", params);
String[] qPaths = (String[]) qResults.getContent();
Comment[] comments = new Comment[qPaths.length];
// Loading the comment data to comment object array
for (int i = 0; i < qPaths.length; i++) {
if (registry.resourceExists(qPaths[i])) {
comments[i] = (Comment) registry.get(qPaths[i]);
}
}
return comments;
} catch (Exception e) {
String errorMsg = "Backend server error - could not get comment set";
log.error(new MyTestException(errorMsg, e));
return null;
}
}
Yeah simple as that you get your resources set without much effort. A big thank goes to Dimuthu
I am Nuwan Bandara. I am a software engineer by profession but like to call my self an artist or maybe a poet. I watch too much movies and all those American television drama series starting from soap opera to Sci-fi and fantasy.
0 Comments.