From d03bc33acb5cb9b9e297e1c27459745de902160c Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Wed, 4 Oct 2006 16:39:26 +0000 Subject: [PATCH] . Moved avm specific types from ContentModel (cm) into WCMModel (wcm) . Updated appropriate AVM and client classes to use new types . Updated application types to derive from wcm types NOTE: You will need a new database - this is NOT backward compatible with current websites! git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4022 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/core-services-context.xml | 4 +- config/alfresco/model/applicationModel.xml | 3 +- config/alfresco/model/contentModel.xml | 46 -------- config/alfresco/model/wcmModel.xml | 100 +++++++++++++----- .../java/org/alfresco/model/ContentModel.java | 11 -- source/java/org/alfresco/model/WCMModel.java | 26 +++-- .../org/alfresco/repo/avm/AVMNodeService.java | 35 +++--- .../org/alfresco/repo/avm/AVMServiceTest.java | 19 ++-- .../service/namespace/NamespaceService.java | 6 ++ 9 files changed, 128 insertions(+), 122 deletions(-) diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index d5b1696a80..324452b6eb 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -417,13 +417,13 @@ alfresco/model/dictionaryModel.xml alfresco/model/systemModel.xml alfresco/model/contentModel.xml + alfresco/model/wcmModel.xml alfresco/model/applicationModel.xml alfresco/model/forumModel.xml alfresco/model/recordsModel.xml alfresco/model/bpmModel.xml alfresco/model/workflowModel.xml - alfresco/model/wcmModel.xml - + org/alfresco/repo/security/authentication/userModel.xml org/alfresco/repo/action/actionModel.xml diff --git a/config/alfresco/model/applicationModel.xml b/config/alfresco/model/applicationModel.xml index 0b85a80a5a..0e3780b834 100644 --- a/config/alfresco/model/applicationModel.xml +++ b/config/alfresco/model/applicationModel.xml @@ -9,6 +9,7 @@ + @@ -53,7 +54,7 @@ AVM Website Folder - cm:avmfolder + wcm:avmfolder diff --git a/config/alfresco/model/contentModel.xml b/config/alfresco/model/contentModel.xml index 5a597d31e0..da5560951d 100644 --- a/config/alfresco/model/contentModel.xml +++ b/config/alfresco/model/contentModel.xml @@ -79,29 +79,6 @@ - - - AVM Content - cm:content - - - - AVM Plain content - cm:avmcontent - - - - AVM Layered Content - cm:content - - - File Layer Indirection - d:noderef - true - - - - Dictionary Model cm:content @@ -161,29 +138,6 @@ cm:folder - - - AVM Folder - cm:folder - - - - AVM Plain Folder - cm:avmfolder - - - - AVM Layered Folder - cm:avmfolder - - - Directory Layer Indirection - d:noderef - true - - - - Person sys:base diff --git a/config/alfresco/model/wcmModel.xml b/config/alfresco/model/wcmModel.xml index c1a93cc6b8..8234bdc24c 100644 --- a/config/alfresco/model/wcmModel.xml +++ b/config/alfresco/model/wcmModel.xml @@ -7,6 +7,7 @@ + @@ -14,41 +15,84 @@ + + + AVM Content + cm:content + + + + AVM Plain content + wcm:avmcontent + + + + AVM Layered Content + cm:content + + + File Layer Indirection + d:noderef + true + + + + + + + AVM Folder + cm:folder + + + + AVM Plain Folder + wcm:avmfolder + + + + AVM Layered Folder + wcm:avmfolder + + + Directory Layer Indirection + d:noderef + true + + + - - - + + - XForms Template - - - Schema Root Tag Name - d:text - true - - - - - Template Output Methods - - wcm:capture - false - false - - - wcm:templateoutputmethod - wcm:presentation - false - true - - - + XForms Template + + + Schema Root Tag Name + d:text + true + + + + + Template Output Methods + + wcm:capture + false + false + + + wcm:templateoutputmethod + wcm:presentation + false + true + + + - XML Transformer diff --git a/source/java/org/alfresco/model/ContentModel.java b/source/java/org/alfresco/model/ContentModel.java index 2569f30682..68e82b07d1 100644 --- a/source/java/org/alfresco/model/ContentModel.java +++ b/source/java/org/alfresco/model/ContentModel.java @@ -97,13 +97,6 @@ public interface ContentModel // content type and aspect constants static final QName TYPE_CONTENT = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "content"); static final QName PROP_CONTENT = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "content"); - static final QName TYPE_AVM_CONTENT = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmcontent"); - static final QName TYPE_AVM_PLAIN_CONTENT = - QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmplaincontent"); - static final QName TYPE_AVM_LAYERED_CONTENT = - QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmlayeredcontent"); - static final QName PROP_AVM_FILE_INDIRECTION = - QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmfileindirection"); // title aspect static final QName ASPECT_TITLED = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "titled"); @@ -149,10 +142,6 @@ public interface ContentModel static final QName TYPE_FOLDER = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "folder"); /** child association type supported by {@link #TYPE_FOLDER} */ static final QName ASSOC_CONTAINS = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "contains"); - static final QName TYPE_AVM_FOLDER = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmfolder"); - static final QName TYPE_AVM_PLAIN_FOLDER = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmplainfolder"); - static final QName TYPE_AVM_LAYERED_FOLDER = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmlayeredfolder"); - static final QName PROP_AVM_DIR_INDIRECTION = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "avmdirindirection"); // person static final QName TYPE_PERSON = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "person"); diff --git a/source/java/org/alfresco/model/WCMModel.java b/source/java/org/alfresco/model/WCMModel.java index 54c728d1c8..03388be71a 100644 --- a/source/java/org/alfresco/model/WCMModel.java +++ b/source/java/org/alfresco/model/WCMModel.java @@ -3,6 +3,7 @@ */ package org.alfresco.model; +import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; /** @@ -11,16 +12,25 @@ import org.alfresco.service.namespace.QName; */ public interface WCMModel { - public static final String WCM_MODEL_URI = "http://www.alfresco.org/model/wcmmodel/1.0"; - public static final String WCM_MODEL_PREFIX = "wcm"; + // content + public static final QName TYPE_AVM_CONTENT = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmcontent"); + public static final QName TYPE_AVM_PLAIN_CONTENT = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmplaincontent"); + public static final QName TYPE_AVM_LAYERED_CONTENT = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmlayeredcontent"); + public static final QName PROP_AVM_FILE_INDIRECTION = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmfileindirection"); + + // folders + public static final QName TYPE_AVM_FOLDER = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmfolder"); + public static final QName TYPE_AVM_PLAIN_FOLDER = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmplainfolder"); + public static final QName TYPE_AVM_LAYERED_FOLDER = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmlayeredfolder"); + public static final QName PROP_AVM_DIR_INDIRECTION = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "avmdirindirection"); // The XForms data capture template aspect. - public static final QName ASPECT_TEMPLATE = QName.createQName(WCM_MODEL_URI, "template"); - public static final QName PROP_SCHEMA_ROOT_TAG_NAME = QName.createQName(WCM_MODEL_URI, "schemaroottagname"); - public static final QName ASSOC_TEMPLATE_OUTPUT_METHODS = QName.createQName(WCM_MODEL_URI, "templateoutputmethods"); + public static final QName ASPECT_TEMPLATE = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "template"); + public static final QName PROP_SCHEMA_ROOT_TAG_NAME = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "schemaroottagname"); + public static final QName ASSOC_TEMPLATE_OUTPUT_METHODS = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templateoutputmethods"); // An XML to something else tranformer aspect. - public static final QName ASPECT_TEMPLATE_OUTPUT_METHOD = QName.createQName(WCM_MODEL_URI, "templateoutputmethod"); - public static final QName PROP_TEMPLATE_OUTPUT_METHOD_TYPE = QName.createQName(WCM_MODEL_URI, "templateoutputmethodtype"); - public static final QName PROP_TEMPLATE_SOURCE = QName.createQName(WCM_MODEL_URI, "templatesource"); + public static final QName ASPECT_TEMPLATE_OUTPUT_METHOD = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templateoutputmethod"); + public static final QName PROP_TEMPLATE_OUTPUT_METHOD_TYPE = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templateoutputmethodtype"); + public static final QName PROP_TEMPLATE_SOURCE = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templatesource"); } diff --git a/source/java/org/alfresco/repo/avm/AVMNodeService.java b/source/java/org/alfresco/repo/avm/AVMNodeService.java index 1e2e9b7d88..4ebebf77a8 100644 --- a/source/java/org/alfresco/repo/avm/AVMNodeService.java +++ b/source/java/org/alfresco/repo/avm/AVMNodeService.java @@ -29,6 +29,7 @@ import java.util.Set; import java.util.SortedMap; import org.alfresco.model.ContentModel; +import org.alfresco.model.WCMModel; import org.alfresco.repo.domain.PropertyValue; import org.alfresco.repo.node.AbstractNodeServiceImpl; import org.alfresco.service.cmr.avm.AVMException; @@ -251,19 +252,19 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi // Do the creates for supported types, or error out. try { - if (nodeTypeQName.equals(ContentModel.TYPE_AVM_PLAIN_FOLDER) || + if (nodeTypeQName.equals(WCMModel.TYPE_AVM_PLAIN_FOLDER) || nodeTypeQName.equals(ContentModel.TYPE_FOLDER)) { fAVMService.createDirectory(avmPath, nodeName); } - else if (nodeTypeQName.equals(ContentModel.TYPE_AVM_PLAIN_CONTENT) - ||nodeTypeQName.equals(ContentModel.TYPE_CONTENT)) + else if (nodeTypeQName.equals(WCMModel.TYPE_AVM_PLAIN_CONTENT) || + nodeTypeQName.equals(ContentModel.TYPE_CONTENT)) { fAVMService.createFile(avmPath, nodeName); } - else if (nodeTypeQName.equals(ContentModel.TYPE_AVM_LAYERED_CONTENT)) + else if (nodeTypeQName.equals(WCMModel.TYPE_AVM_LAYERED_CONTENT)) { - NodeRef indirection = (NodeRef)properties.get(ContentModel.PROP_AVM_FILE_INDIRECTION); + NodeRef indirection = (NodeRef)properties.get(WCMModel.PROP_AVM_FILE_INDIRECTION); if (indirection == null) { throw new InvalidTypeException("No Indirection Property", nodeTypeQName); @@ -271,9 +272,9 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi Pair indVersionPath = AVMNodeConverter.ToAVMVersionPath(indirection); fAVMService.createLayeredFile(indVersionPath.getSecond(), avmPath, nodeName); } - else if (nodeTypeQName.equals(ContentModel.TYPE_AVM_LAYERED_FOLDER)) + else if (nodeTypeQName.equals(WCMModel.TYPE_AVM_LAYERED_FOLDER)) { - NodeRef indirection = (NodeRef)properties.get(ContentModel.PROP_AVM_DIR_INDIRECTION); + NodeRef indirection = (NodeRef)properties.get(WCMModel.PROP_AVM_DIR_INDIRECTION); if (indirection == null) { throw new InvalidTypeException("No Indirection Property.", nodeTypeQName); @@ -477,19 +478,19 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi } if (desc.isPlainDirectory()) { - return ContentModel.TYPE_AVM_PLAIN_FOLDER; + return WCMModel.TYPE_AVM_PLAIN_FOLDER; } else if (desc.isPlainFile()) { - return ContentModel.TYPE_AVM_PLAIN_CONTENT; + return WCMModel.TYPE_AVM_PLAIN_CONTENT; } else if (desc.isLayeredDirectory()) { - return ContentModel.TYPE_AVM_LAYERED_FOLDER; + return WCMModel.TYPE_AVM_LAYERED_FOLDER; } else { - return ContentModel.TYPE_AVM_LAYERED_CONTENT; + return WCMModel.TYPE_AVM_LAYERED_CONTENT; } } @@ -924,12 +925,12 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi result.put(ContentModel.PROP_STORE_IDENTIFIER, nodeRef.getStoreRef().getIdentifier()); if (desc.isLayeredDirectory()) { - result.put(ContentModel.PROP_AVM_DIR_INDIRECTION, + result.put(WCMModel.PROP_AVM_DIR_INDIRECTION, AVMNodeConverter.ToNodeRef(-1, desc.getIndirection())); } if (desc.isLayeredFile()) { - result.put(ContentModel.PROP_AVM_FILE_INDIRECTION, + result.put(WCMModel.PROP_AVM_FILE_INDIRECTION, AVMNodeConverter.ToNodeRef(-1, desc.getIndirection())); } if (desc.isFile()) @@ -1052,7 +1053,7 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi { return nodeRef.getStoreRef().getIdentifier(); } - else if (qName.equals(ContentModel.PROP_AVM_DIR_INDIRECTION)) + else if (qName.equals(WCMModel.PROP_AVM_DIR_INDIRECTION)) { if (desc.isLayeredDirectory()) { @@ -1060,7 +1061,7 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi } return null; } - else if (qName.equals(ContentModel.PROP_AVM_FILE_INDIRECTION)) + else if (qName.equals(WCMModel.PROP_AVM_FILE_INDIRECTION)) { if (desc.isLayeredFile()) { @@ -1146,8 +1147,8 @@ public class AVMNodeService extends AbstractNodeServiceImpl implements NodeServi ContentModel.PROP_NODE_DBID, ContentModel.PROP_STORE_PROTOCOL, ContentModel.PROP_STORE_IDENTIFIER, - ContentModel.PROP_AVM_FILE_INDIRECTION, - ContentModel.PROP_AVM_DIR_INDIRECTION + WCMModel.PROP_AVM_FILE_INDIRECTION, + WCMModel.PROP_AVM_DIR_INDIRECTION }; /** diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index 72e3bde170..da7adb4b4e 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -31,6 +31,7 @@ import java.util.Set; import java.util.TreeMap; import org.alfresco.model.ContentModel; +import org.alfresco.model.WCMModel; import org.alfresco.repo.action.ActionImpl; import org.alfresco.repo.avm.actions.SimpleAVMPromoteAction; import org.alfresco.repo.avm.actions.SimpleAVMSubmitAction; @@ -3019,32 +3020,32 @@ public class AVMServiceTest extends AVMServiceTestBase AuthenticationComponent ac = (AuthenticationComponent)fContext.getBean("authenticationComponent"); ac.authenticate("admin", "admin".toCharArray()); assertTrue(ffs.create(AVMNodeConverter.ToNodeRef(-1, "main:/a/b/c/"), - "banana", ContentModel.TYPE_AVM_PLAIN_CONTENT) != null); + "banana", WCMModel.TYPE_AVM_PLAIN_CONTENT) != null); assertTrue(ffs.create(AVMNodeConverter.ToNodeRef(-1, "main://"), - "banana", ContentModel.TYPE_AVM_PLAIN_CONTENT) != null); + "banana", WCMModel.TYPE_AVM_PLAIN_CONTENT) != null); assertTrue(ffs.create(AVMNodeConverter.ToNodeRef(-1, "main:/a/b/c"), - "apples", ContentModel.TYPE_AVM_PLAIN_FOLDER) != null); + "apples", WCMModel.TYPE_AVM_PLAIN_FOLDER) != null); NodeService ns = (NodeService)fContext.getBean("NodeService"); Map properties = new HashMap(); - properties.put(ContentModel.PROP_AVM_DIR_INDIRECTION, + properties.put(WCMModel.PROP_AVM_DIR_INDIRECTION, AVMNodeConverter.ToNodeRef(-1, "main:/a")); assertTrue(ns.createNode(AVMNodeConverter.ToNodeRef(-1, "main:/"), ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.APP_MODEL_1_0_URI, "layer"), - ContentModel.TYPE_AVM_LAYERED_FOLDER, + WCMModel.TYPE_AVM_LAYERED_FOLDER, properties) != null); assertTrue(ns.getProperty(AVMNodeConverter.ToNodeRef(-1, "main:/layer"), - ContentModel.PROP_AVM_DIR_INDIRECTION) != null); + WCMModel.PROP_AVM_DIR_INDIRECTION) != null); properties.clear(); - properties.put(ContentModel.PROP_AVM_FILE_INDIRECTION, + properties.put(WCMModel.PROP_AVM_FILE_INDIRECTION, AVMNodeConverter.ToNodeRef(-1, "main:/a/b/c/foo")); assertTrue(ns.createNode(AVMNodeConverter.ToNodeRef(-1, "main:/"), ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.APP_MODEL_1_0_URI, "foo"), - ContentModel.TYPE_AVM_LAYERED_CONTENT, + WCMModel.TYPE_AVM_LAYERED_CONTENT, properties) != null); assertTrue(ns.getProperty(AVMNodeConverter.ToNodeRef(-1, "main:/foo"), - ContentModel.PROP_AVM_FILE_INDIRECTION) != null); + WCMModel.PROP_AVM_FILE_INDIRECTION) != null); fService.createSnapshot("main"); System.out.println(recursiveList("main", -1, true)); } diff --git a/source/java/org/alfresco/service/namespace/NamespaceService.java b/source/java/org/alfresco/service/namespace/NamespaceService.java index 7bac210a62..3c360fdb04 100644 --- a/source/java/org/alfresco/service/namespace/NamespaceService.java +++ b/source/java/org/alfresco/service/namespace/NamespaceService.java @@ -92,6 +92,12 @@ public interface NamespaceService extends NamespacePrefixResolver /** Alfresco security Prefix */ public static final String SECURITY_MODEL_PREFIX = "security"; + /** Alfresco WCM URI */ + public static final String WCM_MODEL_1_0_URI = "http://www.alfresco.org/model/wcmmodel/1.0"; + + /** Alfresco WCM Prefix */ + public static final String WCM_MODEL_PREFIX = "wcm"; + /** * Register a prefix for namespace uri.