Skip to content

Commit 38cb401

Browse files
committed
MCR-3639 dissallow empty requird collections
1 parent 97b85d2 commit 38cb401

File tree

3 files changed

+116
-62
lines changed

3 files changed

+116
-62
lines changed

mycore-base/src/main/java/org/mycore/common/config/MCRConfigurableInstanceHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -976,13 +976,13 @@ public Map<String, String> get(MCRInstanceConfiguration configuration, Target<?>
976976
String defaultName = annotation.defaultName();
977977
if (propertyMap == null && !defaultName.isEmpty()) {
978978
propertyMap = getPropertyMap(defaultName, configuration.fullProperties());
979-
if (propertyMap == null) {
979+
if (propertyMap == null || (propertyMap.isEmpty() && annotation.required())) {
980980
throw new MCRConfigurationException("Missing default configuration entries like: "
981981
+ defaultName + ", " + defaultName + ".A, " + defaultName + ".B, ...");
982982
}
983983
}
984984

985-
if (propertyMap == null && annotation.required()) {
985+
if ((propertyMap == null || propertyMap.isEmpty()) && annotation.required()) {
986986
throw new MCRConfigurationException("Missing configuration entries like: "
987987
+ getExampleNames(configuration, "A", "B") + ", ...");
988988
}
@@ -1105,13 +1105,13 @@ public List<String> get(MCRInstanceConfiguration configuration, Target<?> target
11051105
String defaultName = annotation.defaultName();
11061106
if (propertyList == null && !defaultName.isEmpty()) {
11071107
propertyList = getPropertyList(defaultName, configuration.fullProperties());
1108-
if (propertyList == null) {
1108+
if (propertyList == null || (propertyList.isEmpty() && annotation.required())) {
11091109
throw new MCRConfigurationException("Missing default configuration entries like: "
11101110
+ defaultName + ", " + defaultName + ".1, " + defaultName + ".2, ...");
11111111
}
11121112
}
11131113

1114-
if (propertyList == null && annotation.required()) {
1114+
if ((propertyList == null || propertyList.isEmpty()) && annotation.required()) {
11151115
throw new MCRConfigurationException("Missing configuration entries like: "
11161116
+ getExampleNames(configuration, "1", "2") + ", ...");
11171117
}

mycore-base/src/test/java/org/mycore/common/config/MCRConfigurableInstancePropertyListTest.java

Lines changed: 56 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
* <td style="border: 1px solid;">not set</td>
124124
* <td style="border: 1px solid;">yes</td>
125125
* <td style="border: 1px solid;"><code>X=</code></td>
126-
* <td style="border: 1px solid;"><code>[]</code></td>
126+
* <td style="border: 1px solid;">Exception</td>
127127
* </tr>
128128
* <tr>
129129
* <td style="border: 1px solid;">yes</td>
@@ -144,7 +144,7 @@
144144
* <td style="border: 1px solid;"><code>A=</code></td>
145145
* <td style="border: 1px solid;">-</td>
146146
* <td style="border: 1px solid;">-</td>
147-
* <td style="border: 1px solid;"><code>[]</code></td>
147+
* <td style="border: 1px solid;">Exception</td>
148148
* </tr>
149149
* <tr>
150150
* <td style="border: 1px solid;">yes</td>
@@ -671,9 +671,12 @@ public void requiredPropertyMissingDefaultSetDefaultPropertyMissing() {
671671
})
672672
public void requiredPropertyMissingDefaultSetDefaultPropertyShortEmpty() {
673673
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
674-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
675-
RequiredDefaultSet.class, configuration);
676-
assertEquals(EMPTY, instance.list);
674+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
675+
MCRConfigurableInstanceHelper.getInstance(
676+
RequiredDefaultSet.class, configuration);
677+
});
678+
assertEquals("Missing default configuration entries like: MCR.List, MCR.List.1, MCR.List.2, ...",
679+
exception.getMessage());
677680
}
678681

679682
@Test
@@ -708,9 +711,12 @@ public void requiredPropertyMissingDefaultSetDefaultPropertyLongNotEmpty() {
708711
})
709712
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyMissing() {
710713
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
711-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
712-
RequiredDefaultNotSet.class, configuration);
713-
assertEquals(EMPTY, instance.list);
714+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
715+
MCRConfigurableInstanceHelper.getInstance(
716+
RequiredDefaultNotSet.class, configuration);
717+
});
718+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
719+
exception.getMessage());
714720
}
715721

