Opened 10 years ago

Last modified 10 years ago

#12885 closed enhancement

Modify OsmValidator class to add new tests — at Initial Version

Reported by: darya Owned by: team
Priority: normal Milestone: 16.05
Component: Core validator Version:
Keywords: OsmValidator, GSoC Cc: darya

Description

I'm creating a JOSM plugin to validate public transport routes. I want the results to appear in the existing Validator window. To do that, I need the possibility to add additional Test classes to the org.openstreetmap.josm.data.validation.OsmValidator class.

A possible fix for my needs would be:

1) Change the class attribute private static final allAvailableTests to private static allAvailableTests

2) Add method:

public static void addTest(Class newTestClass) {
        Class<Test>[] newTestArray = new Class[allAvailableTests.length+1];
        for (int i=0; i<allAvailableTests.length; i++) {
            newTestArray[i] = allAvailableTests[i];
        }
        newTestArray[newTestArray.length-1] = newTestClass;
        allAvailableTests = newTestArray;
        try {
            allTestsMap.put(newTestClass.getName(), (Test)newTestClass.getConstructor().newInstance());
        } catch(ReflectiveOperationException e) {
            Main.error(e);
        }
    }

An alternative solution would be to change the method OsmValidator.getAllTestsMap()

from

    public static SortedMap<String, Test> getAllTestsMap() {
        applyPrefs(allTestsMap, false);
       return new TreeMap<>(allTestsMap);
  }

to

    public static SortedMap<String, Test> getAllTestsMap() {
        applyPrefs(allTestsMap, false);
        TreeMap<String, Test> sortedMap = new TreeMap<>(allTestsMap);
        allTestsMap = sortedMap;
        return sortedMap;
    }

Thank you in advance!

Change History (0)

Note: See TracTickets for help on using tickets.