Changeset 5395 for CMDIValidator


Ignore:
Timestamp:
06/27/14 00:13:30 (10 years ago)
Author:
Oliver Schonefeld
Message:
Location:
CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIValidator.java

    r5394 r5395  
    2323import java.net.MalformedURLException;
    2424import java.net.URL;
    25 import java.util.Collections;
     25import java.util.ArrayList;
    2626import java.util.LinkedHashSet;
    2727import java.util.LinkedList;
     
    218218        final List<CMDIValidatorExtension> exts = config.getExtensions();
    219219        if (exts != null) {
    220             this.extensions = new LinkedList<CMDIValidatorExtension>();
     220            this.extensions =
     221                    new ArrayList<CMDIValidatorExtension>(exts.size());
    221222            for (CMDIValidatorExtension extension : exts) {
    222223                extension.initalize(processor);
     
    461462        private final XsltTransformer schematronValidator;
    462463        private final DocumentBuilder builder;
    463         private final ResultImpl result = new ResultImpl();
     464        private CMDIValidatorWriteableResult result;
    464465
    465466
     
    610611            TFileInputStream stream = null;
    611612            try {
     613
    612614                /*
    613615                 * step 0: prepare
     
    615617                logger.debug("validating file '{}' ({} bytes)",
    616618                        file, file.length());
    617                 result.setFile(file);
     619                result = new CMDIValidatorWriteableResultImpl(file);
    618620                stream = new TFileInputStream(file);
    619621
     
    654656                            "error closing file '" + file + "'", e);
    655657                } finally {
    656                     if (handler != null) {
    657                         if (result.isHighestSeverity(Severity.ERROR)) {
    658                             handler.onValidationFailure(result);
    659                         } else {
    660                             handler.onValidationSuccess(result);
     658                    if ((result != null) && (handler != null)) {
     659                        try {
     660                            if (result.isHighestSeverity(Severity.ERROR)) {
     661                                handler.onValidationFailure(result);
     662                            } else {
     663                                handler.onValidationSuccess(result);
     664                            }
     665                        } finally {
     666                            result = null;
    661667                        }
    662668                    }
    663                     result.reset();
    664669                }
    665670            }
     
    10121017    }  // class ShadowCacheGrammarPool
    10131018
    1014 
    1015     private static final class ResultImpl implements
    1016             CMDIValidatorWriteableResult {
    1017         private final List<Message> messages = new LinkedList<Message>();
    1018         private File file;
    1019         private Severity highestSeverity;
    1020 
    1021 
    1022         private ResultImpl() {
    1023             reset();
    1024         }
    1025 
    1026 
    1027         @Override
    1028         public File getFile() {
    1029             return file;
    1030         }
    1031 
    1032 
    1033         @Override
    1034         public Severity getHighestSeverity() {
    1035             return highestSeverity;
    1036         }
    1037 
    1038 
    1039         @Override
    1040         public boolean isHighestSeverity(Severity severity) {
    1041             if (severity == null) {
    1042                 throw new NullPointerException("severity == null");
    1043             }
    1044             return this.highestSeverity.equals(severity);
    1045         }
    1046 
    1047 
    1048         @Override
    1049         public List<Message> getMessages() {
    1050             if (messages.isEmpty()) {
    1051                 return Collections.emptyList();
    1052             } else {
    1053                 return Collections.unmodifiableList(messages);
    1054             }
    1055         }
    1056 
    1057 
    1058         @Override
    1059         public Message getFirstMessage() {
    1060             return messages.isEmpty() ? null : messages.get(0);
    1061         }
    1062 
    1063 
    1064         @Override
    1065         public Message getFirstMessage(Severity severity) {
    1066             if (severity == null) {
    1067                 throw new NullPointerException("severity == null");
    1068             }
    1069 
    1070             if (!messages.isEmpty()) {
    1071                 for (Message msg : messages) {
    1072                     if (severity.equals(msg.getSeverity())) {
    1073                         return msg;
    1074                     }
    1075                 }
    1076             }
    1077             return null;
    1078         }
    1079 
    1080 
    1081         @Override
    1082         public int getMessageCount() {
    1083             return messages.size();
    1084         }
    1085 
    1086 
    1087         @Override
    1088         public int getMessageCount(Severity severity) {
    1089             if (severity == null) {
    1090                 throw new NullPointerException("severity == null");
    1091             }
    1092 
    1093             int count = 0;
    1094             if (!messages.isEmpty()) {
    1095                 for (Message msg : messages) {
    1096                     if (severity.equals(msg.getSeverity())) {
    1097                         count++;
    1098                     }
    1099                 }
    1100             }
    1101             return count;
    1102         }
    1103 
    1104 
    1105         @Override
    1106         public void reportInfo(int line, int col, String message) {
    1107             reportInfo(line, col, message, null);
    1108         }
    1109 
    1110 
    1111         @Override
    1112         public void reportInfo(int line, int col, String message,
    1113                 Throwable cause) {
    1114             messages.add(new MessageImpl(Severity.INFO, line, col, message,
    1115                     cause));
    1116         }
    1117 
    1118 
    1119         @Override
    1120         public void reportWarning(int line, int col, String message) {
    1121             reportWarning(line, col, message, null);
    1122         }
    1123 
    1124 
    1125         @Override
    1126         public void reportWarning(int line, int col, String message,
    1127                 Throwable cause) {
    1128             switch (highestSeverity) {
    1129             case WARNING:
    1130                 /* FALL-THROUGH */
    1131             case ERROR:
    1132                 break;
    1133             default:
    1134                 highestSeverity = Severity.WARNING;
    1135             }
    1136             messages.add(new MessageImpl(Severity.WARNING, line, col, message,
    1137                     cause));
    1138         }
    1139 
    1140 
    1141         @Override
    1142         public void reportError(int line, int col, String message) {
    1143             reportError(line, col, message, null);
    1144         }
    1145 
    1146 
    1147         @Override
    1148         public void reportError(int line, int col, String message,
    1149                 Throwable cause) {
    1150             switch (highestSeverity) {
    1151             case ERROR:
    1152                 break;
    1153             default:
    1154                 highestSeverity = Severity.ERROR;
    1155             }
    1156             messages.add(new MessageImpl(Severity.ERROR, line, col, message,
    1157                     cause));
    1158         }
    1159 
    1160 
    1161         private void setFile(File file) {
    1162             this.file = file;
    1163         }
    1164 
    1165 
    1166         private void reset() {
    1167             this.messages.clear();
    1168             this.file = null;
    1169             this.highestSeverity = Severity.INFO;
    1170         }
    1171     } // class ResultImpl
    1172 
    1173 
    1174     private static final class MessageImpl implements
    1175             CMDIValidatorResult.Message {
    1176         private final Severity severity;
    1177         private final int line;
    1178         private final int col;
    1179         private final String message;
    1180         private final Throwable cause;
    1181 
    1182 
    1183         private MessageImpl(Severity severity, int line, int col,
    1184                 String message, Throwable cause) {
    1185             this.severity = severity;
    1186             this.line     = line;
    1187             this.col      = col;
    1188             this.message  = message;
    1189             this.cause    = cause;
    1190         }
    1191 
    1192 
    1193         @Override
    1194         public Severity getSeverity() {
    1195             return severity;
    1196         }
    1197 
    1198 
    1199         @Override
    1200         public int getLineNumber() {
    1201             return line;
    1202         }
    1203 
    1204 
    1205         @Override
    1206         public int getColumnNumber() {
    1207             return col;
    1208         }
    1209 
    1210 
    1211         @Override
    1212         public String getMessage() {
    1213             return message;
    1214         }
    1215 
    1216 
    1217         @Override
    1218         public Throwable getCause() {
    1219             return cause;
    1220         }
    1221     } // class MessageImpl
    1222 
    12231019} // class CMDIValidator
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorConfig.java

    r5384 r5395  
    1919import java.io.File;
    2020import java.io.FileFilter;
     21import java.util.ArrayList;
    2122import java.util.Collections;
    22 import java.util.LinkedList;
    2323import java.util.List;
    2424
     
    165165            }
    166166            if (config.extensions == null) {
    167                 config.extensions = new LinkedList<CMDIValidatorExtension>();
     167                config.extensions = new ArrayList<CMDIValidatorExtension>();
    168168            }
    169169            config.extensions.add(extension);
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorResult.java

    r5384 r5395  
    2828                return "I";
    2929            }
     30
     31            @Override
     32            public int priority() {
     33                return 1;
     34            }
    3035        },
    3136        WARNING {
     
    3338            public String getShortcut() {
    3439                return "W";
     40            }
     41
     42            @Override
     43            public int priority() {
     44                return 2;
    3545            }
    3646        },
     
    4050                return "E";
    4151            }
     52
     53            @Override
     54            public int priority() {
     55                return 3;
     56            }
    4257        };
    4358
    4459        public abstract String getShortcut();
     60
     61
     62        public abstract int priority();
    4563    } // enum Severity
    4664
Note: See TracChangeset for help on using the changeset viewer.