From 97f8ffc0728165724a2505954e36e894caba4cdd Mon Sep 17 00:00:00 2001
From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr>
Date: Sat, 30 Mar 2019 18:13:33 +0100
Subject: [PATCH] build explicit links in NSD early enough

---
 .../iec61850/scl/validator/NsdValidator.java        | 13 +++++++++++--
 .../scl/validator/RiseClipseValidatorSCL.java       |  7 +------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdValidator.java
index 03548c4..f4ff3c3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdValidator.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/NsdValidator.java
@@ -52,10 +52,19 @@ public class NsdValidator {
         console.info( "Loading nsd: " + nsdFile );
         nsdLoader.load( nsdFile );
     }
-
-    public void validate( Resource resource, final AdapterFactory adapter, IRiseClipseConsole console ) {
+    
+    public void prepare( @NonNull ComposedEValidator validator, IRiseClipseConsole console ) {
         nsdLoader.getResourceSet().finalizeLoad( console );
 
+        for( EValidator v : validator.getChildren() ) {
+            if( v.getClass() == NsdEObjectValidator.class ) {
+                NsdEObjectValidator nsdValidator = ( NsdEObjectValidator ) v;
+                nsdValidator.initializeValidationData();
+            }
+        }
+    }
+
+    public void validate( Resource resource, final AdapterFactory adapter, IRiseClipseConsole console ) {
         Map< Object, Object > context = new HashMap< Object, Object >();
         SubstitutionLabelProvider substitutionLabelProvider = new EValidator.SubstitutionLabelProvider() {
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/RiseClipseValidatorSCL.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/RiseClipseValidatorSCL.java
index e0c46a8..20924c0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/RiseClipseValidatorSCL.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl.tools/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/validator/RiseClipseValidatorSCL.java
@@ -147,17 +147,12 @@ public class RiseClipseValidatorSCL {
             for( int i = 0; i < nsdFiles.size(); ++i ) {
                 nsdValidator.addNsdDocument( nsdFiles.get( i ), console );
             }
+            nsdValidator.prepare( validator, console );
         }
 
         sclLoader = new SCLModelLoader( console );
         sclAdapter = new SclItemProviderAdapterFactory();
 
-        for( EValidator v : validator.getChildren() ) {
-            if( v.getClass() == NsdEObjectValidator.class ) {
-                NsdEObjectValidator nsdValidator = ( NsdEObjectValidator ) v;
-                nsdValidator.initializeValidationData();
-            }
-        }
     }
 
     public static void run( IRiseClipseConsole console, boolean make_explicit_links, String sclFile ) {
-- 
GitLab