Skip to content

Commit 08a30b9

Browse files
committed
Resolving issue where incomplete search field configuration prevented
OpenCms from starting.
1 parent 8794688 commit 08a30b9

File tree

7 files changed

+68
-77
lines changed

7 files changed

+68
-77
lines changed

modules/org.opencms.locale.de/resources/system/workplace/locales/de/messages/org/opencms/search/messages_de.properties

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ ERR_QUERY_TOO_SHORT_1 =Der Suchbegriff ist zu kurz, geben Sie m
2828
ERR_SEARCH_PARAMS_1 =Die Suche nach "{0}" ist fehlgeschlagen.
2929
ERR_SEARCH_NOT_INITIALIZED_0 =Die Suche wurde nicht initialisiert.
3030
ERR_INDEX_WRONG_CLASS_2 =Index "{0}" hat nicht die ben�tigte Klasse "{1}".
31+
ERR_FIELD_CONFIGURATION_IS_EMPTY_1 =Die Feldkonfiguration "{0}" hat keine Felder konfiguriert.
3132

3233
ERR_SEARCHINDEX_CREATE_MISSING_NAME_0 =Der Name eines Suchindex darf nicht leer sein!
3334
ERR_SEARCHINDEX_CREATE_INVALID_NAME_1 =Der Name "{0}" ist bereits f�r einen anderen Suchindex vergeben. W�hlen Sie einen eindeutigen Namen f�r Suchindizes.

modules/org.opencms.locale.de/resources/system/workplace/locales/de/messages/org/opencms/xml/containerpage/messages_de.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ label.ADEType.DetailPagesDisabled.help=Deaktiviert Detailseiten f
165165
label.DetailPage.Type=Typ
166166
label.DetailPage.Type.help=Der Resourcetyp f�r den diese Detailseite g�ltig ist.
167167
label.DetailPage.Page=Seite
168-
label.DetailPage.Page=Der Pfad dieser Detailseite.
168+
label.DetailPage.Page.help=Der Pfad dieser Detailseite.
169169

170170
label.SitemapConfiguration.DiscardTypes=Alle entfernen
171171
label.SitemapConfiguration.DiscardTypes.help=Entfernt alle geerbten Resourcetypen

src/org/opencms/configuration/opencms-search.dtd

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@
220220
<!--
221221
# A field configuration is made up as a list of fields.
222222
-->
223-
<!ELEMENT fields (field+) >
223+
<!ELEMENT fields (field*) >
224224

225225
<!--
226226
# A field is made up as a list of mappings, plus the attributes that describe how to create the field.

src/org/opencms/search/CmsSearchManager.java

