/******************************************************************************* * Copyright (c) 2011 Subgraph. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Subgraph - initial API and implementation ******************************************************************************/ package com.subgraph.vega.internal.model.conditions; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import com.db4o.query.Query; import com.subgraph.vega.api.model.conditions.IHttpCondition; import com.subgraph.vega.api.model.conditions.IHttpConditionType; import com.subgraph.vega.api.model.conditions.match.IHttpConditionMatchAction; import com.subgraph.vega.internal.model.conditions.match.StringMatchActionSet; public class ConditionRequestMethod extends AbstractCondition { static private transient IHttpConditionType conditionType; static IHttpConditionType getConditionType() { synchronized(ConditionRequestMethod.class) { if(conditionType == null) conditionType = createType(); return conditionType; } } private static IHttpConditionType createType() { return new ConditionType("request method", new StringMatchActionSet()) { @Override public IHttpCondition createConditionInstance(IHttpConditionMatchAction matchAction) { return new ConditionRequestMethod(matchAction); } }; } protected ConditionRequestMethod(IHttpConditionMatchAction matchAction) { super(matchAction); } @Override public boolean matches(HttpRequest request) { if(request == null) return false; final String method = request.getRequestLine().getMethod(); return matchesString(method); } @Override public boolean matches(HttpResponse response) { return false; } @Override public boolean matches(HttpRequest request, HttpResponse response) { return matches(request); } @Override public IHttpConditionType getType() { return getConditionType(); } @Override public void filterRequestLogQuery(Query query) { constrainQuery(query.descend("requestMethod")); } }