Code Monkey home page Code Monkey logo

geonetwork's Introduction


Codacy Badge

geOrchestra is a complete Spatial Data Infrastructure solution.

It features a metadata catalog (GeoNetwork), an OGC server (GeoServer) with fine-grained access control (based on GeoFence), an advanced viewer and editor and many more (security and auth system based on proxy/CAS/LDAP, analytics, admin UIs, ...)

Please refer to the documentation for more information.

geonetwork's People

Contributors

archaeogeek avatar cmangeat avatar davidblasby avatar davinciagf avatar delawen avatar dependabot[bot] avatar etj avatar f-necas avatar fgravin avatar fvanderbiest avatar fxprunayre avatar geosander avatar heikkidoeleman avatar ianwallen avatar jahow avatar jodygarnett avatar jonescc avatar josegar74 avatar juanluisrp avatar julsbreakdown avatar landryb avatar mcpgovernance avatar michelgabriel avatar oscarfonts avatar pascallike avatar pmauduit avatar sppigot avatar ticheler avatar tonio avatar wangf1122 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geonetwork's Issues

docker - wait for ldap does not reflect the actual GN configuration

https://github.com/georchestra/geonetwork/blob/georchestra-gn3.4-18.06/web/src/docker/docker-entrypoint.d/02-wait-for-ldap#L3

This requires to have a link defined to the LDAP service (either the openldap directly in the composition or the definition of an external service or similar, when under rancher or openshift). If the alias (ldap -> ldap.georchestra-ldap in c2c's case) disappear for one reason, the container won't start anymore.

Encountered on pigma

[gn4] default configuration comes with localhost for elastic

the config.properties in the WEB-INF comes with the following:

es.protocol=http
es.port=9200
es.host=localhost
es.url=${es.protocol}://${es.host}:${es.port}

Which could be ok in the ansible environment, but not in other ones (docker 👀 ). Anyway, this definitely should require to be overrideable in the datadir.

point JCS diskPath to java tmpdir ?

in cache.ccf, the jcs path doesnt point to a real dir

jcs.auxiliary.DC.attributes.DiskPath=jcs_caching

as such, at startup tomcat/geonetwork will probably try to create this dir in the tomcat top dir or catalina top dir, whatever this is it shouldn't have write rights there, and this blows during initial indexing:

2018-09-26 13:25:37,392 ERROR [org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCache] - Region [SpatialFilterCache] Failure reseting state
java.io.FileNotFoundException: /jcs_caching/SpatialFilterCache.data (Aucun fichier ou dossier de ce type)
        at java.io.RandomAccessFile.open0(Native Method)
        at java.io.RandomAccessFile.open(RandomAccessFile.java:316)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:124)

I think it'd make more sense to put it in ${java.io.tmpdir}/jcs_caching (this one works) or ${geonetwork.lucene.dir}/jcs_caching (this one doesnt work, as i guess this property isnt accessible when DiskPath is used)... at least those are dirs where we know the tomcat user can write.

doc - explain why we forked and what are the differences

I think we should explain why we forked the geonetwork project, and list the differences in the main README.md.

I will not fill other issues, but the same applies to: https://github.com/georchestra/geoserver, https://github.com/georchestra/geoext, https://github.com/georchestra/openlayers, https://github.com/georchestra/styler, https://github.com/georchestra/geotools, https://github.com/georchestra/extjs.

Note that I could not answer the question, and I want to know :)

[feat] allow to open 3dtiles links in mapstore

Is your feature request related to a problem? Please describe.

geosolutions-it/MapStore2#8055 adds support to mapstore to load 3dtiles datasets from url parameters. I'd like to allow this from geonetwork, building on top of what was done in #184.

Describe the solution you'd like

From my understanding, there's a whitelisting of some 'protocols' somewhere in geonetwork to display the "visualiser" link.

I suppose we first need a "blessed" protocol type for links to 3dtiles datasets, as i havent been able to find one in the existing code nor the existing schemas. According to https://www.ogc.org/standard/3dtiles/ 3dtiles is an official standard, so i'm wondering if i can just do a PR upstream to add it to the available protocols like it was done for OGC API protocols in geonetwork/core-geonetwork@91f7f9f6850 and geonetwork/core-geonetwork@6e2f05ecc93

Describe alternatives you've considered
I've started with this:

