Add better exception handling to config-persister-directory-adapter 53/3353/2
authorTomas Olvecky <tolvecky@cisco.com>
Mon, 2 Dec 2013 16:46:11 +0000 (17:46 +0100)
committerTomas Olvecky <tolvecky@cisco.com>
Mon, 2 Dec 2013 18:40:36 +0000 (19:40 +0100)
Change-Id: I5b8d75bc0200724a49c420981805b5b1aaa2eea0
Signed-off-by: Tomas Olvecky <tolvecky@cisco.com>
opendaylight/config/config-persister-directory-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/DirectoryPersister.java

index cf4ef98bdc95ecc95700d18191135191660052c1..25628b6041de94cc099eef49314756b77171324d 100644 (file)
@@ -78,7 +78,7 @@ public class DirectoryPersister implements Persister {
         for (File file : sortedFiles) {
             logger.trace("Adding file '{}' to combined result", file);
 
-            final MyLineProcessor lineProcessor = new MyLineProcessor();
+            final MyLineProcessor lineProcessor = new MyLineProcessor(file.getAbsolutePath());
             Files.readLines(file, ENCODING, lineProcessor);
 
             modulesBuilder.append(lineProcessor.getModules());
@@ -103,11 +103,16 @@ public class DirectoryPersister implements Persister {
 }
 
 class MyLineProcessor implements com.google.common.io.LineProcessor<String> {
+    private final String fileNameForReporting;
 
     private boolean inModules, inServices, inCapabilities;
     private final StringBuffer modulesBuffer = new StringBuffer(), servicesBuilder = new StringBuffer();
     private final SortedSet<String> caps = new TreeSet<>();
 
+    MyLineProcessor(String fileNameForReporting) {
+        this.fileNameForReporting = fileNameForReporting;
+    }
+
     @Override
     public String getResult() {
         return null;
@@ -138,18 +143,25 @@ class MyLineProcessor implements com.google.common.io.LineProcessor<String> {
         return true;
     }
 
+    private void checkFileConsistency(){
+        checkState(inCapabilities, "File {} is missing delimiters in this order: {}", fileNameForReporting,
+                Arrays.asList(DirectoryPersister.MODULES_START,
+                        DirectoryPersister.SERVICES_START,
+                        DirectoryPersister.CAPABILITIES_START));
+    }
+
     String getModules() {
-        checkState(inCapabilities);
+        checkFileConsistency();
         return modulesBuffer.toString();
     }
 
     String getServices() {
-        checkState(inCapabilities);
+        checkFileConsistency();
         return servicesBuilder.toString();
     }
 
     SortedSet<String> getCapabilities() {
-        checkState(inCapabilities);
+        checkFileConsistency();
         return caps;
     }