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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +