/* * Copyright (C) 2005-2010 Alfresco Software Limited. * * This file is part of Alfresco * * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . */ package org.alfresco.repo.template; import java.io.Serializable; import java.util.Collection; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; import junit.framework.TestCase; import org.alfresco.repo.avm.AVMNodeConverter; import org.alfresco.repo.domain.PropertyValue; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.util.ApplicationContextHelper; import org.springframework.context.ApplicationContext; /** * @author Dmitry Velichkevich */ public class AVMTemplateNodeTest extends TestCase { private static final String TEST_WCM_NAMESPACE = "http://www.alfresco.org/model/testwcmmodel/1.0"; private static final QName ASPECT_AUTHORED = QName.createQName(TEST_WCM_NAMESPACE, "authored"); private static final QName PROP_AUTHORED_DATE = QName.createQName(TEST_WCM_NAMESPACE, "dateAuthored"); private static final ApplicationContext APPLICATION_CONTEXT = ApplicationContextHelper.getApplicationContext(new String[] { "classpath:alfresco/application-context.xml", "classpath:test/alfresco/wcm-template-node-test-context.xml" }); private static final ServiceRegistry SERVICE_REGISTRY = (ServiceRegistry) APPLICATION_CONTEXT.getBean(ServiceRegistry.SERVICE_REGISTRY); private AVMService avmService = SERVICE_REGISTRY.getAVMService(); @Override protected void setUp() throws Exception { avmService.createStore("main"); avmService.createDirectory("main:/", "root"); avmService.createFile("main:/root", "testfile.txt"); } @Override protected void tearDown() throws Exception { avmService.purgeStore("main"); } @SuppressWarnings("unchecked") public void testDatePropertiesConversion() throws Exception { assertNotNull("Aspect 'twcm:authored' is not in the set of compiled dictionary models", SERVICE_REGISTRY.getDictionaryService().getAspect(ASPECT_AUTHORED)); List values = new LinkedList(); for (int i = 0; i < 5; i++) { values.add(new Date()); } PropertyValue value = new PropertyValue(DataTypeDefinition.TEXT, (Serializable) values); avmService.addAspect("main:/root/testfile.txt", ASPECT_AUTHORED); avmService.setNodeProperty("main:/root/testfile.txt", PROP_AUTHORED_DATE, value); NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, "main:/root/testfile.txt"); AVMTemplateNode templateNode = new AVMTemplateNode(nodeRef, SERVICE_REGISTRY, null); Map properties = templateNode.getProperties(); assertNotNull(properties); assertFalse(properties.isEmpty()); assertTrue(properties.containsKey(PROP_AUTHORED_DATE)); Collection authoredDates = (Collection) properties.get(PROP_AUTHORED_DATE); assertNotNull(authoredDates); assertFalse(authoredDates.isEmpty()); for (Serializable date : authoredDates) { assertFalse(("Unexpected data type of 'twcm:authored' property values: " + ((null != date) ? (date.getClass().getName()) : ("null"))), date instanceof String); } } }