Changeset 5370 for CMDIValidator


Ignore:
Timestamp:
06/18/14 23:13:07 (10 years ago)
Author:
Oliver Schonefeld
Message:
  • refactor and remove sub-optimal plugin mechanism in favor of extentions
Location:
CMDIValidator/trunk
Files:
3 added
3 deleted
4 edited
1 copied
1 moved

Legend:

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

    r5204 r5370  
    8484    private final XML11Configuration config;
    8585    private final DocumentBuilder builder;
    86     private final List<CMDIValidationPlugin> plugins;
     86    private final List<CMDIValidatorExtension> extensions;
    8787    private final CMDIValidatorResultImpl result;
    8888
     
    9191            final SchemaLoader schemaLoader,
    9292            XsltExecutable schematronExecutable,
    93             List<CMDIValidationPlugin> plugins)
     93            List<CMDIValidatorExtension> extensions)
    9494            throws CMDIValidatorInitException {
    9595        if (processor == null) {
     
    219219
    220220            /*
    221              * initialize plugins
     221             * extensions
    222222             */
    223             if ((plugins != null) && !plugins.isEmpty()) {
    224                 this.plugins = plugins;
    225             } else {
    226                 this.plugins = null;
    227             }
     223            this.extensions = extensions;
    228224
    229225            /*
     
    260256
    261257                /*
    262                  * step 3: run plugins, if any
     258                 * step 3: run extensions, if any
    263259                 */
    264                 if (plugins != null) {
    265                     for (CMDIValidationPlugin plugin : plugins) {
    266                         plugin.validate(document, result);
     260                if (extensions != null) {
     261                    for (CMDIValidatorExtension extension : extensions) {
     262                        extension.validate(document, result);
    267263                    }
    268264                }
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorFactory.java

    r5204 r5370  
    55import java.net.URL;
    66import java.util.ArrayList;
     7import java.util.Collections;
    78import java.util.List;
    89
     
    3738    private final SchemaLoader schemaLoader;
    3839    private final XsltExecutable schematronValidator;
    39     private final List<CMDIValidationPluginFactory> pluginFactories;
     40    private final List<CMDIValidatorExtension> extensions =
     41            new ArrayList<CMDIValidatorExtension>();
     42
    4043
    4144    private CMDIValidatorFactory(File cacheDirectory,
    42             File schematronSchemaFile, boolean disableSchematron,
    43             List<CMDIValidationPluginFactory> pluginFactories)
     45            File schematronSchemaFile, boolean disableSchematron)
    4446            throws CMDIValidatorInitException {
    4547        /*
     
    5052            if (SystemUtils.IS_OS_WINDOWS &&
    5153                    (SystemUtils.JAVA_IO_TMPDIR != null)) {
    52                 cacheDirectory = new File(SystemUtils.JAVA_IO_TMPDIR,
    53                         "cmdi-validator");
     54                cacheDirectory =
     55                        new File(SystemUtils.JAVA_IO_TMPDIR, "cmdi-validator");
    5456            } else if (SystemUtils.IS_OS_UNIX &&
    5557                    (SystemUtils.USER_HOME != null)) {
    56                 cacheDirectory = new File(SystemUtils.USER_HOME,
    57                         ".cmdi-validator");
     58                cacheDirectory =
     59                        new File(SystemUtils.USER_HOME, ".cmdi-validator");
    5860            }
    5961            if (cacheDirectory != null) {
     
    154156            this.schematronValidator = null;
    155157        }
    156 
    157         /*
    158          * store pluginFactories
    159          */
    160         if ((pluginFactories != null) && !pluginFactories.isEmpty()) {
    161             this.pluginFactories = pluginFactories;
    162         } else {
    163             this.pluginFactories = null;
    164         }
     158    }
     159
     160
     161    public void registerExtension(CMDIValidatorExtension extension)
     162            throws CMDIValidatorInitException {
     163        if (extension == null) {
     164            throw new NullPointerException("extension == null");
     165        }
     166        extension.initalize(processor);
     167        extensions.add(extension);
    165168    }
    166169
    167170
    168171    public CMDIValidator newValidator() throws CMDIValidatorInitException {
    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 
     172        List<CMDIValidatorExtension> ext = !extensions.isEmpty()
     173                ? Collections.unmodifiableList(extensions)
     174                : null;
    177175        return new CMDIValidator(processor, schemaLoader,
    178                 schematronValidator, plugins);
     176                schematronValidator, ext);
    179177    }
    180178
     
    182180    public static CMDIValidatorFactory newInstance(File cacheDircetory,
    183181            File schematronSchemaFile,
    184             boolean disableSchematron,
    185             List<CMDIValidationPluginFactory> pluginFactories)
    186             throws CMDIValidatorInitException {
     182            boolean disableSchematron) throws CMDIValidatorInitException {
    187183        return new CMDIValidatorFactory(cacheDircetory,
    188184                schematronSchemaFile,
    189                 disableSchematron,
    190                 pluginFactories);
     185                disableSchematron);
    191186    }
    192187
     
    194189    public static CMDIValidatorFactory newInstance()
    195190            throws CMDIValidatorInitException {
    196         return new CMDIValidatorFactory(null, null, false, null);
     191        return new CMDIValidatorFactory(null, null, false);
    197192    }
    198193
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/CMDIValidatorResultImpl.java

    r5204 r5370  
    77
    88
    9 public final class CMDIValidatorResultImpl implements CMDIValidatorResult {
     9final class CMDIValidatorResultImpl implements CMDIValidatorWriteableResult {
    1010    private static class MessageImpl implements CMDIValidatorResult.Message {
    1111        private Severity severity;
     
    147147
    148148
     149    @Override
    149150    public void reportInfo(int line, int col, String message) {
    150151        reportInfo(line, col, message, null);
     
    152153
    153154
     155    @Override
    154156    public void reportInfo(int line, int col, String message, Throwable cause) {
    155157        entries.add(new MessageImpl(Severity.INFO, line, col, message, cause));
     
    157159
    158160
     161    @Override
    159162    public void reportWarning(int line, int col, String message) {
    160163        reportWarning(line, col, message, null);
     
    162165
    163166
     167    @Override
    164168    public void reportWarning(int line, int col, String message, Throwable cause) {
    165169        switch (highestSeverity) {
     
    175179
    176180
     181    @Override
    177182    public void reportError(int line, int col, String message) {
    178183        reportError(line, col, message, null);
     
    180185
    181186
     187    @Override
    182188    public void reportError(int line, int col, String message, Throwable cause) {
    183189        switch (highestSeverity) {
  • CMDIValidator/trunk/cmdi-validator-core/src/main/java/eu/clarin/cmdi/validator/utils/HandleResolver.java

    r5338 r5370  
    1 package eu.clarin.cmdi.validator.plugins;
     1package eu.clarin.cmdi.validator.utils;
    22
    33import java.io.IOException;
     
    55import java.util.HashSet;
    66import java.util.Set;
     7
    78import org.apache.http.HttpResponse;
    89import org.apache.http.StatusLine;
     
    1819
    1920import eu.clarin.cmdi.validator.CMDIValidatorException;
    20 import eu.clarin.cmdi.validator.utils.LRUCache;
    2121
    2222public class HandleResolver {
    23     private static final Logger logger = LoggerFactory.getLogger(HandleResolver.class);
     23    private static final Logger logger =
     24            LoggerFactory.getLogger(HandleResolver.class);
    2425    public final int ERROR   = -1;
    2526    private final LRUCache<URI, Integer> cache =
     
    2930    private long cacheHits   = 0;
    3031    private long cacheMisses = 0;
    31 
    32     public HandleResolver() {
    33         this(Runtime.getRuntime().availableProcessors());
    34     }
    3532
    3633
     
    7471                } // synchronized (pending)
    7572            } // synchronized (cache)
    76 
    7773
    7874            // either resolve in this thread of wait for pending resolve result
  • CMDIValidator/trunk/cmdi-validator-tool/src/main/java/eu/clarin/cmdi/validator/tool/CMDIValidatorTool.java

    r5351 r5370  
    55import java.io.File;
    66import java.io.PrintWriter;
    7 import java.util.ArrayList;
    8 import java.util.List;
    97import java.util.Locale;
    108import java.util.concurrent.TimeUnit;
     
    2523import org.slf4j.LoggerFactory;
    2624
    27 import eu.clarin.cmdi.validator.CMDIValidationPluginFactory;
    2825import eu.clarin.cmdi.validator.CMDIValidator;
    2926import eu.clarin.cmdi.validator.CMDIValidatorEngine;
     
    3633import eu.clarin.cmdi.validator.CMDIValidatorResult.Message;
    3734import eu.clarin.cmdi.validator.CMDIValidatorResult.Severity;
    38 import eu.clarin.cmdi.validator.plugins.CheckPidPluginFactory;
     35import eu.clarin.cmdi.validator.extensions.CheckHandlesExtension;
    3936
    4037
     
    181178                }
    182179
    183                 List<CMDIValidationPluginFactory> pluginFactories =
    184                         new ArrayList<CMDIValidationPluginFactory>();
    185                 if (checkPids) {
    186                     logger.info("performing PID checking");
    187                     pluginFactories.add(new CheckPidPluginFactory());
    188                 }
    189 
    190180                final CMDIValidatorFactory factory =
    191181                        CMDIValidatorFactory.newInstance(schemaCacheDir,
    192182                                schematronFile,
    193                                 disableSchematron,
    194                                 pluginFactories);
     183                                disableSchematron);
     184
     185                if (checkPids) {
     186                    logger.info("performing PID checking");
     187                    factory.registerExtension(
     188                            new CheckHandlesExtension(threadCount, true));
     189                }
     190
    195191
    196192                /*
Note: See TracChangeset for help on using the changeset viewer.