@@ -53,61 +53,57 @@ private void printFailure(boolean required, String msg, Object... args) {
5353 @ Nullable
5454 private PrettyPrintOptions tryCandidate (Path optionsPath , boolean required ) {
5555
56- if (!optionsPath .toFile ().exists ()) {
56+ var optionsFile = optionsPath .toFile ();
57+ if (!optionsFile .exists ()) {
5758 printFailure (required , "Options file not found: %s" , optionsPath );
5859 return null ;
5960 }
6061
61- if (!optionsPath . toFile () .isFile ()) {
62+ if (!optionsFile .isFile ()) {
6263 printFailure (required , "Options file is actually not a file: %s" , optionsPath );
6364 return null ;
6465 }
6566
66- if (!optionsPath . toFile () .canRead ()) {
67+ if (!optionsFile .canRead ()) {
6768 printFailure (required , "Options file exist but is not readable: %s" , optionsPath );
6869 return null ;
6970 }
7071
7172 output .printDebug ("Options file found: %s" , optionsPath );
7273
73- ExternalOptions externalOptions ;
74+ ExternalOptions externalOptions = load (optionsPath , required );
75+ validate (optionsPath , externalOptions , required );
76+
77+ return mapToOptions (externalOptions );
78+ }
79+
80+ private ExternalOptions load (Path optionsPath , boolean required ) {
7481 try {
75- externalOptions = loadAndValidate ( optionsPath );
76- } catch ( ConstraintViolationException e ) {
77- printFailure ( required , "Invalid options file: %s \n %s " , optionsPath , e . getMessage ( ));
78- return null ;
82+ var mapper = JsonMapper . builder (). build ( );
83+ ExternalOptions externalOptions = mapper . readValue ( optionsPath , ExternalOptions . class );
84+ output . printDebug ( "%s " , RecordUtils . toTextBlock ( externalOptions ));
85+ return externalOptions ;
7986 } catch (RuntimeException e ) {
8087 printFailure (required , "IO error or malformed options file: %s\n %s" , optionsPath , e .getMessage ());
8188 return null ;
8289 }
83-
84- return mapToOptions (externalOptions );
8590 }
8691
87- private ExternalOptions loadAndValidate (Path optionsPath ) {
88- /*
89- * READ
90- */
91- var mapper = JsonMapper .builder ().build ();
92- ExternalOptions externalOptions = mapper .readValue (optionsPath , ExternalOptions .class );
93-
94- /*
95- * VALIDATE
96- */
97- var validatorFactory = Validation .byDefaultProvider ()
98- .configure ()
99- .messageInterpolator (new ParameterMessageInterpolator ())
100- .buildValidatorFactory ();
101- var validator = validatorFactory .getValidator ();
102-
103- var violations = validator .validate (externalOptions );
104- if (!violations .isEmpty ()) {
105- throw new ConstraintViolationException (violations );
92+ private void validate (Path optionsPath , ExternalOptions externalOptions , boolean required ) {
93+ try {
94+ var validatorFactory = Validation .byDefaultProvider ()
95+ .configure ()
96+ .messageInterpolator (new ParameterMessageInterpolator ())
97+ .buildValidatorFactory ();
98+ var validator = validatorFactory .getValidator ();
99+
100+ var violations = validator .validate (externalOptions );
101+ if (!violations .isEmpty ()) {
102+ throw new ConstraintViolationException (violations );
103+ }
104+ } catch (ConstraintViolationException e ) {
105+ printFailure (required , "Invalid options file: %s\n %s" , optionsPath , e .getMessage ());
106106 }
107-
108- output .printDebug ("%s" , RecordUtils .toTextBlock (externalOptions ));
109-
110- return externalOptions ;
111107 }
112108
113109 private PrettyPrintOptions mapToOptions (ExternalOptions externalOptions ) {
0 commit comments