@@ -17,44 +17,71 @@ public class OpenAPIWorkflowParser {
1717
1818 private static final Logger LOGGER = LoggerFactory .getLogger (OpenAPIWorkflowParser .class );
1919
20- public OpenAPIWorkflowParserResult parse (String location ) {
21- return parse (location , new ParseOptions ());
20+ /**
21+ * Parse an OpenAPI Workflow file
22+ * @param input url, filepath or content (as string)
23+ * @return instance of OpenAPIWorkflowParserResult
24+ */
25+ public OpenAPIWorkflowParserResult parse (String input ) {
26+ return parse (input , new ParseOptions ());
2227 }
2328
24- public OpenAPIWorkflowParserResult parse (String location , ParseOptions options ) {
29+ /**
30+ * Parse an OpenAPI Workflow file
31+ * @param input url, filepath or content (as string)
32+ * @param options Options
33+ * @return instance of OpenAPIWorkflowParserResult
34+ */
35+ public OpenAPIWorkflowParserResult parse (String input , ParseOptions options ) {
2536
2637 OpenAPIWorkflowParserResult result = new OpenAPIWorkflowParserResult ();
2738
28- PathUtil pathUtil = new PathUtil ();
29- HttpUtil httpUtil = new HttpUtil ();
30-
3139 try {
40+
41+ PathUtil pathUtil = new PathUtil ();
42+ HttpUtil httpUtil = new HttpUtil ();
43+
3244 String content ;
3345
34- if (httpUtil .isUrl (location )) {
35- content = httpUtil .call (location );
46+ if (httpUtil .isUrl (input )) {
47+ content = httpUtil .call (input );
48+ result .setLocation (input );
49+ } else if (pathUtil .isFile (input )) {
50+ content = pathUtil .getFromFile (input );
51+ result .setLocation (input );
3652 } else {
37- content = pathUtil .getFromFile (location );
53+ // content as string
54+ content = input ;
55+ result .setLocation (null );
3856 }
3957
40- final ObjectMapper mapper = getObjectMapper (content );
58+ result .setContent (content );
59+ result .setFormat (getFormat (content ));
4160
42- OpenAPIWorkflow openAPIWorkflow = mapper .readValue (content , OpenAPIWorkflow .class );
43- openAPIWorkflow .setLocation (location );
44- openAPIWorkflow .setContent (content );
45- openAPIWorkflow .setFormat (getFormat (content ));
61+ try {
4662
47- result . setOpenAPIWorkflow ( openAPIWorkflow );
63+ final ObjectMapper mapper = getObjectMapper ( content );
4864
49- if (options != null && options .isApplyValidation ()) {
50- OpenAPIWorkflowValidatorResult validatorResult = new OpenAPIWorkflowValidator ().validate (openAPIWorkflow );
51- result .setValid (validatorResult .isValid ());
52- result .setErrors (validatorResult .getErrors ());
53- }
65+ OpenAPIWorkflow openAPIWorkflow = mapper .readValue (content , OpenAPIWorkflow .class );
66+
67+ result .setOpenAPIWorkflow (openAPIWorkflow );
5468
55- new OperationBinder ().bind (openAPIWorkflow );
69+ if (options != null && options .isApplyValidation ()) {
70+ OpenAPIWorkflowValidatorResult validatorResult = new OpenAPIWorkflowValidator ().validate (openAPIWorkflow );
71+ result .setValid (validatorResult .isValid ());
72+ result .setErrors (validatorResult .getErrors ());
73+ }
74+
75+ new OperationBinder ().bind (openAPIWorkflow , result .getLocation ());
76+
77+ new WorkflowBinder ().bind (openAPIWorkflow );
78+
79+ } catch (Exception e ) {
80+ LOGGER .error (e .getMessage (), e );
81+ result .setValid (false );
82+ result .addError (e .getMessage ());
83+ }
5684
57- new WorkflowBinder ().bind (openAPIWorkflow );
5885
5986 } catch (Exception e ) {
6087 LOGGER .error (e .getMessage (), e );
@@ -64,15 +91,14 @@ public OpenAPIWorkflowParserResult parse(String location, ParseOptions options)
6491 return result ;
6592 }
6693
67- OpenAPIWorkflow .Format getFormat (String content ) {
94+ OpenAPIWorkflowParserResult .Format getFormat (String content ) {
6895 if (content .trim ().startsWith ("{" )) {
69- return OpenAPIWorkflow .Format .JSON ;
96+ return OpenAPIWorkflowParserResult .Format .JSON ;
7097 } else {
71- return OpenAPIWorkflow .Format .YAML ;
98+ return OpenAPIWorkflowParserResult .Format .YAML ;
7299 }
73100 }
74101
75-
76102 private ObjectMapper getObjectMapper (String content ) {
77103 ObjectMapper objectMapper = null ;
78104 if (content .trim ().startsWith ("{" )) {
0 commit comments