001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.verify;
016    
017    import com.liferay.portal.kernel.log.Log;
018    import com.liferay.portal.kernel.log.LogFactoryUtil;
019    import com.liferay.portal.kernel.util.ListUtil;
020    import com.liferay.portal.kernel.util.PropsKeys;
021    import com.liferay.portal.kernel.util.StringPool;
022    import com.liferay.portal.kernel.util.StringUtil;
023    import com.liferay.portal.kernel.util.SystemProperties;
024    import com.liferay.portal.kernel.util.UnicodeProperties;
025    import com.liferay.portal.security.ldap.LDAPSettingsUtil;
026    import com.liferay.portal.service.CompanyLocalServiceUtil;
027    import com.liferay.portal.util.PortalInstances;
028    import com.liferay.portal.util.PrefsPropsUtil;
029    import com.liferay.portal.util.PropsUtil;
030    import com.liferay.portlet.documentlibrary.store.StoreFactory;
031    
032    import java.io.File;
033    import java.io.FileInputStream;
034    import java.io.FileNotFoundException;
035    import java.io.IOException;
036    import java.io.InputStream;
037    
038    import java.util.List;
039    import java.util.Properties;
040    
041    /**
042     * @author Brian Wing Shun Chan
043     */
044    public class VerifyProperties extends VerifyProcess {
045    
046            @Override
047            protected void doVerify() throws Exception {
048    
049                    // system.properties
050    
051                    for (String[] keys : _MIGRATED_SYSTEM_KEYS) {
052                            String oldKey = keys[0];
053                            String newKey = keys[1];
054    
055                            verifyMigratedSystemProperty(oldKey, newKey);
056                    }
057    
058                    for (String[] keys : _RENAMED_SYSTEM_KEYS) {
059                            String oldKey = keys[0];
060                            String newKey = keys[1];
061    
062                            verifyRenamedSystemProperty(oldKey, newKey);
063                    }
064    
065                    for (String key : _OBSOLETE_SYSTEM_KEYS) {
066                            verifyObsoleteSystemProperty(key);
067                    }
068    
069                    // portal.properties
070    
071                    Properties portalProperties = loadPortalProperties();
072    
073                    for (String[] keys : _MIGRATED_PORTAL_KEYS) {
074                            String oldKey = keys[0];
075                            String newKey = keys[1];
076    
077                            verifyMigratedPortalProperty(portalProperties, oldKey, newKey);
078                    }
079    
080                    for (String[] keys : _RENAMED_PORTAL_KEYS) {
081                            String oldKey = keys[0];
082                            String newKey = keys[1];
083    
084                            verifyRenamedPortalProperty(portalProperties, oldKey, newKey);
085                    }
086    
087                    for (String key : _OBSOLETE_PORTAL_KEYS) {
088                            verifyObsoletePortalProperty(portalProperties, key);
089                    }
090    
091                    for (String[] keys : _MODULARIZED_PORTAL_KEYS) {
092                            String oldKey = keys[0];
093                            String newKey = keys[1];
094                            String moduleName = keys[2];
095    
096                            verifyModularizedPortalProperty(
097                                    portalProperties, oldKey, newKey, moduleName);
098                    }
099    
100                    // Document library
101    
102                    StoreFactory storeFactory = StoreFactory.getInstance();
103    
104                    storeFactory.checkProperties();
105    
106                    // LDAP
107    
108                    verifyLDAPProperties();
109            }
110    
111            protected InputStream getPropertiesResourceAsStream(String resourceName)
112                    throws FileNotFoundException {
113    
114                    File propertyFile = new File(resourceName);
115    
116                    if (propertyFile.exists()) {
117                            return new FileInputStream(propertyFile);
118                    }
119    
120                    ClassLoader classLoader = VerifyProperties.class.getClassLoader();
121    
122                    return classLoader.getResourceAsStream(resourceName);
123            }
124    
125            protected Properties loadPortalProperties() {
126                    Properties properties = new Properties();
127    
128                    List<String> propertiesResourceNames = ListUtil.fromArray(
129                            PropsUtil.getArray("include-and-override"));
130    
131                    propertiesResourceNames.add(0, "portal.properties");
132    
133                    for (String propertyResourceName : propertiesResourceNames) {
134                            try (InputStream inputStream = getPropertiesResourceAsStream(
135                                    propertyResourceName)) {
136    
137                                    if (inputStream != null) {
138                                            properties.load(inputStream);
139                                    }
140                            }
141                            catch (IOException ioe) {
142                                    _log.error(
143                                            "Unable to load property " + propertyResourceName, ioe);
144                            }
145                    }
146    
147                    return properties;
148            }
149    
150            protected void verifyLDAPProperties() throws Exception {
151                    long[] companyIds = PortalInstances.getCompanyIdsBySQL();
152    
153                    for (long companyId : companyIds) {
154                            UnicodeProperties properties = new UnicodeProperties();
155    
156                            long[] ldapServerIds = StringUtil.split(
157                                    PrefsPropsUtil.getString(companyId, "ldap.server.ids"), 0L);
158    
159                            for (long ldapServerId : ldapServerIds) {
160                                    String postfix = LDAPSettingsUtil.getPropertyPostfix(
161                                            ldapServerId);
162    
163                                    for (String key : _LDAP_KEYS) {
164                                            String value = PrefsPropsUtil.getString(
165                                                    companyId, key + postfix, null);
166    
167                                            if (value == null) {
168                                                    properties.put(key + postfix, StringPool.BLANK);
169                                            }
170                                    }
171                            }
172    
173                            if (!properties.isEmpty()) {
174                                    CompanyLocalServiceUtil.updatePreferences(
175                                            companyId, properties);
176                            }
177                    }
178            }
179    
180            protected void verifyMigratedPortalProperty(
181                            Properties portalProperties, String oldKey, String newKey)
182                    throws Exception {
183    
184                    if (portalProperties.containsKey(oldKey)) {
185                            _log.error(
186                                    "Portal property \"" + oldKey +
187                                            "\" was migrated to the system property \"" + newKey +
188                                                    "\"");
189                    }
190            }
191    
192            protected void verifyMigratedSystemProperty(String oldKey, String newKey)
193                    throws Exception {
194    
195                    String value = SystemProperties.get(oldKey);
196    
197                    if (value != null) {
198                            _log.error(
199                                    "System property \"" + oldKey +
200                                            "\" was migrated to the portal property \"" + newKey +
201                                                    "\"");
202                    }
203            }
204    
205            protected void verifyModularizedPortalProperty(
206                            Properties portalProperties, String oldKey, String newKey,
207                            String moduleName)
208                    throws Exception {
209    
210                    if (portalProperties.containsKey(oldKey)) {
211                            _log.error(
212                                    "Portal property \"" + oldKey + "\" was modularized to " +
213                                            moduleName + " as \"" + newKey);
214                    }
215            }
216    
217            protected void verifyObsoletePortalProperty(
218                            Properties portalProperties, String key)
219                    throws Exception {
220    
221                    if (portalProperties.containsKey(key)) {
222                            _log.error("Portal property \"" + key + "\" is obsolete");
223                    }
224            }
225    
226            protected void verifyObsoleteSystemProperty(String key) throws Exception {
227                    String value = SystemProperties.get(key);
228    
229                    if (value != null) {
230                            _log.error("System property \"" + key + "\" is obsolete");
231                    }
232            }
233    
234            protected void verifyRenamedPortalProperty(
235                            Properties portalProperties, String oldKey, String newKey)
236                    throws Exception {
237    
238                    if (portalProperties.containsKey(oldKey)) {
239                            _log.error(
240                                    "Portal property \"" + oldKey + "\" was renamed to \"" +
241                                            newKey + "\"");
242                    }
243            }
244    
245            protected void verifyRenamedSystemProperty(String oldKey, String newKey)
246                    throws Exception {
247    
248                    String value = SystemProperties.get(oldKey);
249    
250                    if (value != null) {
251                            _log.error(
252                                    "System property \"" + oldKey + "\" was renamed to \"" +
253                                            newKey + "\"");
254                    }
255            }
256    
257            private static final String[] _LDAP_KEYS = {
258                    PropsKeys.LDAP_CONTACT_CUSTOM_MAPPINGS, PropsKeys.LDAP_CONTACT_MAPPINGS,
259                    PropsKeys.LDAP_USER_CUSTOM_MAPPINGS
260            };
261    
262            private static final String[][] _MIGRATED_PORTAL_KEYS = new String[][] {
263                    new String[] {
264                            "cookie.http.only.names.excludes", "cookie.http.only.names.excludes"
265                    },
266                    new String[] {
267                            "finalize.manager.thread.enabled",
268                            "com.liferay.portal.kernel.memory.FinalizeManager.thread.enabled"
269                    },
270                    new String[] {
271                            "http.header.secure.x.content.type.options",
272                            "http.header.secure.x.content.type.options"
273                    },
274                    new String[] {
275                            "http.header.secure.x.content.type.options.urls.excludes",
276                            "http.header.secure.x.content.type.options.urls.excludes"
277                    },
278                    new String[] {
279                            "http.header.secure.x.frame.options",
280                            "http.header.secure.x.frame.options"
281                    },
282                    new String[] {
283                            "http.header.secure.x.frame.options.255",
284                            "http.header.secure.x.frame.options.255"
285                    },
286                    new String[] {
287                            "http.header.secure.x.xss.protection",
288                            "http.header.secure.x.xss.protection"
289                    }
290            };
291    
292            private static final String[][] _MIGRATED_SYSTEM_KEYS = new String[][] {
293                    new String[] {
294                            "com.liferay.filters.compression.CompressionFilter",
295                            "com.liferay.portal.servlet.filters.gzip.GZipFilter"
296                    },
297                    new String[] {
298                            "com.liferay.filters.strip.StripFilter",
299                            "com.liferay.portal.servlet.filters.strip.StripFilter"
300                    },
301                    new String[] {
302                            "com.liferay.util.Http.max.connections.per.host",
303                            "com.liferay.portal.util.HttpImpl.max.connections.per.host"
304                    },
305                    new String[] {
306                            "com.liferay.util.Http.max.total.connections",
307                            "com.liferay.portal.util.HttpImpl.max.total.connections"
308                    },
309                    new String[] {
310                            "com.liferay.util.Http.proxy.auth.type",
311                            "com.liferay.portal.util.HttpImpl.proxy.auth.type"
312                    },
313                    new String[] {
314                            "com.liferay.util.Http.proxy.ntlm.domain",
315                            "com.liferay.portal.util.HttpImpl.proxy.ntlm.domain"
316                    },
317                    new String[] {
318                            "com.liferay.util.Http.proxy.ntlm.host",
319                            "com.liferay.portal.util.HttpImpl.proxy.ntlm.host"
320                    },
321                    new String[] {
322                            "com.liferay.util.Http.proxy.password",
323                            "com.liferay.portal.util.HttpImpl.proxy.password"
324                    },
325                    new String[] {
326                            "com.liferay.util.Http.proxy.username",
327                            "com.liferay.portal.util.HttpImpl.proxy.username"
328                    },
329                    new String[] {
330                            "com.liferay.util.Http.timeout",
331                            "com.liferay.portal.util.HttpImpl.timeout"
332                    },
333                    new String[] {
334                            "com.liferay.util.format.PhoneNumberFormat",
335                            "phone.number.format.impl"
336                    },
337                    new String[] {
338                            "com.liferay.util.servlet.UploadServletRequest.max.size",
339                            "com.liferay.portal.upload.UploadServletRequestImpl.max.size"
340                    },
341                    new String[] {
342                            "com.liferay.util.servlet.UploadServletRequest.temp.dir",
343                            "com.liferay.portal.upload.UploadServletRequestImpl.temp.dir"
344                    },
345                    new String[] {
346                            "com.liferay.util.servlet.fileupload.LiferayFileItem." +
347                                    "threshold.size",
348                            "com.liferay.portal.upload.LiferayFileItem.threshold.size"
349                    },
350                    new String[] {
351                            "com.liferay.util.servlet.fileupload.LiferayInputStream." +
352                                    "threshold.size",
353                            "com.liferay.portal.upload.LiferayInputStream.threshold.size"
354                    }
355            };
356    
357            private static final String[][] _MODULARIZED_PORTAL_KEYS = {
358    
359                    // Asset
360    
361                    new String[] {
362                            "asset.browser.search.with.database", "search.with.database",
363                            "com.liferay.asset.browser.web"
364                    },
365                    new String[] {
366                            "asset.categories.navigation.display.templates.config",
367                            "display.templates.config",
368                            "com.liferay.asset.categories.navigation.web"
369                    },
370                    new String[] {
371                            "asset.publisher.check.interval", "check.interval",
372                            "com.liferay.asset.publisher.web"
373                    },
374                    new String[] {
375                            "asset.publisher.email.from.address", "email.from.address",
376                            "com.liferay.asset.publisher.web"
377                    },
378                    new String[] {
379                            "asset.publisher.email.from.name", "email.from.name",
380                            "com.liferay.asset.publisher.web"
381                    },
382                    new String[] {
383                            "asset.publisher.email.asset.entry.added.enabled",
384                            "email.asset.entry.added.enabled", "com.liferay.asset.publisher.web"
385                    },
386                    new String[] {
387                            "asset.publisher.email.asset.entry.added.subject",
388                            "email.asset.entry.added.subject", "com.liferay.asset.publisher.web"
389                    },
390                    new String[] {
391                            "asset.publisher.email.asset.entry.added.body",
392                            "email.asset.entry.added.body", "com.liferay.asset.publisher.web"
393                    },
394                    new String[] {
395                            "asset.publisher.display.style.default", "display.style.default",
396                            "com.liferay.asset.publisher.web"
397                    },
398                    new String[] {
399                            "asset.publisher.display.styles", "display.styles",
400                            "com.liferay.asset.publisher.web"
401                    },
402                    new String[] {
403                            "asset.publisher.display.templates.config",
404                            "display.templates.config", "com.liferay.asset.publisher.web"
405                    },
406                    new String[] {
407                            "asset.publisher.dynamic.subscription.limit",
408                            "dynamic.subscription.limit", "com.liferay.asset.publisher.web"
409                    },
410                    new String[] {
411                            "asset.publisher.permission.checking.configurable",
412                            "permission.checking.configurable",
413                            "com.liferay.asset.publisher.web"
414                    },
415                    new String[] {
416                            "asset.publisher.query.form.configuration",
417                            "query.form.configuration", "com.liferay.asset.publisher.web"
418                    },
419                    new String[] {
420                            "asset.publisher.search.with.index", "search.with.index",
421                            "com.liferay.asset.publisher.web"
422                    },
423                    new String[] {
424                            "asset.tags.navigation.display.templates.config",
425                            "display.templates.config", "com.liferay.asset.tags.navigation.web"
426                    },
427    
428                    // Authentication Verifier
429    
430                    new String[] {
431                            "auth.verifier.BasicAuthHeaderAutoLogin.basic_auth",
432                            "auth.verifier.BasicAuthHeaderAuthVerifier.basic_auth",
433                            "com.liferay.portal.security.auth.verifier"
434                    },
435                    new String[] {
436                            "auth.verifier.BasicAuthHeaderAutoLogin.hosts.allowed",
437                            "auth.verifier.BasicAuthHeaderAuthVerifier.hosts.allowed",
438                            "com.liferay.portal.security.auth.verifier"
439                    },
440                    new String[] {
441                            "auth.verifier.BasicAuthHeaderAutoLogin.urls.excludes",
442                            "auth.verifier.BasicAuthHeaderAuthVerifier.urls.excludes",
443                            "com.liferay.portal.security.auth.verifier"
444                    },
445                    new String[] {
446                            "auth.verifier.BasicAuthHeaderAutoLogin.urls.includes",
447                            "auth.verifier.BasicAuthHeaderAuthVerifier.urls.includes",
448                            "com.liferay.portal.security.auth.verifier"
449                    },
450    
451                    new String[] {
452                            "auth.verifier.DigestAuthenticationAuthVerifier.digest_auth",
453                            "auth.verifier.DigestAuthenticationAuthVerifier.digest_auth",
454                            "com.liferay.portal.security.auth.verifier"
455                    },
456                    new String[] {
457                            "auth.verifier.DigestAuthenticationAuthVerifier.hosts.allowed",
458                            "auth.verifier.DigestAuthenticationAuthVerifier.hosts.allowed",
459                            "com.liferay.portal.security.auth.verifier"
460                    },
461                    new String[] {
462                            "auth.verifier.DigestAuthenticationAuthVerifier.urls.excludes",
463                            "auth.verifier.DigestAuthenticationAuthVerifier.urls.excludes",
464                            "com.liferay.portal.security.auth.verifier"
465                    },
466                    new String[] {
467                            "auth.verifier.DigestAuthenticationAuthVerifier.urls.includes",
468                            "auth.verifier.DigestAuthenticationAuthVerifier.urls.includes",
469                            "com.liferay.portal.security.auth.verifier"
470                    },
471    
472                    new String[] {
473                            "auth.verifier.ParameterAutoLogin.hosts.allowed",
474                            "auth.verifier.RequestParameterAuthVerifier.hosts.allowed",
475                            "com.liferay.portal.security.auth.verifier"
476                    },
477                    new String[] {
478                            "auth.verifier.ParameterAutoLogin.urls.excludes",
479                            "auth.verifier.RequestParameterAuthVerifier.urls.excludes",
480                            "com.liferay.portal.security.auth.verifier"
481                    },
482                    new String[] {
483                            "auth.verifier.ParameterAutoLogin.urls.includes",
484                            "auth.verifier.RequestParameterAuthVerifier.urls.includes",
485                            "com.liferay.portal.security.auth.verifier"
486                    },
487    
488                    new String[] {
489                            "auth.verifier.PortalSessionAuthVerifier.hosts.allowed",
490                            "auth.verifier.PortalSessionAuthVerifier.hosts.allowed",
491                            "com.liferay.portal.security.auth.verifier"
492                    },
493                    new String[] {
494                            "auth.verifier.PortalSessionAuthVerifier.urls.excludes",
495                            "auth.verifier.PortalSessionAuthVerifier.urls.excludes",
496                            "com.liferay.portal.security.auth.verifier"
497                    },
498                    new String[] {
499                            "auth.verifier.PortalSessionAuthVerifier.urls.includes",
500                            "auth.verifier.PortalSessionAuthVerifier.urls.includes",
501                            "com.liferay.portal.security.auth.verifier"
502                    },
503    
504                    new String[] {
505                            "auth.verifier.TunnelingServletAuthVerifier.hosts.allowed",
506                            "auth.verifier.TunnelAuthVerifier.hosts.allowed",
507                            "com.liferay.portal.security.auth.verifier"
508                    },
509                    new String[] {
510                            "auth.verifier.TunnelingServletAuthVerifier.urls.excludes",
511                            "auth.verifier.TunnelAuthVerifier.urls.excludes",
512                            "com.liferay.portal.security.auth.verifier"
513                    },
514                    new String[] {
515                            "auth.verifier.TunnelingServletAuthVerifier.urls.includes",
516                            "auth.verifier.TunnelAuthVerifier.urls.includes",
517                            "com.liferay.portal.security.auth.verifier"
518                    },
519    
520                    // Blogs
521    
522                    new String[] {
523                            "blogs.display.templates.config", "display.templates.config",
524                            "com.liferay.blogs.web"
525                    },
526    
527                    new String[] {
528                            "blogs.entry.check.interval", "entry.check.interval",
529                            "com.liferay.blogs.web"
530                    },
531    
532                    new String[] {
533                            "blogs.linkback.job.interval", "linkback.job.interval",
534                            "com.liferay.blogs.web"
535                    },
536    
537                    // Bookmarks
538    
539                    new String[] {
540                            "bookmarks.email.entry.added.body", "email.entry.added.body",
541                            "com.liferay.bookmarks.service"
542                    },
543                    new String[] {
544                            "bookmarks.email.entry.added.enabled", "email.entry.added.enabled",
545                            "com.liferay.bookmarks.service"
546                    },
547                    new String[] {
548                            "bookmarks.email.entry.added.subject", "email.entry.added.subject",
549                            "com.liferay.bookmarks.service"
550                    },
551                    new String[] {
552                            "bookmarks.email.entry.updated.body", "email.entry.updated.body",
553                            "com.liferay.bookmarks.service"
554                    },
555                    new String[] {
556                            "bookmarks.email.entry.updated.enabled",
557                            "email.entry.updated.enabled", "com.liferay.bookmarks.service"
558                    },
559                    new String[] {
560                            "bookmarks.email.entry.updated.subject",
561                            "email.entry.updated.subject", "com.liferay.bookmarks.service"
562                    },
563                    new String[] {
564                            "bookmarks.email.from.address", "email.from.address",
565                            "com.liferay.bookmarks.service"
566                    },
567                    new String[] {
568                            "bookmarks.email.from.name", "email.from.name",
569                            "com.liferay.bookmarks.service"
570                    },
571                    new String[] {
572                            "bookmarks.entry.columns", "entry.columns",
573                            "com.liferay.bookmarks.service"
574                    },
575                    new String[] {
576                            "bookmarks.folder.columns", "folder.columns",
577                            "com.liferay.bookmarks.service"
578                    },
579                    new String[] {
580                            "bookmarks.folders.search.visible", "folders.search.visible",
581                            "com.liferay.bookmarks.service"
582                    },
583                    new String[] {
584                            "bookmarks.related.assets.enabled", "related.assets.enabled",
585                            "com.liferay.bookmarks.service"
586                    },
587                    new String[] {
588                            "bookmarks.subfolders.visible", "subfolders.visible",
589                            "com.liferay.bookmarks.service"
590                    },
591    
592                    // Breadcrumb
593    
594                    new String[] {
595                            "breadcrumb.display.style.default", "ddm.template.key.default",
596                            "com.liferay.site.navigation.breadcrumb.web"
597                    },
598                    new String[] {
599                            "breadcrumb.display.templates.config", "display.templates.config",
600                            "com.liferay.site.navigation.breadcrumb.web"
601                    },
602                    new String[] {
603                            "breadcrumb.show.guest.group", "show.guest.group",
604                            "com.liferay.site.navigation.breadcrumb.web"
605                    },
606                    new String[] {
607                            "breadcrumb.show.parent.groups", "show.parent.groups",
608                            "com.liferay.site.navigation.breadcrumb.web"
609                    },
610    
611                    // CAS
612    
613                    new String[] {
614                            "cas.auth.enabled", "enabled", "com.liferay.portal.security.sso.cas"
615                    },
616                    new String[] {
617                            "cas.import.from.ldap", "import.from.ldap",
618                            "com.liferay.portal.security.sso.cas"
619                    },
620                    new String[] {
621                            "cas.login.url", "login.url", "com.liferay.portal.security.sso.cas"
622                    },
623                    new String[] {
624                            "cas.logout.on.session.expiration", "logout.on.session.expiration",
625                            "com.liferay.portal.security.sso.cas"
626                    },
627                    new String[] {
628                            "cas.logout.url", "logout.url",
629                            "com.liferay.portal.security.sso.cas"
630                    },
631                    new String[] {
632                            "cas.no.such.user.redirect.url", "no.such.user.redirect.url",
633                            "com.liferay.portal.security.sso.cas"
634                    },
635                    new String[] {
636                            "cas.server.name", "server.name",
637                            "com.liferay.portal.security.sso.cas"
638                    },
639                    new String[] {
640                            "cas.server.url", "server.url",
641                            "com.liferay.portal.security.sso.cas"
642                    },
643                    new String[] {
644                            "cas.service.url", "service.url",
645                            "com.liferay.portal.security.sso.cas"
646                    },
647    
648                    // Cluster Link
649    
650                    new String[] {
651                            "cluster.link.debug.enabled", "cluster.link.debug.enabled",
652                            "com.liferay.portal.cluster"
653                    },
654    
655                    // Currency Converter
656    
657                    new String[] {
658                            "currency.converter.symbols", "symbols",
659                            "com.liferay.currency.converter.web"
660                    },
661    
662                    // Document Library
663    
664                    new String[] {
665                            "dl.display.templates.config", "display.templates.config",
666                            "com.liferay.document.library.web"
667                    },
668                    new String[] {
669                            "dl.repository.cmis.delete.depth", "delete.depth",
670                            "com.liferay.document.library.repository.cmis"
671                    },
672                    new String[] {
673                            "dl.store.advanced.file.system.root.dir", "root.dir",
674                            "com.liferay.portal.store.filesystem"
675                    },
676                    new String[] {
677                            "dl.store.cmis.credentials.username", "credentials.username",
678                            "com.liferay.portal.store.cmis"
679                    },
680                    new String[] {
681                            "dl.store.cmis.credentials.password", "credentials.password",
682                            "com.liferay.portal.store.cmis"
683                    },
684                    new String[] {
685                            "dl.store.cmis.repository.url", "repository.url",
686                            "com.liferay.portal.store.cmis"
687                    },
688                    new String[] {
689                            "dl.store.cmis.system.root.dir", "system.root.dir",
690                            "com.liferay.portal.store.cmis"
691                    },
692                    new String[] {
693                            "dl.store.file.system.root.dir", "root.dir",
694                            "com.liferay.portal.store.filesystem"
695                    },
696                    new String[] {
697                            "dl.store.jcr.fetch.delay", "fetch.delay",
698                            "com.liferay.portal.store.jcr"
699                    },
700                    new String[] {
701                            "dl.store.jcr.fetch.max.failures", "fetch.max.failures",
702                            "com.liferay.portal.store.jcr"
703                    },
704                    new String[] {
705                            "dl.store.jcr.move.version.labels", "move.version.labels",
706                            "com.liferay.portal.store.jcr"
707                    },
708                    new String[] {
709                            "dl.store.s3.access.key", "access.key",
710                            "com.liferay.portal.store.s3"
711                    },
712                    new String[] {
713                            "dl.store.s3.bucket.name", "bucket.name",
714                            "com.liferay.portal.store.s3"
715                    },
716                    new String[] {
717                            "dl.store.s3.jets3t[httpclient.max-connections]",
718                            "http.client.max.connections", "com.liferay.portal.store.s3"
719                    },
720                    new String[] {
721                            "dl.store.s3.jets3t[s3service.default-bucket-location]",
722                            "s3service.default.bucket.location", "com.liferay.portal.store.s3"
723                    },
724                    new String[] {
725                            "dl.store.s3.jets3t[s3service.default-storage-class]",
726                            "s3service.default.storage.class", "com.liferay.portal.store.s3"
727                    },
728                    new String[] {
729                            "dl.store.s3.jets3t[s3service.s3-endpoint]",
730                            "s3service.s3.endpoint", "com.liferay.portal.store.s3"
731                    },
732                    new String[] {
733                            "dl.store.s3.secret.key", "secret.key",
734                            "com.liferay.portal.store.s3"
735                    },
736                    new String[] {
737                            "dl.store.s3.temp.dir.clean.up.expunge",
738                            "temp.dir.clean.up.expunge", "com.liferay.portal.store.s3"
739                    },
740                    new String[] {
741                            "dl.store.s3.temp.dir.clean.up.frequency",
742                            "temp.dir.clean.up.frequency", "com.liferay.portal.store.s3"
743                    },
744                    new String[] {
745                            "dl.temporary.file.entries.check.interval",
746                            "temporary.file.entries.check.interval",
747                            "com.liferay.document.library.web"
748                    },
749    
750                    // Dynamic Data Lists
751    
752                    new String[] {
753                            "dynamic.data.lists.error.template",
754                            "dynamic.data.lists.error.template",
755                            "com.liferay.dynamic.data.lists.web"
756                    },
757                    new String[] {
758                            "dynamic.data.lists.storage.type",
759                            "dynamic.data.lists.storage.type",
760                            "com.liferay.dynamic.data.lists.web"
761                    },
762    
763                    // Dynamic Data Mapping
764    
765                    new String[] {
766                            "dynamic.data.mapping.image.extensions",
767                            "dynamic.data.mapping.image.extensions",
768                            "com.liferay.dynamic.data.mapping.service"
769                    },
770                    new String[] {
771                            "dynamic.data.mapping.image.small.max.size",
772                            "dynamic.data.mapping.image.small.max.size",
773                            "com.liferay.dynamic.data.mapping.service"
774                    },
775                    new String[] {
776                            "dynamic.data.mapping.structure.force.autogenerate.key",
777                            "dynamic.data.mapping.structure.force.autogenerate.key",
778                            "com.liferay.dynamic.data.mapping.web"
779                    },
780                    new String[] {
781                            "dynamic.data.mapping.template.force.autogenerate.key",
782                            "dynamic.data.mapping.template.force.autogenerate.key",
783                            "com.liferay.dynamic.data.mapping.web"
784                    },
785                    new String[] {
786                            "dynamic.data.mapping.template.language.default",
787                            "dynamic.data.mapping.template.language.default",
788                            "com.liferay.dynamic.data.mapping.web"
789                    },
790                    new String[] {
791                            "dynamic.data.mapping.template.language.content",
792                            "dynamic.data.mapping.template.language.content",
793                            "com.liferay.dynamic.data.mapping.web"
794                    },
795    
796                    // Facebook Connect
797    
798                    new String[] {
799                            "facebook.connect.auth.enabled", "enabled",
800                            "com.liferay.portal.security.sso.facebook.connect"
801                    },
802                    new String[] {
803                            "facebook.connect.app.id", "app.id",
804                            "com.liferay.portal.security.sso.facebook.connect"
805                    },
806                    new String[] {
807                            "facebook.connect.app.secret", "app.secret",
808                            "com.liferay.portal.security.sso.facebook.connect"
809                    },
810                    new String[] {
811                            "facebook.connect.graph.url", "graph.url",
812                            "com.liferay.portal.security.sso.facebook.connect"
813                    },
814                    new String[] {
815                            "facebook.connect.oauth.auth.url", "oauth.auth.url",
816                            "com.liferay.portal.security.sso.facebook.connect"
817                    },
818                    new String[] {
819                            "facebook.connect.oauth.redirect.url", "oauth.redirect.url",
820                            "com.liferay.portal.security.sso.facebook.connect"
821                    },
822                    new String[] {
823                            "facebook.connect.oauth.token.url", "oauth.token.url",
824                            "com.liferay.portal.security.sso.facebook.connect"
825                    },
826                    new String[] {
827                            "facebook.connect.verified.account.required",
828                            "verified.account.required",
829                            "com.liferay.portal.security.sso.facebook.connect"
830                    },
831    
832                    // FreeMarker Engine
833    
834                    new String[] {
835                            "freemarker.engine.localized.lookup", "localized.lookup",
836                            "com.liferay.portal.template.freemarker"
837                    },
838                    new String[] {
839                            "freemarker.engine.macro.library", "macro.library",
840                            "com.liferay.portal.template.freemarker"
841                    },
842                    new String[] {
843                            "freemarker.engine.resource.modification.check.interval",
844                            "resource.modification.check",
845                            "com.liferay.portal.template.freemarker"
846                    },
847                    new String[] {
848                            "freemarker.engine.restricted.classes", "restricted.classes",
849                            "com.liferay.portal.template.freemarker"
850                    },
851                    new String[] {
852                            "freemarker.engine.restricted.packages", "restricted.packages",
853                            "com.liferay.portal.template.freemarker"
854                    },
855                    new String[] {
856                            "freemarker.engine.template.exception.handler",
857                            "template.exception.handler",
858                            "com.liferay.portal.template.freemarker"
859                    },
860                    new String[] {
861                            "freemarker.engine.template.parsers", "template.parsers",
862                            "com.liferay.portal.template.freemarker"
863                    },
864                    new String[] {
865                            "journal.template.freemarker.restricted.variables",
866                            "restricted.variables", "com.liferay.portal.template.freemarker"
867                    },
868    
869                    // IFrame
870    
871                    new String[] {"iframe.auth", "auth", "com.liferay.iframe.web"},
872                    new String[] {
873                            "iframe.auth-type", "auth.type", "com.liferay.iframe.web"
874                    },
875                    new String[] {
876                            "iframe.form-method", "form.method", "com.liferay.iframe.web"
877                    },
878                    new String[] {
879                            "iframe.hidden-variables", "hidden.variables",
880                            "com.liferay.iframe.web"
881                    },
882    
883                    // JCR
884    
885                    new String[] {
886                            "jcr.initialize.on.startup", "initialize.on.startup",
887                            "com.liferay.portal.store.jcr"
888                    },
889                    new String[] {
890                            "jcr.jackrabbit.config.file.path", "jackrabbit.config.file.path",
891                            "com.liferay.portal.store.jcr"
892                    },
893                    new String[] {
894                            "jcr.jackrabbit.credentials.password",
895                            "jackrabbit.credentials.password", "com.liferay.portal.store.jcr"
896                    },
897                    new String[] {
898                            "jcr.jackrabbit.credentials.username",
899                            "jackrabbit.credentials.username", "com.liferay.portal.store.jcr"
900                    },
901                    new String[] {
902                            "jcr.jackrabbit.repository.home", "repository.home",
903                            "com.liferay.portal.store.jcr"
904                    },
905                    new String[] {
906                            "jcr.jackrabbit.repository.root", "repository.root",
907                            "com.liferay.portal.store.jcr"
908                    },
909                    new String[] {
910                            "jcr.node.documentlibrary", "node.documentlibrary",
911                            "com.liferay.portal.store.jcr"
912                    },
913                    new String[] {
914                            "jcr.workspace.name", "workspace.name",
915                            "com.liferay.portal.store.jcr"
916                    },
917                    new String[] {
918                            "jcr.wrap.session", "wrap.session", "com.liferay.portal.store.jcr"
919                    },
920    
921                    // Journal
922    
923                    new String[] {
924                            "journal.article.check.interval", "check.interval",
925                            "com.liferay.journal.web"
926                    },
927                    new String[] {
928                            "journal.article.comments.enabled",
929                            "journal.article.comments.enabled", "com.liferay.journal.service"
930                    },
931                    new String[] {
932                            "journal.article.custom.tokens", "journal.article.custom.tokens",
933                            "com.liferay.journal.service"
934                    },
935                    new String[] {
936                            "journal.article.database.keyword.search.content",
937                            "journal.article.database.keyword.search.content",
938                            "com.liferay.journal.service"
939                    },
940                    new String[] {
941                            "journal.article.expire.all.versions",
942                            "journal.article.expire.all.versions", "com.liferay.journal.service"
943                    },
944                    new String[] {
945                            "journal.article.force.autogenerate.id",
946                            "journal.article.force.autogenerate.id", "com.liferay.journal.web"
947                    },
948                    new String[] {
949                            "journal.article.form.add", "journal.article.form.add",
950                            "com.liferay.journal.web"
951                    },
952                    new String[] {
953                            "journal.article.form.default.values",
954                            "journal.article.form.default.values", "com.liferay.journal.web"
955                    },
956                    new String[] {
957                            "journal.article.form.update", "journal.article.form.update",
958                            "com.liferay.journal.web"
959                    },
960                    new String[] {
961                            "journal.articles.search.with.index",
962                            "journal.articles.search.with.index", "com.liferay.journal.web"
963                    },
964                    new String[] {
965                            "journal.article.storage.type", "journal.article.storage.type",
966                            "com.liferay.journal.service"
967                    },
968                    new String[] {
969                            "journal.article.token.page.break",
970                            "journal.article.token.page.break", "com.liferay.journal.service"
971                    },
972                    new String[] {
973                            "journal.article.view.permission.check.enabled",
974                            "journal.article.view.permission.check.enabled",
975                            "com.liferay.journal.service"
976                    },
977                    new String[] {
978                            "journal.articles.index.all.versions",
979                            "journal.articles.index.all.versions", "com.liferay.journal.service"
980                    },
981                    new String[] {
982                            "journal.char.blacklist", "char.blacklist",
983                            "com.liferay.journal.service"
984                    },
985                    new String[] {
986                            "journal.content.publish.to.live.by.default",
987                            "publish.to.live.by.default", "com.liferay.journal.content.web"
988                    },
989                    new String[] {
990                            "journal.content.search.show.listed", "show.listed",
991                            "com.liferay.journal.content.search.web"
992                    },
993                    new String[] {
994                            "journal.default.display.view", "default.display.view",
995                            "com.liferay.journal.web"
996                    },
997                    new String[] {
998                            "journal.display.views", "display.views", "com.liferay.journal.web"
999                    },
1000                    new String[] {
1001                            "journal.email.from.address", "email.from.address",
1002                            "com.liferay.journal.service"
1003                    },
1004                    new String[] {
1005                            "journal.email.from.name", "email.from.name",
1006                            "com.liferay.journal.service"
1007                    },
1008                    new String[] {
1009                            "journal.email.article.added.enabled",
1010                            "email.article.added.enabled", "com.liferay.journal.service"
1011                    },
1012                    new String[] {
1013                            "journal.email.article.added.subject",
1014                            "email.article.added.subject", "com.liferay.journal.service"
1015                    },
1016                    new String[] {
1017                            "journal.email.article.added.body", "email.article.added.body",
1018                            "com.liferay.journal.service"
1019                    },
1020                    new String[] {
1021                            "journal.email.article.approval.denied.enabled",
1022                            "email.article.approval.denied.enabled",
1023                            "com.liferay.journal.service"
1024                    },
1025                    new String[] {
1026                            "journal.email.article.approval.denied.subject",
1027                            "email.article.approval.denied.subject",
1028                            "com.liferay.journal.service"
1029                    },
1030                    new String[] {
1031                            "journal.email.article.approval.denied.body",
1032                            "email.article.approval.denied.body", "com.liferay.journal.service"
1033                    },
1034                    new String[] {
1035                            "journal.email.article.approval.granted.enabled",
1036                            "email.article.approval.granted.enabled",
1037                            "com.liferay.journal.service"
1038                    },
1039                    new String[] {
1040                            "journal.email.article.approval.granted.subject",
1041                            "email.article.approval.granted.subject",
1042                            "com.liferay.journal.service"
1043                    },
1044                    new String[] {
1045                            "journal.email.article.approval.granted.body",
1046                            "email.article.approval.granted.body", "com.liferay.journal.service"
1047                    },
1048                    new String[] {
1049                            "journal.email.article.approval.requested.enabled",
1050                            "email.article.approval.requested.enabled",
1051                            "com.liferay.journal.service"
1052                    },
1053                    new String[] {
1054                            "journal.email.article.approval.requested.subject",
1055                            "email.article.approval.requested.subject",
1056                            "com.liferay.journal.service"
1057                    },
1058                    new String[] {
1059                            "journal.email.article.approval.requested.body",
1060                            "email.article.approval.requested.body",
1061                            "com.liferay.journal.service"
1062                    },
1063                    new String[] {
1064                            "journal.email.article.moved.to.folder.enabled",
1065                            "email.article.moved.to.folder.enabled",
1066                            "com.liferay.journal.service"
1067                    },
1068                    new String[] {
1069                            "journal.email.article.moved.to.folder.subject",
1070                            "email.article.moved.to.folder.subject",
1071                            "com.liferay.journal.service"
1072                    },
1073                    new String[] {
1074                            "journal.email.article.moved.from.folder.body",
1075                            "email.article.moved.from.folder.body",
1076                            "com.liferay.journal.service"
1077                    },
1078                    new String[] {
1079                            "journal.email.article.moved.from.folder.enabled",
1080                            "email.article.moved.from.folder.enabled",
1081                            "com.liferay.journal.service"
1082                    },
1083                    new String[] {
1084                            "journal.email.article.moved.from.folder.subject",
1085                            "email.article.moved.from.folder.subject",
1086                            "com.liferay.journal.service"
1087                    },
1088                    new String[] {
1089                            "journal.email.article.moved.from.folder.body",
1090                            "email.article.moved.from.folder.body",
1091                            "com.liferay.journal.service"
1092                    },
1093                    new String[] {
1094                            "journal.email.article.review.enabled",
1095                            "email.article.review.enabled", "com.liferay.journal.service"
1096                    },
1097                    new String[] {
1098                            "journal.email.article.review.subject",
1099                            "email.article.review.subject", "com.liferay.journal.service"
1100                    },
1101                    new String[] {
1102                            "journal.email.article.review.body", "email.article.review.body",
1103                            "com.liferay.journal.service"
1104                    },
1105                    new String[] {
1106                            "journal.email.article.updated.enabled",
1107                            "email.article.updated.enabled", "com.liferay.journal.service"
1108                    },
1109                    new String[] {
1110                            "journal.email.article.updated.subject",
1111                            "email.article.updated.subject", "com.liferay.journal.service"
1112                    },
1113                    new String[] {
1114                            "journal.email.article.updated.body", "email.article.updated.body",
1115                            "com.liferay.journal.service"
1116                    },
1117                    new String[] {
1118                            "journal.error.template[ftl]", "error.template[ftl]",
1119                            "com.liferay.journal.service"
1120                    },
1121                    new String[] {
1122                            "journal.error.template[vm]", "error.template[vm]",
1123                            "com.liferay.journal.service"
1124                    },
1125                    new String[] {
1126                            "journal.error.template[xsl]", "error.template[xsl]",
1127                            "com.liferay.journal.service"
1128                    },
1129                    new String[] {
1130                            "journal.feed.force.autogenerate.id",
1131                            "journal.feed.force.autogenerate.id", "com.liferay.journal.web"
1132                    },
1133                    new String[] {
1134                            "journal.folder.icon.check.count",
1135                            "journal.folder.icon.check.count", "com.liferay.journal.service"
1136                    },
1137                    new String[] {
1138                            "journal.lar.creation.strategy", "lar.creation.strategy",
1139                            "com.liferay.journal.service"
1140                    },
1141                    new String[] {
1142                            "journal.publish.to.live.by.default", "publish.to.live.by.defaul",
1143                            "com.liferay.journal.web"
1144                    },
1145                    new String[] {
1146                            "journal.publish.version.history.by.default",
1147                            "publish.version.history.by.default", "com.liferay.journal.web"
1148                    },
1149                    new String[] {
1150                            "journal.sync.content.search.on.startup",
1151                            "sync.content.search.on.startup", "com.liferay.journal.service"
1152                    },
1153                    new String[] {
1154                            "journal.template.language.content[css]",
1155                            "journal.article.template.language.content[css]",
1156                            "com.liferay.journal.web"
1157                    },
1158                    new String[] {
1159                            "journal.template.language.content[ftl]",
1160                            "journal.article.template.language.content[ftl]",
1161                            "com.liferay.journal.web"
1162                    },
1163                    new String[] {
1164                            "journal.template.language.content[vm]",
1165                            "journal.article.template.language.content[vm]",
1166                            "com.liferay.journal.web"
1167                    },
1168                    new String[] {
1169                            "journal.template.language.content[xsl]",
1170                            "journal.article.template.language.content[xsl]",
1171                            "com.liferay.journal.web"
1172                    },
1173                    new String[] {
1174                            "journal.transformer.listener", "transformer.listener",
1175                            "com.liferay.journal.service"
1176                    },
1177                    new String[] {
1178                            "journal.transformer.regex.pattern", "transformer.regex.pattern",
1179                            "com.liferay.journal.service"
1180                    },
1181                    new String[] {
1182                            "journal.transformer.regex.replacement",
1183                            "transformer.regex.replacement", "com.liferay.journal.service"
1184                    },
1185                    new String[] {
1186                            "terms.of.use.journal.article.group.id",
1187                            "terms.of.use.journal.article.group.id",
1188                            "com.liferay.journal.service"
1189                    },
1190                    new String[] {
1191                            "terms.of.use.journal.article.id",
1192                            "terms.of.use.journal.article.id", "com.liferay.journal.service"
1193                    },
1194    
1195                    // Language
1196    
1197                    new String[] {
1198                            "language.display.style.default", "ddm.template.key.default",
1199                            "com.liferay.site.navigation.language.web"
1200                    },
1201                    new String[] {
1202                            "language.display.templates.config", "display.templates.config",
1203                            "com.liferay.site.navigation.language.web"
1204                    },
1205    
1206                    // LDAP
1207    
1208                    new String[] {
1209                            "ldap.auth.enabled", "enabled",
1210                            "com.liferay.portal.authenticator.ldap"
1211                    },
1212                    new String[] {
1213                            "ldap.auth.method", "method",
1214                            "com.liferay.portal.authenticator.ldap"
1215                    },
1216                    new String[] {
1217                            "ldap.auth.password.encryption.algorithm",
1218                            "passwordEncryptionAlgorithm",
1219                            "com.liferay.portal.authenticator.ldap"
1220                    },
1221                    new String[] {
1222                            "ldap.auth.required", "required",
1223                            "com.liferay.portal.authenticator.ldap"
1224                    },
1225                    new String[] {
1226                            "ldap.export.enabled", "export.enabled", "com.liferay.portal.ldap"
1227                    },
1228                    new String[] {
1229                            "ldap.export.group.enabled", "export.group.enabled",
1230                            "com.liferay.portal.ldap"
1231                    },
1232                    new String[] {
1233                            "ldap.factory.initial", "factory.initial", "com.liferay.portal.ldap"
1234                    },
1235                    new String[] {
1236                            "ldap.import.create.role.per.group", "import.create.role.per.group",
1237                            "com.liferay.portal.ldap"
1238                    },
1239                    new String[] {
1240                            "ldap.import.enabled", "import.enabled", "com.liferay.portal.ldap"
1241                    },
1242                    new String[] {
1243                            "ldap.import.group.cache.enabled", "import.group.cache.enabled",
1244                            "com.liferay.portal.ldap"
1245                    },
1246                    new String[] {
1247                            "ldap.import.group.search.filter.enabled",
1248                            "import.group.search.filter.enabled", "com.liferay.portal.ldap"
1249                    },
1250                    new String[] {
1251                            "ldap.import.interval", "import.interval", "com.liferay.portal.ldap"
1252                    },
1253                    new String[] {
1254                            "ldap.import.lock.expiration.time", "import.lock.expiration.time",
1255                            "com.liferay.portal.ldap"
1256                    },
1257                    new String[] {
1258                            "ldap.import.method", "import.method", "com.liferay.portal.ldap"
1259                    },
1260                    new String[] {
1261                            "ldap.import.on.startup", "import.on.startup",
1262                            "com.liferay.portal.ldap"
1263                    },
1264                    new String[] {
1265                            "ldap.import.user.password.autogenerated",
1266                            "import.user.password.autogenerated", "com.liferay.portal.ldap"
1267                    },
1268                    new String[] {
1269                            "ldap.import.user.password.default", "import.user.password.default",
1270                            "com.liferay.portal.ldap"
1271                    },
1272                    new String[] {
1273                            "ldap.import.user.password.enabled", "import.user.password.enabled",
1274                            "com.liferay.portal.ldap"
1275                    },
1276                    new String[] {
1277                            "ldap.import.user.sync.strategy", "import.user.sync.strategy",
1278                            "com.liferay.portal.ldap"
1279                    },
1280                    new String[] {"ldap.page.size", "page.size", "com.liferay.portal.ldap"},
1281                    new String[] {
1282                            "ldap.password.policy.enabled", "password.policy.enabled",
1283                            "com.liferay.portal.ldap"
1284                    },
1285                    new String[] {
1286                            "ldap.range.size", "range.size", "com.liferay.portal.ldap"
1287                    },
1288                    new String[] {"ldap.referral", "referral", "com.liferay.portal.ldap"},
1289                    new String[] {
1290                            "ldap.user.ignore.attributes", "user.ignore.attributes",
1291                            "com.liferay.portal.ldap"
1292                    },
1293    
1294                    // Lucene
1295    
1296                    new String[] {
1297                            "lucene.analyzer.max.tokens", "analyzer.max.tokens",
1298                            "com.liferay.portal.search.lucene"
1299                    },
1300                    new String[] {
1301                            "lucene.buffer.size", "buffer.size",
1302                            "com.liferay.portal.search.lucene"
1303                    },
1304                    new String[] {
1305                            "lucene.commit.batch.size", "commit.batch.size",
1306                            "com.liferay.portal.search.lucene"
1307                    },
1308                    new String[] {
1309                            "lucene.commit.time.interval", "commit.time.interval",
1310                            "com.liferay.portal.search.lucene"
1311                    },
1312                    new String[] {"lucene.dir", "dir", "com.liferay.portal.search.lucene"},
1313                    new String[] {
1314                            "lucene.merge.factor", "merge.factor",
1315                            "com.liferay.portal.search.lucene"
1316                    },
1317                    new String[] {
1318                            "lucene.merge.policy", "merge.policy",
1319                            "com.liferay.portal.search.lucene"
1320                    },
1321                    new String[] {
1322                            "lucene.merge.scheduler", "merge.scheduler",
1323                            "com.liferay.portal.search.lucene"
1324                    },
1325                    new String[] {
1326                            "lucene.store.type", "store.type",
1327                            "com.liferay.portal.search.lucene"
1328                    },
1329                    new String[] {
1330                            "lucene.store.type.file.force.mmap", "store.type.file.force.mmp",
1331                            "com.liferay.portal.search.lucene"
1332                    },
1333    
1334                    // Message Boards
1335    
1336                    new String[] {
1337                            "message.boards.expire.ban.job.interval", "expire.ban.job.interval",
1338                            "com.liferay.message.boards.web"
1339                    },
1340    
1341                    // Monitoring
1342    
1343                    new String[] {
1344                            "monitoring.portal.request", "monitor.portal.request",
1345                            "com.liferay.portal.monitoring"
1346                    },
1347                    new String[] {
1348                            "monitoring.portlet.action.request",
1349                            "monitor.portlet.action.request", "com.liferay.portal.monitoring"
1350                    },
1351                    new String[] {
1352                            "monitoring.portlet.event.request", "monitor.portlet.event.request",
1353                            "com.liferay.portal.monitoring"
1354                    },
1355                    new String[] {
1356                            "monitoring.portlet.render.request",
1357                            "monitor.portlet.render.request", "com.liferay.portal.monitoring"
1358                    },
1359                    new String[] {
1360                            "monitoring.portlet.resource.request",
1361                            "monitor.portlet.resource.request", "com.liferay.portal.monitoring"
1362                    },
1363                    new String[] {
1364                            "monitoring.show.per.request.data.sample",
1365                            "show.per.request.data.sample", "com.liferay.portal.monitoring"
1366                    },
1367    
1368                    // Navigation
1369    
1370                    new String[] {
1371                            "navigation.display.style.default", "ddm.template.key.default",
1372                            "com.liferay.site.navigation.menu.web"
1373                    },
1374                    new String[] {
1375                            "navigation.display.style.options", "display.style.options",
1376                            "com.liferay.site.navigation.menu.web"
1377                    },
1378    
1379                    // Nested Portlets
1380    
1381                    new String[] {
1382                            "nested.portlets.layout.template.default",
1383                            "layout.template.default", "com.liferay.nested.portlets.web"
1384                    },
1385                    new String[] {
1386                            "nested.portlets.layout.template.unsupported",
1387                            "layout.template.unsupported", "com.liferay.nested.portlets.web"
1388                    },
1389    
1390                    // NTLM
1391    
1392                    new String[] {
1393                            "ntlm.auth.enabled", "enabled",
1394                            "com.liferay.portal.security.sso.ntlm"
1395                    },
1396                    new String[] {
1397                            "ntlm.auth.domain", "domain", "com.liferay.portal.security.sso.ntlm"
1398                    },
1399                    new String[] {
1400                            "ntlm.auth.domain.controller", "domain.controller",
1401                            "com.liferay.portal.security.sso.ntlm"
1402                    },
1403                    new String[] {
1404                            "ntlm.auth.domain.controller.name", "domain.controller.name",
1405                            "com.liferay.portal.security.sso.ntlm"
1406                    },
1407                    new String[] {
1408                            "ntlm.auth.negotiate.flags", "negotiate.flags",
1409                            "com.liferay.portal.security.sso.ntlm"
1410                    },
1411                    new String[] {
1412                            "ntlm.auth.service.account", "service.account",
1413                            "com.liferay.portal.security.sso.ntlm"
1414                    },
1415                    new String[] {
1416                            "ntlm.auth.service.password", "service.password",
1417                            "com.liferay.portal.security.sso.ntlm"
1418                    },
1419    
1420                    // OpenID
1421    
1422                    new String[] {
1423                            "open.id.auth.enabled", "enabled",
1424                            "com.liferay.portal.security.sso.openid"
1425                    },
1426                    new String[] {
1427                            "open.id.providers", "providers",
1428                            "com.liferay.portal.security.sso.openid"
1429                    },
1430                    new String[] {
1431                            "open.id.ax.schema[default]", "ax.schema",
1432                            "com.liferay.portal.security.sso.openid"
1433                    },
1434                    new String[] {
1435                            "open.id.ax.type.email[default]", "ax.type.email",
1436                            "com.liferay.portal.security.sso.openid"
1437                    },
1438                    new String[] {
1439                            "open.id.ax.type.firstname[default]", "ax.type.firstname",
1440                            "com.liferay.portal.security.sso.openid"
1441                    },
1442                    new String[] {
1443                            "open.id.ax.type.lastname[default]", "ax.type.lastname",
1444                            "com.liferay.portal.security.sso.openid"
1445                    },
1446                    new String[] {
1447                            "open.id.ax.schema[yahoo]", "ax.schema",
1448                            "com.liferay.portal.security.sso.openid"
1449                    },
1450                    new String[] {
1451                            "open.id.ax.type.email[yahoo]", "ax.type.email",
1452                            "com.liferay.portal.security.sso.openid"
1453                    },
1454                    new String[] {
1455                            "open.id.ax.type.fullname[yahoo]", "ax.type.fullname",
1456                            "com.liferay.portal.security.sso.openid"
1457                    },
1458                    new String[] {
1459                            "open.id.url[yahoo]", "url",
1460                            "com.liferay.portal.security.sso.openid"
1461                    },
1462    
1463                    // OpenSSO
1464    
1465                    new String[] {
1466                            "open.sso.auth.enabled", "enabled",
1467                            "com.liferay.portal.security.sso.opensso"
1468                    },
1469                    new String[] {
1470                            "open.sso.email.address.attr", "email.address.attr",
1471                            "com.liferay.portal.security.sso.opensso"
1472                    },
1473                    new String[] {
1474                            "open.sso.first.name.attr", "first.name.attr",
1475                            "com.liferay.portal.security.sso.opensso"
1476                    },
1477                    new String[] {
1478                            "open.sso.last.name.attr", "last.name.attr",
1479                            "com.liferay.portal.security.sso.opensso"
1480                    },
1481                    new String[] {
1482                            "open.sso.import.from.ldap", "import.from.ldap",
1483                            "com.liferay.portal.security.sso.opensso"
1484                    },
1485                    new String[] {
1486                            "open.sso.login.url", "login.url",
1487                            "com.liferay.portal.security.sso.opensso"
1488                    },
1489                    new String[] {
1490                            "open.sso.logout.on.session.expiration",
1491                            "logout.on.session.expiration",
1492                            "com.liferay.portal.security.sso.opensso"
1493                    },
1494                    new String[] {
1495                            "open.sso.logout.url", "logout.url",
1496                            "com.liferay.portal.security.sso.opensso"
1497                    },
1498                    new String[] {
1499                            "open.sso.screen.name.attr", "screen.name.attr",
1500                            "com.liferay.portal.security.sso.opensso"
1501                    },
1502                    new String[] {
1503                            "open.sso.service.url", "service.url",
1504                            "com.liferay.portal.security.sso.opensso"
1505                    },
1506    
1507                    // Polls
1508    
1509                    new String[] {
1510                            "polls.publish.to.live.by.default", "publish.to.live.by.default",
1511                            "com.liferay.polls.service"
1512                    },
1513    
1514                    // Request Header
1515    
1516                    new String[] {
1517                            "request.header.auth.hosts.allowed", "authHostsAllowed",
1518                            "com.liferay.portal.security.auto.login.request.header"
1519                    },
1520    
1521                    new String[] {
1522                            "request.header.auth.import.from.ldap", "importFromLDAP",
1523                            "com.liferay.portal.security.auto.login.request.header"
1524                    },
1525    
1526                    // RSS
1527    
1528                    new String[] {
1529                            "rss.display.templates.config", "display.templates.config",
1530                            "com.liferay.rss.web"
1531                    },
1532    
1533                    // Shopping
1534    
1535                    new String[] {
1536                            "shopping.cart.min.qty.multiple", "cart.min.qty.multiple",
1537                            "com.liferay.shopping.service"
1538                    },
1539                    new String[] {
1540                            "shopping.category.forward.to.cart", "category.forward.to.cart",
1541                            "com.liferay.shopping.service"
1542                    },
1543                    new String[] {
1544                            "shopping.category.show.special.items",
1545                            "category.show.special.items", "com.liferay.shopping.service"
1546                    },
1547                    new String[] {
1548                            "shopping.credit.card.types", "credit.card.types",
1549                            "com.liferay.shopping.service"
1550                    },
1551                    new String[] {
1552                            "shopping.currency.id", "currency.id",
1553                            "com.liferay.shopping.service"
1554                    },
1555                    new String[] {
1556                            "shopping.email.from.address", "email.from.address",
1557                            "com.liferay.shopping.service"
1558                    },
1559                    new String[] {
1560                            "shopping.email.from.name", "email.from.name",
1561                            "com.liferay.shopping.service"
1562                    },
1563                    new String[] {
1564                            "shopping.email.order.confirmation.enabled",
1565                            "email.order.confirmation.enabled", "com.liferay.shopping.service"
1566                    },
1567                    new String[] {
1568                            "shopping.email.order.confirmation.subject",
1569                            "email.order.confirmation.subject", "com.liferay.shopping.service"
1570                    },
1571                    new String[] {
1572                            "shopping.email.order.confirmation.body",
1573                            "email.order.confirmation.body", "com.liferay.shopping.service"
1574                    },
1575                    new String[] {
1576                            "shopping.email.order.shipping.enabled",
1577                            "email.order.shipping.enabled", "com.liferay.shopping.service"
1578                    },
1579                    new String[] {
1580                            "shopping.email.order.shipping.subject",
1581                            "email.order.shipping.subject", "com.liferay.shopping.service"
1582                    },
1583                    new String[] {
1584                            "shopping.email.order.shipping.body", "email.order.shipping.body",
1585                            "com.liferay.shopping.service"
1586                    },
1587                    new String[] {
1588                            "shopping.image.extensions", "image.extensions",
1589                            "com.liferay.shopping.service"
1590                    },
1591                    new String[] {
1592                            "shopping.image.large.max.size", "image.large.max.size",
1593                            "com.liferay.shopping.service"
1594                    },
1595                    new String[] {
1596                            "shopping.image.medium.max.size", "image.medium.max.size",
1597                            "com.liferay.shopping.service"
1598                    },
1599                    new String[] {
1600                            "shopping.image.small.max.size", "image.small.max.size",
1601                            "com.liferay.shopping.service"
1602                    },
1603                    new String[] {
1604                            "shopping.insurance", "insurance", "com.liferay.shopping.service"
1605                    },
1606                    new String[] {
1607                            "shopping.insurance.formula", "insurance.formula",
1608                            "com.liferay.shopping.service"
1609                    },
1610                    new String[] {
1611                            "shopping.item.show.availability", "item.show.availability",
1612                            "com.liferay.shopping.service"
1613                    },
1614                    new String[] {
1615                            "shopping.min.order", "min.order", "com.liferay.shopping.service"
1616                    },
1617                    new String[] {
1618                            "shopping.order.comments.enabled", "order.comments.enabled",
1619                            "com.liferay.shopping.service"
1620                    },
1621                    new String[] {
1622                            "shopping.paypal.email.address", "paypal.email.address",
1623                            "com.liferay.shopping.service"
1624                    },
1625                    new String[] {
1626                            "shopping.shipping", "shipping", "com.liferay.shopping.service"
1627                    },
1628                    new String[] {
1629                            "shopping.shipping.formula", "shipping.formula",
1630                            "com.liferay.shopping.service"
1631                    },
1632                    new String[] {
1633                            "shopping.tax.rate", "tax.rate", "com.liferay.shopping.service"
1634                    },
1635    
1636                    // Scripting
1637    
1638                    new String[] {
1639                            "scripting.forbidden.classes", "forbidden.classes",
1640                            "com.liferay.portal.scripting.javascript"
1641                    },
1642                    new String[] {
1643                            "scripting.jruby.load.paths", "load.paths",
1644                            "com.liferay.portal.scripting.ruby"
1645                    },
1646    
1647                    // Search
1648    
1649                    new String[] {
1650                            "search.facet.configuration", "facet.configuration",
1651                            "com.liferay.search.web"
1652                    },
1653    
1654                    // Site Map
1655    
1656                    new String[] {
1657                            "sitemap.display.templates.config", "display.templates.config",
1658                            "com.liferay.site.navigation.site.map.web"
1659                    },
1660    
1661                    // Staging
1662    
1663                    new String[] {
1664                            "staging.draft.export.import.configuration.check.interval",
1665                            "draft.export.import.configuration.check.interval",
1666                            "com.liferay.exportimport.web"
1667                    },
1668                    new String[] {
1669                            "staging.draft.export.import.configuration.clean.up.count",
1670                            "draft.export.import.configuration.clean.up.count",
1671                            "com.liferay.exportimport.web"
1672                    },
1673    
1674                    // Social Activity
1675    
1676                    new String[] {
1677                            "social.activity.contribution.increments",
1678                            "contribution.increments", "com.liferay.social.activity"
1679                    },
1680                    new String[] {
1681                            "social.activity.contribution.limit.values",
1682                            "contribution.limit.values", "com.liferay.social.activity"
1683                    },
1684                    new String[] {
1685                            "social.activity.participation.increments",
1686                            "participation.increments", "com.liferay.social.activity"
1687                    },
1688                    new String[] {
1689                            "social.activity.participation.limit.values",
1690                            "participation.limit.values", "com.liferay.social.activity"
1691                    },
1692    
1693                    // Tags Compiler
1694    
1695                    new String[] {
1696                            "tags.compiler.enabled", "enabled",
1697                            "com.liferay.asset.tags.compiler.web"
1698                    },
1699    
1700                    // Translator
1701    
1702                    new String[] {
1703                            "translator.default.languages", "translation.id",
1704                            "com.liferay.translator.web"
1705                    },
1706                    new String[] {
1707                            "translator.languages", "language.ids", "com.liferay.translator.web"
1708                    },
1709    
1710                    // Velocity Engine
1711    
1712                    new String[] {
1713                            "velocity.engine.directive.if.to.string.null.check",
1714                            "directive.if.to.string.null.check",
1715                            "com.liferay.portal.template.velocity"
1716                    },
1717                    new String[] {
1718                            "velocity.engine.resource.parsers", "resource.parsers",
1719                            "com.liferay.portal.template.velocity"
1720                    },
1721                    new String[] {
1722                            "velocity.engine.resource.modification.check.interval",
1723                            "resource.modification.check.interval",
1724                            "com.liferay.portal.template.velocity"
1725                    },
1726                    new String[] {
1727                            "velocity.engine.restricted.classes", "restricted.classes",
1728                            "com.liferay.portal.template.velocity"
1729                    },
1730                    new String[] {
1731                            "velocity.engine.restricted.packages", "restricted.packages",
1732                            "com.liferay.portal.template.velocity"
1733                    },
1734                    new String[] {
1735                            "velocity.engine.restricted.variables", "restricted.variables",
1736                            "com.liferay.portal.template.velocity"
1737                    },
1738                    new String[] {
1739                            "velocity.engine.velocimacro.library", "macro.library",
1740                            "com.liferay.portal.template.velocity"
1741                    },
1742                    new String[] {
1743                            "velocity.engine.logger", "logger",
1744                            "com.liferay.portal.template.velocity"
1745                    },
1746                    new String[] {
1747                            "velocity.engine.logger.category", "logger.category",
1748                            "com.liferay.portal.template.velocity"
1749                    },
1750    
1751                    // XSL Content
1752    
1753                    new String[] {
1754                            "xsl.content.valid.url.prefixes", "valid.url.prefixes",
1755                            "com.liferay.xsl.content.web"
1756                    },
1757                    new String[] {
1758                            "xsl.content.xml.doctype.declaration.allowed",
1759                            "xml.doctype.declaration.allowed", "com.liferay.xsl.content.web"
1760                    },
1761                    new String[] {
1762                            "xsl.content.xml.external.general.entities.allowed",
1763                            "xml.external.general.entities.allowed",
1764                            "com.liferay.xsl.content.web"
1765                    },
1766                    new String[] {
1767                            "xsl.content.xml.external.parameter.entities.allowed",
1768                            "xml.external.parameter.entities.allowed",
1769                            "com.liferay.xsl.content.web"
1770                    },
1771                    new String[] {
1772                            "xsl.content.xsl.secure.processing.enabled",
1773                            "xsl.secure.processing.enabled", "com.liferay.xsl.content.web"
1774                    },
1775    
1776                    // XSL Engine
1777    
1778                    new String[] {
1779                            "xsl.template.secure.processing.enabled",
1780                            "secure.processing.enabled", "com.liferay.portal.template.xsl"
1781                    }
1782            };
1783    
1784            private static final String[] _OBSOLETE_PORTAL_KEYS = new String[] {
1785                    "amazon.access.key.id", "amazon.associate.tag",
1786                    "amazon.secret.access.key",
1787                    "asset.entry.increment.view.counter.enabled",
1788                    "asset.publisher.asset.entry.query.processors",
1789                    "asset.publisher.filter.unlistable.entries",
1790                    "asset.tag.permissions.enabled", "asset.tag.properties.default",
1791                    "asset.tag.properties.enabled", "auth.max.failures.limit",
1792                    "blogs.image.small.max.size", "breadcrumb.display.style.options",
1793                    "buffered.increment.parallel.queue.size",
1794                    "buffered.increment.serial.queue.size", "cas.validate.url",
1795                    "cluster.executor.heartbeat.interval",
1796                    "com.liferay.filters.doubleclick.DoubleClickFilter",
1797                    "com.liferay.portal.servlet.filters.doubleclick.DoubleClickFilter",
1798                    "com.liferay.portal.servlet.filters.charbufferpool." +
1799                            "CharBufferPoolFilter",
1800                    "com.liferay.portal.servlet.filters.monitoring.MonitoringFilter",
1801                    "com.liferay.portal.servlet.filters.validhtml.ValidHtmlFilter",
1802                    "commons.pool.enabled", "company.settings.form.configuration",
1803                    "company.settings.form.identification",
1804                    "company.settings.form.miscellaneous", "company.settings.form.social",
1805                    "control.panel.home.portlet.id", "convert.processes",
1806                    "discussion.thread.view", "dl.file.entry.read.count.enabled",
1807                    "dockbar.administrative.links.show.in.pop.up",
1808                    "dynamic.data.lists.record.set.force.autogenerate.key",
1809                    "dynamic.data.lists.template.language.parser[ftl]",
1810                    "dynamic.data.lists.template.language.parser[vm]",
1811                    "dynamic.data.lists.template.language.parser[xsl]",
1812                    "dynamic.data.mapping.structure.private.field.names",
1813                    "dynamic.data.mapping.structure.private.field.datatype[_fieldsDisplay]",
1814                    "dynamic.data.mapping.structure.private.field.repeatable[" +
1815                            "_fieldsDisplay]",
1816                    "dynamic.data.mapping.template.language.types",
1817                    "editor.ckeditor.version", "editor.inline.editing.enabled",
1818                    "editor.wysiwyg.portal-web.docroot.html.portlet.asset_publisher." +
1819                            "configuration.jsp",
1820                    "editor.wysiwyg.portal-web.docroot.html.portlet.blogs.configuration." +
1821                            "jsp",
1822                    "editor.wysiwyg.portal-web.docroot.html.portlet.bookmarks." +
1823                            "configuration.jsp",
1824                    "editor.wysiwyg.portal-web.docroot.html.portlet.document_library." +
1825                    "editor.wysiwyg.portal-web.docroot.html.portlet.invitation." +
1826                            "configuration.jsp",
1827                    "editor.wysiwyg.portal-web.docroot.html.portlet.journal." +
1828                            "configuration.jsp",
1829                    "editor.wysiwyg.portal-web.docroot.html.portlet.login.configuration." +
1830                            "jsp",
1831                    "editor.wysiwyg.portal-web.docroot.html.portlet.message_boards." +
1832                            "configuration.jsp",
1833                    "editor.wysiwyg.portal-web.docroot.html.portlet.portal_settings." +
1834                            "email_notifications.jsp",
1835                    "ehcache.cache.manager.statistics.thread.pool.size",
1836                    "ehcache.statistics.enabled",
1837                    "hot.deploy.hook.custom.jsp.verification.enabled",
1838                    "hibernate.cache.region.factory_class",
1839                    "hibernate.cache.use_minimal_puts", "hibernate.cache.use_query_cache",
1840                    "hibernate.cache.use_second_level_cache",
1841                    "hibernate.cache.use_structured_entries", "index.filter.search.limit",
1842                    "invitation.email.max.recipients", "invitation.email.message.body",
1843                    "invitation.email.message.subject", "javax.persistence.validation.mode",
1844                    "jbi.workflow.url", "json.deserializer.strict.mode",
1845                    "journal.article.form.translate", "journal.article.types",
1846                    "journal.articles.page.delta.values",
1847                    "journal.template.language.parser[css]",
1848                    "journal.template.language.parser[ftl]",
1849                    "journal.template.language.parser[vm]",
1850                    "journal.template.language.parser[xsl]",
1851                    "journal.template.language.types", "jpa.configs",
1852                    "jpa.database.platform", "jpa.database.type", "jpa.load.time.weaver",
1853                    "jpa.provider", "jpa.provider.property.eclipselink.allow-zero-id",
1854                    "jpa.provider.property.eclipselink.logging.level",
1855                    "jpa.provider.property.eclipselink.logging.timestamp",
1856                    "language.display.style.options", "layout.edit.page[control_panel]",
1857                    "layout.first.pageable[control_panel]", "layout.form.add",
1858                    "layout.form.update", "layout.parentable[control_panel]",
1859                    "layout.reset.portlet.ids", "layout.set.form.update", "layout.types",
1860                    "layout.url[control_panel]", "layout.url.friendliable[control_panel]",
1861                    "layout.view.page[control_panel]", "lucene.analyzer",
1862                    "lucene.cluster.index.loading.sync.timeout", "lucene.file.extractor",
1863                    "lucene.file.extractor.regexp.strip", "lucene.replicate.write",
1864                    "lucene.store.jdbc.auto.clean.up",
1865                    "lucene.store.jdbc.auto.clean.up.enabled",
1866                    "lucene.store.jdbc.auto.clean.up.interval",
1867                    "lucene.store.jdbc.dialect.db2", "lucene.store.jdbc.dialect.derby",
1868                    "lucene.store.jdbc.dialect.hsqldb", "lucene.store.jdbc.dialect.jtds",
1869                    "lucene.store.jdbc.dialect.microsoft",
1870                    "lucene.store.jdbc.dialect.mysql", "lucene.store.jdbc.dialect.oracle",
1871                    "lucene.store.jdbc.dialect.postgresql",
1872                    "memory.cluster.scheduler.lock.cache.enabled",
1873                    "message.boards.email.message.added.signature",
1874                    "message.boards.email.message.updated.signature",
1875                    "message.boards.thread.locking.enabled", "msn.login", "msn.password",
1876                    "multicast.group.address[\"hibernate\"]",
1877                    "multicast.group.port[\"hibernate\"]",
1878                    "net.sf.ehcache.configurationResourceName",
1879                    "net.sf.ehcache.configurationResourceName.peerProviderProperties",
1880                    "organizations.form.add.identification", "organizations.form.add.main",
1881                    "organizations.form.add.miscellaneous",
1882                    "organizations.form.update.identification",
1883                    "organizations.form.update.main",
1884                    "organizations.form.update.miscellaneous",
1885                    "organizations.indexer.enabled", "portal.cache.manager.type.multi.vm",
1886                    "portal.cache.manager.type.single.vm", "portal.ctx",
1887                    "portal.security.manager.enable", "permissions.list.filter",
1888                    "permissions.thread.local.cache.max.size",
1889                    "permissions.user.check.algorithm", "persistence.provider",
1890                    "ratings.max.score", "ratings.min.score", "scheduler.classes",
1891                    "schema.run.minimal", "search.container.page.iterator.page.values",
1892                    "service.builder.service.read.only.prefixes", "shard.available.names",
1893                    "shard.default.name", "shard.selector", "siteminder.auth.enabled",
1894                    "siteminder.import.from.ldap", "siteminder.user.header",
1895                    "sites.form.add.advanced", "sites.form.add.main",
1896                    "sites.form.add.miscellaneous", "sites.form.add.seo",
1897                    "sites.form.update.advanced", "sites.form.update.main",
1898                    "sites.form.update.miscellaneous", "sites.form.update.seo",
1899                    "staging.lock.enabled", "table.mapper.cacheless.mapping.table.names",
1900                    "tck.url", "user.groups.indexer.enabled",
1901                    "users.form.add.identification", "users.indexer.enabled",
1902                    "users.form.add.main", "users.form.add.miscellaneous",
1903                    "users.form.my.account.identification", "users.form.my.account.main",
1904                    "users.form.my.account.miscellaneous",
1905                    "users.form.update.identification", "users.form.update.main",
1906                    "users.form.update.miscellaneous", "vaadin.resources.path",
1907                    "vaadin.theme", "vaadin.widgetset", "webdav.storage.class",
1908                    "webdav.storage.show.edit.url", "webdav.storage.show.view.url",
1909                    "webdav.storage.tokens", "wiki.email.page.added.signature",
1910                    "wiki.email.page.updated.signature", "xss.allow"
1911            };
1912    
1913            private static final String[] _OBSOLETE_SYSTEM_KEYS = new String[] {
1914                    "com.liferay.util.Http.proxy.host", "com.liferay.util.Http.proxy.port",
1915                    "com.liferay.util.XSSUtil.regexp.pattern"
1916            };
1917    
1918            private static final String[][] _RENAMED_PORTAL_KEYS = new String[][] {
1919                    new String[] {
1920                            "amazon.license.0", "amazon.access.key.id"
1921                    },
1922                    new String[] {"amazon.license.1", "amazon.access.key.id"},
1923                    new String[] {"amazon.license.2", "amazon.access.key.id"},
1924                    new String[] {"amazon.license.3", "amazon.access.key.id"},
1925                    new String[] {"cdn.host", "cdn.host.http"},
1926                    new String[] {
1927                            "cluster.executor.debug.enabled", "cluster.link.debug.enabled"
1928                    },
1929                    new String[] {
1930                            "com.liferay.portal.servlet.filters.compression.CompressionFilter",
1931                            "com.liferay.portal.servlet.filters.gzip.GZipFilter"
1932                    },
1933                    new String[] {
1934                            "default.guest.friendly.url",
1935                            "default.guest.public.layout.friendly.url"
1936                    },
1937                    new String[] {
1938                            "default.guest.layout.column", "default.guest.public.layout.column"
1939                    },
1940                    new String[] {
1941                            "default.guest.layout.name", "default.guest.public.layout.name"
1942                    },
1943                    new String[] {
1944                            "default.guest.layout.template.id",
1945                            "default.guest.public.layout.template.id"
1946                    },
1947                    new String[] {
1948                            "default.user.layout.column", "default.user.public.layout.column"
1949                    },
1950                    new String[] {
1951                            "default.user.layout.name", "default.user.public.layout.name"
1952                    },
1953                    new String[] {
1954                            "default.user.layout.template.id",
1955                            "default.user.public.layout.template.id"
1956                    },
1957                    new String[] {
1958                            "default.user.private.layout.lar",
1959                            "default.user.private.layouts.lar"
1960                    },
1961                    new String[] {
1962                            "default.user.public.layout.lar", "default.user.public.layouts.lar"
1963                    },
1964                    new String[] {
1965                            "dl.hook.cmis.credentials.password",
1966                            "dl.store.cmis.credentials.password"
1967                    },
1968                    new String[] {
1969                            "dl.hook.cmis.credentials.username",
1970                            "dl.store.cmis.credentials.username"
1971                    },
1972                    new String[] {
1973                            "dl.hook.cmis.repository.url", "dl.store.cmis.repository.url"
1974                    },
1975                    new String[] {
1976                            "dl.hook.cmis.system.root.dir", "dl.store.cmis.system.root.dir"
1977                    },
1978                    new String[] {
1979                            "dl.hook.file.system.root.dir", "dl.store.file.system.root.dir"
1980                    },
1981                    new String[] {"dl.hook.impl", "dl.store.impl"},
1982                    new String[] {"dl.hook.jcr.fetch.delay", "dl.store.jcr.fetch.delay"},
1983                    new String[] {
1984                            "dl.hook.jcr.fetch.max.failures", "dl.store.jcr.fetch.max.failures"
1985                    },
1986                    new String[] {
1987                            "dl.hook.jcr.move.version.labels",
1988                            "dl.store.jcr.move.version.labels"
1989                    },
1990                    new String[] {"dl.hook.s3.access.key", "dl.store.s3.access.key"},
1991                    new String[] {"dl.hook.s3.bucket.name", "dl.store.s3.bucket.name"},
1992                    new String[] {"dl.hook.s3.secret.key", "dl.store.s3.secret.key"},
1993                    new String[] {
1994                            "editor.wysiwyg.portal-web.docroot.html.portlet.calendar." +
1995                                    "edit_configuration.jsp",
1996                            "editor.wysiwyg.portal-web.docroot.html.portlet.calendar." +
1997                                    "configuration.jsp"
1998                    },
1999                    new String[] {
2000                            "editor.wysiwyg.portal-web.docroot.html.portlet.invitation." +
2001                                    "edit_configuration.jsp",
2002                            "editor.wysiwyg.portal-web.docroot.html.portlet.invitation." +
2003                                    "configuration.jsp"
2004                    },
2005                    new String[] {
2006                            "editor.wysiwyg.portal-web.docroot.html.portlet.journal." +
2007                                    "edit_configuration.jsp",
2008                            "editor.wysiwyg.portal-web.docroot.html.portlet.journal." +
2009                                    "configuration.jsp"
2010                    },
2011                    new String[] {
2012                            "editor.wysiwyg.portal-web.docroot.html.portlet.message_boards." +
2013                                    "edit_configuration.jsp",
2014                            "editor.wysiwyg.portal-web.docroot.html.portlet.message_boards." +
2015                                    "configuration.jsp"
2016                    },
2017                    new String[] {
2018                            "editor.wysiwyg.portal-web.docroot.html.portlet.shopping." +
2019                                    "edit_configuration.jsp",
2020                            "editor.wysiwyg.portal-web.docroot.html.portlet.shopping." +
2021                                    "configuration.jsp"
2022                    },
2023                    new String[] {
2024                            "field.editable.com.liferay.portal.model.User.emailAddress",
2025                            "field.editable.user.types"
2026                    },
2027                    new String[] {
2028                            "field.editable.com.liferay.portal.model.User.screenName",
2029                            "field.editable.user.types"
2030                    },
2031                    new String[] {"icon.menu.max.display.items", "menu.max.display.items"},
2032                    new String[] {
2033                            "journal.error.template.freemarker", "journal.error.template[ftl]"
2034                    },
2035                    new String[] {
2036                            "journal.error.template.velocity", "journal.error.template[vm]"
2037                    },
2038                    new String[] {
2039                            "journal.error.template.xsl", "journal.error.template[xsl]"
2040                    },
2041                    new String[] {
2042                            "journal.template.velocity.restricted.variables",
2043                            "velocity.engine.restricted.variables"
2044                    },
2045                    new String[] {
2046                            "passwords.passwordpolicytoolkit.charset.lowercase",
2047                            "passwords.passwordpolicytoolkit.validator.charset.lowercase"
2048                    },
2049                    new String[] {
2050                            "passwords.passwordpolicytoolkit.charset.numbers",
2051                            "passwords.passwordpolicytoolkit.validator.charset.numbers"
2052                    },
2053                    new String[] {
2054                            "passwords.passwordpolicytoolkit.charset.symbols",
2055                            "passwords.passwordpolicytoolkit.validator.charset.symbols"
2056                    },
2057                    new String[] {
2058                            "passwords.passwordpolicytoolkit.charset.uppercase",
2059                            "passwords.passwordpolicytoolkit.validator.charset.uppercase"
2060                    },
2061                    new String[] {
2062                            "permissions.inline.sql.resource.block.query.threshhold",
2063                            "permissions.inline.sql.resource.block.query.threshold"
2064                    },
2065                    new String[] {
2066                            "portal.instance.http.port", "portal.instance.http.socket.address"
2067                    },
2068                    new String[] {
2069                            "portal.instance.https.port", "portal.instance.http.socket.address"
2070                    },
2071                    new String[] {
2072                            "referer.url.domains.allowed", "redirect.url.domains.allowed"
2073                    },
2074                    new String[] {"referer.url.ips.allowed", "redirect.url.ips.allowed"},
2075                    new String[] {
2076                            "referer.url.security.mode", "redirect.url.security.mode"
2077                    },
2078                    new String[] {
2079                            "tags.asset.increment.view.counter.enabled",
2080                            "asset.entry.increment.view.counter.enabled"
2081                    }
2082            };
2083    
2084            private static final String[][] _RENAMED_SYSTEM_KEYS = new String[][] {
2085                    new String[] {
2086                            "com.liferay.portal.kernel.util.StringBundler.unsafe.create." +
2087                                    "threshold",
2088                            "com.liferay.portal.kernel.util.StringBundler.threadlocal.buffer." +
2089                                    "limit"
2090                    }
2091            };
2092    
2093            private static final Log _log = LogFactoryUtil.getLog(
2094                    VerifyProperties.class);
2095    
2096    }