Skip to content

Commit

Permalink
Refactor StatesNodePath
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Jan 7, 2025
1 parent 87b67f1 commit 7af885f
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public final class StatesNodePath {

private static final String LISTENER_ASSISTED_NODE = "listener_assisted";

private static final String DATABASE_PATTERN = "(\\w+)";

/**
* Get cluster state path.
*
Expand All @@ -46,33 +48,33 @@ public static String getClusterStatePath() {
}

/**
* Get listener assisted node path.
* Get listener assisted node root path.
*
* @return listener assisted node path
* @return listener assisted node root path
*/
public static String getListenerAssistedNodePath() {
public static String getListenerAssistedNodeRootPath() {
return String.join("/", ROOT_NODE, LISTENER_ASSISTED_NODE);
}

/**
* Get database name by listener assisted node path.
* Get database name listener assisted node path.
*
* @param nodePath path
* @return database name
* @param databaseName database name
* @return database name listener assisted node path
*/
public static Optional<String> findDatabaseNameByListenerAssistedNodePath(final String nodePath) {
Pattern pattern = Pattern.compile(getListenerAssistedNodePath() + "/(\\w+)$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(nodePath);
return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
public static String getListenerAssistedNodePath(final String databaseName) {
return String.join("/", getListenerAssistedNodeRootPath(), databaseName);
}

/**
* Get database name listener assisted node path.
* Find database name by listener assisted node path.
*
* @param databaseName database name
* @return database name listener assisted node path
* @param listenerAssistedNodePath listener assisted node path
* @return found database name
*/
public static String getDatabaseNameListenerAssistedNodePath(final String databaseName) {
return String.join("/", ROOT_NODE, LISTENER_ASSISTED_NODE, databaseName);
public static Optional<String> findDatabaseName(final String listenerAssistedNodePath) {
Pattern pattern = Pattern.compile(getListenerAssistedNodePath(DATABASE_PATTERN) + "$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(listenerAssistedNodePath);
return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@

import org.junit.jupiter.api.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import java.util.Optional;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;

class StatesNodePathTest {

Expand All @@ -31,17 +33,18 @@ void assertGetClusterStatePath() {
}

@Test
void assertGetListenerAssistedNodePath() {
assertThat(StatesNodePath.getListenerAssistedNodePath(), is("/states/listener_assisted"));
void assertGetListenerAssistedNodeRootPath() {
assertThat(StatesNodePath.getListenerAssistedNodeRootPath(), is("/states/listener_assisted"));
}

@Test
void assertFindDatabaseNameByListenerAssistedNodePath() {
assertTrue(StatesNodePath.findDatabaseNameByListenerAssistedNodePath("/states/listener_assisted/foo_db").isPresent());
void assertGetListenerAssistedNodePath() {
assertThat(StatesNodePath.getListenerAssistedNodePath("foo_db"), is("/states/listener_assisted/foo_db"));
}

@Test
void assertGetDatabaseNameListenerAssistedNodePath() {
assertThat(StatesNodePath.getDatabaseNameListenerAssistedNodePath("foo_db"), is("/states/listener_assisted/foo_db"));
void assertFindDatabaseName() {
assertThat(StatesNodePath.findDatabaseName("/states/listener_assisted/foo_db"), is(Optional.of("foo_db")));
assertFalse(StatesNodePath.findDatabaseName("/states/listener_assisted").isPresent());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public final class ListenerAssistedPersistService {
* @param listenerAssistedType listener assisted type
*/
public void persistDatabaseNameListenerAssisted(final String databaseName, final ListenerAssistedType listenerAssistedType) {
repository.persistEphemeral(StatesNodePath.getDatabaseNameListenerAssistedNodePath(databaseName), listenerAssistedType.name());
repository.persistEphemeral(StatesNodePath.getListenerAssistedNodePath(databaseName), listenerAssistedType.name());
}

/**
Expand All @@ -45,6 +45,6 @@ public void persistDatabaseNameListenerAssisted(final String databaseName, final
* @param databaseName database name
*/
public void deleteDatabaseNameListenerAssisted(final String databaseName) {
repository.delete(StatesNodePath.getDatabaseNameListenerAssistedNodePath(databaseName));
repository.delete(StatesNodePath.getListenerAssistedNodePath(databaseName));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public final class ListenerAssistedChangedHandler implements DataChangedEventHan

@Override
public String getSubscribedKey() {
return StatesNodePath.getListenerAssistedNodePath();
return StatesNodePath.getListenerAssistedNodeRootPath();
}

@Override
Expand All @@ -49,7 +49,7 @@ public Collection<Type> getSubscribedTypes() {

@Override
public void handle(final ContextManager contextManager, final DataChangedEvent event) {
StatesNodePath.findDatabaseNameByListenerAssistedNodePath(event.getKey()).ifPresent(optional -> handle(contextManager, optional, ListenerAssistedType.valueOf(event.getValue())));
StatesNodePath.findDatabaseName(event.getKey()).ifPresent(optional -> handle(contextManager, optional, ListenerAssistedType.valueOf(event.getValue())));
}

private static void handle(final ContextManager contextManager, final String databaseName, final ListenerAssistedType listenerAssistedType) {
Expand Down

0 comments on commit 7af885f

Please sign in to comment.