Class BDXR2ClientReadOnly

All Implemented Interfaces:
com.helger.commons.traits.IGenericImplTrait<BDXR2ClientReadOnly>, IBDXR2ServiceGroupProvider, IBDXR2ServiceMetadataProvider
Direct Known Subclasses:
BDXR2Client

This class is used for calling the OASIS BDXR SMP v2 REST interface. This class only contains the read-only methods defined in the SMP specification and nothing else.

Note: this class is also licensed under Apache 2 license, as it was not part of the original implementation

Author:
Philip Helger
  • Field Details

  • Constructor Details

    • BDXR2ClientReadOnly

      public BDXR2ClientReadOnly(@Nonnull ISMPURLProvider aURLProvider, @Nonnull com.helger.peppolid.IParticipantIdentifier aParticipantIdentifier, @Nonnull com.helger.peppol.sml.ISMLInfo aSMLInfo) throws SMPDNSResolutionException
      Constructor with SML lookup
      Parameters:
      aURLProvider - The URL provider to be used. May not be null.
      aParticipantIdentifier - The participant identifier to be used. Required to build the SMP access URI.
      aSMLInfo - The SML to be used. Required to build the SMP access URI.
      Throws:
      SMPDNSResolutionException - If DNS resolution failed
      See Also:
    • BDXR2ClientReadOnly

      public BDXR2ClientReadOnly(@Nonnull ISMPURLProvider aURLProvider, @Nonnull com.helger.peppolid.IParticipantIdentifier aParticipantIdentifier, @Nonnull @Nonempty String sSMLZoneName) throws SMPDNSResolutionException
      Constructor with SML lookup
      Parameters:
      aURLProvider - The URL provider to be used. May not be null.
      aParticipantIdentifier - The participant identifier to be used. Required to build the SMP access URI.
      sSMLZoneName - The SML DNS zone name to be used. Required to build the SMP access URI. Must end with a trailing dot (".") and may neither be null nor empty to build a correct URL. May not start with "http://". Example: sml.peppolcentral.org.
      Throws:
      SMPDNSResolutionException - if DNS resolution failed
      See Also:
    • BDXR2ClientReadOnly

      public BDXR2ClientReadOnly(@Nonnull URI aSMPHost)
      Constructor with a direct SMP URL.
      Remember: must be HTTP and using port 80 only!
      Parameters:
      aSMPHost - The address of the SMP service. Must be port 80 and basic http only (no https!). Example: http://smpcompany.company.org
  • Method Details

    • getServiceGroup

      @Nonnull public com.helger.xsds.bdxr.smp2.ServiceGroupType getServiceGroup(@Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID) throws SMPClientException
      Returns a service group. A service group references to the service metadata. This is a specification compliant method.
      Parameters:
      aServiceGroupID - The service group id corresponding to the service group which one wants to get.
      Returns:
      The service group. Never null.
      Throws:
      SMPClientException - in case something goes wrong
      SMPClientUnauthorizedException - A HTTP Forbidden was received, should not happen.
      SMPClientParticipantNotFoundException - The service group id does not exist in the network.
      SMPClientNotFoundException - The service group id or document types did not exist.
      SMPClientBadRequestException - The request was not well formed.
      See Also:
    • getServiceGroupOrNull

      @Nullable public com.helger.xsds.bdxr.smp2.ServiceGroupType getServiceGroupOrNull(@Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID) throws SMPClientException
      Description copied from interface: IBDXR2ServiceGroupProvider
      Returns a service group. A service group references to the service metadata. This is a specification compliant method.
      Specified by:
      getServiceGroupOrNull in interface IBDXR2ServiceGroupProvider
      Parameters:
      aServiceGroupID - The ID of the service group to retrieve. May not be null.
      Returns:
      The service group. Maybe null.
      Throws:
      SMPClientException - in case something goes wrong
    • getAllDocumentTypes

      @Nonnull public static com.helger.commons.collection.impl.ICommonsList<com.helger.peppolid.IDocumentTypeIdentifier> getAllDocumentTypes(@Nullable com.helger.xsds.bdxr.smp2.ServiceGroupType aSG, @Nonnull com.helger.peppolid.factory.IIdentifierFactory aIdentifierFactory)
      Extract all document types from the passed Service group.
      Parameters:
      aSG - The service group to parse. May be null.
      aIdentifierFactory - The identifier factory to be used. May not be null.
      Returns:
      Never null but a maybe empty list.
      Since:
      8.0.4
    • getServiceMetadata

      @Nonnull public com.helger.xsds.bdxr.smp2.ServiceMetadataType getServiceMetadata(@Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID, @Nonnull com.helger.peppolid.IDocumentTypeIdentifier aDocumentTypeID) throws SMPClientException
      Gets a signed service metadata object given by its service group id and its document type. This is a specification compliant method.
      Parameters:
      aServiceGroupID - The service group id of the service metadata to get. May not be null.
      aDocumentTypeID - The document type of the service metadata to get. May not be null.
      Returns:
      A signed service metadata object. Never null.
      Throws:
      SMPClientException - in case something goes wrong
      SMPClientUnauthorizedException - A HTTP Forbidden was received, should not happen.
      SMPClientParticipantNotFoundException - The service group id does not exist in the network.
      SMPClientNotFoundException - The service group id or document types did not exist.
      SMPClientBadRequestException - The request was not well formed.
      See Also:
    • getServiceMetadataOrNull

      @Nullable public com.helger.xsds.bdxr.smp2.ServiceMetadataType getServiceMetadataOrNull(@Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID, @Nonnull com.helger.peppolid.IDocumentTypeIdentifier aDocumentTypeID) throws SMPClientException
      Description copied from interface: IBDXR2ServiceMetadataProvider
      Gets a signed service metadata object given by its service group id and its document type.
      This is a specification compliant method.
      Specified by:
      getServiceMetadataOrNull in interface IBDXR2ServiceMetadataProvider
      Parameters:
      aServiceGroupID - The ID of the service group to query. May not be null.
      aDocumentTypeID - The document type of the service metadata to retrieve. May not be null.
      Returns:
      A service metadata object or null if no such registration is present.
      Throws:
      SMPClientException - in case something goes wrong
    • getEndpoint

      @Nullable public static com.helger.xsds.bdxr.smp2.ac.EndpointType getEndpoint(@Nonnull com.helger.xsds.bdxr.smp2.ServiceMetadataType aServiceMetadata, @Nonnull com.helger.peppolid.IProcessIdentifier aProcessID, @Nonnull com.helger.peppol.smp.ISMPTransportProfile aTransportProfile)
      Extract the Endpoint from the ServiceMetadata that matches the passed process ID and the optional required transport profile.
      Parameters:
      aServiceMetadata - The service meta data object (e.g. from a call to getServiceMetadataOrNull(IParticipantIdentifier, IDocumentTypeIdentifier) . May not be null.
      aProcessID - The process identifier to be looked up. May not be null .
      aTransportProfile - The required transport profile to be used. May not be null.
      Returns:
      null if no matching endpoint was found
    • getEndpointAddress

      @Nullable public static String getEndpointAddress(@Nullable com.helger.xsds.bdxr.smp2.ac.EndpointType aEndpoint)
      Get the endpoint address URI from the provided SMP endpoint.
      Parameters:
      aEndpoint - The endpoint to be used. May be null.
      Returns:
      null if the endpoint is null if the endpoint has no address URI.
    • getEndpointCertificateBytes

      @Nullable public static byte[] getEndpointCertificateBytes(@Nullable com.helger.xsds.bdxr.smp2.ac.EndpointType aEndpoint)
      Get the certificate bytes from the provided SMP endpoint.
      Note: if the endpoint has more than one certificate, the first one is returned.
      Parameters:
      aEndpoint - The endpoint to be used. May be null.
      Returns:
      null if the endpoint is null if the endpoint has no certificate.
    • getEndpointCertificate

      @Nullable public static X509Certificate getEndpointCertificate(@Nullable com.helger.xsds.bdxr.smp2.ac.EndpointType aEndpoint) throws CertificateException
      Get the certificate bytes from the specified endpoint.
      Parameters:
      aEndpoint - The endpoint to be used. May be null.
      Returns:
      null if no such endpoint exists, or if the endpoint has no certificate
      Throws:
      CertificateException - In case the conversion from byte to X509 certificate failed
    • getServiceGroupByDNS

      @Nonnull public static com.helger.xsds.bdxr.smp2.ServiceGroupType getServiceGroupByDNS(@Nonnull ISMPURLProvider aURLProvider, @Nonnull com.helger.peppol.sml.ISMLInfo aSMLInfo, @Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID) throws SMPClientException, SMPDNSResolutionException
      Returns a service group. A service group references to the service metadata.
      Parameters:
      aURLProvider - The URL provider to be used. May not be null.
      aSMLInfo - The SML object to be used
      aServiceGroupID - The service group id corresponding to the service group which one wants to get.
      Returns:
      The service group
      Throws:
      SMPClientException - in case something goes wrong
      SMPClientUnauthorizedException - A HTTP Forbidden was received, should not happen.
      SMPClientParticipantNotFoundException - The service group id does not exist in the network.
      SMPClientNotFoundException - The service group id or document types did not exist.
      SMPClientBadRequestException - The request was not well formed.
      SMPDNSResolutionException - if DNS resolution fails
    • getServiceRegistrationByDNS

      @Nonnull public static com.helger.xsds.bdxr.smp2.ServiceMetadataType getServiceRegistrationByDNS(@Nonnull ISMPURLProvider aURLProvider, @Nonnull com.helger.peppol.sml.ISMLInfo aSMLInfo, @Nonnull com.helger.peppolid.IParticipantIdentifier aServiceGroupID, @Nonnull com.helger.peppolid.IDocumentTypeIdentifier aDocumentTypeID) throws SMPClientException, SMPDNSResolutionException
      Gets a signed service metadata object given by its service group id and its document type.
      Parameters:
      aURLProvider - The URL provider to be used. May not be null.
      aSMLInfo - The SML object to be used
      aServiceGroupID - The service group id of the service metadata to get.
      aDocumentTypeID - The document type of the service metadata to get.
      Returns:
      A signed service metadata object.
      Throws:
      SMPClientException - in case something goes wrong
      SMPClientUnauthorizedException - A HTTP Forbidden was received, should not happen.
      SMPClientParticipantNotFoundException - The service group id does not exist in the network.
      SMPClientNotFoundException - The service group id or document types did not exist.
      SMPClientBadRequestException - The request was not well formed.
      SMPDNSResolutionException - if DNS resolution fails