| package net.onrc.onos.api.rest; |
| |
| import org.hamcrest.Description; |
| import org.hamcrest.Factory; |
| import org.hamcrest.Matcher; |
| import org.hamcrest.TypeSafeMatcher; |
| import org.restlet.data.Status; |
| import org.restlet.resource.ClientResource; |
| |
| /** |
| * Hamcrest Matcher to determine if a Restlet ClientResource object's status |
| * matches a given status. |
| */ |
| public final class ClientResourceStatusMatcher extends TypeSafeMatcher<ClientResource> { |
| private Status status; |
| |
| /** |
| * Hide constructor with no arguments. |
| */ |
| @SuppressWarnings("unused") |
| private ClientResourceStatusMatcher() { } |
| |
| /** |
| * Create a matcher for the given status object. |
| * |
| * @param newStatus status to be matched against |
| */ |
| private ClientResourceStatusMatcher(final Status newStatus) { |
| status = newStatus; |
| } |
| |
| /** |
| * Match a Client resource. Compares the status of the given client against |
| * the expected Status that was given when the object was created. |
| * |
| * @param client the client to perform the match against |
| * @return true if the Status of the given client matches the Status that |
| * was given when the Matcher was created, false otherwise |
| */ |
| @Override |
| public boolean matchesSafely(ClientResource client) { |
| return status.equals(client.getStatus()); |
| } |
| |
| /** |
| * Generate a Hamcrest description for the 'to' object of this Matcher. |
| * |
| * @param description Description object to add the textual description to |
| */ |
| @Override |
| public void describeTo(Description description) { |
| description.appendText("status '") |
| .appendText(status.getDescription()) |
| .appendText("'"); |
| } |
| |
| /** |
| * Describe why a mismatch was generated for the given client. |
| * |
| * @param client the client that was detected as a mismatch |
| * @param mismatchDescription Description object to add the textual |
| * description to |
| */ |
| @Override |
| public void describeMismatchSafely(ClientResource client, |
| Description mismatchDescription) { |
| mismatchDescription.appendText(" was '") |
| .appendText(client.getStatus().getDescription()) |
| .appendText("'"); |
| } |
| |
| /** |
| * Factory method to create a status Matcher for an ClientResource. |
| * |
| * @param status HTTP status code that the client status is matched against. |
| * @return Matcher object |
| */ |
| @Factory |
| public static Matcher<ClientResource> hasStatusOf(final Status status) { |
| return new ClientResourceStatusMatcher(status); |
| } |
| } |