1919import java .util .LinkedHashMap ;
2020import java .util .List ;
2121import java .util .Map ;
22- import java .util .Map .Entry ;
2322import java .util .Set ;
2423import java .util .concurrent .CancellationException ;
2524
@@ -541,10 +540,6 @@ public static void prepareEnvironmentServices(IQueryEnvironment queryEnvironment
541540 * the {@link URIConverter uri converter} to use.
542541 * @param templateURI
543542 * URI for the template, used when external links (images, includes) have to be resolved
544- * @param queryEnvironment
545- * the {@link IQueryEnvironment}
546- * @param classProvider
547- * the {@link IClassProvider} to use for service Loading
548543 * @param monitor
549544 * used to track the progress will generating
550545 * @return the {@link DocumentTemplate} resulting from parsing the specified
@@ -553,8 +548,8 @@ public static void prepareEnvironmentServices(IQueryEnvironment queryEnvironment
553548 * if a problem occurs while parsing the document.
554549 */
555550 @ SuppressWarnings ("resource" )
556- public static DocumentTemplate parse (URIConverter uriConverter , URI templateURI , IQueryEnvironment queryEnvironment ,
557- IClassProvider classProvider , Monitor monitor ) throws DocumentParserException {
551+ public static DocumentTemplate parse (URIConverter uriConverter , URI templateURI , Monitor monitor )
552+ throws DocumentParserException {
558553 final DocumentTemplate result = (DocumentTemplate ) EcoreUtil .create (TemplatePackage .Literals .DOCUMENT_TEMPLATE );
559554 final ResourceImpl r = new ResourceImpl (templateURI );
560555
@@ -570,8 +565,6 @@ public static DocumentTemplate parse(URIConverter uriConverter, URI templateURI,
570565
571566 final TemplateCustomProperties properties = new TemplateCustomProperties (document );
572567 result .setProperties (properties );
573- final List <TemplateValidationMessage > messages = parseTemplateCustomProperties (queryEnvironment ,
574- classProvider , properties , document );
575568 r .getContents ().add (result );
576569
577570 nextSubTask (monitor , PARSE_TEMPLATE_CUSTOM_PROPERTIES_MONITOR_WORK , "Parsing template body" );
@@ -580,9 +573,6 @@ public static DocumentTemplate parse(URIConverter uriConverter, URI templateURI,
580573
581574 final M2DocParser parser = new M2DocParser (document );
582575 final Block documentBody = parser .parseBlock (result .getTemplates (), TokenType .EOF );
583- for (TemplateValidationMessage validationMessage : messages ) {
584- documentBody .getValidationMessages ().add (validationMessage );
585- }
586576 result .setBody (documentBody );
587577 result .setInputStream (is );
588578 result .setOpcPackage (oPackage );
@@ -618,48 +608,40 @@ public static DocumentTemplate parse(URIConverter uriConverter, URI templateURI,
618608 }
619609
620610 /**
621- * Parses {@link TemplateCustomProperties} for the given {@link XWPFDocument} and initializes the given {@link IQueryEnvironment }.
611+ * Prepares the given {@link IQueryEnvironment} for the given {@link DocumentTemplate }.
622612 *
623613 * @param queryEnvironment
624614 * the {@link IQueryEnvironment}
625615 * @param classProvider
626616 * the {@link IClassProvider} to use for service Loading
627- * @param properties
628- * the {@link TemplateCustomProperties}
629- * @param document
617+ * @param documentTemplate
630618 * the {@link XWPFDocument}
631- * @return the {@link List} of {@link TemplateValidationMessage} produced while reading the {@link TemplateCustomProperties}
619+ * @return the {@link List} of {@link TemplateValidationMessage} produced preparing the {@link IQueryEnvironment}.
632620 */
633- private static List <TemplateValidationMessage > parseTemplateCustomProperties (IQueryEnvironment queryEnvironment ,
634- IClassProvider classProvider , TemplateCustomProperties properties , XWPFDocument document ) {
621+ public static List <TemplateValidationMessage > prepareEnvironment (IQueryEnvironment queryEnvironment ,
622+ IClassProvider classProvider , DocumentTemplate documentTemplate ) {
635623 final List <TemplateValidationMessage > messages = new ArrayList <>();
624+ final TemplateCustomProperties properties = documentTemplate .getProperties ();
636625 final List <String > missingNsURIs = properties .configureQueryEnvironmentWithResult (queryEnvironment );
637626 for (String nsURI : missingNsURIs ) {
638- final XWPFRun run = getOrCreateFirstRun (document );
627+ @ SuppressWarnings ("resource" )
628+ final XWPFRun run = getOrCreateFirstRun (documentTemplate .getDocument ());
639629 final TemplateValidationMessage validationMessage = new TemplateValidationMessage (
640630 ValidationMessageLevel .ERROR , "can't find EPackage: " + nsURI , run );
641631 messages .add (validationMessage );
642632 }
643- for (Entry <String , String > entry : properties .getServiceClasses ().entrySet ()) {
644- try {
645- final Class <?> cls = classProvider .getClass (entry .getKey (), entry .getValue ());
646- final Set <IService <?>> s = ServiceUtils .getServices (queryEnvironment , cls );
647- ServiceUtils .registerServices (queryEnvironment , s );
648- } catch (ClassNotFoundException e ) {
649- final XWPFRun run = getOrCreateFirstRun (document );
650- final TemplateValidationMessage validationMessage = new TemplateValidationMessage (
651- ValidationMessageLevel .ERROR , "can't load service class: " + entry .getKey (), run );
652- messages .add (validationMessage );
653- }
654- }
655633 final List <String > notLoadedClasses = properties .configureQueryEnvironmentWithResult (queryEnvironment ,
656634 classProvider );
657635 for (String notLoadedClass : notLoadedClasses ) {
658- final XWPFRun run = getOrCreateFirstRun (document );
636+ @ SuppressWarnings ("resource" )
637+ final XWPFRun run = getOrCreateFirstRun (documentTemplate .getDocument ());
659638 final TemplateValidationMessage validationMessage = new TemplateValidationMessage (
660639 ValidationMessageLevel .ERROR , "can't load service class: " + notLoadedClass , run );
661640 messages .add (validationMessage );
662641 }
642+ for (TemplateValidationMessage validationMessage : messages ) {
643+ documentTemplate .getBody ().getValidationMessages ().add (validationMessage );
644+ }
663645
664646 return messages ;
665647 }
0 commit comments