The geonetwork instance modified for swisstopo
JavaScript Java XSLT CSS HTML Shell Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin Have the CSV with deleted MDs sent by email Jun 14, 2016
build-tools Add Jenkinsfile Mar 8, 2017
cachingxslt Merge branch 'forceIndexChanges' of… Jan 22, 2015
code_quality fix more corner cases. Jun 24, 2015
common Close HTTP reponses Sep 15, 2016
core #479 - Add description to thumbnails Mar 7, 2017
csw-server Update changeDate when updating metadata Mar 29, 2016
cswtest Normalize line endings Apr 8, 2013
docs Merge branch '3.0.x' of into ge… May 3, 2015
domain Reformat code Dec 19, 2016
e2e-tests Merge branch 'forceIndexChanges' of… Jan 22, 2015
events Merge branch 'develop' of into … Mar 9, 2015
geocat-services Revert "Add transaction to Harvesting" and "Add proper transactions a… Sep 29, 2016
geocat Fixed the update of metadata xlinks when a keyword is validated Jan 5, 2016
harvesters harvest: md is saved with real uuid if modified by a process Mar 20, 2017
healthmonitor Add additional metrics gauges May 8, 2015
inspire-atom Merge branch 'develop' of into … Apr 20, 2015
installer installer imagery updated Apr 29, 2015
jeeves Merge branch 'formatter-functions' of… Nov 21, 2014
jmeter Merge branch 'forceIndexChanges' of… Jan 22, 2015
monitoring made output be standard nagios output and added option for warning ou… Jun 22, 2012
oaipmh Merge branch 'forceIndexChanges' of… Jan 22, 2015
release Merge branch 'develop' of into … Mar 17, 2015
schemas-test Merge branch 'develop' of into … Apr 20, 2015
schemas #479 - Add description to thumbnails Mar 7, 2017
sde Merge branch 'forceIndexChanges' of… Jan 22, 2015
services #479 - Add description to thumbnails Mar 7, 2017
software_development Installer improvements #876 Mar 16, 2015
test Merge branch 'develop' of into … Mar 13, 2015
transifex Fixing keyword validation. Jan 5, 2016
web-client Make geocat work with https with protocol relative links Jun 2, 2016
web-ui-docs Merge branch 'forceIndexChanges' of… Jan 22, 2015
web-ui harvester: fix xsl transfo process Mar 13, 2017
web Secure ASIT-VS harvesting XSL transformation for short uuids Mar 27, 2017
wro4j Merge branch 'develop' of into … Mar 31, 2015
.gitattributes add some binary configuration for images and other types to prevent c… Feb 22, 2014
.gitignore Merge branch 'develop' of into … Apr 20, 2015
.gitmodules Merge branch 'refactor_search' of… Dec 18, 2014
.travis.yml Update .travis.yml Jan 18, 2016 merge spring-data-jpa Nov 7, 2013
checkstyle.xml Add option to index selective set of metadata. Sep 9, 2013
eclipse-import-existing-projects.png merge spring-data-jpa Nov 7, 2013 Add script to update formatters Dec 12, 2016
git-all fixed git-all script Jun 14, 2012
output Updated services to path and most tests are passing Nov 10, 2014
pom.xml Fixing keyword validation. Jan 5, 2016 Scripts improvements provided by Jeroen: OS check, parameter input fo… Jan 13, 2011
transifex-localization-files.json add transifex configuration and commandline tool Jun 6, 2014 Update to 3.0.1-SNAPSHOT version number. Apr 28, 2015 fixed bug running these scripts on darwin11.0 machines Jun 21, 2012 Add option to index selective set of metadata. Sep 9, 2013 fixed bug running these scripts on darwin11.0 machines Jun 21, 2012


  • Immediate search access to local and distributed geospatial catalogues
  • Up- and downloading of data, graphics, documents, pdf files and any other content type
  • An interactive Web Map Viewer to combine Web Map Services from distributed servers around the world
  • Online editing of metadata with a powerful template system
  • Scheduled harvesting and synchronization of metadata between distributed catalogs
  • Support for OGC-CSW 2.0.2 ISO Profile, OAI-PMH, Z39.50 protocols
  • Fine-grained access control with group and user management
  • Multi-lingual user interface


User documentation is in the docs submodule in the current repository and is compiled into html pages during a release for publishing on a website.

Developer documentation is also in the docs submodule but is being migrated out of that project into the Readme files in each module in the project. General documentation for the project as a whole is in this Readme and module specific documentation can be found in each module (assuming there is module specific documentation required).

Software Development

Instructions for setting up a development environment/building Geonetwork/compiling user documentation/making a release see: Software Development Documentation


With regards to testing Geonetwork is a standard Java project and primarily depends on JUnit for testing. However there is a very important issue to consider when writing JUnit tests in Geonetwork and that is the separation between unit tests and integration tests

  • Unit Tests - In Geonetwork unit tests should be very very quick to execute and not start up any subsystems of the application in order to keep the execution time of the unit tests very short. Integration tests do not require super classes and any assistance methods can be static imports, for example statically importing org.junit.Assert or org.junit.Assume or org.fao.geonet.Assert.
  • Integration Tests - Integration Test typically start much or all of Geonetwork as part of the test and will take longer to run than a unit test. However, even though the tests take longer they should still be implemented in such a way to be as efficient as possible. Starting Geonetwork in a way that isolates each integration test from each other integration test is non-trivial. Because of this there are abstract super classes to assist with this. Many modules have module specific Abstract classes. For example at the time that this is being written domain, core, harvesters and services modules all have module specific super classes that need to be used. (harvesting has 2 superclasses depending on what is to be tested.) The easiest way to learn how to implement an integration test is to search for other integration tests in the same module as the class you want to test. The following list provides a few tips:
    • IMPORTANT: All Integrations tests must end in IntegrationTest. The build system assumes all tests ending in IntegrationTest is an integration test and runs them in a build phase after unit tests. All other tests are assumed to be unit tests.
    • Prefer unit tests over Integration Tests because they are faster.
    • Search the current module for IntegrationTest to find tests to model your integration test against
    • This you might want integration tests for are:
      • Services: If the service already exists and you quick need to write a test to debug/fix its behaviour. If you are writing a new service it is better to use Mockito to mock the dependencies of the service so the test is a unit test.
      • Harvesters
      • A behaviour that crosses much of the full system

org.fao.geonet.utils.GeonetHttpRequestFactory: When making Http requests you should use org.fao.geonet.utils.GeonetHttpRequestFactory instead of directly using HttpClient. This is because there are mock instances of org.fao.geonet.utils.GeonetHttpRequestFactory that can be used to mock responses when performing tests.