All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.ade.configuration.TestBaseModule Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

The newest version!
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (C) Alkacon Software (http://www.alkacon.com)
 *
 * This library 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 2.1 of the License, or (at your option) any later version.
 *
 * This library 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.
 *
 * For further information about Alkacon Software, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.ade.configuration;

import org.opencms.ade.contenteditor.CmsContentTypeVisitor;
import org.opencms.file.CmsFile;
import org.opencms.file.CmsObject;
import org.opencms.file.CmsResourceBuilder;
import org.opencms.file.types.I_CmsResourceType;
import org.opencms.main.OpenCms;
import org.opencms.module.CmsModule;
import org.opencms.report.CmsShellReport;
import org.opencms.test.OpenCmsTestCase;
import org.opencms.test.OpenCmsTestProperties;
import org.opencms.util.CmsUUID;
import org.opencms.xml.CmsXmlContentDefinition;
import org.opencms.xml.CmsXmlEntityResolver;
import org.opencms.xml.types.CmsXmlNestedContentDefinition;
import org.opencms.xml.types.I_CmsXmlSchemaType;

import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;

import org.apache.logging.log4j.core.appender.OpenCmsTestLogAppender;

import junit.framework.Test;

/**
 * Tests involving the resource types from the org.opencms.base module.
 *
 */
public class TestBaseModule extends OpenCmsTestCase {

    /**
     * Test constructor.

* * @param name the name of the test */ public TestBaseModule(String name) { super(name); } /** * Returns the test suite.

* * @return the test suite */ public static Test suite() { CmsConfigurationCache.DEBUG = true; OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); return generateSetupTestWrapper(TestBaseModule.class, "simpletest", "/"); } /** * Tests that most labels in the base module's content types are defined. * * @throws Exception if something goes wrong */ public void testEditorLabels() throws Exception { try { OpenCmsTestLogAppender.setBreakOnError(false); File moduleZip = createBaseModuleZip(); CmsObject cms = getCmsObject(); OpenCms.getModuleManager().replaceModule( cms, moduleZip.getAbsolutePath(), new CmsShellReport(cms.getRequestContext().getLocale())); System.out.flush(); OpenCms.getADEManager().waitForCacheUpdate(false); // these types are edited using special editors, not through the XML content editor, // so we do not really need labels Set schemaBlacklist = new HashSet<>( Arrays.asList( "/system/modules/org.opencms.ade.containerpage/schemas/container_page.xsd", "/system/modules/org.opencms.ade.containerpage/schemas/group_container.xsd", "/system/modules/org.opencms.ade.containerpage/schemas/inheritance_config.xsd", "/system/modules/org.opencms.ade.config/schemas/bundledescriptor.xsd")); CmsModule base = OpenCms.getModuleManager().getModule("org.opencms.base"); CmsXmlEntityResolver entityResolver = new CmsXmlEntityResolver(cms); for (I_CmsResourceType type : base.getResourceTypes()) { String schema = type.getConfiguration().getString("schema", null); if (schema != null) { if (!schemaBlacklist.contains(schema)) { CmsXmlContentDefinition contentDef = CmsXmlContentDefinition.unmarshal( "opencms:/" + schema, entityResolver); checkContentDefinition(null, schema, contentDef); } } } } finally { OpenCmsTestLogAppender.setBreakOnError(true); } } /** * Waits until the configuration update task has been run.

* * @param online true if we should wait for the Online task, false for the Offline task */ public void waitForUpdate(boolean online) { OpenCms.getADEManager().getCache(online).getWaitHandleForUpdateTask().enter(0); } /** * Helper method for checking that the labels are defined. * * @param visitor the visitor to use * @param schema the original resource type's schema * @param contentDef the current content definition * * @throws Exception if something goes wrong */ private void checkContentDefinition( CmsContentTypeVisitor visitor, String schema, CmsXmlContentDefinition contentDef) throws Exception { final Locale contentLocale = Locale.ENGLISH; if (visitor == null) { CmsResourceBuilder builder = new CmsResourceBuilder(); builder.setStructureId(new CmsUUID()); builder.setResourceId(new CmsUUID()); builder.setType(OpenCms.getResourceManager().getResourceType("xmlcontent")); builder.setRootPath("/dummy-file.xml"); CmsFile dummyFile = new CmsFile(builder.buildResource()); visitor = new CmsContentTypeVisitor(getCmsObject(), dummyFile, contentLocale); visitor.visitTypes(contentDef, Locale.ENGLISH); } for (I_CmsXmlSchemaType typeEntry : contentDef.getTypeSequence()) { String label = visitor.getLabel(typeEntry, null); if (label == null) { fail(schema + ": missing label for " + contentDef.getInnerName() + "." + typeEntry.getName()); } if (typeEntry instanceof CmsXmlNestedContentDefinition) { checkContentDefinition( visitor, schema, ((CmsXmlNestedContentDefinition)typeEntry).getNestedContentDefinition()); } } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy