package samplest.core;
import com.google.common.base.Optional;
import restx.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Date: 4/1/14
* Time: 09:27
*/
public class LifecycleListenerFilter implements RestxFilter, RestxHandler, RouteLifecycleListener {
List<RestxRoute> matched = new ArrayList<>();
List<Optional<?>> inputs = new ArrayList<>();
List<Optional<?>> outputs = new ArrayList<>();
int beforeWriteContentCount;
int afterWriteContentCount;
@Override
public Optional<RestxHandlerMatch> match(RestxRequest req) {
if (req.getRestxPath().startsWith("/core/hello")) {
return Optional.of(new RestxHandlerMatch(new StdRestxRequestMatch(req.getRestxPath()), this));
} else {
return Optional.absent();
}
}
@Override
public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException {
ctx.nextHandlerMatch().handle(req, resp, ctx.withListener(this));
}
@Override
public void onRouteMatch(RestxRoute route, RestxRequest req, RestxResponse resp) {
matched.add(route);
}
@Override
public void onEntityInput(RestxRoute route, RestxRequest req, RestxResponse resp, Optional<?> input) {
inputs.add(input);
}
@Override
public void onEntityOutput(RestxRoute route, RestxRequest req, RestxResponse resp, Optional<?> input, Optional<?> output) {
outputs.add(output);
}
@Override
public void onBeforeWriteContent(RestxRequest req, RestxResponse resp) {
beforeWriteContentCount++;
}
@Override
public void onAfterWriteContent(RestxRequest req, RestxResponse resp) {
afterWriteContentCount++;
}
}