Skip to content

Commit e37fbce

Browse files
committed
fix: revert to static initialization in PersonOrOrgUtil
1 parent 39bef7f commit e37fbce

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/main/java/edu/harvard/iq/dataverse/settings/JvmSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public enum JvmSettings {
273273
CSL_COMMON_STYLES(SCOPE_CSL, "common-styles"),
274274

275275
// PersonOrOrgUtil SETTINGS
276-
SCOPE_PERSONORORG(PREFIX, "person-or-org", "dataverse.personOrOrg"),
276+
SCOPE_PERSONORORG(PREFIX, "person-or-org"),
277277
ASSUME_COMMA_IN_PERSON_NAME(SCOPE_PERSONORORG, "assume-comma-in-person-name", "dataverse.personOrOrg.assumeCommaInPersonName"),
278278
ORG_PHRASE_ARRAY(SCOPE_PERSONORORG, "org-phrase-array"),
279279

src/main/java/edu/harvard/iq/dataverse/util/PersonOrOrgUtil.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package edu.harvard.iq.dataverse.util;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
35
import java.util.logging.Logger;
46

57
import edu.harvard.iq.dataverse.settings.JvmSettings;
@@ -34,6 +36,14 @@ public class PersonOrOrgUtil {
3436

3537
private static final Logger logger = Logger.getLogger(PersonOrOrgUtil.class.getCanonicalName());
3638

39+
static boolean assumeCommaInPersonName = false;
40+
static List<String> orgPhrases;
41+
42+
static {
43+
setAssumeCommaInPersonName(JvmSettings.ASSUME_COMMA_IN_PERSON_NAME.lookupOptional(Boolean.class).orElse(false));
44+
setOrgPhraseArray(JvmSettings.ORG_PHRASE_ARRAY.lookupOptional(String[].class).orElse(new String[]{}));
45+
}
46+
3747
/**
3848
* This method tries to determine if a name belongs to a person or an
3949
* organization and, if it is a person, what the given and family names are. The
@@ -61,7 +71,6 @@ public static JsonObject getPersonOrOrganization(String name, boolean organizati
6171

6272
boolean isOrganization = !isPerson && Organizations.getInstance().isOrganization(name);
6373
if (!isOrganization) {
64-
String[] orgPhrases = JvmSettings.ORG_PHRASE_ARRAY.lookupOptional(String[].class).orElse(new String[]{});
6574
for (String phrase : orgPhrases) {
6675
if (name.contains(phrase)) {
6776
isOrganization = true;
@@ -88,7 +97,6 @@ public static JsonObject getPersonOrOrganization(String name, boolean organizati
8897
}
8998

9099
} else {
91-
boolean assumeCommaInPersonName = JvmSettings.ASSUME_COMMA_IN_PERSON_NAME.lookupOptional(Boolean.class).orElse(false);
92100
if (assumeCommaInPersonName && !isPerson) {
93101
isOrganization = true;
94102
} else {
@@ -125,4 +133,18 @@ public static JsonObject getPersonOrOrganization(String name, boolean organizati
125133
return job.build();
126134

127135
}
136+
137+
// Public for testing
138+
public static void setOrgPhraseArray(String[] phraseArray) {
139+
if (phraseArray == null) {
140+
orgPhrases = new ArrayList<>();
141+
} else {
142+
orgPhrases = List.of(phraseArray);
143+
}
144+
}
145+
146+
// Public for testing
147+
public static void setAssumeCommaInPersonName(boolean assume) {
148+
assumeCommaInPersonName = assume;
149+
}
128150
}

src/test/java/edu/harvard/iq/dataverse/util/PersonOrOrgUtilTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ public void testOrganizationCOMPLEXName() {
4040
}
4141

4242
@Test
43-
@JvmSetting(key = JvmSettings.ORG_PHRASE_ARRAY, value = "Portable,GmbH")
4443
public void testOrganizationWithOrgPhraseArray() {
44+
PersonOrOrgUtil.setOrgPhraseArray(new String[]{"Portable", "GmbH"});
4545
// The next examples are known to be asserted to be a Person without an entry in the OrgWordArray
4646
// So we test with the array set via JvmSetting to verify the array works
4747
verifyIsOrganization("Portable Antiquities of the Netherlands");
4848
verifyIsOrganization("Max Mustermann GmbH");
49+
PersonOrOrgUtil.setOrgPhraseArray(null);
4950
}
5051

5152
@Test
@@ -58,11 +59,12 @@ public void testOrganizationAcademicName() {
5859
}
5960

6061
@Test
61-
@JvmSetting(key = JvmSettings.ASSUME_COMMA_IN_PERSON_NAME, value = "true")
6262
public void testOrganizationAcademicNameWithAssumeComma() {
63+
PersonOrOrgUtil.setAssumeCommaInPersonName(true);
6364
verifyIsOrganization("John Smith Center");
6465
verifyIsOrganization("John Smith Group");
6566
verifyIsOrganization("John Smith Project");
67+
PersonOrOrgUtil.setAssumeCommaInPersonName(false);
6668
}
6769

6870

0 commit comments

Comments
 (0)