+59-74
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ protected CmsSearchOfflineHandler() {
153153
*
154154
* @see org.opencms.main.I_CmsEventListener#cmsEvent(org.opencms.main.CmsEvent)
155155
*/
156+
@SuppressWarnings("unchecked")
156157
public void cmsEvent(CmsEvent event) {
157158

158159
switch (event.getType()) {
@@ -716,6 +717,11 @@ public void addDocumentTypeConfig(CmsSearchDocumentType documentType) {
716717
public void addFieldConfiguration(CmsSearchFieldConfiguration fieldConfiguration) {
717718

718719
m_fieldConfigurations.put(fieldConfiguration.getName(), fieldConfiguration);
720+
if (fieldConfiguration.getFields().isEmpty() && LOG.isErrorEnabled()) {
721+
LOG.error(Messages.get().getBundle().key(
722+
Messages.ERR_FIELD_CONFIGURATION_IS_EMPTY_1,
723+
fieldConfiguration.getName()));
724+
}
719725
}
720726

721727
/**
@@ -790,10 +796,8 @@ public void cmsEvent(CmsEvent event) {
790796
if ((event.getData() != null)
791797
&& CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)event.getData().get(
792798
I_CmsEventListener.KEY_INDEX_NAMES))) {
793-
indexNames = CmsStringUtil.splitAsList(
794-
(String)event.getData().get(I_CmsEventListener.KEY_INDEX_NAMES),
795-
",",
796-
true);
799+
indexNames = CmsStringUtil.splitAsList((String)event.getData().get(
800+
I_CmsEventListener.KEY_INDEX_NAMES), ",", true);
797801
}
798802
try {
799803
if (LOG.isDebugEnabled()) {
@@ -810,11 +814,9 @@ public void cmsEvent(CmsEvent event) {
810814
}
811815
} catch (CmsException e) {
812816
if (LOG.isErrorEnabled()) {
813-
LOG.error(
814-
Messages.get().getBundle().key(
815-
Messages.ERR_EVENT_REBUILD_SEARCHINDEX_1,
816-
indexNames == null ? "" : CmsStringUtil.collectionAsString(indexNames, ",")),
817-
e);
817+
LOG.error(Messages.get().getBundle().key(
818+
Messages.ERR_EVENT_REBUILD_SEARCHINDEX_1,
819+
indexNames == null ? "" : CmsStringUtil.collectionAsString(indexNames, ",")), e);
818820
}
819821
}
820822
break;
@@ -1588,12 +1590,10 @@ public void setExtractionCacheMaxAge(String extractionCacheMaxAge) {
15881590
try {
15891591
setExtractionCacheMaxAge(Float.parseFloat(extractionCacheMaxAge));
15901592
} catch (NumberFormatException e) {
1591-
LOG.error(
1592-
Messages.get().getBundle().key(
1593-
Messages.LOG_PARSE_EXTRACTION_CACHE_AGE_FAILED_2,
1594-
extractionCacheMaxAge,
1595-
new Float(DEFAULT_EXTRACTION_CACHE_MAX_AGE)),
1596-
e);
1593+
LOG.error(Messages.get().getBundle().key(
1594+
Messages.LOG_PARSE_EXTRACTION_CACHE_AGE_FAILED_2,
1595+
extractionCacheMaxAge,
1596+
new Float(DEFAULT_EXTRACTION_CACHE_MAX_AGE)), e);
15971597
setExtractionCacheMaxAge(DEFAULT_EXTRACTION_CACHE_MAX_AGE);
15981598
}
15991599
}
@@ -1654,12 +1654,10 @@ public void setMaxExcerptLength(String maxExcerptLength) {
16541654
try {
16551655
setMaxExcerptLength(Integer.parseInt(maxExcerptLength));
16561656
} catch (Exception e) {
1657-
LOG.error(
1658-
Messages.get().getBundle().key(
1659-
Messages.LOG_PARSE_EXCERPT_LENGTH_FAILED_2,
1660-
maxExcerptLength,
1661-
new Integer(DEFAULT_EXCERPT_LENGTH)),
1662-
e);
1657+
LOG.error(Messages.get().getBundle().key(
1658+
Messages.LOG_PARSE_EXCERPT_LENGTH_FAILED_2,
1659+
maxExcerptLength,
1660+
new Integer(DEFAULT_EXCERPT_LENGTH)), e);
16631661
setMaxExcerptLength(DEFAULT_EXCERPT_LENGTH);
16641662
}
16651663
}
@@ -1684,12 +1682,10 @@ public void setMaxModificationsBeforeCommit(String value) {
16841682
try {
16851683
setMaxModificationsBeforeCommit(Integer.parseInt(value));
16861684
} catch (Exception e) {
1687-
LOG.error(
1688-
Messages.get().getBundle().key(
1689-
Messages.LOG_PARSE_MAXCOMMIT_FAILED_2,
1690-
value,
1691-
new Integer(DEFAULT_MAX_MODIFICATIONS_BEFORE_COMMIT)),
1692-
e);
1685+
LOG.error(Messages.get().getBundle().key(
1686+
Messages.LOG_PARSE_MAXCOMMIT_FAILED_2,
1687+
value,
1688+
new Integer(DEFAULT_MAX_MODIFICATIONS_BEFORE_COMMIT)), e);
16931689
setMaxModificationsBeforeCommit(DEFAULT_MAX_MODIFICATIONS_BEFORE_COMMIT);
16941690
}
16951691
}
@@ -1715,12 +1711,10 @@ public void setOfflineUpdateFrequency(String offlineUpdateFrequency) {
17151711
try {
17161712
setOfflineUpdateFrequency(Long.parseLong(offlineUpdateFrequency));
17171713
} catch (Exception e) {
1718-
LOG.error(
1719-
Messages.get().getBundle().key(
1720-
Messages.LOG_PARSE_OFFLINE_UPDATE_FAILED_2,
1721-
offlineUpdateFrequency,
1722-
new Long(DEFAULT_OFFLINE_UPDATE_FREQNENCY)),
1723-
e);
1714+
LOG.error(Messages.get().getBundle().key(
1715+
Messages.LOG_PARSE_OFFLINE_UPDATE_FAILED_2,
1716+
offlineUpdateFrequency,
1717+
new Long(DEFAULT_OFFLINE_UPDATE_FREQNENCY)), e);
17241718
setOfflineUpdateFrequency(DEFAULT_OFFLINE_UPDATE_FREQNENCY);
17251719
}
17261720
}
@@ -1745,9 +1739,10 @@ public void setTimeout(String value) {
17451739
try {
17461740
setTimeout(Long.parseLong(value));
17471741
} catch (Exception e) {
1748-
LOG.error(
1749-
Messages.get().getBundle().key(Messages.LOG_PARSE_TIMEOUT_FAILED_2, value, new Long(DEFAULT_TIMEOUT)),
1750-
e);
1742+
LOG.error(Messages.get().getBundle().key(
1743+
Messages.LOG_PARSE_TIMEOUT_FAILED_2,
1744+
value,
1745+
new Long(DEFAULT_TIMEOUT)), e);
17511746
setTimeout(DEFAULT_TIMEOUT);
17521747
}
17531748
}
@@ -1936,9 +1931,9 @@ protected void initSearchIndexes() {
19361931
} catch (CmsException e) {
19371932
// in this case the index will be disabled
19381933
if (CmsLog.INIT.isInfoEnabled()) {
1939-
CmsLog.INIT.info(
1940-
Messages.get().getBundle().key(Messages.INIT_SEARCH_INIT_FAILED_1, index.getName()),
1941-
e);
1934+
CmsLog.INIT.info(Messages.get().getBundle().key(
1935+
Messages.INIT_SEARCH_INIT_FAILED_1,
1936+
index.getName()), e);
19421937
}
19431938
}
19441939
}
@@ -1977,9 +1972,9 @@ protected synchronized void updateAllIndexes(CmsObject adminCms, CmsUUID publish
19771972
// read the list of all published resources
19781973
publishedResources = adminCms.readPublishedResources(publishHistoryId);
19791974
} catch (CmsException e) {
1980-
LOG.error(
1981-
Messages.get().getBundle().key(Messages.LOG_READING_CHANGED_RESOURCES_FAILED_1, publishHistoryId),
1982-
e);
1975+
LOG.error(Messages.get().getBundle().key(
1976+
Messages.LOG_READING_CHANGED_RESOURCES_FAILED_1,
1977+
publishHistoryId), e);
19831978
return;
19841979
}
19851980

@@ -2029,11 +2024,9 @@ protected synchronized void updateAllIndexes(CmsObject adminCms, CmsUUID publish
20292024
} catch (CmsException e) {
20302025
// ignore, just use the original resource
20312026
if (LOG.isWarnEnabled()) {
2032-
LOG.warn(
2033-
Messages.get().getBundle().key(
2034-
Messages.LOG_UNABLE_TO_READ_SIBLINGS_1,
2035-
res.getRootPath()),
2036-
e);
2027+
LOG.warn(Messages.get().getBundle().key(
2028+
Messages.LOG_UNABLE_TO_READ_SIBLINGS_1,
2029+
res.getRootPath()), e);
20372030
}
20382031
}
20392032
}
@@ -2053,9 +2046,9 @@ protected synchronized void updateAllIndexes(CmsObject adminCms, CmsUUID publish
20532046
try {
20542047
updateIndex(index, report, updateResources);
20552048
} catch (CmsException e) {
2056-
LOG.error(
2057-
Messages.get().getBundle().key(Messages.LOG_UPDATE_INDEX_FAILED_1, index.getName()),
2058-
e);
2049+
LOG.error(Messages.get().getBundle().key(
2050+
Messages.LOG_UPDATE_INDEX_FAILED_1,
2051+
index.getName()), e);
20592052
}
20602053
}
20612054
}
@@ -2157,24 +2150,20 @@ protected synchronized void updateIndex(
21572150
writer.commit();
21582151
} catch (IOException e) {
21592152
if (LOG.isWarnEnabled()) {
2160-
LOG.warn(
2161-
Messages.get().getBundle().key(
2162-
Messages.LOG_IO_INDEX_WRITER_COMMIT_2,
2163-
index.getName(),
2164-
index.getPath()),
2165-
e);
2153+
LOG.warn(Messages.get().getBundle().key(
2154+
Messages.LOG_IO_INDEX_WRITER_COMMIT_2,
2155+
index.getName(),
2156+
index.getPath()), e);
21662157
}
21672158
}
21682159
try {
21692160
writer.optimize();
21702161
} catch (IOException e) {
21712162
if (LOG.isWarnEnabled()) {
2172-
LOG.warn(
2173-
Messages.get().getBundle().key(
2174-
Messages.LOG_IO_INDEX_WRITER_OPTIMIZE_2,
2175-
index.getName(),
2176-
index.getPath()),
2177-
e);
2163+
LOG.warn(Messages.get().getBundle().key(
2164+
Messages.LOG_IO_INDEX_WRITER_OPTIMIZE_2,
2165+
index.getName(),
2166+
index.getPath()), e);
21782167
}
21792168
}
21802169
}
@@ -2196,12 +2185,10 @@ protected synchronized void updateIndex(
21962185
writer.close();
21972186
} catch (IOException e) {
21982187
if (LOG.isWarnEnabled()) {
2199-
LOG.warn(
2200-
Messages.get().getBundle().key(
2201-
Messages.LOG_IO_INDEX_WRITER_CLOSE_2,
2202-
index.getPath(),
2203-
index.getName()),
2204-
e);
2188+
LOG.warn(Messages.get().getBundle().key(
2189+
Messages.LOG_IO_INDEX_WRITER_CLOSE_2,
2190+
index.getPath(),
2191+
index.getName()), e);
22052192
}
22062193
}
22072194
}
@@ -2317,12 +2304,10 @@ protected synchronized void updateIndexIncremental(
23172304
try {
23182305
writer.commit();
23192306
} catch (IOException e) {
2320-
LOG.error(
2321-
Messages.get().getBundle().key(
2322-
Messages.LOG_IO_INDEX_WRITER_COMMIT_2,
2323-
index.getName(),
2324-
index.getPath()),
2325-
e);
2307+
LOG.error(Messages.get().getBundle().key(
2308+
Messages.LOG_IO_INDEX_WRITER_COMMIT_2,
2309+
index.getName(),
2310+
index.getPath()), e);
23262311
}
23272312
}
23282313
// index has changed - initialize the index searcher instance

src/org/opencms/search/CmsSearchParameters.java

+1
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,7 @@ public boolean isIgnoreQuery() {
726726
* @param restriction the parameters to restrict this parameters with
727727
* @return the restricted parameters
728728
*/
729+
@SuppressWarnings("unchecked")
729730
public CmsSearchParameters restrict(CmsSearchParameters restriction) {
730731

731732
// append queries

src/org/opencms/search/Messages.java

+3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ public final class Messages extends A_CmsMessageBundle {
6464
/** Message constant for key in the resource bundle. */
6565
public static final String ERR_EVENT_REBUILD_SEARCHINDEX_1 = "ERR_EVENT_REBUILD_SEARCHINDEX_1";
6666

67+
/** Message constant for key in the resource bundle. */
68+
public static final String ERR_FIELD_CONFIGURATION_IS_EMPTY_1 = "ERR_FIELD_CONFIGURATION_IS_EMPTY_1";
69+
6770
/** Message constant for key in the resource bundle. */
6871
public static final String ERR_FIELD_CONFIGURATION_UNKNOWN_2 = "ERR_FIELD_CONFIGURATION_UNKNOWN_2";
6972

src/org/opencms/search/messages.properties

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ ERR_QUERY_TOO_SHORT_1 =Search query too short, enter at least {
3333
ERR_SEARCH_PARAMS_1 =Searching for "{0}" failed.
3434
ERR_SEARCH_NOT_INITIALIZED_0 =Search has not been initialized.
3535
ERR_SEARCHINDEX_CREATE_MISSING_NAME_0 =The name of the index must not be empty!
36-
ERR_SEARCHINDEX_CREATE_INVALID_NAME_1 =The name "{0}" is already used by an existing search index. Choose a unique name for search indices.
36+
ERR_SEARCHINDEX_CREATE_INVALID_NAME_1 =The name "{0}" is already used by an existing search index. Choose a unique name for search indices.
37+
ERR_FIELD_CONFIGURATION_IS_EMPTY_1 =The field configuration "{0}" has no fields.
3738

3839
GUI_HELP_BUTTON_BACK_0 =Back
3940
GUI_HELP_BUTTON_CLOSE_0 =Close

0 commit comments

Comments
 (0)