diff --git a/source/generated/org/alfresco/repo/webservice/dictionary/DictionaryServiceSoapPort.java b/source/generated/org/alfresco/repo/webservice/dictionary/DictionaryServiceSoapPort.java
index 08a355467e..eb1798313f 100644
--- a/source/generated/org/alfresco/repo/webservice/dictionary/DictionaryServiceSoapPort.java
+++ b/source/generated/org/alfresco/repo/webservice/dictionary/DictionaryServiceSoapPort.java
@@ -13,4 +13,20 @@ public interface DictionaryServiceSoapPort extends java.rmi.Remote {
* Retrieves the class definitions of types and aspects.
*/
public org.alfresco.repo.webservice.types.ClassDefinition[] getClasses(org.alfresco.repo.webservice.dictionary.ClassPredicate types, org.alfresco.repo.webservice.dictionary.ClassPredicate aspects) throws java.rmi.RemoteException, org.alfresco.repo.webservice.dictionary.DictionaryFault;
+
+ /**
+ * Retrieves property definitions.
+ */
+ public org.alfresco.repo.webservice.types.PropertyDefinition[] getProperties(java.lang.String[] propertyNames) throws java.rmi.RemoteException, org.alfresco.repo.webservice.dictionary.DictionaryFault;
+
+ /**
+ * Retrieves association definitions.
+ */
+ public org.alfresco.repo.webservice.types.AssociationDefinition[] getAssociations(java.lang.String[] associationNames) throws java.rmi.RemoteException, org.alfresco.repo.webservice.dictionary.DictionaryFault;
+
+ /**
+ * Determines whether a type (or aspect) is a sub class of another
+ * type (or aspect).
+ */
+ public boolean isSubClass(java.lang.String className, java.lang.String isSubClassOfName) throws java.rmi.RemoteException, org.alfresco.repo.webservice.dictionary.DictionaryFault;
}
diff --git a/source/generated/org/alfresco/repo/webservice/dictionary/deploy.wsdd b/source/generated/org/alfresco/repo/webservice/dictionary/deploy.wsdd
index 0233c35799..570e975c1c 100644
--- a/source/generated/org/alfresco/repo/webservice/dictionary/deploy.wsdd
+++ b/source/generated/org/alfresco/repo/webservice/dictionary/deploy.wsdd
@@ -25,7 +25,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
assocs = ddClassDef.getAssociations();
if (assocs != null)
@@ -652,35 +632,7 @@ public class Utils
int pos = 0;
for (org.alfresco.service.cmr.dictionary.AssociationDefinition ddAssocDef : assocs.values())
{
- AssociationDefinition assocDef = new AssociationDefinition();
- assocDef.setName(ddAssocDef.getName().toString());
- assocDef.setIsChild(ddAssocDef.isChild());
- if (ddAssocDef.getTitle() != null)
- {
- assocDef.setTitle(ddAssocDef.getTitle());
- }
- if (ddAssocDef.getDescription() != null)
- {
- assocDef.setDescription(ddAssocDef.getDescription());
- }
-
- RoleDefinition sourceRole = new RoleDefinition();
- if (ddAssocDef.getSourceRoleName() != null)
- {
- sourceRole.setName(ddAssocDef.getSourceRoleName().toString());
- }
- sourceRole.setCardinality(setupSourceCardinalityObject(ddAssocDef));
- assocDef.setSourceRole(sourceRole);
-
- RoleDefinition targetRole = new RoleDefinition();
- if (ddAssocDef.getTargetRoleName() != null)
- {
- targetRole.setName(ddAssocDef.getTargetRoleName().toString());
- }
- targetRole.setCardinality(setupTargetCardinalityObject(ddAssocDef));;
- assocDef.setTargetRole(targetRole);
- assocDef.setTargetClass(ddAssocDef.getTargetClass().getName().toString());
-
+ AssociationDefinition assocDef = setupAssociationDefObject(ddAssocDef);
assocDefs[pos] = assocDef;
pos++;
}
@@ -691,6 +643,76 @@ public class Utils
return classDef;
}
+ /**
+ * Creates a PropertyDefinition web service type object for the given
+ * repository PropertyDefinition
+ *
+ * @param ddPropertyDef The repository PropertyDefinition to generate
+ * @return The web service PropertyDefinition representation
+ */
+ public static PropertyDefinition setupPropertyDefObject(org.alfresco.service.cmr.dictionary.PropertyDefinition ddPropDef)
+ {
+ PropertyDefinition propDef = new PropertyDefinition();
+ propDef.setName(ddPropDef.getName().toString());
+ propDef.setDataType(ddPropDef.getDataType().getName().toString());
+ propDef.setMandatory(ddPropDef.isMandatory());
+ propDef.setReadOnly(ddPropDef.isProtected());
+ if (ddPropDef.getDefaultValue() != null)
+ {
+ propDef.setDefaultValue(ddPropDef.getDefaultValue());
+ }
+ if (ddPropDef.getTitle() != null)
+ {
+ propDef.setTitle(ddPropDef.getTitle());
+ }
+ if (ddPropDef.getDescription() != null)
+ {
+ propDef.setDescription(ddPropDef.getDescription());
+ }
+ return propDef;
+ }
+
+ /**
+ * Creates an AssociationDefinition web service type object for the given
+ * repository AssociationDefinition
+ *
+ * @param ddAssociationDef The repository AssociationDefinition to generate
+ * @return The web service AssociationDefinition representation
+ */
+ public static AssociationDefinition setupAssociationDefObject(org.alfresco.service.cmr.dictionary.AssociationDefinition ddAssocDef)
+ {
+ AssociationDefinition assocDef = new AssociationDefinition();
+ assocDef.setName(ddAssocDef.getName().toString());
+ assocDef.setIsChild(ddAssocDef.isChild());
+ if (ddAssocDef.getTitle() != null)
+ {
+ assocDef.setTitle(ddAssocDef.getTitle());
+ }
+ if (ddAssocDef.getDescription() != null)
+ {
+ assocDef.setDescription(ddAssocDef.getDescription());
+ }
+
+ RoleDefinition sourceRole = new RoleDefinition();
+ if (ddAssocDef.getSourceRoleName() != null)
+ {
+ sourceRole.setName(ddAssocDef.getSourceRoleName().toString());
+ }
+ sourceRole.setCardinality(setupSourceCardinalityObject(ddAssocDef));
+ assocDef.setSourceRole(sourceRole);
+
+ RoleDefinition targetRole = new RoleDefinition();
+ if (ddAssocDef.getTargetRoleName() != null)
+ {
+ targetRole.setName(ddAssocDef.getTargetRoleName().toString());
+ }
+ targetRole.setCardinality(setupTargetCardinalityObject(ddAssocDef));;
+ assocDef.setTargetRole(targetRole);
+ assocDef.setTargetClass(ddAssocDef.getTargetClass().getName().toString());
+
+ return assocDef;
+ }
+
/**
* Creates a web service Cardinality type for the source from the given repository AssociationDefinition
*
diff --git a/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java b/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java
index 873ff1c2eb..c7219c9fdf 100644
--- a/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java
+++ b/source/java/org/alfresco/repo/webservice/dictionary/DictionaryWebService.java
@@ -23,12 +23,16 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.webservice.AbstractWebService;
import org.alfresco.repo.webservice.Utils;
import org.alfresco.repo.webservice.dictionary.ClassPredicate;
import org.alfresco.repo.webservice.dictionary.DictionaryFault;
import org.alfresco.repo.webservice.dictionary.DictionaryServiceSoapPort;
+import org.alfresco.repo.webservice.types.AssociationDefinition;
import org.alfresco.repo.webservice.types.ClassDefinition;
+import org.alfresco.repo.webservice.types.PropertyDefinition;
+import org.alfresco.service.cmr.dictionary.DictionaryException;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.InvalidClassException;
import org.alfresco.service.namespace.NamespaceService;
@@ -102,6 +106,99 @@ public class DictionaryWebService extends AbstractWebService implements Dictiona
}
+ /*
+ * (non-Javadoc)
+ * @see org.alfresco.repo.webservice.dictionary.DictionaryServiceSoapPort#getProperties(java.lang.String[])
+ */
+ public PropertyDefinition[] getProperties(String[] propertyNames) throws RemoteException, DictionaryFault
+ {
+ try
+ {
+ PropertyDefinition[] propDefs = new PropertyDefinition[propertyNames.length];
+
+ int i = 0;
+ for (String propertyName : propertyNames)
+ {
+ QName propertyQName = QName.createQName(propertyName, namespaceService);
+ org.alfresco.service.cmr.dictionary.PropertyDefinition ddPropDef = dictionaryService.getProperty(propertyQName);
+ if (ddPropDef == null)
+ {
+ throw new AlfrescoRuntimeException("Property propertyName does not exist.");
+ }
+ propDefs[i++] = Utils.setupPropertyDefObject(ddPropDef);
+ }
+
+ return propDefs;
+ }
+ catch (Throwable e)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", e);
+ }
+ throw new DictionaryFault(0, e.getMessage());
+ }
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.alfresco.repo.webservice.dictionary.DictionaryServiceSoapPort#getAssociations(java.lang.String[])
+ */
+ public AssociationDefinition[] getAssociations(String[] associationNames) throws RemoteException, DictionaryFault
+ {
+ try
+ {
+ AssociationDefinition[] assocDefs = new AssociationDefinition[associationNames.length];
+
+ int i = 0;
+ for (String associationName : associationNames)
+ {
+ QName associationQName = QName.createQName(associationName, namespaceService);
+ org.alfresco.service.cmr.dictionary.AssociationDefinition ddAssocDef = dictionaryService.getAssociation(associationQName);
+ if (ddAssocDef == null)
+ {
+ throw new AlfrescoRuntimeException("Property propertyName does not exist.");
+ }
+ assocDefs[i++] = Utils.setupAssociationDefObject(ddAssocDef);
+ }
+
+ return assocDefs;
+ }
+ catch (Throwable e)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", e);
+ }
+ throw new DictionaryFault(0, e.getMessage());
+ }
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.alfresco.repo.webservice.dictionary.DictionaryServiceSoapPort#isSubClass(java.lang.String, java.lang.String)
+ */
+ public boolean isSubClass(String className, String isSubClassOfName) throws RemoteException, DictionaryFault
+ {
+ try
+ {
+ QName classQName = QName.createQName(className, namespaceService);
+ QName isSubClassOfQName = QName.createQName(isSubClassOfName, namespaceService);
+ return dictionaryService.isSubClass(classQName, isSubClassOfQName);
+ }
+ catch (Throwable e)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", e);
+ }
+ throw new DictionaryFault(0, e.getMessage());
+ }
+ }
+
+
/**
* Retrieve class definitions that match the provided class predicate
*
@@ -211,5 +308,5 @@ public class DictionaryWebService extends AbstractWebService implements Dictiona
}
}
}
-
+
}
diff --git a/source/web/WEB-INF/server-config.wsdd b/source/web/WEB-INF/server-config.wsdd
index 48a71e2bc7..982c5abe8c 100644
--- a/source/web/WEB-INF/server-config.wsdd
+++ b/source/web/WEB-INF/server-config.wsdd
@@ -3051,12 +3051,20 @@
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -62,6 +111,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -73,6 +146,24 @@
+
+ Retrieves property definitions.
+
+
+
+
+
+ Retrieves association definitions.
+
+
+
+
+
+ Determines whether a type (or aspect) is a sub class of another type (or aspect).
+
+
+
+
@@ -89,6 +180,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+