Changeset 5204
- Timestamp:
- 05/16/14 14:46:30 (10 years ago)
- Location:
- CMDIValidator/trunk
- Files:
-
- 6 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
CMDIValidator/trunk/pom.xml
r5052 r5204 4 4 <groupId>eu.clarin.cmdi</groupId> 5 5 <artifactId>cmdi-validator</artifactId> 6 <version>0.0. 1-SNAPSHOT</version>6 <version>0.0.2-SNAPSHOT</version> 7 7 8 8 <properties> -
CMDIValidator/trunk/src/main/java/eu/clarin/cmdi/validator/CMDIValidator.java
r5056 r5204 4 4 import java.io.IOException; 5 5 import java.io.InputStream; 6 import java.util.LinkedHashMap;7 6 import java.util.LinkedHashSet; 7 import java.util.List; 8 8 import java.util.Map; 9 9 import java.util.Set; … … 49 49 50 50 import eu.clarin.cmdi.validator.CMDIValidatorResult.Severity; 51 import eu.clarin.cmdi.validator.utils.LRUCache; 51 52 52 53 … … 83 84 private final XML11Configuration config; 84 85 private final DocumentBuilder builder; 86 private final List<CMDIValidationPlugin> plugins; 85 87 private final CMDIValidatorResultImpl result; 86 88 87 89 88 CMDIValidator(final Processor processor, final SchemaLoader schemaLoader, 89 XsltExecutable schematronExecutable) 90 CMDIValidator(final Processor processor, 91 final SchemaLoader schemaLoader, 92 XsltExecutable schematronExecutable, 93 List<CMDIValidationPlugin> plugins) 90 94 throws CMDIValidatorInitException { 91 95 if (processor == null) { … … 215 219 216 220 /* 221 * initialize plugins 222 */ 223 if ((plugins != null) && !plugins.isEmpty()) { 224 this.plugins = plugins; 225 } else { 226 this.plugins = null; 227 } 228 229 /* 217 230 * initialize other stuff 218 231 */ … … 238 251 final XdmNode document = parseInstance(stream); 239 252 240 /*241 * step 2: perform Schematron validation242 */243 253 if (document != null) { 254 /* 255 * step 2: perform Schematron validation 256 */ 244 257 if (schematronValidator != null) { 245 258 validateSchematron(document); 259 } 260 261 /* 262 * step 3: run plugins, if any 263 */ 264 if (plugins != null) { 265 for (CMDIValidationPlugin plugin : plugins) { 266 plugin.validate(document, result); 267 } 246 268 } 247 269 } else { … … 501 523 } // class ShadowCacheGrammarPool 502 524 503 504 @SuppressWarnings("serial")505 private static class LRUCache<A, B> extends LinkedHashMap<A, B> {506 private final int maxEntries;507 508 509 public LRUCache(final int maxEntries) {510 super(maxEntries + 1, 1.0f, true);511 this.maxEntries = maxEntries;512 }513 514 515 @Override516 protected boolean removeEldestEntry(final Map.Entry<A, B> eldest) {517 return super.size() > maxEntries;518 }519 } // class LRUCache520 521 525 } // class CMDIValidator -
CMDIValidator/trunk/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorFactory.java
r5073 r5204 4 4 import java.net.MalformedURLException; 5 5 import java.net.URL; 6 import java.util.ArrayList; 7 import java.util.List; 6 8 7 9 import javax.xml.transform.stream.StreamSource; … … 35 37 private final SchemaLoader schemaLoader; 36 38 private final XsltExecutable schematronValidator; 37 39 private final List<CMDIValidationPluginFactory> pluginFactories; 38 40 39 41 private CMDIValidatorFactory(File cacheDirectory, 40 File schematronSchemaFile, boolean disableSchematron) 42 File schematronSchemaFile, boolean disableSchematron, 43 List<CMDIValidationPluginFactory> pluginFactories) 41 44 throws CMDIValidatorInitException { 42 45 /* … … 151 154 this.schematronValidator = null; 152 155 } 156 157 /* 158 * store pluginFactories 159 */ 160 if ((pluginFactories != null) && !pluginFactories.isEmpty()) { 161 this.pluginFactories = pluginFactories; 162 } else { 163 this.pluginFactories = null; 164 } 153 165 } 154 166 155 167 156 168 public CMDIValidator newValidator() throws CMDIValidatorInitException { 157 return new CMDIValidator(processor, schemaLoader, schematronValidator); 169 List<CMDIValidationPlugin> plugins = null; 170 if (pluginFactories != null) { 171 plugins = new ArrayList<CMDIValidationPlugin>(pluginFactories.size()); 172 for (CMDIValidationPluginFactory pluginFactory : pluginFactories) { 173 plugins.add(pluginFactory.newInstance(processor)); 174 } 175 } 176 177 return new CMDIValidator(processor, schemaLoader, 178 schematronValidator, plugins); 158 179 } 159 180 160 181 161 182 public static CMDIValidatorFactory newInstance(File cacheDircetory, 162 File schematronSchemaFile, boolean disableSchematron) 163 throws CMDIValidatorInitException { 164 return new CMDIValidatorFactory(cacheDircetory, schematronSchemaFile, 165 disableSchematron); 183 File schematronSchemaFile, 184 boolean disableSchematron, 185 List<CMDIValidationPluginFactory> pluginFactories) 186 throws CMDIValidatorInitException { 187 return new CMDIValidatorFactory(cacheDircetory, 188 schematronSchemaFile, 189 disableSchematron, 190 pluginFactories); 166 191 } 167 192 … … 169 194 public static CMDIValidatorFactory newInstance() 170 195 throws CMDIValidatorInitException { 171 return new CMDIValidatorFactory(null, null, false );196 return new CMDIValidatorFactory(null, null, false, null); 172 197 } 173 198 -
CMDIValidator/trunk/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorResultImpl.java
r5055 r5204 7 7 8 8 9 final class CMDIValidatorResultImpl implements CMDIValidatorResult {9 public final class CMDIValidatorResultImpl implements CMDIValidatorResult { 10 10 private static class MessageImpl implements CMDIValidatorResult.Message { 11 11 private Severity severity; … … 147 147 148 148 149 void setFile(File file) { 150 this.file = file; 151 } 152 153 154 void reportInfo(int line, int col, String message) { 149 public void reportInfo(int line, int col, String message) { 155 150 reportInfo(line, col, message, null); 156 151 } 157 152 158 153 159 void reportInfo(int line, int col, String message, Throwable cause) {154 public void reportInfo(int line, int col, String message, Throwable cause) { 160 155 entries.add(new MessageImpl(Severity.INFO, line, col, message, cause)); 161 156 } 162 157 163 158 164 void reportWarning(int line, int col, String message) {159 public void reportWarning(int line, int col, String message) { 165 160 reportWarning(line, col, message, null); 166 161 } 167 162 168 163 169 void reportWarning(int line, int col, String message, Throwable cause) {164 public void reportWarning(int line, int col, String message, Throwable cause) { 170 165 switch (highestSeverity) { 171 166 case WARNING: … … 180 175 181 176 182 void reportError(int line, int col, String message) {177 public void reportError(int line, int col, String message) { 183 178 reportError(line, col, message, null); 184 179 } 185 180 186 181 187 void reportError(int line, int col, String message, Throwable cause) {182 public void reportError(int line, int col, String message, Throwable cause) { 188 183 switch (highestSeverity) { 189 184 case ERROR: … … 196 191 197 192 193 void setFile(File file) { 194 this.file = file; 195 } 196 197 198 198 void reset() { 199 199 this.entries.clear(); -
CMDIValidator/trunk/src/main/java/eu/clarin/cmdi/validator/tool/CMDIValidatorTool.java
r5073 r5204 5 5 import java.io.File; 6 6 import java.io.PrintWriter; 7 import java.util.ArrayList; 8 import java.util.List; 7 9 import java.util.Locale; 8 10 import java.util.concurrent.TimeUnit; … … 11 13 import net.java.truevfs.access.TVFS; 12 14 import net.java.truevfs.kernel.spec.FsSyncException; 13 14 15 import org.apache.commons.cli.CommandLine; 15 16 import org.apache.commons.cli.CommandLineParser; … … 23 24 import org.slf4j.LoggerFactory; 24 25 26 import eu.clarin.cmdi.validator.CMDIValidationPluginFactory; 25 27 import eu.clarin.cmdi.validator.CMDIValidator; 26 28 import eu.clarin.cmdi.validator.CMDIValidatorEngine; … … 32 34 import eu.clarin.cmdi.validator.CMDIValidatorResult.Message; 33 35 import eu.clarin.cmdi.validator.CMDIValidatorResult.Severity; 36 import eu.clarin.cmdi.validator.plugins.CheckPidPluginFactory; 34 37 35 38 … … 48 51 private static final char OPT_NO_SCHEMATRON = 'S'; 49 52 private static final char OPT_SCHEMATRON_FILE = 's'; 53 private static final char OPT_CHECK_PIDS = 'p'; 50 54 private static final Logger logger = 51 55 LoggerFactory.getLogger(CMDIValidatorTool.class); … … 66 70 boolean disableSchematron = false; 67 71 File schematronFile = null; 72 boolean checkPids = false; 68 73 69 74 /* … … 136 141 } 137 142 schematronFile = new File(name); 143 } 144 if (line.hasOption(OPT_CHECK_PIDS)) { 145 checkPids = true; 138 146 } 139 147 … … 170 178 logger.info("using Schematron schema from file: {}", schematronFile); 171 179 } 180 181 List<CMDIValidationPluginFactory> pluginFactories = 182 new ArrayList<CMDIValidationPluginFactory>(); 183 if (checkPids) { 184 logger.info("performing PID checking"); 185 pluginFactories.add(new CheckPidPluginFactory()); 186 } 187 172 188 final CMDIValidatorFactory factory = 173 189 CMDIValidatorFactory.newInstance(schemaCacheDir, 174 schematronFile, disableSchematron); 190 schematronFile, 191 disableSchematron, 192 pluginFactories); 175 193 176 194 /* … … 360 378 .create(OPT_SCHEMATRON_FILE)); 361 379 options.addOptionGroup(g3); 380 options.addOption(OptionBuilder 381 .withDescription("check if persistent identifiers resolve correctly") 382 .withLongOpt("check-pids") 383 .create(OPT_CHECK_PIDS)); 362 384 return options; 363 385 }
Note: See TracChangeset
for help on using the changeset viewer.