Source:
<code>private boolean commitCursor(final String subscriptionId, final EventType eventType, final SubscriptionCursor cursor) throws ServiceUnavailableException, NoSuchSubscriptionException, InvalidCursorException { <START> final String topic = eventType.getTopic(); <END> final String offsetPath = format(PATH_ZK_OFFSET, subscriptionId, topic, cursor.getPartition()); try { @SuppressWarnings("unchecked") final Boolean committed = executeWithRetry(() -> { final Stat stat = new Stat(); final byte[] currentOffsetData = zkHolder.get() .getData() .storingStatIn(stat) .forPath(offsetPath); final String currentOffset = new String(currentOffsetData, Charsets.UTF_8); final NakadiCursor cursorToCommit = new NakadiCursor(topic, cursor.getPartition(), cursor.getOffset()); final NakadiCursor currentCursor = new NakadiCursor(topic, cursor.getPartition(), currentOffset); if (timelineService.getTopicRepository(eventType) .compareOffsets(cursorToCommit, currentCursor) > 0) { zkHolder.get() .setData() .withVersion(stat.getVersion()) .forPath(offsetPath, cursor.getOffset().getBytes(Charsets.UTF_8)); return true; } else { return false; } }, new RetryForSpecifiedCountStrategy<Boolean>(COMMIT_CONFLICT_RETRY_TIMES) .withExceptionsThatForceRetry(KeeperException.BadVersionException.class)); return Optional.ofNullable(committed).orElse(false); } catch (final IllegalArgumentException e) { throw new InvalidCursorException(CursorError.INVALID_FORMAT, cursor); } catch (final Exception e) { throw new ServiceUnavailableException(ERROR_COMMUNICATING_WITH_ZOOKEEPER, e); } }</code><technical_language>This is sense anymore. event type is coupled kafka topic name. this relation is a timeline now, proper get this topic is event type + cursors timelines</technical_language>

Target:
private boolean commitCursor(final String subscriptionId, final EventType eventType, final SubscriptionCursor cursor) throws ServiceUnavailableException, NoSuchSubscriptionException, InvalidCursorException { final String topic = timelineService.getTimeline(eventType).getTopic(); final String offsetPath = format(PATH_ZK_OFFSET, subscriptionId, topic, cursor.getPartition()); try { @SuppressWarnings("unchecked") final Boolean committed = executeWithRetry(() -> { final Stat stat = new Stat(); final byte[] currentOffsetData = zkHolder.get() .getData() .storingStatIn(stat) .forPath(offsetPath); final String currentOffset = new String(currentOffsetData, Charsets.UTF_8); final NakadiCursor cursorToCommit = new NakadiCursor(topic, cursor.getPartition(), cursor.getOffset()); final NakadiCursor currentCursor = new NakadiCursor(topic, cursor.getPartition(), currentOffset); if (timelineService.getTopicRepository(eventType) .compareOffsets(cursorToCommit, currentCursor) > 0) { zkHolder.get() .setData() .withVersion(stat.getVersion()) .forPath(offsetPath, cursor.getOffset().getBytes(Charsets.UTF_8)); return true; } else { return false; } }, new RetryForSpecifiedCountStrategy<Boolean>(COMMIT_CONFLICT_RETRY_TIMES) .withExceptionsThatForceRetry(KeeperException.BadVersionException.class)); return Optional.ofNullable(committed).orElse(false); } catch (final IllegalArgumentException e) { throw new InvalidCursorException(CursorError.INVALID_FORMAT, cursor); } catch (final Exception e) { throw new ServiceUnavailableException(ERROR_COMMUNICATING_WITH_ZOOKEEPER, e); } }