--- a/web-ui/src/main/resources/catalog/views/georchestra/module.js
+++ b/web-ui/src/main/resources/catalog/views/georchestra/module.js
@@ -32,7 +32,7 @@
       gnSearchSettings.linkTypes = {
         links: ['LINK'],
         downloads: ['DOWNLOAD'],
-        layers: ['OGC:WMS'],
+        layers: ['OGC:WMS','OGC:3DTILES','OGC:WFS'],
         maps: ['ows']

--- a/web-ui/src/main/resources/catalog/views/default/module.js
+++ b/web-ui/src/main/resources/catalog/views/default/module.js
@@ -351,16 +351,18 @@
       function buildAddToMapConfig(link, md) {
         var config = {
           uuid: md ? md.uuid : null,
           type:
             link.protocol.indexOf("WMTS") > -1
               ? "wmts"
               : link.protocol == "ESRI:REST" || link.protocol.startsWith("ESRI REST")
               ? "esrirest"
+              : link.protocol.toLowerCase().indexOf("3dtiles") > -1
+              ? "3dtiles"
               : "wms",
           url: $filter("gnLocalized")(link.url) || link.url
         };
 
         var title = link.title;

but with a metadata having this online resource definition:

<gmd:CI_OnlineResource>
  <gmd:linkage>
    <gmd:URL>
      https://3d.craig.fr/datasets/Domerat_bati3d/3dtiles/tileset.json
    </gmd:URL>
  </gmd:linkage>
  <gmd:protocol>
    <gco:CharacterString>OGC:3DTILES</gco:CharacterString>
  </gmd:protocol>
  <gmd:name>
    <gco:CharacterString>3dtiles domérat</gco:CharacterString>
  </gmd:name>
</gmd:CI_OnlineResource>

i only have a visit link so far.

Trying with OGC:WMS-3DTILES for the protocol, there's a "ajouter la couche à la carte" (eg add service layer to map) button (instead of "visualiser" like for WMS/WFS?) and mapstore is opened with the right parameters: [{"type":"CATALOG:ADD_LAYERS_FROM_CATALOGS","layers":["3dtiles domérat"],"sources":[{"type":"3dtiles","url":"https%3A%2F%2F3d.craig.fr%2Fdatasets%2FDomerat_bati3d%2F3dtiles%2Ftileset.json"}]}]

help welcome @fgravin @tkohr , i'm pretty sure there's not much code to change to support 3dtiles, but i'm still digging..

Unversionned package-lock.json file

When compiling geonetwork inside of https://github.com/georchestra/georchestra, following: https://github.com/georchestra/georchestra/blob/18.06/docs/build.md#build-the-modules, and then launch

git status

we get

HEAD detached at efaded366
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        package-lock.json

nothing added to commit but untracked files present (use "git add" to track)

We should do one of the following:

  • add this file to .gitignore
  • version this file

I understand that the good practice is to version it, as stated in the official npm documentation: https://docs.npmjs.com/files/package-lock.json

Mieux gérer les liens vers mapfishapp pour les wmc

Pour le moment metadata.service.extract (utilisé pour click droit "Visualiser" et "Autres actions" "Visualiser" ne gère pas les WMC. On peut donc avoir un bouton "Visualiser" qui fonctionne dans la couche, mais le click droit Visualiser qui ne fonctionne pas.

Mieux différencier les icones ou le texte "Visualiser" s'il s'agit d'un contexte ou d'une couche. Si il y a des WMC et WMS dans la même fiche cela porte à confusion.

not helpful exception message from ldap user sync errors

Describe the bug
on 4.2.2, on a dev database i might have inconsistencies in the ldap, so the GN user<->ldap sync fails, but gives a totally meaningless message:

2024-01-05T10:15:09,067 INFO  [org.geonetwork.security.external.integration] - Reconciling existing GN User aaa.bbb with canonical user (id: 9afcf8fe-a43f-494c-a681-57f77774328f)
2024-01-05T10:15:09,086 INFO  [org.geonetwork.security.external.integration] - Adding profile Editor to group CD_03 for user aaa.bbb
2024-01-05T10:15:09,104 INFO  [org.geonetwork.security.external.integration] - Reconciling existing GN User aaa.ccc with canonical user (id: 4adffd47-a270-471f-890e-5b9c9c8cd24f)
2024-01-05T10:15:09,123 INFO  [org.geonetwork.security.external.integration] - Adding profile Editor to group GRENOBLE_ALPES_METRO for user aaa.ccc
2024-01-05T10:15:09,136 ERROR [org.geonetwork.security.external.integration] - Error synchronizing users
org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!
        at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) ~[spring-orm-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:257) ~[spring-orm-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:531) ~[spring-orm-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:154) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178) ~[spring-data-jpa-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at jdk.proxy4.$Proxy255.findById(Unknown Source) ~[?:?]
        at org.geonetwork.security.external.repository.UserLinkRepository.findById(UserLinkRepository.java:60) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.repository.UserLinkRepository$$FastClassBySpringCGLIB$$c81aef77.invoke(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.geonetwork.security.external.repository.UserLinkRepository$$EnhancerBySpringCGLIB$$e63a0089.findById(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.UserSynchronizer.findUserLink(UserSynchronizer.java:93) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.UserSynchronizer.resolveLink(UserSynchronizer.java:173) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.UserSynchronizer.synchronize(UserSynchronizer.java:135) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
        at org.geonetwork.security.external.integration.UserSynchronizer.synchronizeAll(UserSynchronizer.java:117) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.UserSynchronizer.synchronizeAll(UserSynchronizer.java:101) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.UserSynchronizer$$FastClassBySpringCGLIB$$88a22663.invoke(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.geonetwork.security.external.integration.UserSynchronizer$$EnhancerBySpringCGLIB$$166358cd.synchronizeAll(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.AccountsReconcilingService.synchronize(AccountsReconcilingService.java:190) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.AccountsReconcilingService$$FastClassBySpringCGLIB$$7d978086.invoke(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.geonetwork.security.external.integration.AccountsReconcilingService$$EnhancerBySpringCGLIB$$92af5516.synchronize(<generated>) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at org.geonetwork.security.external.integration.ScheduledAccountsSynchronizationService.synchronize(ScheduledAccountsSynchronizationService.java:109) ~[gn-externalized-accounts-4.2.2-georchestra.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.IllegalArgumentException: The given id must not be null!
        at org.springframework.util.Assert.notNull(Assert.java:201) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findById(SimpleJpaRepository.java:269) ~[spring-data-jpa-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at jdk.internal.reflect.GeneratedMethodAccessor241.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371) ~[spring-data-commons-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204) ~[spring-data-commons-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:658) ~[spring-data-commons-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:622) ~[spring-data-commons-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:606) ~[spring-data-commons-2.2.13.RELEASE.jar:2.2.13.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.20.RELEASE.jar:5.2.20.RELEASE]
        ... 55 more

itd be much more helpful if it gave a clue on which username there's an inconsistent/missing id ? i'm going to guess that the problematic user is the one after aaa.ccc in the ldap DIT but who knows ?

ping @groldan

[docker] jetty container now uses java-headless

Previously, the classic JRE was installed in the upstream docker image for jetty. Now it is the headless version of the JRE which is installed, making some GN features to fail (WMS harvesting with automatic getmap picture generation activated).

Steps to reproduce

  1. create a WMS harvester node
  2. http://geo.somme.fr/arcgis/services/SIG_CG_SOMME/MapServer/WMSServer as WMS1.3
  3. Getting the error about the class org.GNOME.Accessibility.AtkWrapper not resolveable.

[TEST] GeoNetwork CSW server 4.2.2-georchestra ............ FAILURE

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest
[INFO] Running org.fao.geonet.kernel.csw.services.getrecords.es.CswSortBy2EsTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.772 s - in org.fao.geonet.kernel.csw.services.getrecords.es.CswSortBy2EsTest
[ERROR] Tests run: 5, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 6.437 s <<< FAILURE! - in org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest
[ERROR] org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.testFilterWithAndOrAndSpatialBBox  Time elapsed: 3.142 s  <<< ERROR!
com.fasterxml.jackson.core.JsonParseException: 
Invalid numeric value: Leading zeroes not allowed
 at [Source: (StringReader); line: 6, column: 54]
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.assertFilterEquals(CswFilter2EsTest.java:253)
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.assertFilterEquals(CswFilter2EsTest.java:234)
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.testFilterWithAndOrAndSpatialBBox(CswFilter2EsTest.java:222)

[ERROR] org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.testSpatialBBox  Time elapsed: 0.136 s  <<< ERROR!
com.fasterxml.jackson.core.JsonParseException: 
Invalid numeric value: Leading zeroes not allowed
 at [Source: (StringReader); line: 6, column: 54]
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.assertFilterEquals(CswFilter2EsTest.java:253)
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.assertFilterEquals(CswFilter2EsTest.java:234)
	at org.fao.geonet.kernel.csw.services.getrecords.es.CswFilter2EsTest.testSpatialBBox(CswFilter2EsTest.java:161)

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   CswFilter2EsTest.testFilterWithAndOrAndSpatialBBox:222->assertFilterEquals:234->assertFilterEquals:253 » JsonParse
[ERROR]   CswFilter2EsTest.testSpatialBBox:161->assertFilterEquals:234->assertFilterEquals:253 » JsonParse
[INFO] 
[ERROR] Tests run: 10, Failures: 0, Errors: 2, Skipped: 0

commit/update web-ui-docs/package-lock.json ?

Following #95, each time i do a build maven modifiers the damn file, changing all remaining http:// links to https:// - i assume it's safe to commit/push/merge in the branches/bump the submodule ?

geopublisher: send metadataurl links to geoserver that will work ootb with mapstore2

Describe the bug
mapstore2 has special needs for MetadataURL entries in a geoserver layer so that the metadata can be properly linked/displayed in the viewer.

Right now those links are sent to geoserver by GN4 when geopublishing the layer (cf https://github.com/georchestra/geonetwork/blob/georchestra-gn4-4.x/services/src/main/java/org/fao/geonet/api/mapservers/GeoServerRest.java#L573):

<MetadataURL type="TC211">
<Format>text/xml</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/fre/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmd&ID=<uuid>"/>
</MetadataURL>
<MetadataURL type="TC211">
<Format>text/html</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/api/records/<uuid>"/>
</MetadataURL>
<MetadataURL type="ISO19115:2003">
<Format>text/xml</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/fre/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmd&ID=<uuid>"/>
</MetadataURL>

mapstore2 doesnt like those TC211 links, only wants ISO19115:2003 links, and the xml one should point to a metadata XML and not a CSW GetRecordById. That's what i figured out after a long debugging session in georchestra/mapstore2-georchestra#300 + geosolutions-it/MapStore2#7851 and should be properly documented in ms2 with geosolutions-it/MapStore2#7442

what mapstore2 supports/wants (well, for html, any link pointing to the metadata would do, but https://FQDN/geonetwork/srv/fre/catalog.search#/metadata/<uuid> links are a bit 'meh' because i'd have to hardcode the lang in the code...):

<MetadataURL type="ISO19115:2003">
<Format>text/xml</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/api/records/<uuid>/formatters/xml"/>
</MetadataURL>
<MetadataURL type="ISO19115:2003">
<Format>text/html</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/api/records/<uuid>"/>
</MetadataURL>

this commit landryb/geonetwork@69f827f in my branch (on top of @pmauduit 's rebased-onto-upstream-4.0.6) fixes that. Will do a PR once the 4.0.5/4.0.6 dust has settled.

sidenote: this had been discussed for datafeeder in georchestra/georchestra#3299 and datafeeder pushes this to geoserver:

<MetadataURL type="ISO19115:2003">
<Format>text/xml</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/api/records/a1b0f173-769a-479e-be2f-de8472d2ea96/formatters/xml"/>
</MetadataURL>
<MetadataURL type="ISO19115:2003">
<Format>text/html</Format>
<OnlineResource xlink:type="simple" xlink:href="https://FQDN/geonetwork/srv/eng/catalog.search#/metadata/a1b0f173-769a-479e-be2f-de8472d2ea96"/>
</MetadataURL>

which should also work with ms2 (once geosolutions-it/MapStore2#7851 is merged/integrated). Maybe we should align geonetwork geopublished on datafeeder ?

user lookup in ldap spams logs

The way profile/group sync is set, the logs are filling up with ERROR lvl msgs from geonetwork.ldap logger:

2018-10-13 23:58:28,367 ERROR [geonetwork.ldap] - LDAP profile 'ADMINISTRATOR' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,368 ERROR [geonetwork.ldap] - LDAP profile 'SUPERUSER' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,368 ERROR [geonetwork.ldap] - LDAP profile 'MOD_ANALYTICS' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,368 ERROR [geonetwork.ldap] - LDAP profile 'USER' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'EL_Membres' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_CNIL2' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_RGE' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_APL' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_IGN' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_RTGE' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,369 ERROR [geonetwork.ldap] - LDAP profile 'GS_ANT_ADMIN' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:58:28,371 ERROR [geonetwork.ldap] - LDAP group 'EL_Membres' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,369 ERROR [geonetwork.ldap] - LDAP profile 'ADMINISTRATOR' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,369 ERROR [geonetwork.ldap] - LDAP profile 'SUPERUSER' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,369 ERROR [geonetwork.ldap] - LDAP profile 'MOD_ANALYTICS' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,370 ERROR [geonetwork.ldap] - LDAP profile 'USER' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,370 ERROR [geonetwork.ldap] - LDAP profile 'EL_Membres' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'MOD_CNIL2' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'MOD_RGE' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'MOD_APL' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'MOD_IGN' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'MOD_RTGE' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,371 ERROR [geonetwork.ldap] - LDAP profile 'GS_ANT_ADMIN' does not match search pattern 'GN_(.*)'. Information ignored.
2018-10-13 23:59:28,373 ERROR [geonetwork.ldap] - LDAP group 'EL_Membres' does not match search pattern 'GN_(.*)'. Information ignored.

Maybe it should only be a INFO/WARN/DEBUG lvl so that meaningful msgs stand out of the noise... upstream bug ? local fix ?

PDF export - Need to normalize URL before doing a http query

On a PDF export, it is sometimes necessary to includes graphics coming from the webapp, but the way the links are generated is not compatible with the filters used in the Security-proxy.

Example of URL:

https://dev.gdi-etau.telekom.de:/geonetwork/srv/../images/logos/4076b845-a70c-4264-9cad-f22164c8f678.png

Here is the code which is currently failing to retrieve the image:
https://github.com/georchestra/geonetwork/blob/georchestra-gn3.8.2/services/src/main/java/org/fao/geonet/api/records/formatters/ImageReplacedElementFactory.java#L134

  1. the port is not specified, because it was not set in the settings UI (the secured port was set though). Setting 443 in the classic port solved the extra ":". It is not necessary though, the URL is still valid, and can pass the URI.normalize() step.
  2. The Security-Proxy (via the spring-security configuration) will reject non-normalized URLs.
  3. Trying the URL using tools like cURL is transparent because it will normalize the URL before sending it. we might want to use --path-as-is to disable the behaviour:
       --path-as-is
              Tell  curl  to  not handle sequences of /../ or /./ in the given
              URL path. Normally curl will squash or merge them  according  to
              standards but with this option set you tell it not to do that.

We could use the java.net.URI class and the normalize() method before trying to fetch the URL.
Also line 132, the log level might not be very relevant, I would suggest debug instead of error.

editing existing published MD in 3.8 blows

With a datadir/db migrated from 3.4, trying to edit an existing metadata blows hard in the logs:

2020-08-28 12:16:17,615 INFO  [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] - HHH000010: On release of batch it still contained JDBC statements
2020-08-28 12:16:17,626 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 23503
2020-08-28 12:16:17,642 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Batch entry 0 insert into public.OperationAllowed (groupId, metadataId, operationId) values (502939, 185363329, 0) was aborted: ERROR: insert or update on table "operationallowed" violates foreign key constraint "operationallowed_metadataid_fkey"
  Détail : Key (metadataid)=(185363329) is not present in table "metadata".  Call getNextException to see other errors in the batch.
2020-08-28 12:16:17,642 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 23503
2020-08-28 12:16:17,642 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - ERROR: insert or update on table "operationallowed" violates foreign key constraint "operationallowed_metadataid_fkey"
  Détail : Key (metadataid)=(185363329) is not present in table "metadata".
2020-08-28 12:16:17,734 ERROR [org.hibernate.engine.jdbc.batch.internal.BatchingBatch] - HHH000315: Exception executing batch [could not execute batch]
2020-08-28 12:16:17,870 ERROR [geonetwork.datamanager] - Editing instance creation failed
org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into public.OperationAllowed (groupId, metadataId, operationId) values (?, ?, ?)]; constraint [operationallowed_metadataid_fkey]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch

...
2020-08-28 12:25:17,650 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 25P02
2020-08-28 12:25:17,651 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - ERROR: current transaction is aborted, commands ignored until end of transaction block
2020-08-28 12:25:17,653 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 25P02
2020-08-28 12:25:17,653 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - ERROR: current transaction is aborted, commands ignored until end of transaction block
2020-08-28 12:25:17,653 ERROR [geonetwork.datamanager] - Couldn't update the operations of the draft 185363329
org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet

my guess/understanding of this mumbojumbo is that geonetwork expects the existing metadata (with a given metadataid of 185361253) to be copied first with a new metadataid (185363329 is the next value for hibernate_sequence) and then operations are done on this new copy of the MD, but for some reason the MD isnt cloned first. Note that i dont think i have the fancy new workflow features enabled (how to be sure & where to check ?) but all the sql migration scripts between 3.4 and 3.8 seem to have run without issues.

creating a new MD and editing it afterwards seems to work, so it seems its an issue only for MDs created pre-3.8.

In the browser console, the call to /srv/api/records/185361253/editor?&currTab=default&starteditingsession=yes&_random=9491 fails with a 400 code:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><apiError><code>runtime_exception</code><description>could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet</description><message>JpaSystemException</message></apiError>

some geonetwork expertise required i think .. @pmauduit @fxprunayre ?

NoClassDefFoundError:javax/activation/DataSource using Docker

Sending mails with the GeoNetwork Docker image produces a NoClassDefFoundError:javax/activation/DataSource

We ran into the error with the "Create DOI" button, but it can be more easily reproduced from the admin console.

I assume this is related to the use of JDK11 since 781305e

Steps to reproduce the behavior

  • start geOrchestra with Docker on branch 23.0
  • log in as testadmin and go to Admin console > Settings
  • set some valid SMTP settings
  • click ''Test mail configuration"
  • the following error message appears :

{"message":"NestedServletException","code":"runtime_exception","description":"Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/activation/DataSource"}

Expected behavior
No error trying to send an e-mail.

Log file

2023-10-16T14:46:44,782 ERROR [geonetwork] - Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/activation/DataSource
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/activation/DataSource
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1058) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at jeeves.config.springutil.JeevesDispatcherServlet.access$001(JeevesDispatcherServlet.java:44) ~[gn-core-4.2.2-georchestra.jar:?]
at jeeves.config.springutil.JeevesDispatcherServlet$1.doInTransaction(JeevesDispatcherServlet.java:56) ~[gn-core-4.2.2-georchestra.jar:?]
at jeeves.config.springutil.JeevesDispatcherServlet$1.doInTransaction(JeevesDispatcherServlet.java:52) ~[gn-core-4.2.2-georchestra.jar:?]
at jeeves.transaction.TransactionManager.runInTransaction(TransactionManager.java:75) ~[gn-core-4.2.2-georchestra.jar:?]
at jeeves.config.springutil.JeevesDispatcherServlet.doDispatch(JeevesDispatcherServlet.java:49) ~[gn-core-4.2.2-georchestra.jar:?]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) ~[servlet-api-3.1.jar:3.1.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[servlet-api-3.1.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292) ~[websocket-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.fao.geonet.web.CORSResponseFilter.doFilter(CORSResponseFilter.java:129) ~[gn-core-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.fao.geonet.monitor.webapp.WebappMetricsFilter.doFilter(WebappMetricsFilter.java:121) ~[gn-health-monitor-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.fao.geonet.monitor.webapp.MetricsRegistryInitializerFilter.doFilter(MetricsRegistryInitializerFilter.java:58) ~[gn-health-monitor-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.fao.geonet.web.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:110) ~[gn-core-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) ~[urlrewritefilter-4.0.3.jar:4.0.3]
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) ~[urlrewritefilter-4.0.3.jar:4.0.3]
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) ~[urlrewritefilter-4.0.3.jar:4.0.3]
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) ~[urlrewritefilter-4.0.3.jar:4.0.3]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.geonetwork.http.SessionTimeoutCookieFilter.doFilter(SessionTimeoutCookieFilter.java:91) ~[gn-core-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:223) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:166) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:146) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.3.jar:5.7.3]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at jeeves.config.springutil.JeevesDelegatingFilterProxy.doFilter(JeevesDelegatingFilterProxy.java:74) ~[gn-core-4.2.2-georchestra.jar:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[jetty-security-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.18.v20190429.jar:9.4.18.v20190429]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.18.v20190429.jar:9.4.18.v20190429]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.18.v20190429.jar:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622]
at java.lang.Thread.run(Unknown Source) ~[?:?]
georchestra_docker-geonetwork-1 | Caused by: java.lang.NoClassDefFoundError: javax/activation/DataSource
at org.apache.commons.mail.HtmlEmail.build(HtmlEmail.java:580) ~[commons-email-1.5.jar:1.5]
at org.apache.commons.mail.HtmlEmail.buildMimeMessage(HtmlEmail.java:509) ~[commons-email-1.5.jar:1.5]
at org.apache.commons.mail.Email.send(Email.java:1495) ~[commons-email-1.5.jar:1.5]
at org.fao.geonet.util.MailUtil.testSendMail(MailUtil.java:488) ~[gn-core-4.2.2-georchestra.jar:?]
at org.fao.geonet.util.MailUtil.testSendMail(MailUtil.java:459) ~[gn-core-4.2.2-georchestra.jar:?]
at org.fao.geonet.api.tools.mail.MailApi.testMailConfiguration(MailApi.java:109) ~[gn-services-4.2.2-georchestra.jar:?]
at org.fao.geonet.api.tools.mail.MailApi$$FastClassBySpringCGLIB$$beada2b1.invoke() ~[gn-services-4.2.2-georchestra.jar:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61) ~[spring-security-core-5.7.3.jar:5.7.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.fao.geonet.api.tools.mail.MailApi$$EnhancerBySpringCGLIB$$51753f12.testMailConfiguration() ~[gn-services-4.2.2-georchestra.jar:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
... 114 more
georchestra_docker-geonetwork-1 | Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
at org.apache.commons.mail.HtmlEmail.build(HtmlEmail.java:580) ~[commons-email-1.5.jar:1.5]
at org.apache.commons.mail.HtmlEmail.buildMimeMessage(HtmlEmail.java:509) ~[commons-email-1.5.jar:1.5]
at org.apache.commons.mail.Email.send(Email.java:1495) ~[commons-email-1.5.jar:1.5]
at org.fao.geonet.util.MailUtil.testSendMail(MailUtil.java:488) ~[gn-core-4.2.2-georchestra.jar:?]
at org.fao.geonet.util.MailUtil.testSendMail(MailUtil.java:459) ~[gn-core-4.2.2-georchestra.jar:?]
at org.fao.geonet.api.tools.mail.MailApi.testMailConfiguration(MailApi.java:109) ~[gn-services-4.2.2-georchestra.jar:?]
at org.fao.geonet.api.tools.mail.MailApi$$FastClassBySpringCGLIB$$beada2b1.invoke() ~[gn-services-4.2.2-georchestra.jar:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61) ~[spring-security-core-5.7.3.jar:5.7.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.fao.geonet.api.tools.mail.MailApi$$EnhancerBySpringCGLIB$$51753f12.testMailConfiguration() ~[gn-services-4.2.2-georchestra.jar:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043) ~[spring-webmvc-5.2.20.RELEASE.jar:5.2.20.RELEASE]
... 114 more

Desktop

  • Browser: Chrome
  • GeoNetwork Version 23.0.2
  • Docker image

Visualisator link : chargement WMS and WFS

Version 15.06

Lorsqu'on est sur le catalogue, on sélectionne une métadonnée où il y a à la fois un lien OGC:WMS et un lien OGC:WFS.
On clique sur le titre pour ouvrir la fiche, et on clique sur le petit icone de visualisation.

On se retrouve dans le visualiseur avec 2 couches de chargées : une correspond au lien WMS, l'autre au lien WFS.

Exemple avec la couche des lycées ou du linéaire bocager sur GéoBretagne. Le permalien ne stocke qu'une couche.

Pour info la requête exécutée :

Requête exécutée :
http://geobretagne.fr/geonetwork/srv/fre/metadata.service.extract?id=72797&_dc=1467380372704

Problème apparu sans doute avec la 15.06 car non signalé avant.

A voir si problème sur GN3.

remove redundancy between server variables

Currently, we need to pass two server variables to the application server:

-Dgeorchestra.datadir=/etc/georchestra \
-Dgeonetwork.jeeves.configuration.overrides.file=/etc/georchestra/geonetwork/config/config-overrides-georchestra.xml \

But they point to the /etc/georchestra/ directory and a subdirectory. We might avoid this, removing the need to pass the geonetwork.jeeves.configuration.overrides.file server variable.

See also georchestra/georchestra#2028, that removes the need to pass the georchestra.datadir server variable by default.

missing XSRF header on geonetwork breaks all POST ?

with 20.0/gn 3.8, all POST calls on the Web UI (the /geocat/srv/fre/info?type=me call done at page loading, saving settings via /geocat/srv/api/site/settings, etc..) end up with a 403, tcpdump says Expected CSRF token not found. Has your session expired?, and looking at the browser console the POST call done indeed doesnt have the expected XSRF header/csrf token, per https://geonetwork-opensource.org/manuals/trunk/en/customizing-application/misc.html#invalid-csrf-token

I cant believe this hasnt been spotted before in testing/production; but filing an issue anyway, as it might be a bad interaction with the security proxy ? @pmauduit ?

github actions: docker image latest tag is not linked to 4.2.x

When a new docker image is built for the docker tag 4.2.x and latest, only the tag 4.2.x will get the new modification. There is a need to execute again the github action for the tag latest to have the same modification as the tag 4.2.x.

There is probably an issue for the command here: https://github.com/georchestra/geonetwork/blob/georchestra-gn4.2.x/.github/workflows/georchestra-gn4.yml#L80 but I can't find the way to solve the issue.

Probably related to #224

Two entries marked as selected in the menu

Enter the "geonetwork/srv/fre/admin.console#/harvest/harvest-settings" URL (or clic Console d'admin / Moissonnage / Configuration)

Now two submenus are marked as current page:

capture d ecran du 2019-01-24 15-47-06

I imagine it's due to the URL containing the "settings" substring.

two versions of groovy jars in the classpath

as found out by @pmauduit in georchestra/ansible#125 (comment) the geonetwork war we ship so far has two versions of groovy libs in the classpath:

-rw-r----- 1 tomcat tomcat 5443828 May  9  2023 /srv/tomcat/georchestra/webapps/geonetwork/WEB-INF/lib/groovy-2.5.5.jar
-rw-r----- 1 tomcat tomcat 7203079 May  9  2023 /srv/tomcat/georchestra/webapps/geonetwork/WEB-INF/lib/groovy-all-2.4.21.jar

this prevents GN4 to start with an ugly ton of backtraces in the logs, removing groovy-2.5.5.jar from the webapp fixes the issue.

OgcWxSHarvester broken in 3.4 ?

I have bunch of ogc harvesters configured to manually update from time to time, which were working fine in 3.0.

Since 3.4, it seems all of them fail to update, they fetch the remote getcapabilities, analyze it, but blow with a totally not helpful NPE at the end:

2019-09-05 15:24:07,878 INFO  [tiles_ign] - Starting harvesting of tiles_ign
2019-09-05 15:24:07,889 INFO  [tiles_ign] - Started harvesting from node : tiles_ign (OgcWxSHarvester)
2019-09-05 15:24:07,889 INFO  [tiles_ign] - Retrieving remote metadata information for : tiles_ign
2019-09-05 15:24:08,336 INFO  [tiles_ign] -   - Number of layers, featureTypes or Coverages found : 5
2019-09-05 15:24:08,336 INFO  [tiles_ign] -   - Loading layer: scans_ign
2019-09-05 15:24:08,598 WARN  [tiles_ign] -     Metadata uuid '8fae296c-182a-402e-83ac-a0178bdff64e' already exist in the catalogue. Metadata for layer 'scans_ign' will not be loaded.
2019-09-05 15:24:08,599 INFO  [tiles_ign] -   - Loading layer: scans_grayscale
2019-09-05 15:24:08,814 WARN  [tiles_ign] -     Metadata uuid '8fae296c-182a-402e-83ac-a0178bdff64e' already exist in the catalogue. Metadata for layer 'scans_grayscale' will not be loaded.
2019-09-05 15:24:08,814 INFO  [tiles_ign] -   - Loading layer: scans_express
2019-09-05 15:24:09,053 WARN  [tiles_ign] -     Metadata uuid 'c9b07f48-86ce-4c61-bcfa-150413e50a87' already exist in the catalogue. Metadata for layer 'scans_express' will not be loaded.
2019-09-05 15:24:09,053 INFO  [tiles_ign] -   - Loading layer: scans_express_grayscale
2019-09-05 15:24:09,250 WARN  [tiles_ign] -     Metadata uuid 'c9b07f48-86ce-4c61-bcfa-150413e50a87' already exist in the catalogue. Metadata for layer 'scans_express_grayscale' will not be loaded.
2019-09-05 15:24:09,250 INFO  [tiles_ign] -   - Loading layer: orthohr
2019-09-05 15:24:09,475 WARN  [tiles_ign] -     Metadata uuid '97f91b3a-996f-4cd4-a94c-c3001cca8bc4' already exist in the catalogue. Metadata for layer 'orthohr' will not be loaded.
2019-09-05 15:24:09,487 INFO  [tiles_ign] - Applying custom import XSL OGCWMSGetCapabilities-to-ISO19119_ISO19139.xsl
2019-09-05 15:24:09,488 WARN  [tiles_ign] - Raised exception while harvesting from : tiles_ign (OgcWxSHarvester)
2019-09-05 15:24:09,488 WARN  [tiles_ign] -  (C) Class   : NullPointerException
2019-09-05 15:24:09,488 WARN  [tiles_ign] -  (C) Message : null

of course the service metadata isnt updated.

error mapstore when requesting geonetwork catalog

Describe the bug
Error when using mapstore listing CSW

To Reproduce
Steps to reproduce the behavior:

  1. start docker composition on latest
  2. open mapstore
  3. add layer using the local geonetwork catalogues
  4. image

reproduce with curl

$ curl 'https://georchestra-127-0-1-1.traefik.me/geonetwork/srv/fre/csw?service=CSW&version=2.0.2&request=' \
  -H 'authority: georchestra-127-0-1-1.traefik.me' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: en-US,en;q=0.9,fr;q=0.8' \
  -H 'content-type: application/xml' \
  -H 'cookie: XSRF-TOKEN=b6834109-bc50-498a-988c-fa84d13010f7; serverTime=1693216725966; sessionExpiry=1693216725966; JSESSIONID=node0bah7ops4ompu1p5mnqiuwsjdd0.node0' \
  -H 'origin: https://georchestra-127-0-1-1.traefik.me' \
  -H 'referer: https://georchestra-127-0-1-1.traefik.me/mapstore/' \
  -H 'sec-ch-ua: "Not)A;Brand";v="24", "Chromium";v="116"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Linux"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36' \
  --data-raw $'<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmi="http://www.isotc211.org/2005/gmi" xmlns:ows="http://www.opengis.net/ows" service="CSW" version="2.0.2" resultType="results" startPosition="1" maxRecords="4"> <csw:Query typeNames="csw:Record"> <csw:ElementSetName>full</csw:ElementSetName> <csw:Constraint version="1.1.0"> <ogc:Filter> <ogc:Or>\n            <ogc:PropertyIsEqualTo>\n                <ogc:PropertyName>dc:type</ogc:PropertyName>\n                <ogc:Literal>dataset</ogc:Literal>\n            </ogc:PropertyIsEqualTo>\n            <ogc:PropertyIsEqualTo>\n                <ogc:PropertyName>dc:type</ogc:PropertyName>\n                <ogc:Literal>http://purl.org/dc/dcmitype/Dataset</ogc:Literal>\n            </ogc:PropertyIsEqualTo>\n       </ogc:Or> </ogc:Filter> </csw:Constraint> </csw:Query> </csw:GetRecords>' \
  --compressed
<?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2.0" xsi:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd">
  <ows:Exception exceptionCode="NoApplicableCode">
    <ows:ExceptionText>java.lang.RuntimeException: ElasticsearchStatusException[Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]]</ows:ExceptionText>
  </ows:Exception>
</ows:ExceptionReport>

logging configuration not external since 4.2 update

since the merge of 4.2.2 in fa284b7, we lost a feature added by @pmauduit in 1ec55be that allowed logging configuration file to be read from the datadir.

as a consequence, changing settings in /etc/georchestra/geonetwork/log4j/log4j2.xml has no effect, and one has to modify WEB-INF/classes/log4j2.xml inside the deployed webapp to actually tweak logging parameters.

Geonetwork : problème de validation des métadonnées

Nous n'arrivons pas à rendre totalement valide deux métadonnées (7271c641-c548-49a5-a1e3-b7c8e0e24192 et cb7219cf-7f4a-4921-9a51-5ce17103c959) pour avoir un cercle vert en haut de la métadonnée.
rapport_validation_erreur
rapport_validation_iso

  • Dans le rapport de validation, il est indiqué un taux de remplissage Inspire de 14/16 alors qu'aucune erreur Inspire n'est indiqué.
  • Des erreurs ISO apparaissent et nous n'arrivons pas à les corriger. Nous aurions besoin d'assistance.
  • Parmi ces erreurs ISO et après investigation, je pense qu'une erreur (celle avec la succession de chiffres) se créée car on a ajouté le contact depuis l'annuaire de GN.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.