diff --git a/bom/application/pom.xml b/bom/application/pom.xml index a02bcfa7d616..419a6c18fe7f 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -908,7 +908,7 @@ com.thoughtworks.xstream xstream - 1.4.17 + 1.4.20 xpp3 diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-types-fields-list/content-types-fields-list.component.scss b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-types-fields-list/content-types-fields-list.component.scss index b56076804124..0e7eebd5fbe4 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-types-fields-list/content-types-fields-list.component.scss +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/fields/content-types-fields-list/content-types-fields-list.component.scss @@ -1,6 +1,10 @@ @use "variables" as *; $icon-size: 24px; +:host { + overflow: auto; + margin-bottom: 1.5rem; +} .content-types-fields-list { margin: 0; padding: 0; diff --git a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.scss b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.scss index 06ae9b441d7f..afa0f5e99cb1 100644 --- a/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.scss +++ b/core-web/apps/dotcms-ui/src/app/portlets/shared/dot-content-types-edit/components/layout/content-types-layout.component.scss @@ -87,10 +87,6 @@ $top-height: ($toolbar-height + $tabview-nav-height + $dot-secondary-toolbar-mai flex-direction: column; flex-shrink: 0; - dot-content-types-fields-list { - overflow: auto; - } - dot-content-type-fields-row-list { height: 200px; } diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContainerHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContainerHandler.java index 7e401fc11d7f..e780dde95e84 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContainerHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContainerHandler.java @@ -56,6 +56,7 @@ import com.dotcms.publishing.PublisherConfig; import com.dotcms.publishing.PublisherConfig.Operation; import com.dotcms.rendering.velocity.services.ContainerLoader; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.VersionInfo; @@ -75,7 +76,6 @@ import com.liferay.util.FileUtil; import com.liferay.util.StringPool; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import io.vavr.control.Try; import java.io.File; @@ -150,7 +150,7 @@ private void handleContainers(final Collection containers) throws DotPubli final User systemUser = userAPI.getSystemUser(); File workingOn = null; try { - XStream xstream = new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); // Handle folders for (final File containerFile : containers) { workingOn = containerFile; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandler.java index 1bc8ff4adc53..5719dbde4a24 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandler.java @@ -65,6 +65,7 @@ import com.dotcms.storage.FileMetadataAPI; import com.dotcms.storage.model.Metadata; import com.dotcms.util.CollectionsUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.MultiTree; @@ -116,8 +117,6 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; -import com.thoughtworks.xstream.mapper.MapperWrapper; import io.vavr.Lazy; import org.apache.commons.lang3.tuple.Pair; @@ -265,7 +264,7 @@ private void handleContents(final Collection contents, final File folderOu Contentlet content = null; ContentWrapper wrapper = null; try{ - final XStream xstream = newXStreamInstance(); + final XStream xstream = XStreamHandler.newXStreamInstance(); final Set> pushedIdsToIgnore = new HashSet<>(); for (final File contentFile : contents) { workingOn=contentFile; @@ -1331,29 +1330,4 @@ private void persistMetadata(final Contentlet contentlet, final Map wFiles) throws DotPublishing final ExistingContentMapping existingContentMap = HandlerUtil.getExistingContentByBundleId(config.getId()); - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); for (final File wFile : wFiles) { workingOn = wFile; if(wFile.isDirectory()) continue; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/FolderHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/FolderHandler.java index b9bded699107..09908e2f0913 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/FolderHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/FolderHandler.java @@ -53,6 +53,7 @@ import com.dotcms.publisher.receiver.handler.IHandler; import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; import com.dotmarketing.business.APILocator; @@ -75,7 +76,6 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import io.vavr.control.Try; import java.io.File; @@ -167,7 +167,7 @@ private void handleFolders(Collection folders) throws DotPublishingExcepti Host host = null; File workingOn = null; try{ - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); //Handle folders for(File folderFile: folders) { workingOn = folderFile; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LanguageHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LanguageHandler.java index e463b4706afd..41c9ee3df524 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LanguageHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LanguageHandler.java @@ -53,6 +53,7 @@ import com.dotcms.publisher.receiver.handler.IHandler; import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.exception.DotDataException; import com.dotmarketing.portlets.languagesmanager.business.LanguageAPI; @@ -64,7 +65,6 @@ import com.dotmarketing.util.UtilMethods; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; @@ -116,7 +116,7 @@ private void handleLanguages(Collection languages) throws DotPublishingExc try{ final List publishCollectedLanguages = new ArrayList<>(); - final XStream xstream = new XStream(new DomDriver()); + final XStream xstream = XStreamHandler.newXStreamInstance(); for(final File languageFile: languages) { workingOn = languageFile; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LinkHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LinkHandler.java index 1b9d7a8668cd..84fc07545041 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LinkHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/LinkHandler.java @@ -54,6 +54,7 @@ import com.dotcms.publisher.receiver.handler.IHandler; import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.VersionInfo; @@ -73,7 +74,6 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; @@ -137,7 +137,7 @@ private void handleLinks(Collection links) throws DotPublishingException, File workingOn = null; Link linkToPublish = null; try{ - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); for(File linkFile: links) { workingOn = linkFile; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RelationshipHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RelationshipHandler.java index ff4b493c15b1..1dfb41600ee4 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RelationshipHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RelationshipHandler.java @@ -53,6 +53,7 @@ import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; import com.dotcms.publishing.PublisherConfig.Operation; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.business.RelationshipAPI; import com.dotmarketing.portlets.structure.model.Relationship; @@ -63,7 +64,6 @@ import com.dotmarketing.util.UtilMethods; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; import java.nio.file.Files; @@ -112,7 +112,7 @@ private void handleRelationships(Collection relationships) throws DotPubli Relationship relationshipToPublish = null; try{ RelationshipAPI relationshipAPI = APILocator.getRelationshipAPI(); - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); for(File relationshipFile : relationships){ workingOn = relationshipFile; if(relationshipFile.isDirectory()) continue; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RuleHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RuleHandler.java index af88f2334363..4391da886267 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RuleHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/RuleHandler.java @@ -55,6 +55,7 @@ import com.dotcms.publisher.receiver.handler.IHandler; import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.exception.DotDataException; import com.dotmarketing.exception.DotSecurityException; @@ -71,7 +72,6 @@ import com.liferay.util.FileUtil; import com.liferay.util.StringPool; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; @@ -173,7 +173,7 @@ public List getWarnings() { */ private void handleRules(final Collection rules) throws DotPublishingException { - final XStream xStream = new XStream(new DomDriver()); + final XStream xStream = XStreamHandler.newXStreamInstance(); String ruleToProcess = StringPool.BLANK; File ruleFileToRead = null; User systemUser; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/StructureHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/StructureHandler.java index 4f26e9e39d5a..3d55b13ec5fe 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/StructureHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/StructureHandler.java @@ -54,6 +54,7 @@ import com.dotcms.publishing.PublisherConfig; import com.dotcms.publishing.PublisherConfig.Operation; import com.dotcms.repackage.com.google.common.collect.ImmutableList; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.business.CacheLocator; import com.dotmarketing.business.DotStateException; @@ -74,7 +75,6 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; import java.nio.file.Files; @@ -118,7 +118,7 @@ private void handleStructures(Collection structures) throws DotPublishingE } try{ - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); //Handle folders for(File structureFile: structures) { if(structureFile.isDirectory()) continue; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/TemplateHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/TemplateHandler.java index 1fd3673da516..e7663151dc52 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/TemplateHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/TemplateHandler.java @@ -55,6 +55,7 @@ import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; import com.dotcms.rendering.velocity.services.TemplateLoader; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.VersionInfo; @@ -74,7 +75,6 @@ import com.liferay.util.FileUtil; import com.liferay.util.StringPool; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; import java.nio.file.Files; @@ -127,7 +127,7 @@ private void handleTemplates(Collection templates) throws DotPublishingExc File workingOn = null; Template template = null; try{ - XStream xstream=new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); //Handle folders for(File templateFile: templates) { workingOn = templateFile; diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/UserHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/UserHandler.java index a21571857cdf..26b4a12702da 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/UserHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/UserHandler.java @@ -53,6 +53,7 @@ import com.dotcms.publisher.receiver.handler.IHandler; import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.business.NoSuchUserException; import com.dotmarketing.business.Role; @@ -67,12 +68,10 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.util.Collection; -import java.util.List; /** * This handler class is part of the Push Publishing mechanism that deals with User-related information inside a @@ -125,7 +124,7 @@ public void handle ( File bundleFolder ) throws Exception { //Get the list of wrapper files Collection usersData = FileUtil.listFilesRecursively( bundleFolder, new UserBundler().getFileFilter() ); - XStream xstream = new XStream( new DomDriver() ); + XStream xstream = XStreamHandler.newXStreamInstance(); for ( File userData : usersData ) { workingOn = userData; if ( userData.isDirectory() ) { diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/WorkflowHandler.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/WorkflowHandler.java index 8974f6a603aa..3c45a7c6b675 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/WorkflowHandler.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/remote/handler/WorkflowHandler.java @@ -55,6 +55,7 @@ import com.dotcms.publishing.DotPublishingException; import com.dotcms.publishing.PublisherConfig; import com.dotcms.publishing.PublisherConfig.Operation; +import com.dotcms.util.xstream.XStreamHandler; import com.dotcms.workflow.helper.SystemActionMappingsHandlerMerger; import com.dotmarketing.beans.Permission; import com.dotmarketing.business.APILocator; @@ -81,7 +82,6 @@ import com.liferay.portal.model.User; import com.liferay.util.FileUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -153,7 +153,7 @@ private void handleWorkflows(final Collection workflows) File workingOn = null; try { - final XStream xstream = new XStream(new DomDriver()); + final XStream xstream = XStreamHandler.newXStreamInstance(); final WorkflowAPI workflowAPI = APILocator.getWorkflowAPI(); //Handle folders for (final File workflowFile : workflows) { diff --git a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/staticpublishing/StaticPublisher.java b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/staticpublishing/StaticPublisher.java index 7fc56f414415..33dac31b30e5 100644 --- a/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/staticpublishing/StaticPublisher.java +++ b/dotCMS/src/enterprise/java/com/dotcms/enterprise/publishing/staticpublishing/StaticPublisher.java @@ -144,7 +144,7 @@ public StaticPublisher() { */ private void checkLicense() { if (LicenseUtil.getLevel() < REQUIRED_LICENSE_LEVEL) { - throw new RuntimeException("Need an Platform license to run this functionality"); + throw new RuntimeException("Need a Platform license to run this functionality"); } } //checkLicense. diff --git a/dotCMS/src/integration-test/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandlerTest.java b/dotCMS/src/integration-test/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandlerTest.java index 44caadc5a088..5b8cd12dc184 100644 --- a/dotCMS/src/integration-test/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandlerTest.java +++ b/dotCMS/src/integration-test/java/com/dotcms/enterprise/publishing/remote/handler/ContentHandlerTest.java @@ -4,9 +4,9 @@ import static org.junit.Assert.assertTrue; import com.dotcms.publisher.pusher.wrapper.ContentWrapper; -import com.dotcms.security.apps.SecretsStore; import com.dotcms.test.util.FileTestUtil; import com.dotcms.util.IntegrationTestInitService; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.portlets.contentlet.model.Contentlet; import com.thoughtworks.xstream.XStream; import java.io.File; @@ -34,7 +34,7 @@ public static void prepare() throws Exception { */ @Test public void Test_XStream_Deserializer() throws IOException { - final XStream xStream = ContentHandler.newXStreamInstance(); + final XStream xStream = XStreamHandler.newXStreamInstance(); final File file = FileTestUtil.getFileInResources(INPUT_FILE_PATH); ContentWrapper wrapper; diff --git a/dotCMS/src/integration-test/java/com/dotmarketing/portlets/workflows/model/SystemActionWorkflowActionMappingTest.java b/dotCMS/src/integration-test/java/com/dotmarketing/portlets/workflows/model/SystemActionWorkflowActionMappingTest.java index c9a02bddd2dd..fc76a2722f49 100644 --- a/dotCMS/src/integration-test/java/com/dotmarketing/portlets/workflows/model/SystemActionWorkflowActionMappingTest.java +++ b/dotCMS/src/integration-test/java/com/dotmarketing/portlets/workflows/model/SystemActionWorkflowActionMappingTest.java @@ -5,6 +5,8 @@ import com.dotcms.publisher.pusher.wrapper.ContentTypeWrapper; import com.dotcms.publisher.pusher.wrapper.WorkflowWrapper; import com.dotcms.publishing.DotPrettyPrintWriter; +import com.dotcms.util.IntegrationTestInitService; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.business.APILocator; import com.dotmarketing.exception.DotDataException; import com.dotmarketing.exception.DotSecurityException; @@ -15,17 +17,24 @@ import com.liferay.portal.model.User; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.IOException; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.Optional; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class SystemActionWorkflowActionMappingTest { + @BeforeClass + public static void prepare() throws Exception { + //Setting web app environment + IntegrationTestInitService.getInstance().init(); + } + /** * The idea behind this method is test how XStream performs over the SystemActionWorkflowActionMapping since it is an immutable object * this to ensure the communication between the local and remote nodes on the PP @@ -37,7 +46,7 @@ public void test_serialize_deserialize_xstream () throws DotSecurityException, D final WorkflowAPI workflowAPI = APILocator.getWorkflowAPI(); final User systemUser = APILocator.systemUser(); - final XStream xstreamWriter = new XStream(new DomDriver("UTF-8")); + final XStream xstreamWriter = XStreamHandler.newXStreamInstance(StandardCharsets.UTF_8.name()); final StringWriter writer = new StringWriter(); final HierarchicalStreamWriter xmlWriter = new DotPrettyPrintWriter(writer); final WorkflowScheme workflowScheme = workflowAPI.findScheme(SystemWorkflowConstants.SYSTEM_WORKFLOW_ID); @@ -46,9 +55,8 @@ public void test_serialize_deserialize_xstream () throws DotSecurityException, D Assert.assertTrue("The System Workflow must have system actions",systemActionMappingsDB.size()>0); xstreamWriter.marshal(systemActionMappingsDB, xmlWriter); - final XStream xstreamReader = new XStream(new DomDriver()); final List systemActionMappingsRecovery = - (List) xstreamReader.fromXML(writer.toString()); + (List) XStreamHandler.newXStreamInstance().fromXML(writer.toString()); Assert.assertNotNull(systemActionMappingsRecovery); Assert.assertTrue("The System Workflow must have system actions",systemActionMappingsRecovery.size()>0); @@ -80,7 +88,7 @@ public void test_serialize_deserialize_wrapper_xstream () throws DotSecurityExce final WorkflowAPI workflowAPI = APILocator.getWorkflowAPI(); final User systemUser = APILocator.systemUser(); - final XStream xstreamWriter = new XStream(new DomDriver("UTF-8")); + final XStream xstreamWriter = XStreamHandler.newXStreamInstance(StandardCharsets.UTF_8.name()); final StringWriter writer = new StringWriter(); final HierarchicalStreamWriter xmlWriter = new DotPrettyPrintWriter(writer); @@ -94,9 +102,8 @@ public void test_serialize_deserialize_wrapper_xstream () throws DotSecurityExce workflowWrapper.setSystemActionMappings(systemActionMappingsDB); xstreamWriter.marshal(workflowWrapper, xmlWriter); - final XStream xstreamReader = new XStream(new DomDriver()); final WorkflowWrapper workflowWrapperRecovery = - (WorkflowWrapper) xstreamReader.fromXML(writer.toString()); + (WorkflowWrapper) XStreamHandler.newXStreamInstance().fromXML(writer.toString()); Assert.assertNotNull(workflowWrapperRecovery); Assert.assertNotNull(workflowWrapperRecovery.getScheme()); diff --git a/dotCMS/src/main/java/com/dotcms/content/elasticsearch/business/ESContentletAPIImpl.java b/dotCMS/src/main/java/com/dotcms/content/elasticsearch/business/ESContentletAPIImpl.java index c3ae9c2c48b9..6149a155688f 100644 --- a/dotCMS/src/main/java/com/dotcms/content/elasticsearch/business/ESContentletAPIImpl.java +++ b/dotCMS/src/main/java/com/dotcms/content/elasticsearch/business/ESContentletAPIImpl.java @@ -49,6 +49,7 @@ import com.dotcms.util.FunctionUtils; import com.dotcms.util.JsonUtil; import com.dotcms.util.ThreadContextUtil; +import com.dotcms.util.xstream.XStreamHandler; import com.dotcms.variant.VariantAPI; import com.dotcms.variant.model.Variant; import com.dotmarketing.beans.Host; @@ -170,7 +171,6 @@ import com.liferay.util.StringUtil; import com.rainerhahnekamp.sneakythrow.Sneaky; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import io.vavr.Lazy; import io.vavr.Tuple2; import io.vavr.control.Try; @@ -2891,7 +2891,7 @@ private void backupDestroyedContentlets(final List contentlets, fina if (contentlets.size() > 0) { - final XStream xstream = new XStream(new DomDriver()); + final XStream xstream = XStreamHandler.newXStreamInstance(); final File backupFolder = new File(backupPath); if (!backupFolder.exists()) { @@ -3226,7 +3226,7 @@ public void deleteAllVersionsandBackup(List contentlets, User user, } if (contentlets.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -3252,7 +3252,7 @@ public void deleteAllVersionsandBackup(List contentlets, User user, Logger.error(this, e.getMessage()); } } - _xstream.toXML(contentlets, _bout); + xStreamInstance.toXML(contentlets, _bout); } deleteBinaryFiles(contentletsVersion, null); diff --git a/dotCMS/src/main/java/com/dotcms/contenttype/business/sql/FixTaskFixStructureTable.java b/dotCMS/src/main/java/com/dotcms/contenttype/business/sql/FixTaskFixStructureTable.java index 2e249101a6c2..f46d648937b1 100644 --- a/dotCMS/src/main/java/com/dotcms/contenttype/business/sql/FixTaskFixStructureTable.java +++ b/dotCMS/src/main/java/com/dotcms/contenttype/business/sql/FixTaskFixStructureTable.java @@ -1,6 +1,7 @@ package com.dotcms.contenttype.business.sql; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.Inode; @@ -15,7 +16,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -188,7 +188,7 @@ public List > executeFix() throws DotDataException, DotRunti public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -201,7 +201,7 @@ public List > getModifiedData() { + "FixTask00001CheckAssetsMissingIdentifiers" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotcms/publisher/business/PublishAuditHistory.java b/dotCMS/src/main/java/com/dotcms/publisher/business/PublishAuditHistory.java index 397eecab9ed2..453ba72609c7 100644 --- a/dotCMS/src/main/java/com/dotcms/publisher/business/PublishAuditHistory.java +++ b/dotCMS/src/main/java/com/dotcms/publisher/business/PublishAuditHistory.java @@ -1,9 +1,9 @@ package com.dotcms.publisher.business; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.util.Logger; import com.dotmarketing.util.UtilMethods; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.Serializable; import java.util.Date; import java.util.HashMap; @@ -113,7 +113,7 @@ public void addOrUpdateEndpoint(String groupId, String endpointId, EndpointDetai } } - static XStream xstream=new XStream(new DomDriver()); + static XStream xstream = XStreamHandler.newXStreamInstance(); public String getSerialized() { diff --git a/dotCMS/src/main/java/com/dotcms/publisher/util/PushCategoryUtil.java b/dotCMS/src/main/java/com/dotcms/publisher/util/PushCategoryUtil.java index a5a580a0576f..5a469bbcc28d 100644 --- a/dotCMS/src/main/java/com/dotcms/publisher/util/PushCategoryUtil.java +++ b/dotCMS/src/main/java/com/dotcms/publisher/util/PushCategoryUtil.java @@ -2,8 +2,8 @@ import com.dotcms.publisher.pusher.wrapper.CategoryWrapper; import com.dotcms.publishing.DotPublishingException; +import com.dotcms.util.xstream.XStreamHandler; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -28,7 +28,7 @@ public class PushCategoryUtil { private int categoriesCount; public PushCategoryUtil(Collection categories, String categoryExtension) throws DotPublishingException { - xstream=new XStream(new DomDriver()); + xstream = XStreamHandler.newXStreamInstance(); categoriesByInode = new HashMap<>(); categoriesTopLevel = new HashSet<>(); diff --git a/dotCMS/src/main/java/com/dotcms/publishing/XMLSerializerUtil.java b/dotCMS/src/main/java/com/dotcms/publishing/XMLSerializerUtil.java index 44cded98d553..73f6eb6c8feb 100644 --- a/dotCMS/src/main/java/com/dotcms/publishing/XMLSerializerUtil.java +++ b/dotCMS/src/main/java/com/dotcms/publishing/XMLSerializerUtil.java @@ -1,11 +1,10 @@ package com.dotcms.publishing; +import com.dotcms.util.xstream.XStreamHandler; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStreamException; -import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.nio.charset.StandardCharsets; @@ -29,7 +28,7 @@ public static XMLSerializerUtil getInstance() { } private XMLSerializerUtil(){ - xmlSerializer = new XStream(new DomDriver(StandardCharsets.UTF_8.name())); + xmlSerializer = XStreamHandler.newXStreamInstance(StandardCharsets.UTF_8.name()); xmlSerializer.autodetectAnnotations(true); } diff --git a/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java b/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java index effca7c6e4f3..83dff407fbc7 100644 --- a/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java +++ b/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java @@ -9,6 +9,7 @@ import com.dotcms.contenttype.transform.field.LegacyFieldTransformer; import com.dotcms.rendering.velocity.viewtools.content.util.ContentUtils; import com.dotcms.repackage.org.apache.commons.httpclient.HttpStatus; +import com.dotcms.util.xstream.XStreamHandler; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import com.dotcms.util.JsonUtil; @@ -60,9 +61,7 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import com.thoughtworks.xstream.io.xml.DomDriver; import io.swagger.v3.oas.annotations.tags.Tag; -import io.vavr.control.Try; import org.glassfish.jersey.media.multipart.BodyPart; import org.glassfish.jersey.media.multipart.ContentDisposition; import org.glassfish.jersey.media.multipart.FormDataMultiPart; @@ -781,7 +780,7 @@ private String getXML(final List cons, final HttpServletRequest requ final boolean allCategoriesInfo){ final StringBuilder sb = new StringBuilder(); - final XStream xstream = new XStream(new DomDriver()); + final XStream xstream = XStreamHandler.newXStreamInstance(); xstream.alias("content", Map.class); xstream.registerConverter(new MapEntryConverter()); sb.append(""); @@ -1024,7 +1023,7 @@ private List addRelatedContentToXMLMap(final HttpServletRequest request, final H private String getXMLContentIds(Contentlet con) { - XStream xstream = new XStream(new DomDriver()); + XStream xstream = XStreamHandler.newXStreamInstance(); xstream.alias("content", Map.class); xstream.registerConverter(new MapEntryConverter()); StringBuilder sb = new StringBuilder(); @@ -2146,7 +2145,7 @@ protected void processXML(Contentlet contentlet, InputStream inputStream) .startsWith(" root = (Map) xstream.fromXML(input); diff --git a/dotCMS/src/main/java/com/dotcms/rest/TestResource.java b/dotCMS/src/main/java/com/dotcms/rest/TestResource.java index 7be9052df78b..6e23874bd198 100644 --- a/dotCMS/src/main/java/com/dotcms/rest/TestResource.java +++ b/dotCMS/src/main/java/com/dotcms/rest/TestResource.java @@ -1,12 +1,12 @@ package com.dotcms.rest; import com.dotcms.repackage.org.apache.commons.httpclient.HttpStatus; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.util.Logger; import com.dotmarketing.util.UtilMethods; import com.dotmarketing.util.json.JSONException; import com.dotmarketing.util.json.JSONObject; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -79,7 +79,7 @@ public Response getDocumentCount (@Context HttpServletRequest request, @Context mapResponse.put( "param1", param1 ); mapResponse.put( "param2", param2 ); - XStream xstream = new XStream( new DomDriver() ); + XStream xstream = XStreamHandler.newXStreamInstance(); xstream.alias( "response", Map.class ); StringBuilder xmlBuilder = new StringBuilder(); @@ -170,7 +170,7 @@ public Response saveTest ( @Context HttpServletRequest request, mapResponse.put( "param1", param1 ); mapResponse.put( "param2", param2 ); - XStream xstream = new XStream( new DomDriver() ); + XStream xstream = XStreamHandler.newXStreamInstance(); xstream.alias( "response", Map.class ); StringBuilder xmlBuilder = new StringBuilder(); diff --git a/dotCMS/src/main/java/com/dotcms/util/xstream/XStreamHandler.java b/dotCMS/src/main/java/com/dotcms/util/xstream/XStreamHandler.java new file mode 100644 index 000000000000..7d76a9473ef1 --- /dev/null +++ b/dotCMS/src/main/java/com/dotcms/util/xstream/XStreamHandler.java @@ -0,0 +1,58 @@ +package com.dotcms.util.xstream; + +import com.dotmarketing.util.Logger; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; +import com.thoughtworks.xstream.mapper.MapperWrapper; + +public class XStreamHandler { + + private XStreamHandler(){ + + } + + public static XStream newXStreamInstance(final String encoding) { + final XStream xstream = new XStream(new DomDriver(encoding)) { + //This is here to prevent unmapped properties from old versions from breaking thr conversion + //https://stackoverflow.com/questions/5377380/how-to-make-xstream-skip-unmapped-tags-when-parsing-xml + @Override + protected MapperWrapper wrapMapper(final MapperWrapper next) { + return new MapperWrapper(next) { + @Override + public boolean shouldSerializeMember(final Class definedIn, + final String fieldName) { + if (definedIn == Object.class) { + Logger.warn(XStreamHandler.class, String.format( + "unmapped property `%s` found ignored while importing bundle. ", + fieldName)); + return false; + } + return super.shouldSerializeMember(definedIn, fieldName); + } + }; + } + }; + + xstream.allowTypesByWildcard(new String[] { + "com.dotcms.**", "com.dotmarketing.**", "com.google.common.collect.**", "java.lang.**", + "java.util.**", "java.sql.**", "com.thoughtworks.xstream.mapper.**" + }); + + xstream.addPermission(aClass -> { + Logger.warn(aClass, aClass.getCanonicalName() + + " should be included in the xstream white list"); + return true; + }); + + return xstream; + } + + /** + * Custom unmapped properties safe XStream instance factory method + * + * @return + */ + public static XStream newXStreamInstance() { + return newXStreamInstance(null); + } +} \ No newline at end of file diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00001CheckAssetsMissingIdentifiers.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00001CheckAssetsMissingIdentifiers.java index 44b60af79e71..6f58acc0e797 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00001CheckAssetsMissingIdentifiers.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00001CheckAssetsMissingIdentifiers.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Identifier; import com.dotmarketing.beans.Inode; @@ -15,7 +16,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -188,7 +188,7 @@ public List > executeFix() throws DotDataException, DotRunti public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -201,7 +201,7 @@ public List > getModifiedData() { + "FixTask00001CheckAssetsMissingIdentifiers" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00003CheckContainersInconsistencies.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00003CheckContainersInconsistencies.java index b05d9eb15279..599fd71ae30a 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00003CheckContainersInconsistencies.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00003CheckContainersInconsistencies.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Inode; import com.dotmarketing.common.db.DotConnect; @@ -14,7 +15,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -152,7 +152,7 @@ public List > executeFix() throws DotDataException, DotRunt public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -165,7 +165,7 @@ public List > getModifiedData() { + "FixTask00003CheckContainersInconsistencies" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00006CheckLinksInconsistencies.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00006CheckLinksInconsistencies.java index 2c8908dbff66..fe15a614ec41 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00006CheckLinksInconsistencies.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00006CheckLinksInconsistencies.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.DbConnectionFactory; @@ -13,7 +14,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -155,7 +155,7 @@ public List > executeFix() throws DotDataException, DotRunti public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -168,7 +168,7 @@ public List > getModifiedData() { + "FixTask00006CheckLinksInconsistencies" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00007CheckTemplatesInconsistencies.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00007CheckTemplatesInconsistencies.java index 9e7bda092ae2..92493505ae20 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00007CheckTemplatesInconsistencies.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00007CheckTemplatesInconsistencies.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.DbConnectionFactory; @@ -154,7 +155,7 @@ public List > executeFix() throws DotDataException, DotRunti public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -167,7 +168,7 @@ public List > getModifiedData() { + "FixTask00007CheckTemplatesInconsistencies" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00008CheckTreeInconsistencies.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00008CheckTreeInconsistencies.java index 632a7b2fea58..e49cde37c00a 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00008CheckTreeInconsistencies.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00008CheckTreeInconsistencies.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.DbConnectionFactory; @@ -13,7 +14,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -144,7 +144,7 @@ public List > executeFix() throws DotDataException, public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -157,7 +157,7 @@ public List > getModifiedData() { + "FixTask00008CheckTreeInconsistencies" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00009CheckContentletsInexistentInodes.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00009CheckContentletsInexistentInodes.java index 4b5454a8edb1..30578e8e4f6a 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00009CheckContentletsInexistentInodes.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00009CheckContentletsInexistentInodes.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.HibernateUtil; @@ -12,7 +13,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -121,7 +121,7 @@ public class FixTask00009CheckContentletsInexistentInodes implements FixTask { public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -134,7 +134,7 @@ public List > getModifiedData() { + "FixTask00009CheckContentletsInconsistencies" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00011RenameHostInFieldVariableName.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00011RenameHostInFieldVariableName.java index b25f565c89ba..9e1a3eacf506 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00011RenameHostInFieldVariableName.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00011RenameHostInFieldVariableName.java @@ -1,5 +1,6 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.HibernateUtil; @@ -11,7 +12,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -85,7 +85,7 @@ public List> executeFix() throws DotDataException, DotRuntim public List > getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -106,7 +106,7 @@ public List > getModifiedData() { + "FixTask00011RenameHostInFieldVariableName" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00012UpdateAssetsHosts.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00012UpdateAssetsHosts.java index 5789a757f71f..204aa543b6f4 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00012UpdateAssetsHosts.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00012UpdateAssetsHosts.java @@ -1,5 +1,6 @@ package com.dotmarketing.fixtask.tasks; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Host; import com.dotmarketing.beans.Inode; @@ -17,7 +18,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -195,7 +195,7 @@ public List> executeFix() throws DotDataException, DotRuntim public List> getModifiedData() { if (0 < modifiedData.size()) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -214,7 +214,7 @@ public List> getModifiedData() { _writing = new java.io.File(ConfigUtils.getBackupPath()+File.separator+"fixes" + java.io.File.separator + lastmoddate + "_" + "FixTask00012UpdateAssetsHosts" + ".xml"); try (BufferedOutputStream _bout = new BufferedOutputStream(Files.newOutputStream(_writing.toPath()))){ - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } catch (IOException e) { Logger.error(this, "Error trying to get modified data from XML.", e); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00020DeleteOrphanedIdentifiers.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00020DeleteOrphanedIdentifiers.java index d8baea1e8f1a..fbc6c8ec648b 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00020DeleteOrphanedIdentifiers.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00020DeleteOrphanedIdentifiers.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Inode; import com.dotmarketing.common.db.DotConnect; @@ -13,7 +14,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -140,7 +140,7 @@ public List> executeFix() throws DotDataException, public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -159,7 +159,7 @@ public List> getModifiedData() { } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00030DeleteOrphanedAssets.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00030DeleteOrphanedAssets.java index 394f55ece9d1..0c85df9a3edd 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00030DeleteOrphanedAssets.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00030DeleteOrphanedAssets.java @@ -4,6 +4,7 @@ package com.dotmarketing.fixtask.tasks; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.HibernateUtil; @@ -15,7 +16,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -165,7 +165,7 @@ public List> executeFix() throws DotDataException, DotRuntim public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -184,7 +184,7 @@ public List> getModifiedData() { } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00050FixInodesWithoutContentlets.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00050FixInodesWithoutContentlets.java index 80df504fca09..980278480f38 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00050FixInodesWithoutContentlets.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00050FixInodesWithoutContentlets.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.HibernateUtil; @@ -12,7 +13,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -141,7 +141,7 @@ public List> executeFix() throws DotDataException, public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -160,7 +160,7 @@ public List> getModifiedData() { } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00060FixAssetType.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00060FixAssetType.java index f834b648a670..96feb657e61f 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00060FixAssetType.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00060FixAssetType.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.Inode; import com.dotmarketing.business.CacheLocator; import com.dotmarketing.common.db.DotConnect; @@ -11,7 +12,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -142,7 +142,7 @@ public List> executeFix() throws DotDataException, DotRuntim @Override public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -161,7 +161,7 @@ public List> getModifiedData() { } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00080DeleteOrphanedContentTypeFields.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00080DeleteOrphanedContentTypeFields.java index c7cadf4b8fb5..4ee652e15bc1 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00080DeleteOrphanedContentTypeFields.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00080DeleteOrphanedContentTypeFields.java @@ -1,6 +1,7 @@ package com.dotmarketing.fixtask.tasks; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.common.db.DotConnect; import com.dotmarketing.db.HibernateUtil; @@ -13,7 +14,6 @@ import com.dotmarketing.util.Logger; import com.dotmarketing.util.MaintenanceUtil; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -118,7 +118,7 @@ public List> executeFix() throws DotDataException, @Override public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -139,7 +139,7 @@ public List> getModifiedData() { Logger.error(this, "Could not write to Fix Task status file."); } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00090RecreateMissingFoldersInParentPath.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00090RecreateMissingFoldersInParentPath.java index 469e58e966f1..33d5cec05c4c 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00090RecreateMissingFoldersInParentPath.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00090RecreateMissingFoldersInParentPath.java @@ -6,6 +6,7 @@ import com.dotcms.repackage.com.google.common.base.Preconditions; import com.dotcms.repackage.com.google.common.base.Strings; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Identifier; import com.dotmarketing.business.APILocator; @@ -22,7 +23,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; @@ -208,7 +208,7 @@ private void createFixAudit(List> returnValue, int total) th @Override public List> getModifiedData() { if (modifiedData.size() > 0) { - XStream _xstream = new XStream(new DomDriver()); + XStream xStreamInstance = XStreamHandler.newXStreamInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); String lastmoddate = sdf.format(date); @@ -230,7 +230,7 @@ public List> getModifiedData() { Logger.error(this, "Could not write to Fix Task status file."); } try { - _xstream.toXML(modifiedData, _bout); + xStreamInstance.toXML(modifiedData, _bout); } finally { CloseUtils.closeQuietly(_bout); } diff --git a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00095DeleteOrphanRelationships.java b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00095DeleteOrphanRelationships.java index 6ceb59d58ab6..9e451f44bcfc 100644 --- a/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00095DeleteOrphanRelationships.java +++ b/dotCMS/src/main/java/com/dotmarketing/fixtask/tasks/FixTask00095DeleteOrphanRelationships.java @@ -2,6 +2,7 @@ import com.dotcms.business.WrapInTransaction; import com.dotcms.util.CloseUtils; +import com.dotcms.util.xstream.XStreamHandler; import com.dotmarketing.beans.FixAudit; import com.dotmarketing.beans.Inode; import com.dotmarketing.business.APILocator; @@ -18,7 +19,6 @@ import com.dotmarketing.util.ConfigUtils; import com.dotmarketing.util.Logger; import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; @@ -101,7 +101,7 @@ public List> executeFix() throws DotDataException { public List> getModifiedData() { if (modifiedData.isEmpty()) { final String fixesUriSubstring = "fixes"; - final XStream xstreamObj = new XStream(new DomDriver()); + final XStream xstreamObj = XStreamHandler.newXStreamInstance(); final LocalDate date = LocalDate.now(); final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss"); final String lastModDate = sdf.format(date); diff --git a/dotCMS/src/main/webapp/html/portlet/ext/contentlet/field/edit_field.jsp b/dotCMS/src/main/webapp/html/portlet/ext/contentlet/field/edit_field.jsp index dbabe04bb0ee..04c763a17c3d 100644 --- a/dotCMS/src/main/webapp/html/portlet/ext/contentlet/field/edit_field.jsp +++ b/dotCMS/src/main/webapp/html/portlet/ext/contentlet/field/edit_field.jsp @@ -750,14 +750,14 @@ * This is a workaround to get the contentlet from the API * because there is no way to get the same contentlet the AP retreive from the dwr call. */ - fetch('/api/content/id/<%=contentlet.getIdentifier()%>', { + fetch('/api/v1/content/<%=contentlet.getInode()%>', { method: 'GET', headers: { 'Content-Type': 'application/json' } - }).then(response => response.json()) - .then(({ contentlets }) => { - const contentlet = contentlets[0]; + }) + .then(response => response.json()) + .then(({ entity: contentlet }) => { const field = document.querySelector('#binary-field-input-<%=field.getFieldContentlet()%>ValueField'); const variable = "<%=field.getVelocityVarName()%>"; const fielData = {