public Builder status(KieContainerStatus containerStatus) { this.statusFilter = new KieContainerStatusFilter(containerStatus); return this; }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } KieContainerResourceFilter that = (KieContainerResourceFilter) o; if (releaseIdFilter != null ? !releaseIdFilter.equals(that.releaseIdFilter) : that.releaseIdFilter != null) return false; return statusFilter != null ? statusFilter.equals(that.statusFilter) : that.statusFilter == null; }
@Override public int hashCode() { int result = releaseIdFilter != null ? releaseIdFilter.hashCode() : 0; result = 31 * result + (statusFilter != null ? statusFilter.hashCode() : 0); return result; }
@Test public void parseFromNullableStringWithMultipleStatuses() { KieContainerStatusFilter filter = KieContainerStatusFilter.parseFromNullableString("creating,started,failed"); Assertions.assertThat(filter).isEqualTo( new KieContainerStatusFilter(KieContainerStatus.CREATING, KieContainerStatus.STARTED, KieContainerStatus.FAILED)); } }
/** * Creates representation of this filter which can be used as part of the URL (e.g. the "?" query part). * * @return string representation that can be directly used in URL (as query params), without the leading '?' */ public String toURLQueryString() { StringJoiner joiner = new StringJoiner("&"); if (releaseIdFilter.getGroupId() != null) { joiner.add("groupId=" + releaseIdFilter.getGroupId()); } if (releaseIdFilter.getArtifactId() != null) { joiner.add("artifactId=" + releaseIdFilter.getArtifactId()); } if (releaseIdFilter.getVersion() != null) { joiner.add("version=" + releaseIdFilter.getVersion()); } // don't send over the default status filter (e.g. one that accepts all the states) as it is not needed, it is // the default if (!statusFilter.equals(KieContainerStatusFilter.ACCEPT_ALL)) { String status = statusFilter.getAcceptedStatuses() .stream() .map(s -> s.toString()) .collect(Collectors.joining(",")); joiner.add("status=" + status); } return joiner.toString(); }
@Test public void parseFromNullableStringWithNull() { KieContainerStatusFilter filter = KieContainerStatusFilter.parseFromNullableString(null); Assertions.assertThat(filter).isEqualTo(KieContainerStatusFilter.ACCEPT_ALL); }
public boolean accept(KieContainerResource kieContainerResource) { if (kieContainerResource == null) { throw new IllegalArgumentException("KieContainerResource can not be null!"); } // in case resolved release id exists, check against that ReleaseId resolvedReleaseId = kieContainerResource.getResolvedReleaseId(); if (resolvedReleaseId != null) { if (!releaseIdFilter.accept(resolvedReleaseId)) { return false; } } else { if (!releaseIdFilter.accept(kieContainerResource.getReleaseId())) { return false; } } KieContainerStatus status = kieContainerResource.getStatus(); if (status != null && !statusFilter.accept(status)) { return false; } // all sub-filters accepted the container, so it is a match return true; }
@Test public void parseFromNullableStringWithSingleStatus() { KieContainerStatusFilter filter = KieContainerStatusFilter.parseFromNullableString("started"); Assertions.assertThat(filter).isEqualTo(new KieContainerStatusFilter(KieContainerStatus.STARTED)); }
@Test public void parseFromNullableStringWithEmptyString() { KieContainerStatusFilter filter = KieContainerStatusFilter.parseFromNullableString(""); Assertions.assertThat(filter).isEqualTo(KieContainerStatusFilter.ACCEPT_ALL); }
@Test public void parseFromNullableStringWithSingleStatusUppercase() { KieContainerStatusFilter filter = KieContainerStatusFilter.parseFromNullableString("STARTED"); Assertions.assertThat(filter).isEqualTo(new KieContainerStatusFilter(KieContainerStatus.STARTED)); }
public Builder statuses(KieContainerStatus... containerStatuses) { this.statusFilter = new KieContainerStatusFilter(containerStatuses); return this; }
private static KieContainerStatusFilter createKieContainerStatusFilter() { return new KieContainerStatusFilter(); }
/** * Creates status filter from the specified string. The expected format is "status1,status2,status3,...". * * Important: in case the specified string is empty or null, the default ACCEPT_ALL filter is created * * @param inputStr string representation of the filter * @return new filter parsed from the string or ACCEPT_ALL filter in case the string is empty or null */ public static KieContainerStatusFilter parseFromNullableString(String inputStr) { if (inputStr == null || inputStr.isEmpty()) { return ACCEPT_ALL; } List<KieContainerStatus> statuses = new ArrayList<KieContainerStatus>(); String[] strStatuses = inputStr.split(","); for (String strStatus : strStatuses) { statuses.add(KieContainerStatus.valueOf(strStatus.toUpperCase())); } return new KieContainerStatusFilter(statuses); }