716722
@Test
@@ -721,9 +727,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyMissing() {
721727
})
722728
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortEmpty() {
723729
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
724-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
725-
RequiredDefaultNotSet.class, configuration);
726-
assertEquals(EMPTY, instance.list);
730+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
731+
MCRConfigurableInstanceHelper.getInstance(
732+
RequiredDefaultNotSet.class, configuration);
733+
});
734+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
735+
exception.getMessage());
727736
}
728737

729738
@Test
@@ -734,9 +743,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortEmpty() {
734743
})
735744
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortNotEmpty() {
736745
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
737-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
738-
RequiredDefaultNotSet.class, configuration);
739-
assertEquals(EMPTY, instance.list);
746+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
747+
MCRConfigurableInstanceHelper.getInstance(
748+
RequiredDefaultNotSet.class, configuration);
749+
});
750+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
751+
exception.getMessage());
740752
}
741753

742754
@Test
@@ -748,9 +760,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortNotEmpty(
748760
})
749761
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyLongNotEmpty() {
750762
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
751-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
752-
RequiredDefaultNotSet.class, configuration);
753-
assertEquals(EMPTY, instance.list);
763+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
764+
MCRConfigurableInstanceHelper.getInstance(
765+
RequiredDefaultNotSet.class, configuration);
766+
});
767+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
768+
exception.getMessage());
754769
}
755770

756771
@Test
@@ -760,9 +775,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyLongNotEmpty()
760775
})
761776
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyMissing() {
762777
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
763-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
764-
RequiredDefaultSet.class, configuration);
765-
assertEquals(EMPTY, instance.list);
778+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
779+
MCRConfigurableInstanceHelper.getInstance(
780+
RequiredDefaultSet.class, configuration);
781+
});
782+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
783+
exception.getMessage());
766784
}
767785

768786
@Test
@@ -773,9 +791,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyMissing() {
773791
})
774792
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortEmpty() {
775793
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
776-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
777-
RequiredDefaultSet.class, configuration);
778-
assertEquals(EMPTY, instance.list);
794+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
795+
MCRConfigurableInstanceHelper.getInstance(
796+
RequiredDefaultSet.class, configuration);
797+
});
798+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
799+
exception.getMessage());
779800
}
780801

781802
@Test
@@ -786,9 +807,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortEmpty() {
786807
})
787808
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortNotEmpty() {
788809
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
789-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
790-
RequiredDefaultSet.class, configuration);
791-
assertEquals(EMPTY, instance.list);
810+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
811+
MCRConfigurableInstanceHelper.getInstance(
812+
RequiredDefaultSet.class, configuration);
813+
});
814+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
815+
exception.getMessage());
792816
}
793817

794818
@Test
@@ -800,9 +824,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortNotEmpty() {
800824
})
801825
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyLongNotEmpty() {
802826
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
803-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
804-
RequiredDefaultSet.class, configuration);
805-
assertEquals(EMPTY, instance.list);
827+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
828+
MCRConfigurableInstanceHelper.getInstance(
829+
RequiredDefaultSet.class, configuration);
830+
});
831+
assertEquals("Missing configuration entries like: Foo.List, Foo.List.1, Foo.List.2, ...",
832+
exception.getMessage());
806833
}
807834

808835
@Test

mycore-base/src/test/java/org/mycore/common/config/MCRConfigurableInstancePropertyMapTest.java

Lines changed: 56 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
* <td style="border: 1px solid;">not set</td>
124124
* <td style="border: 1px solid;">yes</td>
125125
* <td style="border: 1px solid;"><code>X=</code></td>
126-
* <td style="border: 1px solid;"><code>{}</code></td>
126+
* <td style="border: 1px solid;">Exception</td>
127127
* </tr>
128128
* <tr>
129129
* <td style="border: 1px solid;">yes</td>
@@ -144,7 +144,7 @@
144144
* <td style="border: 1px solid;"><code>A=</code></td>
145145
* <td style="border: 1px solid;">-</td>
146146
* <td style="border: 1px solid;">-</td>
147-
* <td style="border: 1px solid;"><code>{}</code></td>
147+
* <td style="border: 1px solid;">Exception</td>
148148
* </tr>
149149
* <tr>
150150
* <td style="border: 1px solid;">yes</td>
@@ -670,9 +670,12 @@ public void requiredPropertyMissingDefaultSetDefaultPropertyMissing() {
670670
})
671671
public void requiredPropertyMissingDefaultSetDefaultPropertyShortEmpty() {
672672
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
673-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
674-
RequiredDefaultSet.class, configuration);
675-
assertEquals(EMPTY, instance.map);
673+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
674+
MCRConfigurableInstanceHelper.getInstance(
675+
RequiredDefaultSet.class, configuration);
676+
});
677+
assertEquals("Missing default configuration entries like: MCR.Map, MCR.Map.A, MCR.Map.B, ...",
678+
exception.getMessage());
676679
}
677680

