Skip to content

OAI-PMH Spring Boot Starter will help you build an OAI-PMH Data provider with Spring Boot

License

Notifications You must be signed in to change notification settings

it-at-m/oai-pmh-spring-boot-starter

Repository files navigation

oai-pmh-spring-boot-starter

Made with love by it@M License Gitmoji

Spring Boot Java Build Status

OAI-PMH Spring Boot Starter will help you build an OAI-PMH Data provider with Spring Boot

Features ✨

OAI-PMH-Starter

Maven Central - OAI-PMH-Starter

  • Spring Boot Starter: Easily integrate OAI-PMH capabilities into your Spring Boot applications.
  • API Documentation: Comprehensive API documentation using Swagger and OpenAPI.
  • Ready-to-Use Endpoints: Pre-configured OAI-PMH protocol endpoints for immediate use.
  • Detailed Request Validation: Robust validation mechanisms to ensure the integrity of incoming requests.

OAI-PMH-Schema

Maven Central - OAI-PMH-Schema

  • Java Classes with Jakarta XML Annotations: Provides annotated Java classes for MARC21 and Dublin Core metadata formats.
  • Separation of Concerns: Facilitates the separation of protocol implementation from data processing, making it ideal for backend services or data pipelines.

Set me up 🔧

1. Add Dependency

<!-- Spring Starter for OAI-PMH Endpoints  -->
<dependency>
  <groupId>de.muenchen.oss.oai</groupId>
  <artifactId>oai-pmh-spring-boot-starter</artifactId>
  <version>2.0.0</version>
</dependency>
<!-- OAI-PMH Java classes conforming to the XML Protocol Schema (is already part of de.muenchen.oss.oai.oai-pmh-spring-boot-starter)  -->
<dependency>
  <groupId>de.muenchen.oss.oai</groupId>
  <artifactId>oai-pmh-schema</artifactId>
  <version>2.0.0</version>
</dependency>

2. Implement the RequestProcessor Interface

The Starter provides a functional RestEndpoint that will autowire a Bean of type RequestProcessor.

The RequestProcessor interface needs to be implemented by at least one @Component in your application.

The Endpoint of the Starter will pass down these OAI-PMH requests to your implementation:

  • Identify
  • GetRecord
  • ListIdentifiers
  • ListMetadataFormats
  • ListRecords
  • ListSets

An example implementation can be found here.

Tipps:

  • 🥅 We offer a set of exceptions which get recognized by the starter that you can reuse

Contributing 🤝

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please open an issue with the tag "enhancement", fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Open an issue with the tag "enhancement"
  2. Fork the Project
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

More about this in the CODE_OF_CONDUCT file.

License 📄

Distributed under the MIT License. See LICENSE file for more information.

Contact 💌

it@M - [email protected]