/*
* Copyright (C) 2014 Stefan Niederhauser (nidin@gmx.ch)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package guru.nidi.ramltester.core;
import guru.nidi.ramltester.util.Message;
import org.raml.model.Action;
import org.raml.model.MimeType;
import org.raml.model.Resource;
/**
*
*/
final class Locator {
private Resource resource;
private Action action;
private MimeType requestMime;
private String responseCode;
private MimeType responseMime;
public Locator() {
}
public Locator(Resource resource) {
resource(resource);
}
public Locator(Action action) {
action(action);
}
public Locator(MimeType mimeType) {
requestMime(mimeType);
}
public void resource(Resource resource) {
this.resource = resource;
action = null;
requestMime = null;
responseCode = null;
responseMime = null;
}
public void action(Action action) {
this.resource = action.getResource();
this.action = action;
requestMime = null;
responseCode = null;
responseMime = null;
}
public void requestMime(MimeType requestMime) {
this.requestMime = requestMime;
responseCode = null;
responseMime = null;
}
public void responseCode(String responseCode) {
this.responseCode = responseCode;
requestMime = null;
responseMime = null;
}
public void responseMime(MimeType responseMime) {
this.responseMime = responseMime;
requestMime = null;
}
@Override
public String toString() {
if (responseCode != null) {
return (actionString() + " " + new Message("response", responseCode).toString()) +
(responseMime == null ? "" : (" " + new Message("mimeType", responseMime.getType()).toString()));
}
if (requestMime != null) {
return (action == null ? "" : (actionString() + " ")) +
new Message("mimeType", requestMime.getType()).toString();
}
if (action != null) {
return actionString();
}
if (resource != null) {
return new Message("resource", resource.getUri()).toString();
}
return new Message("root").toString();
}
private String actionString() {
return new Message("action", action.getType(), action.getResource().getUri()).toString();
}
}