Skip to content

Latest commit

 

History

History

echo-core

Echo: Core Library

The Core library provides domain-specific functionality for a podcast search engine. This library is written in Java and therefore prodices a Java API. It should be accessible for Java-compatible technologies. We've tested interoperability with Scala.

Features

The library specifically provides solutions for the following issues:

  • Data representation:
    • Database entity classes, see the echo.core.domain.entity package.
    • Data transfer objects (DTO) for domain information. The standard DTOs are Java interfaces. This library builds on immutables to provide immutables and modifiable implementations of these interfaces. The instances are safe to use with Java-based actor libraries, since they withstand the perils of shared memory environments like the JVM.
    • The mapper instances in the echo.core.mapper package provide means to transform between various data formats.
  • Interfaces to write structured information to and search within a Lucene reverse index structure. See the echo.core.index package.
  • A parser to transform RSS 2.0 and Atom based feed XML data to domain DTOs. The parser also extracts information from the iTunes namespaces xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" as well as chapter marks from the Podlove namespace xmlns:psc="http://podlove.org/simple-chapters/". See the echo.core.parse.rss package. The FeedParser interfaces has one implementation based on the ROME framework.
  • APIs for podcast directories to find unindexed podcast feeds. The only complete implementation is for the Fyyd podcast directory. See the echo.core.parse.api package.
  • An HTTP client wrapper for that is mindful of common issues regarding Podcast feeds (e.g. links to media files where websites are expected). See echo.core.http.HttpClient.
  • Command classes for usage in AMQP compatible messaging systems (tested with RabbitMQ). See the echo.core.async package.
  • Solutions to gather various informations for benchmarks. See the echo.core.benchmark package.

Usage

In order to use this library within a search engine architecture, it must be installed into the local Maven repository. Use Gradle to build the library JAR and add it to Maven local:

./gradlew clean build publishToMavenLocal

This library also provides an interactive REPL to test some features. Run the REPL application with:

./gradlew run