/**
* Copyright (c) 2009-2011 VMware, Inc. All Rights Reserved.
*
* 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 com.springsource.insight.plugin.springweb.controller;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
import com.springsource.insight.collection.test.OperationCollectionAspectTestSupport;
import com.springsource.insight.intercept.operation.Operation;
import com.springsource.insight.intercept.operation.OperationMap;
import com.springsource.insight.util.MapUtil;
/**
*
*/
public abstract class AbstractControllerOperationCollectionAspectTestSupport
extends OperationCollectionAspectTestSupport {
private final Boolean legacyAPI;
protected AbstractControllerOperationCollectionAspectTestSupport(boolean isLegacy) {
legacyAPI = Boolean.valueOf(isLegacy);
}
protected Operation assertControllerOperation() {
Operation op = getLastEntered();
assertNotNull("No operation entered", op);
assertEquals("Mismatched operation type", ControllerEndPointAnalyzer.CONTROLLER_METHOD_TYPE, op.getType());
assertEquals("Mismatched legacy flag value", legacyAPI, op.get(ControllerEndPointAnalyzer.LEGACY_PROPNAME, Boolean.class));
return op;
}
protected Operation assertEncodeReturnModelValues(TestSupportController controller) {
return assertEncodeModelValues(ControllerOperationCollector.RETURN_VALUE_MODEL_MAP, controller.returnModel);
}
protected Operation assertControllerView(String expected) {
Operation op = assertControllerOperation();
assertControllerView(op, expected);
return op;
}
protected static final String assertControllerView(Operation op, String expected) {
String viewName = op.get(ControllerOperationCollector.RETURN_VALUE_VIEW_NAME, String.class);
assertEquals("Mismatched view name", expected, viewName);
return viewName;
}
protected Operation assertEncodeModelValues(String mapName, Map<String, ?> expected) {
Operation op = assertControllerOperation();
assertEncodeModelValues(op, mapName, expected);
return op;
}
protected static final OperationMap assertEncodeModelValues(Operation op, String mapName, Map<String, ?> expected) {
OperationMap map = op.get(mapName, OperationMap.class);
assertNotNull(mapName + ": missing encoding", map);
return assertEncodeModelValues(map, mapName, expected);
}
protected static final OperationMap assertEncodeModelValues(OperationMap map, String mapName, Map<String, ?> expected) {
assertEquals(mapName + ": Mismatched size", MapUtil.size(expected), map.size());
for (Map.Entry<String, ?> me : map.entrySet()) {
String key = me.getKey();
Object actualValue = me.getValue();
Object expectedValue = ControllerOperationCollector.resolveCollectedValue(expected.get(key));
assertEquals(mapName + ": Mismatched value for " + key, expectedValue, actualValue);
}
return map;
}
protected static final Map<String, Object> createTestModelMap(final String testName) {
return new TreeMap<String, Object>() {
private static final long serialVersionUID = 1L;
{
put("curDate", new Date());
put("nanoTime", Long.valueOf(System.nanoTime()));
put("testName", testName);
put("boolValue", Boolean.valueOf((System.currentTimeMillis() & 0x01L) == 0L));
}
};
}
protected static class TestSupportController {
protected final Map<String, ?> returnModel;
protected final String returnView;
TestSupportController(Map<String, ?> outgoingModel, String outgoingView) {
returnModel = outgoingModel;
returnView = outgoingView;
}
}
}