View Javadoc
1   /**
2    * This file Copyright (c) 2003-2016 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.setup;
35  
36  import info.magnolia.cms.security.Permission;
37  import info.magnolia.commands.impl.MarkNodeAsDeletedCommand;
38  import info.magnolia.jcr.util.NodeTypes;
39  import info.magnolia.module.AbstractModuleVersionHandler;
40  import info.magnolia.module.InstallContext;
41  import info.magnolia.module.delta.AddURIPermissionTask;
42  import info.magnolia.module.delta.ArrayDelegateTask;
43  import info.magnolia.module.delta.BootstrapConditionally;
44  import info.magnolia.module.delta.BootstrapSingleModuleResource;
45  import info.magnolia.module.delta.BootstrapSingleResource;
46  import info.magnolia.module.delta.CheckAndModifyPropertyValueTask;
47  import info.magnolia.module.delta.Condition;
48  import info.magnolia.module.delta.CreateNodeTask;
49  import info.magnolia.module.delta.DeltaBuilder;
50  import info.magnolia.module.delta.FindAndChangeTemplateIdTask;
51  import info.magnolia.module.delta.FixUserRolePermissionsPropertyTask;
52  import info.magnolia.module.delta.MoveAndRenamePropertyTask;
53  import info.magnolia.module.delta.NoSameNameSiblingsCondition;
54  import info.magnolia.module.delta.NodeExistsDelegateTask;
55  import info.magnolia.module.delta.OrderFilterBeforeTask;
56  import info.magnolia.module.delta.OrderNodeBeforeTask;
57  import info.magnolia.module.delta.PartialBootstrapTask;
58  import info.magnolia.module.delta.PathExistenceDelegateTask;
59  import info.magnolia.module.delta.PropertyExistsDelegateTask;
60  import info.magnolia.module.delta.PropertyValueDelegateTask;
61  import info.magnolia.module.delta.RemoveInstallFilesTask;
62  import info.magnolia.module.delta.RemoveNodeTask;
63  import info.magnolia.module.delta.RemovePermissionTask;
64  import info.magnolia.module.delta.SetPropertyTask;
65  import info.magnolia.module.delta.Task;
66  import info.magnolia.module.delta.WarnTask;
67  import info.magnolia.module.delta.WebXmlConditionsUtil;
68  import info.magnolia.module.delta.WorkspaceXmlConditionsUtil;
69  import info.magnolia.repository.RepositoryConstants;
70  import info.magnolia.setup.for5_0.CheckOrCreateLastActivatedPropertyTask;
71  import info.magnolia.setup.for5_0.ConvertMetaDataUpdateTask;
72  import info.magnolia.setup.for5_0.Register50NodeTypeTask;
73  import info.magnolia.setup.for5_0.RemoveMetaDataInNodeTypeDefinitionTask;
74  import info.magnolia.setup.for5_2.AddActivatableMixinForContentNodeTask;
75  import info.magnolia.setup.for5_2.GrantReadPermissionToRolesTask;
76  import info.magnolia.setup.for5_2.IsNotAProblematicEnvironmentCondition;
77  import info.magnolia.setup.for5_2.RemoveOpenWFEPermissionsTask;
78  import info.magnolia.setup.initial.GenericTasks;
79  
80  import java.util.ArrayList;
81  import java.util.List;
82  
83  import javax.jcr.ImportUUIDBehavior;
84  
85  /**
86   * Special VersionHandler for the core module. As it does not extend {@link info.magnolia.module.DefaultModuleVersionHandler} it has a special getBasicInstallTasks(InstallContext) that
87   * e.g. will not automatically bootstrap xml-files placed in mgnl-bootstrap/core.
88   */
89  public class CoreModuleVersionHandler extends AbstractModuleVersionHandler {
90      public static final String BOOTSTRAP_AUTHOR_INSTANCE_PROPERTY = "magnolia.bootstrap.authorInstance";
91      protected static final String SECURITY_BASE_ROLE = "security-base";
92  
93      // TODO : why is this a BootstrapConditionally and not a BootstrapSingleResource ?
94      private final BootstrapConditionally auditTrailManagerTask = new BootstrapConditionally("New auditory log configuration", "Install new configuration for auditory log manager.", "/mgnl-bootstrap/core/config.server.auditLogging.xml");
95      private final BootstrapSingleResource bootstrapFreemarker = new BootstrapSingleResource("Freemarker configuration", "Freemarker template loaders can now be configured in Magnolia. Adds default configuration", "/mgnl-bootstrap/core/config.server.rendering.freemarker.xml");
96      private final CreateNodeTask addFreemarkerSharedVariables = new CreateNodeTask("Freemarker configuration", "Adds sharedVariables node to the Freemarker configuration",
97              RepositoryConstants.CONFIG, "/server/rendering/freemarker", "sharedVariables", NodeTypes.ContentNode.NAME);
98      private final BootstrapSingleResource bootstrapWebContainerResources = new BootstrapSingleResource("Web container resources configuration", "Global configuration which resources are not meant to be handled by Magnolia. For instance JSP files.", "/mgnl-bootstrap/core/config.server.webContainerResources.xml");
99      private final BootstrapSingleModuleResource bootstrapChannelManagement = new BootstrapSingleModuleResource("ChannelManagement configuration", "", "config.server.rendering.channelManagement.xml");
100 
101     private final BootstrapSingleModuleResource bootstrapChannelFilter = new BootstrapSingleModuleResource("ChannelFilter configuration", "", "config.server.filters.channel.xml");
102     private final Task placeChannelBeforeLogout = new OrderFilterBeforeTask("channel", new String[] { "logout" });
103     private final Task updateSecurityBaseRole = updateSecurityBaseRole();
104 
105     private final Task removeObsoleteInstallFiles = new RemoveInstallFilesTask("Remove obsolete dms templates install files", "templates/dms");
106     private final Task adjustSecurityBaseRole = new ArrayDelegateTask("",
107             new RemovePermissionTask("Remove 'security-base' role permission", SECURITY_BASE_ROLE,
108                     RepositoryConstants.USER_ROLES, "/" + SECURITY_BASE_ROLE, Permission.READ),
109             new RemovePermissionTask("Remove obsolete 'security-base' role permission", SECURITY_BASE_ROLE,
110                     "uri", "/.magnolia/pages/sendMail*", AddURIPermissionTask.DENY),
111             new RemovePermissionTask("Remove obsolete 'security-base' role permission", SECURITY_BASE_ROLE,
112                     "uri", "/.magnolia/pages/groovyInteractiveConsole*", AddURIPermissionTask.DENY)
113     );
114 
115     private Task updateSecurityBaseRole() {
116         ArrayDelegateTask permissionsTask = new ArrayDelegateTask("Update security-base role", "Disallow access to view configuration/tools pages");
117         permissionsTask.addTask(new RemovePermissionTask("", "", SECURITY_BASE_ROLE, "uri", "/.magnolia/pages/installedModulesList.html", AddURIPermissionTask.DENY));
118         permissionsTask.addTask(new RemovePermissionTask("", "", SECURITY_BASE_ROLE, "uri", "/.magnolia/pages/jcrUtils.html", AddURIPermissionTask.DENY));
119         permissionsTask.addTask(new RemovePermissionTask("", "", SECURITY_BASE_ROLE, "uri", "/.magnolia/pages/configuration.html", AddURIPermissionTask.DENY));
120         permissionsTask.addTask(new RemovePermissionTask("", "", SECURITY_BASE_ROLE, "uri", "/.magnolia/pages/logViewer.html", AddURIPermissionTask.DENY));
121         permissionsTask.addTask(new RemovePermissionTask("", "", SECURITY_BASE_ROLE, "uri", "/.magnolia/pages/sendMail.html", AddURIPermissionTask.DENY));
122         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/installedModulesList*", AddURIPermissionTask.DENY));
123         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/jcrUtils*", AddURIPermissionTask.DENY));
124         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/configuration*", AddURIPermissionTask.DENY));
125         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/logViewer*", AddURIPermissionTask.DENY));
126 
127         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/users*", AddURIPermissionTask.DENY));
128         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/import*", AddURIPermissionTask.DENY));
129         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/export*", AddURIPermissionTask.DENY));
130         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/permission*", AddURIPermissionTask.DENY));
131         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/developmentUtils*", AddURIPermissionTask.DENY));
132         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/activationTools*", AddURIPermissionTask.DENY));
133         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/migrationReport*", AddURIPermissionTask.DENY));
134         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/backup*", AddURIPermissionTask.DENY));
135         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/activationMonitor*", AddURIPermissionTask.DENY));
136         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/installedModulesList*", AddURIPermissionTask.DENY));
137         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/allModulesList*", AddURIPermissionTask.DENY));
138         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/cacheTools*", AddURIPermissionTask.DENY));
139         permissionsTask.addTask(new AddURIPermissionTask("", "", SECURITY_BASE_ROLE, "/.magnolia/pages/flows*", AddURIPermissionTask.DENY));
140         return permissionsTask;
141     }
142 
143     public CoreModuleVersionHandler() {
144         super();
145 
146         register(DeltaBuilder.checkPrecondition("4.5", "5.0"));
147 
148         register(DeltaBuilder.update("4.5.2", "")
149                 .addTask(new PropertyExistsDelegateTask("Fix property name", "", RepositoryConstants.CONFIG, "/server/security/userManagers/system", "realName", new MoveAndRenamePropertyTask("Fix propertyName", "/server/security/userManagers/system", "realName", "/server/security/userManagers/system", "realmName")))
150                 .addTask(new PropertyExistsDelegateTask("Fix property name", "", RepositoryConstants.CONFIG, "/server/security/userManagers/admin", "realName", new MoveAndRenamePropertyTask("Fix propertyName", "/server/security/userManagers/admin", "realName", "/server/security/userManagers/admin", "realmName"))));
151 
152         register((DeltaBuilder.update("4.5.9", ""))
153                 .addTask(new NodeExistsDelegateTask("AuditLogging configurations", "Add auditLogging configurations for delete action", "config", "/server/auditLogging/logConfigurations/delete", null, new PartialBootstrapTask("", "", "/mgnl-bootstrap/core/config.server.auditLogging.xml", "/auditLogging/logConfigurations/delete", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)))
154                 .addTask(new CheckAndModifyPropertyValueTask("AuditLogging configurations", "Change auditLogging class", "config", "/server/auditLogging", "class", "info.magnolia.logging.AuditLoggingManager", "info.magnolia.audit.AuditLoggingManager"))
155                 .addTask(updateSecurityBaseRole));
156         register(DeltaBuilder.update("5.0", "")
157                 .addTask(new Register50NodeTypeTask("Register the new M5 node Type", "", RepositoryConstants.CONFIG))
158                 .addTask(new RemoveMetaDataInNodeTypeDefinitionTask("Un register the metaData child node", "", RepositoryConstants.CONFIG))
159                 .addTask(new ConvertMetaDataUpdateTask("Convert MetaData Task", "Remove the metaData sub node and replace them with mixIn when appropriate"))
160                 .addTask(new RemoveNodeTask("Remove PageEditorServlet", "Remove obsolete PageEditorServlet configuration.", RepositoryConstants.CONFIG, "/server/filters/servlets/PageEditorServlet"))
161                 .addTask(new RemoveNodeTask("Remove obsolete 'templating-editor' configuration", "", RepositoryConstants.CONFIG, "/modules/magnolia-templating-editor"))
162                 .addTask(new PartialBootstrapTask("Bootstrap link transformers", "Bootstrap 'server/rendering/linkManagement/transformers", "/mgnl-bootstrap/core/config.server.rendering.linkManagement.xml", "/linkManagement/transformers")));
163         register((DeltaBuilder.update("5.0.1", ""))
164                 .addTask(new CheckAndModifyPropertyValueTask("MIMEMapping", "Change xsl extension mime-type from text/xml to application/xml", RepositoryConstants.CONFIG, "/server/MIMEMapping/xsl", "mime-type", "text/xml", "application/xml"))
165                 .addTask(new CheckAndModifyPropertyValueTask("MIMEMapping", "Change xml extension mime-type from text/xml to application/xml", RepositoryConstants.CONFIG, "/server/MIMEMapping/xml", "mime-type", "text/xml", "application/xml")));
166         register((DeltaBuilder.update("5.0.3", ""))
167                 .addTask(new PartialBootstrapTask("JSON", "Add JSON mime-type", "/mgnl-bootstrap/core/config.server.MIMEMapping.xml", "/MIMEMapping/json")));
168         register((DeltaBuilder.update("5.1", ""))
169                 .addTask(new WarnTask("respectOrderDocument parameter", "As of Magnolia 5.1, the respectOrderDocument parameter has been reintroduced in repo config files and set to true by default. You will need to set it manually for each workspace in your installation. Please, refer to the release notes for more details."))
170                 .addTask(new RemoveNodeTask("Remove intercept filter", "Removes no longer used intercept filter.", RepositoryConstants.CONFIG, "/server/filters/cms/intercept")));
171         register((DeltaBuilder.update("5.1.1", ""))
172                 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the user superuser", "Set mgnl:lastActivated date of the user superuser (if not set yet)", RepositoryConstants.USERS, "/system/superuser",
173                         new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USERS, "/system/superuser")))
174                 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the user anonymous", "Set mgnl:lastActivated date of the user anonymous (if not set yet)", RepositoryConstants.USERS, "/system/anonymous",
175                         new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USERS, "/system/anonymous")))
176                 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the superuser role", "Set mgnl:lastActivated date of the superuser role (if not set yet)", RepositoryConstants.USER_ROLES, "/superuser",
177                         new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/superuser")))
178                 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the anonymous role", "Set mgnl:lastActivated date of the anonymous role (if not set yet)", RepositoryConstants.USER_ROLES, "/anonymous",
179                         new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/anonymous")))
180                 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the security-base role", "Set mgnl:lastActivated date of the security-base role (if not set yet)", RepositoryConstants.USER_ROLES, "/security-base",
181                         new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/security-base")))
182                 .addTask(new FindAndChangeTemplateIdTask("Change template id mgnlDelete", "Change template id mgnlDeleted to ui-admincentral:deleted for all content marked as deleted in website repository", RepositoryConstants.WEBSITE, "mgnlDeleted", MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE))
183                 .addTask(new FindAndChangeTemplateIdTask("Change template id adminInterface:mgnlDeleted", "Change template id adminInterface:mgnlDeleted to ui-admincentral:deleted for all content marked as deleted in website repository", RepositoryConstants.WEBSITE, "adminInterface:mgnlDeleted", MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE)));
184         register((DeltaBuilder.update("5.1.2", ""))
185                 .addTask(new ChangeNodeTypeOfSubAppsTask("Change primary node type of subapps", "If primary node type of subapps node is set to " + NodeTypes.Content.NAME + " then change it to " + NodeTypes.ContentNode.NAME))
186                 .addTask(new PartialBootstrapTask("Anonymous user", "Change anonymous user permission. He can't have write access to himself.", "/mgnl-bootstrap/core/users.system.anonymous.xml", "/anonymous/acl_users")));
187 
188         register((DeltaBuilder.update("5.2.1", ""))
189                 .addTask(new RemoveOpenWFEPermissionsTask("Find and remove all openWFE permissions from the userroles workspace", ""))
190                 .addTask(new GrantReadPermissionToRolesTask("Set read-permission to role itself", "If a role do not have a read permission to itself, add it")));
191         register((DeltaBuilder.update("5.2.2", ""))
192                 .addTask(removeObsoleteInstallFiles)
193                 .addTask(new AddActivatableMixinForContentNodeTask("Add the mixIn '" + NodeTypes.Activatable.NAME + "' to the '" + NodeTypes.ContentNode.NAME + "' node type definition", "", RepositoryConstants.CONFIG)));
194         register((DeltaBuilder.update("5.2.3", ""))
195                 .addTask(new RemovePermissionTask("Remove 'anonymous' role permission", "anonymous",
196                         RepositoryConstants.USER_ROLES, "/anonymous", Permission.READ))
197                 .addTask(adjustSecurityBaseRole));
198 
199         register((DeltaBuilder.update("5.3.2", ""))
200                 .addTask(new NodeExistsDelegateTask("Add csrfSecurity Filter", "/server/filters/csrfSecurity",
201                         /* Partially bootstrap new bypass for Vaadin requests if filter already exists */
202                         new PathExistenceDelegateTask("Add csrfSecurity Filter", "", new String[]{"/server/filters/csrfSecurity/bypasses/BypassWhenVaadinRequest"}, new String[]{"/server/filters/csrfSecurity/bypasses/BypassWhenNotInAdminCentral", "/server/filters/csrfSecurity/bypasses/BypassWhenNotAuthenticated", "/server/filters/csrfSecurity/bypasses/BypassWhenNoQueryParameters"},
203                                 new PartialBootstrapTask("Add csrfSecurity Filter", "", "/mgnl-bootstrap/core/config.server.filters.xml", "/filters/csrfSecurity/bypasses/BypassWhenVaadinRequest", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)),
204                         /* Partially bootstrap whole csrf filter if it doesn't exists */
205                         new PartialBootstrapTask("Add csrfSecurity Filter", "", "/mgnl-bootstrap/core/config.server.filters.xml", "/filters/csrfSecurity", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)))
206                 .addTask(new NodeExistsDelegateTask("Order csrfSecurity Filter", "Put csrfSecurity before uriSecurity Filter.", RepositoryConstants.CONFIG, "/server/filters/uriSecurity",
207                         new OrderNodeBeforeTask("Order csrfSecurity Filter", "Put csrfSecurity before uriSecurity Filter.", RepositoryConstants.CONFIG, "/server/filters/csrfSecurity", "uriSecurity"),
208                         new WarnTask("CSRF Security Filter is inactive.", "CSRF Security Filter inactive. The installed csrfFilter would normally be ordered before the uriSecurity filter, but could not be moved there as a uriFilter node does not exist in the /server/filters node. The installed csrfFilter must be movded up the filters list manually.")))
209                 .addTask(new NodeExistsDelegateTask("Add csrfSecurity Filter", "/server/auditLogging/logConfigurations/security", null,
210                         new PartialBootstrapTask("Add 'security' AuditLogging logConfiguration.", "", "/mgnl-bootstrap/core/config.server.auditLogging.xml", "/auditLogging/logConfigurations/security", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW))));
211 
212         register((DeltaBuilder.update("5.3.5", ""))
213                 .addTask(new RemovePermissionTask("Edit security-base role", "Remove messages page deny rule", "security-base", "uri", "/.magnolia/pages/messages*", AddURIPermissionTask.DENY))
214                 .addTask(new FixUserRolePermissionsPropertyTask("/superuser")));
215 
216 
217         register((DeltaBuilder.update("5.3.12", ""))
218                 .addTask(new PropertyValueDelegateTask("Change MIME mapping of Javascript resources", "/server/MIMEMapping/js", "mime-type", "application/x-javascript", true,
219                         new SetPropertyTask("config", "/server/MIMEMapping/js", "mime-type", "application/javascript"))));
220 
221         register((DeltaBuilder.update("5.3.13", ""))
222                 .addTask(new PartialBootstrapTask("Add mime mapping for .map", "Add mime mapping for .map", "/mgnl-bootstrap/core/config.server.MIMEMapping.xml", "/MIMEMapping/map")));
223     }
224 
225     @Override
226     protected List<Task> getBasicInstallTasks(InstallContext ctx) {
227         final List<Task> tasks = new ArrayList<Task>();
228         tasks.addAll(GenericTasks.genericTasksForNewInstallation());
229         tasks.add(auditTrailManagerTask);
230         tasks.add(bootstrapFreemarker);
231         tasks.add(addFreemarkerSharedVariables);
232         tasks.add(bootstrapWebContainerResources);
233         tasks.add(new BootstrapConditionally("Security", "Bootstraps security-base role.", "/mgnl-bootstrap/core/userroles.security-base.xml"));
234         // always hash passwords. Task will not re-hash so it is safe to run this op at any time, multiple times.
235         tasks.add(new HashUsersPasswords());
236         tasks.add(bootstrapChannelManagement);
237         tasks.add(bootstrapChannelFilter);
238         tasks.add(placeChannelBeforeLogout);
239 
240         return tasks;
241     }
242 
243     @Override
244     protected List<Condition> getInstallConditions() {
245         final ArrayList<Condition> conditions = new ArrayList<Condition>();
246 
247         conditions.add(new IsNotAProblematicEnvironmentCondition());
248 
249         final WebXmlConditionsUtil u = new WebXmlConditionsUtil(conditions);
250         u.servletIsNowWrapped("ActivationHandler");
251         u.servletIsNowWrapped("AdminTreeServlet");
252         u.servletIsNowWrapped("classpathspool");
253         u.servletIsNowWrapped("DialogServlet");
254         u.servletIsNowWrapped("PageServlet");
255         u.servletIsNowWrapped("log4j");
256         u.servletIsNowWrapped("FCKEditorSimpleUploadServlet");
257         u.servletIsDeprecated("uuidRequestDispatcher");
258         u.filterIsDeprecated("info.magnolia.cms.filters.MagnoliaManagedFilter", "info.magnolia.cms.filters.MgnlMainFilter");
259         u.filterMustBeRegisteredWithCorrectDispatchers("info.magnolia.cms.filters.MgnlMainFilter");
260         u.listenerIsDeprecated("info.magnolia.cms.servlets.PropertyInitializer", "info.magnolia.cms.servlets.MgnlServletContextListener");
261         u.listenerIsDeprecated("info.magnolia.cms.beans.config.ShutdownManager", "info.magnolia.cms.servlets.MgnlServletContextListener");
262         final WorkspaceXmlConditionsUtil u2 = new WorkspaceXmlConditionsUtil(conditions);
263         u2.textFilterClassesAreNotSet();
264 
265         conditions.add(new SystemTmpDirCondition());
266         conditions.add(new NoSameNameSiblingsCondition());
267 
268         return conditions;
269     }
270 }
271