Skip to content

Commit

Permalink
Java API in PersistenceQuery - add new methods that don't require the…
Browse files Browse the repository at this point in the history
… unused class param
  • Loading branch information
pjfanning committed Feb 8, 2025
1 parent ce08497 commit 6219c94
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 32 deletions.
2 changes: 1 addition & 1 deletion docs/src/main/paradox/persistence-query.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Java
: @@snip [PersistenceQueryDocTest.java](/docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java) { #basic-usage }

Journal implementers are encouraged to put this identifier in a variable known to the user, such that one can access it via
@scala[@scaladoc[readJournalFor[NoopJournal](NoopJournal.identifier)](pekko.persistence.query.PersistenceQuery#readJournalFor[T%3C:org.apache.pekko.persistence.query.scaladsl.ReadJournal](readJournalPluginId:String):T)]@java[@javadoc[getJournalFor(NoopJournal.class, NoopJournal.identifier)](pekko.persistence.query.PersistenceQuery#getReadJournalFor(java.lang.Class,java.lang.String))], however this is not enforced.
@scala[@scaladoc[readJournalFor[NoopJournal](NoopJournal.identifier)](pekko.persistence.query.PersistenceQuery#readJournalFor[T%3C:org.apache.pekko.persistence.query.scaladsl.ReadJournal](readJournalPluginId:String):T)]@java[@javadoc[getJournalFor(NoopJournal.class, NoopJournal.identifier)](pekko.persistence.query.PersistenceQuery#getReadJournalFor(java.lang.String))], however this is not enforced.

### Predefined queries

Expand Down
24 changes: 8 additions & 16 deletions docs/src/test/java/jdocs/persistence/PersistenceQueryDocTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,7 @@ void demonstrateBasicUsage() {
// obtain read journal by plugin id
final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// issue query to journal
Source<EventEnvelope, NotUsed> source =
Expand All @@ -230,8 +229,7 @@ void demonstrateBasicUsage() {
void demonstrateAllPersistenceIdsLive() {
final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #all-persistence-ids-live
readJournal.persistenceIds();
Expand All @@ -243,8 +241,7 @@ void demonstrateNoRefresh() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #all-persistence-ids-snap
readJournal.currentPersistenceIds();
Expand All @@ -256,8 +253,7 @@ void demonstrateRefresh() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #events-by-persistent-id
readJournal.eventsByPersistenceId("user-us-1337", 0L, Long.MAX_VALUE);
Expand All @@ -269,8 +265,7 @@ void demonstrateEventsByTag() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #events-by-tag
// assuming journal is able to work with numeric offsets we can:
Expand Down Expand Up @@ -302,8 +297,7 @@ void demonstrateMaterializedQueryValues() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #advanced-journal-query-usage

Expand Down Expand Up @@ -347,8 +341,7 @@ void demonstrateWritingIntoDifferentStore() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #projection-into-different-store-rs
final ReactiveStreamsCompatibleDBDriver driver = new ReactiveStreamsCompatibleDBDriver();
Expand Down Expand Up @@ -379,8 +372,7 @@ void demonstrateWritingIntoDifferentStoreWithMapAsync() {

final MyJavadslReadJournal readJournal =
PersistenceQuery.get(system)
.getReadJournalFor(
MyJavadslReadJournal.class, "pekko.persistence.query.my-read-journal");
.getReadJournalFor("pekko.persistence.query.my-read-journal");

// #projection-into-different-store-simple
final ExampleStore store = new ExampleStore();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ public void demonstrateReadJournal() {
// #get-read-journal
LeveldbReadJournal queries =
PersistenceQuery.get(system)
.getReadJournalFor(LeveldbReadJournal.class, LeveldbReadJournal.Identifier());
.getReadJournalFor(LeveldbReadJournal.Identifier());
// #get-read-journal
}

public void demonstrateEventsByPersistenceId() {
// #EventsByPersistenceId
LeveldbReadJournal queries =
PersistenceQuery.get(system)
.getReadJournalFor(LeveldbReadJournal.class, LeveldbReadJournal.Identifier());
.getReadJournalFor(LeveldbReadJournal.Identifier());

Source<EventEnvelope, NotUsed> source =
queries.eventsByPersistenceId("some-persistence-id", 0, Long.MAX_VALUE);
Expand All @@ -53,7 +53,7 @@ public void demonstrateAllPersistenceIds() {
// #AllPersistenceIds
LeveldbReadJournal queries =
PersistenceQuery.get(system)
.getReadJournalFor(LeveldbReadJournal.class, LeveldbReadJournal.Identifier());
.getReadJournalFor(LeveldbReadJournal.Identifier());

Source<String, NotUsed> source = queries.persistenceIds();
// #AllPersistenceIds
Expand All @@ -63,7 +63,7 @@ public void demonstrateEventsByTag() {
// #EventsByTag
LeveldbReadJournal queries =
PersistenceQuery.get(system)
.getReadJournalFor(LeveldbReadJournal.class, LeveldbReadJournal.Identifier());
.getReadJournalFor(LeveldbReadJournal.Identifier());

Source<EventEnvelope, NotUsed> source = queries.eventsByTag("green", new Sequence(0L));
// #EventsByTag
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,37 @@ class PersistenceQuery(system: ExtendedActorSystem)
/**
* Java API: Returns the [[pekko.persistence.query.javadsl.ReadJournal]] specified by the given
* read journal configuration entry.
* @since 1.2.0
*/
final def getReadJournalFor[T <: javadsl.ReadJournal](
readJournalPluginId: String,
readJournalPluginConfig: Config): T =
pluginFor(readJournalPluginId, readJournalPluginConfig).javadslPlugin.asInstanceOf[T]

/**
* Java API: Returns the [[pekko.persistence.query.javadsl.ReadJournal]] specified by the given
* read journal configuration entry.
* @since 1.2.0
*/
final def getReadJournalFor[T <: javadsl.ReadJournal](readJournalPluginId: String): T =
getReadJournalFor[T](readJournalPluginId, ConfigFactory.empty())

/**
* Java API: Returns the [[pekko.persistence.query.javadsl.ReadJournal]] specified by the given
* read journal configuration entry.
*/
@deprecated("Use getReadJournalFor without passing the class param instead", "1.2.0")
final def getReadJournalFor[T <: javadsl.ReadJournal](
@unused clazz: Class[T],
readJournalPluginId: String,
readJournalPluginConfig: Config): T =
pluginFor(readJournalPluginId, readJournalPluginConfig).javadslPlugin.asInstanceOf[T]

/**
* Java API: Returns the [[pekko.persistence.query.javadsl.ReadJournal]] specified by the given
* read journal configuration entry.
*/
@deprecated("Use getReadJournalFor without passing the class param instead", "1.2.0")
final def getReadJournalFor[T <: javadsl.ReadJournal](clazz: Class[T], readJournalPluginId: String): T =
getReadJournalFor[T](clazz, readJournalPluginId, ConfigFactory.empty())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ package org.apache.pekko.persistence.query.javadsl
* Usage:
* {{{
* SomeCoolReadJournal journal =
* PersistenceQuery.get(system).getReadJournalFor(SomeCoolReadJournal.class, queryPluginConfigPath);
* PersistenceQuery.get(system).getReadJournalFor(queryPluginConfigPath);
* Source<EventEnvolope, Unit> events = journal.eventsByTag("mytag", 0L);
* }}}
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import pekko.stream.javadsl.Source
* It is retrieved with:
* {{{
* LeveldbReadJournal queries =
* PersistenceQuery.get(system).getReadJournalFor(LeveldbReadJournal.class, LeveldbReadJournal.Identifier());
* PersistenceQuery.get(system).getReadJournalFor(LeveldbReadJournal.Identifier());
* }}}
*
* Corresponding Scala API is in [[pekko.persistence.query.journal.leveldb.scaladsl.LeveldbReadJournal]].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class PersistenceQueryTest {
@SuppressWarnings("unused")
public void shouldExposeJavaDSLFriendlyQueryJournal() throws Exception {
final DummyJavaReadJournal readJournal =
PersistenceQuery.get(system).getReadJournalFor(DummyJavaReadJournal.class, "noop-journal");
PersistenceQuery.get(system).getReadJournalFor("noop-journal");
final org.apache.pekko.stream.javadsl.Source<String, NotUsed> ids =
readJournal.persistenceIds();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ class EventsBySliceSpec
PersistenceTestKitReadJournal.Identifier)

private val queriesJava =
persistenceQuery.getReadJournalFor(
classOf[JavaPersistenceTestKitReadJournal],
JavaPersistenceTestKitReadJournal.Identifier)
persistenceQuery.getReadJournalFor(JavaPersistenceTestKitReadJournal.Identifier)

def setup(persistenceId: String): ActorRef[Command] = {
val probe = createTestProbe[Done]()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,7 @@ class EventsByTagSpec
PersistenceTestKitReadJournal.Identifier)

private val queriesJava =
persistenceQuery.getReadJournalFor(
classOf[JavaPersistenceTestKitReadJournal],
JavaPersistenceTestKitReadJournal.Identifier)
persistenceQuery.getReadJournalFor(JavaPersistenceTestKitReadJournal.Identifier)

def setup(persistenceId: String, tags: Set[String]): ActorRef[Command] = {
val probe = createTestProbe[Done]()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ public class EventSourcedBehaviorJavaDslTest extends JUnitSuite {

private PersistenceTestKitReadJournal queries =
PersistenceQuery.get(Adapter.toClassic(testKit.system()))
.getReadJournalFor(
PersistenceTestKitReadJournal.class, PersistenceTestKitReadJournal.Identifier());
.getReadJournalFor(PersistenceTestKitReadJournal.Identifier());

interface Command extends CborSerializable {}

Expand Down

0 comments on commit 6219c94

Please sign in to comment.