678681
@Test
@@ -707,9 +710,12 @@ public void requiredPropertyMissingDefaultSetDefaultPropertyLongNotEmpty() {
707710
})
708711
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyMissing() {
709712
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
710-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
711-
RequiredDefaultNotSet.class, configuration);
712-
assertEquals(EMPTY, instance.map);
713+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
714+
MCRConfigurableInstanceHelper.getInstance(
715+
RequiredDefaultNotSet.class, configuration);
716+
});
717+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
718+
exception.getMessage());
713719
}
714720

715721
@Test
@@ -720,9 +726,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyMissing() {
720726
})
721727
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortEmpty() {
722728
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
723-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
724-
RequiredDefaultNotSet.class, configuration);
725-
assertEquals(EMPTY, instance.map);
729+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
730+
MCRConfigurableInstanceHelper.getInstance(
731+
RequiredDefaultNotSet.class, configuration);
732+
});
733+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
734+
exception.getMessage());
726735
}
727736

728737
@Test
@@ -733,9 +742,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortEmpty() {
733742
})
734743
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortNotEmpty() {
735744
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
736-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
737-
RequiredDefaultNotSet.class, configuration);
738-
assertEquals(EMPTY, instance.map);
745+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
746+
MCRConfigurableInstanceHelper.getInstance(
747+
RequiredDefaultNotSet.class, configuration);
748+
});
749+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
750+
exception.getMessage());
739751
}
740752

741753
@Test
@@ -747,9 +759,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyShortNotEmpty(
747759
})
748760
public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyLongNotEmpty() {
749761
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
750-
RequiredDefaultNotSet instance = MCRConfigurableInstanceHelper.getInstance(
751-
RequiredDefaultNotSet.class, configuration);
752-
assertEquals(EMPTY, instance.map);
762+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
763+
MCRConfigurableInstanceHelper.getInstance(
764+
RequiredDefaultNotSet.class, configuration);
765+
});
766+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
767+
exception.getMessage());
753768
}
754769

755770
@Test
@@ -759,9 +774,12 @@ public void requiredPropertyShortEmptyDefaultNotSetDefaultPropertyLongNotEmpty()
759774
})
760775
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyMissing() {
761776
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
762-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
763-
RequiredDefaultSet.class, configuration);
764-
assertEquals(EMPTY, instance.map);
777+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
778+
MCRConfigurableInstanceHelper.getInstance(
779+
RequiredDefaultSet.class, configuration);
780+
});
781+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
782+
exception.getMessage());
765783
}
766784

767785
@Test
@@ -772,9 +790,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyMissing() {
772790
})
773791
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortEmpty() {
774792
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
775-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
776-
RequiredDefaultSet.class, configuration);
777-
assertEquals(EMPTY, instance.map);
793+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
794+
MCRConfigurableInstanceHelper.getInstance(
795+
RequiredDefaultSet.class, configuration);
796+
});
797+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
798+
exception.getMessage());
778799
}
779800

780801
@Test
@@ -785,9 +806,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortEmpty() {
785806
})
786807
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortNotEmpty() {
787808
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
788-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
789-
RequiredDefaultSet.class, configuration);
790-
assertEquals(EMPTY, instance.map);
809+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
810+
MCRConfigurableInstanceHelper.getInstance(
811+
RequiredDefaultSet.class, configuration);
812+
});
813+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
814+
exception.getMessage());
791815
}
792816

793817
@Test
@@ -799,9 +823,12 @@ public void requiredPropertyShortEmptyDefaultSetDefaultPropertyShortNotEmpty() {
799823
})
800824
public void requiredPropertyShortEmptyDefaultSetDefaultPropertyLongNotEmpty() {
801825
MCRInstanceConfiguration configuration = MCRInstanceConfiguration.ofName("Foo");
802-
RequiredDefaultSet instance = MCRConfigurableInstanceHelper.getInstance(
803-
RequiredDefaultSet.class, configuration);
804-
assertEquals(EMPTY, instance.map);
826+
MCRConfigurationException exception = assertThrows(MCRConfigurationException.class, () -> {
827+
MCRConfigurableInstanceHelper.getInstance(
828+
RequiredDefaultSet.class, configuration);
829+
});
830+
assertEquals("Missing configuration entries like: Foo.Map, Foo.Map.A, Foo.Map.B, ...",
831+
exception.getMessage());
805832
}
806833

807834
@Test

0 commit comments

Comments
 (0)