diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/assocdefinition.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/assocdefinition.lib.ftl
index aaf6f8638e..f326d82aa3 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/assocdefinition.lib.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/assocdefinition.lib.ftl
@@ -33,9 +33,9 @@
"isTargetMany" : ${assocdefs.isTargetMany()?string}
},
<#if assocdefs.isChild() == true>
- "url" : "${url.serviceContext + "/api/classes/"+ url.templateArgs.classname + "/childassociation/"+ assocdefs.name.toPrefixString()?replace(":","_")}"
+ "url" : "${"/api/classes/" + url.templateArgs.classname + "/childassociation/" + assocdefs.name.toPrefixString()?replace(":","_")}"
<#else>
- "url" : "${url.serviceContext + "/api/classes/"+ url.templateArgs.classname + "/association/"+ assocdefs.name.toPrefixString()?replace(":","_")}"
+ "url" : "${"/api/classes/" + url.templateArgs.classname + "/association/" + assocdefs.name.toPrefixString()?replace(":","_")}"
#if>
}
#escape>
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/classdetails.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/classdetails.lib.ftl
index 63fc157d8a..4dcf348359 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/classdetails.lib.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/classdetails.lib.ftl
@@ -1,74 +1,90 @@
-<#import "propertydefinition.lib.ftl" as propertyDefLib/>
-<#import "assocdefinition.lib.ftl" as assocDefLib/>
-<#macro classDefJSON classdefs>
- <#escape x as jsonUtils.encodeJSONString(x)>
- {
- <#if classdefs.name?exists>
- "name" : "${classdefs.name.toPrefixString()}",
+<#macro classDefJSON classdefs key>
+ <#escape x as jsonUtils.encodeJSONString(x)>
+ {
+ <#if classdefs.name?exists>
+ "name" : "${classdefs.name.toPrefixString()}",
#if>
- <#if classdefs.isAspect() == true>
- "isAspect" : true,
- <#else>
- "isAspect" : false,
- #if>
- <#if classdefs.title?exists>
- "title" : "${classdefs.title}",
+ <#if classdefs.isAspect() == true>
+ "isAspect" : true,
+ <#else>
+ "isAspect" : false,
+ #if>
+ <#if classdefs.title?exists>
+ "title" : "${classdefs.title}",
#if>
<#if classdefs.description?exists>
- "description" : "${classdefs.description}",
+ "description" : "${classdefs.description}",
#if>
- "properties" :
- {
- <#list propertydefs as propertydefs>
- "${propertydefs.name.toPrefixString()}":
- {
- <#if propertydefs.name?exists>
- "name" : "${propertydefs.name.toPrefixString()}",
- #if>
- <#if propertydefs.title?exists>
- "title" : "${propertydefs.title}",
- #if>
- "url" : "${url.serviceContext + "/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/property/" + propertydefs.name.toPrefixString()?replace(":","_")}"
- }<#if propertydefs_has_next>,#if>
- #list>
- },
- "associations" :
- {
- <#list assocdefs as assocdefs>
- <#if assocdefs.isChild() == false>
- "${assocdefs.name.toPrefixString()}":
- {
- <#if assocdefs.name?exists>
- "name" : "${assocdefs.name.toPrefixString()}",
- #if>
- <#if assocdefs.title?exists>
- "title" : "${assocdefs.title}",
- #if>
- "url" : "${url.serviceContext + "/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/association/" + assocdefs.name.toPrefixString()?replace(":","_")}"
- }
- #if>
- <#if assocdefs_has_next>,#if>
- #list>
- },
- "childassociations" :
- {
- <#list assocdefs as assocdefs>
- <#if assocdefs.isChild() == true>
- "${assocdefs.name.toPrefixString()}":
- {
- <#if assocdefs.name?exists>
- "name" : "${assocdefs.name.toPrefixString()}",
- #if>
- <#if assocdefs.title?exists>
- "title" : "${assocdefs.title}",
- #if>
- "url" : "${url.serviceContext + "/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/childassociation/" + assocdefs.name.toPrefixString()?replace(":","_")}"
- }
- #if>
- <#if assocdefs_has_next>,#if>
- #list>
- },
- "url" : "${url.serviceContext + "/api/classes/" + classdefs.name.toPrefixString()?replace(":","_")}"
+ "parent" : {
+ <#if classdefs.parentName?exists>
+ "name" : "${classdefs.parentName.toPrefixString()}",
+ "title" : "${classdefs.parentName.getLocalName()}",
+ "url" : "${"/api/classes/" + classdefs.parentName.toPrefixString()?replace(":","_")}"
+ #if>
+ },
+ "defaultAspects" : {
+ <#if classdefs.defaultAspects?exists>
+ <#list classdefs.defaultAspects as aspectdefs>
+ "${aspectdefs.name.toPrefixString()}" : {
+ "name" : "${aspectdefs.name}",
+ <#if aspectdefs.title?exists>
+ "title" : "${aspectdefs.title}",
+ #if>
+ "url" : "${"/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/property/" + aspectdefs.name.toPrefixString()?replace(":","_")}"
+ }<#if aspectdefs_has_next>,#if>
+ #list>
+ #if>
+ },
+ "properties" : {
+ <#list propertydefs[key] as propertydefs>
+ "${propertydefs.name.toPrefixString()}": {
+ <#if propertydefs.name?exists>
+ "name" : "${propertydefs.name.toPrefixString()}",
+ #if>
+ <#if propertydefs.title?exists>
+ "title" : "${propertydefs.title}",
+ #if>
+ "url" : "${"/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/property/" + propertydefs.name.toPrefixString()?replace(":","_")}"
+ }<#if propertydefs_has_next>,#if>
+ #list>
+ },
+ "associations" : {
+ <#assign flag = false>
+ <#list assocdefs[key] as assocdefs>
+ <#if (assocdefs.isChild()==false)&&(flag== true)><#assign flag = false>,#if>
+ <#if assocdefs.isChild() == false>
+ <#assign flag=true>
+ "${assocdefs.name.toPrefixString()}": {
+ <#if assocdefs.name?exists>
+ "name" : "${assocdefs.name.toPrefixString()}",
+ #if>
+ <#if assocdefs.title?exists>
+ "title" : "${assocdefs.title}",
+ #if>
+ "url" : "${"/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/association/" + assocdefs.name.toPrefixString()?replace(":","_")}"
+ }
+ #if>
+ #list>
+ },
+ "childassociations" : {
+ <#assign flag = false>
+ <#list assocdefs[key] as assocdefs>
+ <#if (assocdefs.isChild()==true)&&(flag== true)><#assign flag = false>,#if>
+ <#if assocdefs.isChild() == true>
+ <#assign flag=true>
+ "${assocdefs.name.toPrefixString()}": {
+ <#if assocdefs.name?exists>
+ "name" : "${assocdefs.name.toPrefixString()}",
+ #if>
+ <#if assocdefs.title?exists>
+ "title" : "${assocdefs.title}",
+ #if>
+ "url" : "${"/api/classes/" + classdefs.name.toPrefixString()?replace(":","_") + "/childassociation/" + assocdefs.name.toPrefixString()?replace(":","_")}"
+ }
+ #if>
+ #list>
+ },
+ "url" : "${"/api/classes/" + classdefs.name.toPrefixString()?replace(":","_")}"
}
#escape>
#macro>
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetail.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetail.get.json.ftl
index 88af28847a..b6dd6516e2 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetail.get.json.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetail.get.json.ftl
@@ -1,4 +1,7 @@
-<#import "definitions.lib.ftl" as classDefLib/>
-
-<@classDefLib.classDefJSON classdefs=classdefs/>
-
\ No newline at end of file
+<#import "classdetails.lib.ftl" as classdetailsDefLib/>
+[
+<#list classdefs as classdefs>
+ <@classdetailsDefLib.classDefJSON classdefs=classdefs key = classdefs_index/>
+ <#if classdefs_has_next>,#if>
+#list>
+]
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetails.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetails.get.json.ftl
index 1ac2325ebd..146af2830e 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetails.get.json.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/getclassdetails.get.json.ftl
@@ -1,4 +1,5 @@
<#import "classdetails.lib.ftl" as classdetailsDefLib/>
-
-<@classdetailsDefLib.classDefJSON classdefs=classdefs/>
-
\ No newline at end of file
+<#list classdefs as classdefs>
+ <@classdetailsDefLib.classDefJSON classdefs=classdefs key = classdefs_index/>
+ <#if classdefs_has_next>,#if>
+#list>
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/propertydefinition.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/propertydefinition.lib.ftl
index 3aa23b9811..761c23cd5a 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/propertydefinition.lib.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/dictionary/propertydefinition.lib.ftl
@@ -16,23 +16,24 @@
"defaultValues" : "",
#if>
<#if propertydefs.dataType?exists>
- "dataType" : "${propertydefs.dataType.title}",
+ "dataType" : "${propertydefs.dataType.name.toPrefixString()}",
#if>
- "multiValued" : "${propertydefs.multiValued?string}",
- "mandatory" : "${propertydefs.mandatory?string}",
- "enforced" : "${propertydefs.mandatoryEnforced?string}",
- "protected" : "${propertydefs.protected?string}",
- "indexed" : "${propertydefs.indexed?string}",
- "indexedAtomically" : "${propertydefs.indexedAtomically?string}",
+ "multiValued" : ${propertydefs.multiValued?string},
+ "mandatory" : ${propertydefs.mandatory?string},
+ "enforced" : ${propertydefs.mandatoryEnforced?string},
+ "protected" : ${propertydefs.protected?string},
+ "indexed" : ${propertydefs.indexed?string},
+ "indexedAtomically" : ${propertydefs.indexedAtomically?string},
"constraints" :
[
+ <#--
<#if propertydefs.constraints?exists>
<#list propertydefs.constraints as constraintdefs>
"name" : "${constraintdefs.name}"
#list>
- #if>
+ #if>-->
],
- "url" : "${url.serviceContext + "/api/classes/" + url.templateArgs.classname + "/property/" + propertydefs.name.toPrefixString()?replace(":","_")}"
+ "url" : "${"/api/classes/" + url.templateArgs.classname + "/property/" + propertydefs.name.toPrefixString()?replace(":","_")}"
}
#escape>
#macro>
diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index e41a9f6b8a..b2f5b722aa 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -559,6 +559,11 @@
+
+
+
+
+
@@ -596,10 +601,10 @@
-
+
diff --git a/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryHelper.java b/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryHelper.java
index a01a75af5b..b2a086abc1 100644
--- a/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryHelper.java
+++ b/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryHelper.java
@@ -24,7 +24,9 @@
*/
package org.alfresco.repo.web.scripts.dictionary;
+import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.namespace.NamespaceService;
+import org.alfresco.service.namespace.QName;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -41,6 +43,7 @@ public class DictionaryHelper
private Map prefixesAndUrlsMap;
private Map urlsAndPrefixesMap;
private Collection prefixes;
+ private DictionaryService dictionaryservice;
/**
* Set the namespaceService property.
@@ -52,6 +55,16 @@ public class DictionaryHelper
this.namespaceservice = namespaceservice;
}
+ /**
+ * Set the dictionaryService property.
+ *
+ * @param dictionaryService The dictionary service instance to set
+ */
+ public void setDictionaryService(DictionaryService dictionaryService)
+ {
+ this.dictionaryservice = dictionaryService;
+ }
+
/**
* Init method.
*/
@@ -68,6 +81,11 @@ public class DictionaryHelper
}
}
+ public String getNamespaceURIfromQname(QName qname){
+ return qname.getNamespaceURI();
+
+
+ }
/**
*
* @param className the class name as cm_person
@@ -83,13 +101,26 @@ public class DictionaryHelper
return result;
}
+ /**
+ *
+ * @param className the class name as cm_person
+ * @return String the full name in the following format {namespaceuri}shorname
+ */
+ public String getNamespaceURIfromPrefix(String prefix)
+ {
+ String result = null;
+ if(this.isValidPrefix(prefix)) result = this.prefixesAndUrlsMap.get(prefix);
+ return result;
+ }
+
/*
* checks whether the classname (eg.cm_author) is a valid one
*/
public boolean isValidClassname(String classname)
{
boolean result = false;
- if(this.isValidPrefix(this.getPrefix(classname))) result = true;
+ QName qname = QName.createQName(this.getFullNamespaceURI(classname));
+ if(this.isValidPrefix(this.getPrefix(classname))&& this.dictionaryservice.getClass(qname)!=null) result = true;
return result;
}
@@ -137,7 +168,7 @@ public class DictionaryHelper
/*
* returns a string map or prefixes and urls - with prefix as the key
*/
- public Map prefixesAndUrlsMap()
+ public Map getPrefixesAndUrlsMap()
{
return prefixesAndUrlsMap;
}
@@ -145,7 +176,7 @@ public class DictionaryHelper
/*
* returns a string map of urls and prefixes - with url as the key
*/
- public Map urlsAndPrefixesMap()
+ public Map getUrlsAndPrefixesMap()
{
return urlsAndPrefixesMap;
}
diff --git a/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryServiceTest.java b/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryServiceTest.java
index aafab202d9..59d71c66d7 100644
--- a/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryServiceTest.java
+++ b/source/java/org/alfresco/repo/web/scripts/dictionary/DictionaryServiceTest.java
@@ -30,6 +30,7 @@ import org.alfresco.web.scripts.TestWebScriptServer.Response;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
+import org.json.JSONArray;
/*
* Unit Test for Dictionaryervice
@@ -60,13 +61,13 @@ public class DictionaryServiceTest extends BaseWebScriptTest
assertEquals("cm:created", result.get("name"));
assertEquals("Created Date", result.get("title"));
assertEquals("Created Date", result.get("description"));
- assertEquals("Date and Time", result.get("dataType"));
- assertEquals("false", result.get("multiValued"));
- assertEquals("true", result.get("mandatory"));
- assertEquals("true", result.get("enforced"));
- assertEquals("true", result.get("protected"));
- assertEquals("true", result.get("indexed"));
- assertEquals("true", result.get("indexedAtomically"));
+ assertEquals("d:datetime", result.get("dataType"));
+ assertEquals(false, result.get("multiValued"));
+ assertEquals(true, result.get("mandatory"));
+ assertEquals(true, result.get("enforced"));
+ assertEquals(true, result.get("protected"));
+ assertEquals(true, result.get("indexed"));
+ assertEquals(true, result.get("indexedAtomically"));
response = sendRequest(new GetRequest("/api/classes/cm_hi/property/cm_welcome"), 404);
assertEquals(404,response.getStatus());
@@ -91,6 +92,145 @@ public class DictionaryServiceTest extends BaseWebScriptTest
assertEquals(404,response.getStatus());
}
+//TODO individual check of all elements
+
+ public void testGetClassDetails() throws Exception
+ {
+ GetRequest req = new GetRequest(URL_SITES);
+ Map< String, String > arguments = new HashMap< String, String >();
+ arguments.put("cf", "aspect");
+ arguments.put("nsp", "cm");
+ arguments.put("n", "dublincore");
+ req.setArgs(arguments);
+ Response response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all aspects under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "type");
+ arguments.put("nsp", "wca");
+ arguments.put("n", "rendition");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all aspects under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "type");
+ arguments.put("nsp", "wca");
+ arguments.put("n", "rendition");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all aspects under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "aspect");
+ arguments.put("nsp", "cm");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all types under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "type");
+ arguments.put("nsp", "cm");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all data under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "all");
+ arguments.put("nsp", "cm");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "all");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all aspect dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "aspect");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+ //check for all types dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "type");
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+
+
+ // Test with wrong data
+ //check for all aspects under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "aspects");
+ arguments.put("nsp", "cm");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all types under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "types");
+ arguments.put("nsp", "cmd");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all data under cm without option=>name
+ arguments.clear();
+ arguments.put("cf", "all");
+ arguments.put("nsp", "cmbb");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "allsara");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all aspect dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "aspectb");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all types dictionary data without option=>name and option=>namespaceprefix
+ arguments.clear();
+ arguments.put("cf", "typesa");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for aspects under cm with an invalid name dublincoresara
+ arguments.clear();
+ arguments.put("cf", "aspectss");
+ arguments.put("nsp", "cmsd");
+ arguments.put("n", "dublincoresara");
+ req.setArgs(arguments);
+ response = sendRequest(req, 404);
+ assertEquals(404,response.getStatus());
+
+ //check for all types dictionary data without option=>name and option=>namespaceprefix and option=>classfilter
+ arguments.clear();
+ req.setArgs(arguments);
+ response = sendRequest(req, 200);
+ assertEquals(200,response.getStatus());
+ }
+
//TODO individual check of all elements
public void testGetAssociatoinDef() throws Exception
{
diff --git a/source/java/org/alfresco/repo/web/scripts/dictionary/GetClassDetail.java b/source/java/org/alfresco/repo/web/scripts/dictionary/GetClassDetail.java
index 9bfd6b397d..4479869cf2 100644
--- a/source/java/org/alfresco/repo/web/scripts/dictionary/GetClassDetail.java
+++ b/source/java/org/alfresco/repo/web/scripts/dictionary/GetClassDetail.java
@@ -31,10 +31,13 @@ import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.ClassDefinition;
+import org.alfresco.service.cmr.dictionary.PropertyDefinition;
+import org.alfresco.service.cmr.dictionary.AssociationDefinition;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-/*
+/**
* Webscript to get the Classdefinitions using classfilter , namespaceprefix and name
* @author Saravanan Sellathurai
*/
@@ -42,13 +45,17 @@ import java.util.Map;
public class GetClassDetail extends DeclarativeWebScript
{
private DictionaryService dictionaryservice;
- private ClassDefinition classdefinition;
private DictionaryHelper dictionaryhelper;
private static final String MODEL_PROP_KEY_CLASS_DEFS = "classdefs";
private static final String MODEL_PROP_KEY_PROPERTY_DETAILS = "propertydefs";
private static final String MODEL_PROP_KEY_ASSOCIATION_DETAILS = "assocdefs";
- private static final String REQ_URL_TEMPL_VAR_CLASS_FILTER = "cf";
+
+ private static final String CLASS_FILTER_OPTION_TYPE1 = "all";
+ private static final String CLASS_FILTER_OPTION_TYPE2 = "aspect";
+ private static final String CLASS_FILTER_OPTION_TYPE3 = "type";
+
+ private static final String REQ_URL_TEMPL_VAR_CLASS_FILTER = "cf";
private static final String REQ_URL_TEMPL_VAR_NAMESPACE_PREFIX = "nsp";
private static final String REQ_URL_TEMPL_VAR_NAME = "n";
@@ -81,23 +88,66 @@ public class GetClassDetail extends DeclarativeWebScript
String namespaceprefix = req.getParameter(REQ_URL_TEMPL_VAR_NAMESPACE_PREFIX);
String name = req.getParameter(REQ_URL_TEMPL_VAR_NAME);
String classname = null;
-
+
+ Map classdef = new HashMap();
+ Map> propdef = new HashMap>();
+ Map> assocdef = new HashMap>();
Map model = new HashMap();
- QName qname = null;
+
boolean cfGiven = (classfilter != null) && (classfilter.length() > 0);
boolean nspGiven = (namespaceprefix != null) && (namespaceprefix.length() > 0);
boolean nameGiven = (name != null) && (name.length() > 0);
+ boolean ignoreCheck , hasNothing ,isValidClassfilter ,isValidTriples, isValidTwins ,hasData = false;
- if(cfGiven && nspGiven && nameGiven)
- {
- classname = namespaceprefix + "_" + name;
- qname = QName.createQName(this.dictionaryhelper.getFullNamespaceURI(classname));
- }
- classdefinition = this.dictionaryservice.getClass(qname);
+ classname = namespaceprefix + "_" + name;
+ isValidClassfilter = (cfGiven ) && (classfilter.equals(CLASS_FILTER_OPTION_TYPE1) || classfilter.equals(CLASS_FILTER_OPTION_TYPE2) || classfilter.equals(CLASS_FILTER_OPTION_TYPE3));
+ hasNothing = (!cfGiven && !nspGiven && !nameGiven);
+ ignoreCheck =(cfGiven && !nspGiven && !nameGiven) && isValidClassfilter;
+ isValidTriples = (cfGiven && nspGiven && nameGiven) && this.dictionaryhelper.isValidPrefix(namespaceprefix) && isValidClassfilter && this.dictionaryhelper.isValidClassname(classname);
+ isValidTwins = (cfGiven && nspGiven)&& isValidClassfilter && this.dictionaryhelper.isValidPrefix(namespaceprefix);
- if(this.classdefinition != null)
+ if ((isValidTriples) || (isValidTwins) || (ignoreCheck) || (hasNothing))
+ {
+ Collection qname = null;
+ int maxIteration = 1;
+ if (hasNothing || classfilter.equalsIgnoreCase(CLASS_FILTER_OPTION_TYPE1)) maxIteration = 2;
+ else if(classfilter.equalsIgnoreCase(CLASS_FILTER_OPTION_TYPE3)) qname = this.dictionaryservice.getAllTypes();
+ else if (classfilter.equalsIgnoreCase(CLASS_FILTER_OPTION_TYPE2)) qname = this.dictionaryservice.getAllAspects();
+
+ boolean flag = true;
+
+ for (int i=0; icm_author
* @author Saravanan Sellathurai
*/
@@ -44,7 +48,6 @@ public class GetClassDetails extends DeclarativeWebScript
private DictionaryService dictionaryservice;
private DictionaryHelper dictionaryhelper;
- private ClassDefinition classdefinition;
private static final String MODEL_PROP_KEY_CLASS_DETAILS = "classdefs";
private static final String MODEL_PROP_KEY_PROPERTY_DETAILS = "propertydefs";
@@ -80,19 +83,26 @@ public class GetClassDetails extends DeclarativeWebScript
Map model = new HashMap();
QName qname = null;
+ Map classdef = new HashMap();
+ Map> propdef = new HashMap>();
+ Map> assocdef = new HashMap>();
boolean classnameGiven = (classname != null) && (classname.length() > 0);
+ boolean hasData = false;
- if(classnameGiven)
+ if(classnameGiven && this.dictionaryhelper.isValidClassname(classname))
{
qname = QName.createQName(this.dictionaryhelper.getFullNamespaceURI(classname));
+ hasData = true;
+ classdef.put(qname, this.dictionaryservice.getClass(qname));
+ propdef.put(qname, this.dictionaryservice.getClass(qname).getProperties().values());
+ assocdef.put(qname, this.dictionaryservice.getClass(qname).getAssociations().values());
}
- classdefinition = this.dictionaryservice.getClass(qname);
- if(this.classdefinition != null)
+ if(hasData)
{
- model.put(MODEL_PROP_KEY_CLASS_DETAILS, this.classdefinition);
- model.put(MODEL_PROP_KEY_PROPERTY_DETAILS, this.classdefinition.getProperties().values());
- model.put(MODEL_PROP_KEY_ASSOCIATION_DETAILS, this.classdefinition.getAssociations().values());
+ model.put(MODEL_PROP_KEY_CLASS_DETAILS, classdef.values());
+ model.put(MODEL_PROP_KEY_PROPERTY_DETAILS, propdef.values());
+ model.put(MODEL_PROP_KEY_ASSOCIATION_DETAILS, assocdef.values());
return model;
}
else
diff --git a/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDef.java b/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDef.java
index 7867361a94..3e84847326 100644
--- a/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDef.java
+++ b/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDef.java
@@ -34,8 +34,9 @@ import org.alfresco.service.cmr.dictionary.ClassDefinition;
import java.util.HashMap;
import java.util.Map;
-/*
+/**
* Webscript to get the Propertydefinition for a given classname and propname
+ *
* @author Saravanan Sellathurai
*/
diff --git a/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDefs.java b/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDefs.java
index 8b22d545c8..718e9a1a5f 100644
--- a/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDefs.java
+++ b/source/java/org/alfresco/repo/web/scripts/dictionary/GetPropertyDefs.java
@@ -34,8 +34,10 @@ import org.alfresco.service.cmr.dictionary.ClassDefinition;
import java.util.HashMap;
import java.util.Map;
-/*
+/**
+ *
* Webscript to get the Propertydefinitions for a given classname eg. =>cm_person
+ *
* @author Saravanan Sellathurai
*/
@@ -85,6 +87,7 @@ public class GetPropertyDefs extends DeclarativeWebScript
qname = QName.createQName(this.dictionaryhelper.getFullNamespaceURI(classname));
}
classdefinition = this.dictionaryservice.getClass(qname);
+
if(this.classdefinition != null)
{
model.put(MODEL_PROP_KEY_PROPERTY_DETAILS, this.classdefinition.getProperties().values());