1313import java .util .Set ;
1414import java .util .logging .Logger ;
1515
16+ import com .force .i18n .commons .text .TextUtil ;
1617import com .google .common .collect .ImmutableSet ;
1718/**
1819 * An adjective or other noun modifier as stored in a LanguageDictionary.
@@ -32,6 +33,9 @@ public abstract class Adjective extends NounModifier {
3233 @ Override
3334 public abstract Map <? extends AdjectiveForm , String > getAllValues ();
3435
36+ /**
37+ * @deprecated use {@link #Adjective(LanguageDeclention, String, LanguagePosition)}
38+ */
3539 @ Deprecated
3640 protected Adjective (LanguageDeclension declension , String name ) {
3741 this (declension , name , declension .getDefaultAdjectivePosition ());
@@ -53,11 +57,25 @@ public final String getString(ModifierForm form) {
5357 return getString ((AdjectiveForm )form );
5458 }
5559
60+ private String getDefaultValue (boolean doFallback ) {
61+ String defaultValue = getString (getDeclension ().getAdjectiveForm (getDeclension ().getDefaultStartsWith (),
62+ getDeclension ().getDefaultGender (), LanguageNumber .SINGULAR , getDeclension ().getDefaultCase (),
63+ getDeclension ().getDefaultArticle (), getDeclension ().getDefaultPossessive ()));
64+ if (defaultValue != null || !doFallback ) return defaultValue ;
65+
66+ // not perfect, but trying to return something instead of null
67+ for (String val : this .getAllValues ().values ()) {
68+ if (!TextUtil .isNullEmptyOrWhitespace (val )) {
69+ // error should be already logged by defaultValidate
70+ return val ;
71+ }
72+ }
73+ return null ; // something went wrong
74+ }
75+
5676 @ Override
5777 public String getDefaultValue () {
58- return getString (getDeclension ().getAdjectiveForm (getDeclension ().getDefaultStartsWith (),
59- getDeclension ().getDefaultGender (), LanguageNumber .SINGULAR ,
60- getDeclension ().getDefaultCase (), getDeclension ().getDefaultArticle (), getDeclension ().getDefaultPossessive ()));
78+ return getDefaultValue (true );
6179 }
6280
6381 /**
@@ -118,7 +136,7 @@ public boolean defaultValidate(String name, Set<? extends AdjectiveForm> require
118136 for (AdjectiveForm form : getDeclension ().getAdjectiveForms ()) {
119137 if (getString (form ) == null ) {
120138 if (requiredForms .contains (form )) {
121- logger .fine ("###\t Error: The adjective " + name + " is missing required " + form + " form" );
139+ logger .fine (() -> "###\t Error: The adjective " + name + " is missing required " + form + " form" );
122140 // TODO: uncomment the return false below once we actually handle validation
123141 // Presently, the return value is simply ignored
124142 // return false;
@@ -171,10 +189,10 @@ public boolean defaultValidate(String name, Set<? extends AdjectiveForm> require
171189 // so default to the absolute default value
172190 s = getDefaultValue ();
173191 if (s == null ) {
174- logger .fine ("###\t Error: The adjective " + name + " has no " + form + " form and no default could be found" );
192+ logger .fine (() -> "###\t Error: The adjective " + name + " has no " + form + " form and no default could be found" );
175193 return false ;
176194 } else {
177- logger .fine ("###\t Error: The adjective " + name + " has no obvious default for " + form + "form" );
195+ logger .fine (() -> "###\t Error: The adjective " + name + " has no obvious default for " + form + "form" );
178196 }
179197 }
180198
0 commit comments