GithubHelp home page GithubHelp logo

phax / phoss-directory Goto Github PK

View Code? Open in Web Editor NEW
15.0 10.0 6.0 9.3 MB

The official Peppol, TOOP and DE4A Directory software

License: Apache License 2.0

CSS 5.50% Java 94.10% JavaScript 0.10% HTML 0.08% Dockerfile 0.11% Shell 0.10%
peppol openpeppol directory yellow-pages toop4eu de4a

phoss-directory's Introduction

phoss-directory

javadoc Maven Central

The official Peppol Directory (PD; https://directory.peppol.eu), TOOP Directory software (The Once-Only Project; www.toop.eu) and DE4A Directory software (Digital Europe 4 All; www.de4a.eu).

It is split into the following sub-projects (all require Java 11 or newer):

  • phoss-directory-indexer - the PD indexer part
  • phoss-directory-publisher - the PD publisher web application
  • phoss-directory-client - a client library to be added to SMP servers to force indexing in the PD
  • phoss-directory-searchapi - a client library for easier use of the Directory search REST API (since v0.7.2)

Previous modules:

  • phoss-directory-businesscard - the common Business Card API - until v0.12.3; then moved to com.helger.peppol:peppol-directory-businesscard in https://github.com/phax/peppol-commons

  • Production version is available at https://directory.peppol.eu (for Peppol)

    • It can only handle participants registered at the SML
    • For the indexing REST API, a client certificate (SMP production) is needed
  • Test version is available at https://test-directory.peppol.eu

    • It can only handle participants registered at the SMK
    • For the indexing REST API, a client certificate (SMP test) is needed
  • A TOOP version is/was available at http://directory.acc.exchange.toop.eu/

    • It can only handle participants registered at the SMK at a specific DNS zone
    • For the indexing REST API, no client certificate is needed
  • A DE4A version is/was available at https://de4a.simplegob.com/directory/

    • It can only handle participants registered at the SML at a specific DNS zone
    • For the indexing REST API, no client certificate is needed
  • A Java library to be used in SMPs to communicate with the PD is available

  • phoss SMP Server supports starting with version 4.1.2 the graphical editing of Business Card incl. the necessary /businesscard API.

Building requirements

To build the PD software you need at least Java 1.8 and Apache Maven 3.x.

Additionally to the contained projects you MAY need the latest SNAPSHOT of ph-oton as part of your build environment.

PD Client

The PD client is a small Java library that uses Apache HttpClient to connect to an arbitrary phoss Directory Indexer to perform all the allowed operations (get, create/update, delete).

Client Configuration resolution

The PD client uses ph-config to resolve configuration items. See https://github.com/phax/ph-commons/wiki/ph-config for the details on the resolution logic.

Note: the old file pd-client.properties is still evaluated for backwards-compatibility reasons but with lower priority. It will be removed in the future.

Client Configuration properties

Note: the configuration properties were heavily renamed in v0.10.0. Previous old names are shown in brackets.

The following configuration items are supported by the PD Client:

  • pdclient.keystore.type (old: keystore.type) (since v0.6.0) - the type of the keystore. Can be JKS or PKCS12 (case insensitive). Defaults to JKS.
  • pdclient.keystore.path (old: keystore.path) - the path to the keystore where the SMP certificate is contained
  • pdclient.keystore.password (old: keystore.password) - the password to open the key store
  • pdclient.keystore.key.alias (old: keystore.key.alias) - the alias in the key store that denotes the SMP key
  • pdclient.keystore.key.password (old: keystore.key.password) - the password to open the key in the key store
  • pdclient.truststore.type (old: truststore.type) (since v0.6.0) - the type of the keystore. Can be JKS or PKCS12 (case insensitive). Defaults to JKS.
  • pdclient.truststore.path (old: truststore.path) (since v0.5.1) - the path to the trust store, where the public certificates of the phoss Directory servers are contained. Defaults to truststore/pd-client.truststore.jks
  • pdclient.truststore.password (old: truststore.password) (since v0.5.1) - the password to open the truststore store. Defaults to peppol
  • http.proxy.host (old: http.proxyHost) - the HTTP proxy host for HTTP connections only. No default.
  • http.proxy.port (old: http.proxyPort) - the HTTP proxy port for http connections only. No default.
  • Removed in 0.10.0: https.proxyHost - the HTTP proxy host for https connections only. No default.
  • Removed in 0.10.0: https.proxyPort - the HTTP proxy port for https connections only. No default.
  • http.proxy.username (old: proxy.username) (since v0.6.0) - the proxy username if http or https proxy is enabled. No default.
  • http.proxy.password (old: proxy.password) (since v0.6.0) - the proxy password if http or https proxy is enabled. No default.
  • http.connect.timeout.ms (old: connect.timeout.ms) (since v0.6.0) - the connection timeout in milliseconds to connect to the server. The default value is 5000 (5 seconds). A value of 0 means indefinite. A value of -1 means using the system default.
  • http.response.timeout.ms (old: http.request.timeout.ms or request.timeout.ms) (since v0.10.3) - the response/request/read timeout in milliseconds to read from the server. The default value is 10000 (10 seconds). A value of 0 means indefinite. A value of -1 means using the system default.
  • https.hostname-verification.disabled (since v0.5.1) - a boolean value to indicate if https hostname verification should be disabled (true) or enabled (false). The default value is true.

Example PD Client configuration properties:

# Key store with SMP key (required)
pdclient.keystore.type         = jks
pdclient.keystore.path         = smp.pilot.jks
pdclient.keystore.password     = password
pdclient.keystore.key.alias    = smp.pilot
pdclient.keystore.key.password = password

# Default trust store (optional)
pdclient.truststore.type     = jks
pdclient.truststore.path     = truststore/pd-client.truststore.jks
pdclient.truststore.password = peppol

# TLS settings
https.hostname-verification.disabled = false

PD Indexer

The PD Indexer is a REST component that is responsible for taking indexing requests from SMPs and processes them in a queue (Peppol SMP client certificate required). Only the Peppol participant identifiers are taken and the PD Indexer is responsible for querying the respective SMP data directly. Therefore the respective SMP must have the appropriate Extension element of the service group filled with the business information metadata as required by PD. Please see the PD specification for a detailed description of the required data format as well as for the REST interface.

PD Publisher

The PD Publisher is the publicly accessible web site with listing and search functionality for certain participants.

News and noteworthy

  • v0.13.3 - 2024-05-24
    • Updated to peppol-commons 9.4.0
  • v0.13.2 - 2024-04-02
    • Ensured Java 21 compatibility
  • v0.13.1 - 2024-03-22
    • Fixed the name REST API query parameter
  • v0.13.0 - 2023-11-13
  • v0.12.3 - 2023-10-27
    • Fixed the name of the attribute for the client certificate retrieval (jakarta.)
    • Added special handling for Peppol Wildcard identifiers on the UI
  • v0.12.2 - 2023-08-24
    • Updated to ph-oton 9.2.0
    • Updated code lists to v8.6
  • v0.12.1 - 2023-08-16
    • Introducing class PDResultListMarshaller in favour of PDSearchAPI(Reader|Validator|Writer)
    • Added a BusinessCard JSON export
  • v0.12.0 - 2023-02-25
    • Using Java 11 as the baseline
    • Using Servlet API 5.0.0 as the baseline: JakartaEE 9, Java 11+, Apache Tomcat v10.0.x, Jetty 11.x
    • Updated to Jersey 3.1.1
    • Updated to ph-commons 11
    • Updated the known names to eDEC Code List v8.3
  • v0.11.0 - 2022-12-19
    • Updated to Lucene 8.x
  • v0.10.5 - 2022-11-25
    • Improved logging of indexation
    • SMP client configuration became more resilient
  • v0.10.4 - 2022-11-14
    • Added new configuration parameter smp.tls.trust-all to disable the TLS certificate checks for the SMP client
  • v0.10.3 - 2022-08-17
    • Updated to Apache Http Client v5.x
    • Updated to ph-web 9.7.1
    • Fixed an error in the REST API with the "name" parameter when multilingual names are used
  • v0.10.2 - 2022-03-28
    • Removed the code for the handling of objects marked as deleted
    • Improved the owner check upon deletion
  • v0.10.1 - 2022-03-09
    • Added export of participant IDs with metadata
  • v0.10.0 - 2022-03-06
    • Only the SP owning a Participant can delete it. That implies, that upon certificate change the simple deletion will not work. It is recommended to first index the participant, so that the new certificate is used, and than delete it with the new certificate.
    • Added an Admin page to manually delete a participant without an owner check
    • Showing metadata information on participant details, if the admin user is logged in
    • Removed the "SMP implementations" page
    • Added a possibility to hide or customize the "Contact us" page
    • Changed the PD Client configuration properties, to start with pdclient. and align the HTTP properties with SMP client configuration
      • keystore.type is now pdclient.keystore.type
      • keystore.path is now pdclient.keystore.path
      • keystore.password is now pdclient.keystore.password
      • keystore.key.alias is now pdclient.keystore.key.alias
      • keystore.key.password is now pdclient.keystore.key.password
      • truststore.type is now pdclient.truststore.type
      • truststore.path is now pdclient.truststore.path
      • truststore.password is now pdclient.truststore.password
      • http.proxyHost is now http.proxy.host
      • http.proxyPort is now http.proxy.port
      • proxy.username is now http.proxy.username
      • proxy.password is now http.proxy.password
      • connect.timeout.ms is now http.connect.timeout.ms
      • request.timeout.ms is now http.request.timeout.ms
      • https.proxyHost is no longer supported
      • https.proxyPort is no longer supported
    • Fixed the default search background image URL
  • v0.9.10 - 2022-02-24
    • Prepare for internal cleanup to get rid of the legacy "deleted" flag
  • v0.9.9 - 2021-12-21
  • v0.9.8 - 2021-12-14
  • v0.9.7 - 2021-12-10
  • v0.9.6 - 2021-11-02
    • Improved support for JSON API in Business Card
  • v0.9.5 - 2021-03-22
    • Updated to ph-commons 10
    • Updated to peppol-commons 8.4.0
    • Improved web UI customizability
  • v0.9.4 - 2021-02-01
    • Fixed initialization order issue
  • v0.9.3 - 2021-02-01
    • Updated to ph-commons 9.5.4
    • Updated to ph-dns 9.5.2
    • Updated to Jersey 2.32
    • Reduced lock contention
  • v0.9.2 - 2020-09-24
    • Increased customizability
  • v0.9.1 - 2020-09-18
    • Updated to Jakarta JAXB 2.3.3
  • v0.9.0 - 2020-09-16
    • Updated to ph-commons 9.4.8
    • Changed the way how the configuration system works
  • v0.8.8 - 2020-08-30
    • Updated to ph-commons 9.4.7
    • Updated to ph-oton 8.2.6
    • Updated to peppol-commons 8.1.7
    • Using Java 8 date and time classes for JAXB created classes
  • v0.8.7 - 2020-05-27
    • Updated to ph-commons 9.4.4
    • Updated to new Maven groupIds
    • Improved logging
    • Improved resilience on identifier handling for stored entries
  • v0.8.6 - 2020-02-19
    • URL decoding participant identifiers on indexation
    • Updated to ph-commons 9.4.0
  • v0.8.5 - 2020-02-16
    • Finalized PEPPOL -> Peppol change
    • Added registration date to the export data (see issue #45)
    • Updated to peppol-commons 8.x
    • Removed support for old PKI v2
    • Made the identifier factory customizable to avoid duplicate entries
    • Improved the internal Admin interface a bit
    • Added possibility to automatically purge unwanted duplicate entries
    • Updated the underlying UI libraries
    • The lists of known document type IDs and process ID were updated
    • Details about document types are now part of the export (see issue #46)
    • Added the possibility to export search result as XML (see issue #43)
    • Enforcing the PDClient proxy configuration to be part of PDHttpClientSettings
    • Improved internal error resilience
    • Fixed a validation that broken the daily export because of invalid PD data
    • Updated to ph-web 9.1.9
    • Changed the internal PDClient HTTP configuration API to use HttpClientSettings (backwards incompatible change)
    • The PDClient now checks for the key alias in a case insensitive manner (improved resilience)
  • v0.8.4 - 2020-01-24
    • Updated to Jersey 2.30
    • The Directory client has no more default truststore path and password
    • The Directory client configuration can now be read from the path denoted by the environment variable DIRECTORY_CLIENT_CONFIG
    • Updated the static texts changing PEPPOL to Peppol
  • v0.8.3 - 2020-01-08
    • Added logo in the left top (using configuration property webapp.applogo.image.path)
    • Setting Content-Length HTTP header for the downloads
    • Made FavIcons customizable
    • Added rate limit for search API (using configuration property rest.limit.requestspersecond)
  • v0.8.2 - 2019-10-14
    • Added support to download all Business Cards as CSV
    • Added support to download all Business Cards as XML but without the document types (see issue #42)
    • Class PDBusinessCard got a default JSON representation
    • Updated to Jersey 2.29.1
    • Added support to download all Participant IDs only as XML, JSON and CSV
  • v0.8.1 - 2019-07-29
    • Updated to Jersey 2.29
    • PDClientConfiguration can now be re-initialized during runtime
    • Known document type identifiers and process identifiers can now be used (see issue #13)
    • Extended XML export to include the new document types (see issue #41)
    • Added page to see the current Index Queue
  • v0.8.0 - 2019-06-27
    • Renamed project peppol-directory to phoss-directory
    • Maven artifact IDs changed from peppol-directory* to phoss-directory*
    • Updated to peppol-commons 7.0.0
    • Downgraded to Lucene 7.7.2
    • Fixed an issue with total-result-count and paging in the REST API (see issue #39)
    • Updated to Apache httpclient 4.5.9
    • Updated to ph-oton 8.2.0
    • Added a new internal page for importing identifiers
    • The internal format for exporting participant IDs was updated to be used in the import
  • v0.7.2 - 2019-05-13
    • Added new submodule peppol-directory-searchapi with basic elements for using the query API and the response documents
    • Updated default truststore of peppol-directory-client
    • Updated to Lucene 8.1.0
  • v0.7.1 - 2019-03-17
    • Added new method PDBusinessCardHelper.parseBusinessCard
    • Updated to Lucene 8.0.0
  • v0.7.0 - 2018-12-02
    • Added a link on the UI to download all business cards as XML
    • Fixed the build timestamp property
    • Fixed error when showing ReIndex entries of non-existing participants when using ESensUrlProvider
    • Added the XML Schema for the API search results
    • Added the XML Schema for the export data
    • Added a page explaining the export data
    • Requires ph-commons 9.2.0
    • Updated UI to use Bootstrap 4.1
  • v0.6.2 - 2018-10-17
    • If more hits are present than visible, it is displayed on the UI
    • Made the available SML information objects customizable
    • Removed the configuration item sml.id - either fixed SMP or all configured SMLs are queried upon indexing
    • Updated to Apache Lucene 7.5
    • Multilingual business entities are now supported via a new Business Card XML Schema - for Belgium
    • The query API response document layout for XML was changed. name has now multiplicity 1..n instead of 1..1.
    • The query API response document layout for JSON was changed. name is now an array instead of a string.
    • Multiple parallel queries on the PD are possible.
  • v0.6.1 - 2018-06-04
    • Avoid potential exception on invalid input parameters
    • Updated to Jersey 2.27
    • Updated to Apache Lucene 7.3
    • Improved handling of multiple search parameters in name, geoinfo and additionalInfo
    • Updated to peppol-commons 6.1.0
    • Updated to ph-commons 9.1.0
    • Introduced an internal "generic business card representation"
    • An initial "export all business cards" was created
  • v0.6.0 - 2018-03-06
    • Updated to ph-commons 9.0.1
    • Updated to Apache Lucene 7.2.1
    • Fixed some issues (as #30)
    • Requires peppol-commons 6.0.1 for new OpenPEPPOL PKI v3
    • Added support for trusting an arbitrary number of client certificate issuers (for the server only)
    • Added support for configuring more than two truststores in pd.properties (for the server only)
    • Added support for usage in the TOOP4EU project
    • User interface texts can be changed from "PEPPOL Directory" to something else
    • The PD client configuration now includes connection and request timeout, as well as proxy credentials
  • v0.5.1 - 2017-07-21
    • Extended PDClient to explicitly support a configurable truststore. A default truststore for the current setup is included.
    • PD client https hostname verification can now be
    • PD client has now a custom exception callback to catch exceptions in the operations and handle them outside the client.
    • Removed the JDK 6 PD client because the ECC certificates used are only supported by JDK 7 onwards. The old version is anyway in the Maven central repository.
  • v0.5.0 - 2017-07-12
    • Updated release for https://directory.peppol.eu and https://test-directory.peppol.eu

My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.

phoss-directory's People

Contributors

daffydukk avatar dependabot[bot] avatar gitter-badger avatar phax avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

phoss-directory's Issues

Endpoint ID format

I was asked last week by the PEPPOL lead in a UK hospital to point out the "actual" GLN from the string below...
iso6523-actorid-upis::0088:0827444000058

Is it possible to hide the "iso6523-actorid-upis::" prefix?

Would it make sense to link to an iso6523 list, or interpret the 0088:0827444000058 to say
GLN = 0827444000058?

https://www.galaxygw.com/iso6523/

Add a Field on Homepage "PD now indexes x% of PEPPOL"

With ELMA being added, the % coverage of PD should already approach 90%, and while this number will drop if eg France is added to the SML and not yet to PD, I think it would be good to track the total no of SML entries vs PD entries and show the status.

PD Publisher : Rest API (status)

Good evening Philip,

Talking about REST API of PD publisher, what is the status of it?
If I try to call, for example, the https://test-directory.peppol.eu/search/1.0/xml/q=test the response is :
<something-will-be-here-soon be="patient" />
My goal is call from my platform the Rest APIs that I would expect are exposed by PD publisher based on query specification (6.1 Search interface).

Thank you very much for the support.

Stefano

Build a statistics page showing both PEPPOL network expansion and PD Coverage

It would be useful to capture and publish statistics for the expansion of both SML registrations as well as the % coverage of PD.
This could be tracked and published on a regular basis, showing country-level coverage expansion and changes over time.
The initial testing of the PDBC export, and offline analysis in an Excel Pivot requires some manual effort, and it would be worthwhile to examine whether this can be automated either partly or fully

Improved document type names

Suggestion from Anders:

A small remark; it looks you're using a "non standard" reference to the PEPPOL messages that the PEPPOL user has the capability to handle. I was confused to see the use of "Order Profile V2" as the reference to what I Believe to be PEPPOL BIS . Maybe you should consider using the "normative" terms?

Improve Directory XML file quality

I would propose that Peppol Directory XML dump file is either containing a flag regarding if document type under discussion belongs to Peppol supported list (meaning it is standard) or it ain't standard type.

Open Page UI - Search field

Search Field instruction:
"Enter the name, address, ID or any other keyword of the entity you are looking for. "

Allow multiple names in different languages in the business card data model

Belgian participant can have entity names in four different languages (FR, EN, NL, DE), and we need to push all of those names to Peppol Directory.

The current business card model does not allow to publish more than one name.

The first workaround we thought was to concatenate all of these names in the tag . However, there comes some politics issues:
Which language do we publish first? If we publish NL, French speaking people will not agree... If we publish FR first, NL people won't agree...

I would like to suggest to update the business card to allow multiple tag and add an optional "language" attribute on it.
For example:

<Name language="FR">...</Name>
<Name language="EN">...</Name>
<Name language="DE">...</Name>
<Name language="NL">...</Name>

Add Participant Name field in Service Group?

When creating a new service group, or viewing the list of existing service groups, can you please implement a field for the Particpant name?
That way, in the overvieew of the service groups, it will be easier to spot an individual participant, which are only identified today by the Participant ID string

Validation of values - Future Feature maybe?

A future feature that I think would be really good is some kind of validation of the values used as identifier.
Once again a point at "the ELMA SMP service where its only possible to register a correct Norwegian organization number NO:ORG (9908:123456789)

My and Ahti has actually a case where a recipient where registered with an "incorrect" number according to its identifier.

The recipient got registererd with 0007:556702693401 but 556702693401 is NOT a correct Swedish organization number.
It should be just 5567026934. (without the last 01, which is part of the Swedish VATnumber) the correct VAT for this reciver is SE556702693401

In the same way, it should be easy to do a check for a correct GLN with a “MOD11” check.

The VAT Validation should be “easy” for someone that can code, since there is a EU function http://ec.europa.eu/taxation_customs/vies/

Of course this requires that there is some kind of a framework surrounding the different formats of “organization number”
I know the formats here in the Nordic, but I haven’t found any info regarind other countries. WikiPedia has this info about VAT
https://en.wikipedia.org/wiki/VAT_identification_number

2nd page - UI

The results should be more clear:
Label in front of data
Name as the first
If more that 50 responses per search probably start to page results with a recommendation to specify the query more
Some remarks in attachment
2nd page

REST API Response header parameter total-result-count is not counting all the matching entries

Hi,

Noticed a small issue with the Directory REST API related to the total-result-count not actually being what it advertises.

For example when using the UI and querying for the word "test" it says that there are around 3000 hits. https://test-directory.peppol.eu/public/locale-en_US/menuitem-search?q=test

But doing that same query using the API, the total is always just the size of the result set.
https://test-directory.peppol.eu/search/1.0/json?q=test&rpc=1
https://test-directory.peppol.eu/search/1.0/json?q=test&rpc=50

This makes it impossible to actually know when paging should be applied.

Think the API implementation needs to do a explicit count for the query, as the UI is doing here: https://github.com/phax/phoss-directory/blob/master/phoss-directory-publisher/src/main/java/com/helger/pd/publisher/app/pub/page/PagePublicSearchSimple.java#L162

Create Business Card via UI (from #22)

Original by @clancger:
Also, it would be useful to have a "create PDBC" button, where a participant can fill out a form, that populates a simulated Business Card, and when they are happy with the contents, they can save and send on to their Access Point to be indexed

HTTP 500 response on Create or Update when calling test version

Having issues using the test version of the directory.

When calling DELETE https://test-directory.peppol.eu/indexer/1.0/iso6523-actorid-upis%3A%3A0007%3A12345 or PUT with iso6523-actorid-upis%3A%3A0007%3A12345 as the body I get the below response.
The client certificate is passed with the requests and is a valid SMP Test certificate.

`TTP Status 500 – Internal Server Error


Type Exception Report

Message org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class com.helger.pd.indexer.clientcert.ClientCertificateValidator

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class com.helger.pd.indexer.clientcert.ClientCertificateValidator
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:410)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.helger.servlet.filter.CharacterEncodingFilter.doHttpFilter(CharacterEncodingFilter.java:187)
com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)

Root Cause
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class com.helger.pd.indexer.clientcert.ClientCertificateValidator
org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:254)
org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:236)
org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:436)
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:261)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
org.glassfish.jersey.internal.Errors.process(Errors.java:292)
org.glassfish.jersey.internal.Errors.process(Errors.java:274)
org.glassfish.jersey.internal.Errors.process(Errors.java:244)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.helger.servlet.filter.CharacterEncodingFilter.doHttpFilter(CharacterEncodingFilter.java:187)
com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)

Root Cause
java.lang.NoClassDefFoundError: Could not initialize class com.helger.pd.indexer.clientcert.ClientCertificateValidator
com.helger.pd.indexer.rest.IndexerResource._checkClientCertificate(IndexerResource.java:71)
com.helger.pd.indexer.rest.IndexerResource.deleteParticipant(IndexerResource.java:142)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
org.glassfish.jersey.internal.Errors.process(Errors.java:292)
org.glassfish.jersey.internal.Errors.process(Errors.java:274)
org.glassfish.jersey.internal.Errors.process(Errors.java:244)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.helger.servlet.filter.CharacterEncodingFilter.doHttpFilter(CharacterEncodingFilter.java:187)
com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)

Note The full stack trace of the root cause is available in the server logs.


Apache Tomcat/8.5.38`

Optimisation needed for Endpoint IDs with many entities in a single Business Card

Slovenia has indexed 2 Endpoint IDs that, each one with 2708 subordiante entities.
The document types view doesnt't look right, and I'm wondering if there is a better practice recommendation we should make for such scenarios.
For example, France has 145,000 entities under a single Endpoint, which would be even less optimal if indexed.

9918:si56011006001618759
9949:si10641424

http://directory.peppol.eu/public/locale-en_US/menuitem-search?q=9918%3Asi56011006001618759
http://directory.peppol.eu/public/locale-en_US/menuitem-search?q=9949%3Asi10641424

Extend Data Model - additional identifier

Each additional identifiers should have an optional "Description" element for additional information like

  • <GLN Type>Bill-To</GLN Type>
  • <Dept>ACCOUNTS PAYABLES DEPARTMENT PO BOX 784</Dept>
  • <Building>LEEDS GENERAL INFIRMARY</Building>
  • <City>LEEDS</City>
  • <PostCode>LS1 9LF</PostCode>
  • <Country>GB</Country>

Can the PDBC export also include supported doc types capabilities?

Today, an export of the PDBC data only covers the Business Information content, and does not include the supported document types from the 2nd tab.

Is it possible to include this info in the export?
Otherwise, if I'm comparing a list of entities, I can only see which of them have "some" PEPPOL capability, but will need to look them up separately, and individually to discover which ones can support a particular doc type.
If a participant already has PEPPOL capabilities, and adds a new doc type (e.g BIS3), then only an individual paticipant-level search will show this.

Export current view of search results

If I do a search fron the PD UI, I'd like to save / export the results, including if more than the 50 hits shown. The only alternative to do this today is to do download the entire directory and filter.

Provide notifications when search results (might) exceed the 50-hit limit

The current UI search returns the top 50 hits. This might confuse a user who expects a larger result set.

A mediation could be to notify the user that there might be more participants in the result set, possibly with explanations on how to refine the search, in order to get more precise results.

Request for BC "Preview" feature

Particularly for participants with a lot of Business Card content, eg a list of several possible ship to addresses in additional information, it would be useful to have a "preview" feature.

Also, it would be useful to have a "create PDBC" button, where a participant can fill out a form, that populates a simulated Business Card, and when they are happy with the contents, they can save and send on to their Access Point to be indexed (moved to #23)

Feasability of PD Account Saved Searches, Alerts?

Would it be possible to have a PD account, where I could register, and after login set up saved search parameters, possibly including alerts for when particular search parameters appear eg a key trading partner appearing in PD

If a search returns no PDBC, do SMP lookup on same parameter?

If I perform a PD search on an EndPoint ID whose SMP doesnt yot support PD, then I will receive "No search results found for query xxx"

Would it be useful to do an SMP lookup on the same search argument in this case?

You would have to assume that the search term used would be a valid EndPoint ID
Perhaps the most beneficial response that could be given short of returning a full SMP lookup response would br to say this search term exists in the network, but doesnt have a PDBC assigned.

Thanks

Open Page

I am concerned about this not full information in the Directory.
Could we have a scale - Peppol directory contains information of 7578 (exact number) of 75000 participants in Peppol (count in SML).

open page UI - Introduction

Open Page should have an introduction answering 4 main questions:

  • What it is - Open yellow pages containing information about entities who are using Peppol network services. You can find here your business partner endpoint ID in here.
  • For whom this page is for? - for the users trying to locate their business partners in the Peppol network
  • Who are listed here? - the confirmation that this page doesn't contain 100% of the users so negative answer doesn't mean that your partner is not in Peppol network
  • How to use it - describe the search form, what would you need to enter to search field

GB -vs -UK

I just noticed that the only search term that will show all United Kingdom entries is "GB".
Could you please implement that "UK", "United Kingdom", "Great Britain" are treated as synonyms for "GB"?

pd gb listing 25 04 17

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.