String partitionName = optValues[2];
ResourceId resourceId = ResourceId.from(resourceName);
PartitionId partitionId = PartitionId.from(partitionName);
ResourceAccessor accessor = resourceAccessor(clusterName);
Resource resource = accessor.readResource(resourceId);
StringBuilder sb = new StringBuilder();
Map<ParticipantId, State> stateMap = resource.getExternalView().getStateMap(partitionId);
sb.append(resourceName + "/" + partitionName + ", externalView: " + stateMap);
PartitionedRebalancerContext partitionedContext =
resource.getRebalancerConfig().getRebalancerContext(PartitionedRebalancerContext.class);
if (partitionedContext != null) {
// for partitioned contexts, check the mode and apply mode-specific information if possible
if (partitionedContext.getRebalanceMode() == RebalanceMode.SEMI_AUTO) {
SemiAutoRebalancerContext semiAutoContext =
resource.getRebalancerConfig().getRebalancerContext(SemiAutoRebalancerContext.class);
sb.append(", preferenceList: " + semiAutoContext.getPreferenceList(partitionId));
} else if (partitionedContext.getRebalanceMode() == RebalanceMode.CUSTOMIZED) {
CustomRebalancerContext customContext =
resource.getRebalancerConfig().getRebalancerContext(CustomRebalancerContext.class);
sb.append(", preferenceMap: " + customContext.getPreferenceMap(partitionId));
}
if (partitionedContext.anyLiveParticipant()) {
sb.append(", anyLiveParticipant: " + partitionedContext.anyLiveParticipant());
} else {