Package com.springsource.insight.plugin.springweb.controller

Source Code of com.springsource.insight.plugin.springweb.controller.ControllerOperationCollectionAspectTest$ExampleController

/**
* 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.Collections;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.junit.Test;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;

import com.springsource.insight.intercept.operation.Operation;
import com.springsource.insight.intercept.operation.OperationMap;

public class ControllerOperationCollectionAspectTest extends AbstractControllerOperationCollectionAspectTestSupport {
    public ControllerOperationCollectionAspectTest() {
        super(false);
    }

    @Test
    public void testControllerMonitored() {
        ExampleController testController = new ExampleController();
        testController.example();

        Operation op = assertControllerOperation();
        assertNullValue(ControllerOperationCollector.RETURN_VALUE_MODEL_MAP, op.get(ControllerOperationCollector.RETURN_VALUE_MODEL_MAP, OperationMap.class));
        assertNullValue(ControllerOperationCollectionAspect.MODEL_ARGUMENT_NAME, op.get(ControllerOperationCollectionAspect.MODEL_ARGUMENT_NAME, OperationMap.class));
    }

    @Test
    public void testReturnModelValue() {
        ExampleController controller = createTestExampleController("testReturnModelValue");
        controller.returnModelValue();
        assertEncodeReturnModelValues(controller);
    }

    @Test
    public void testReturnModelMapValue() {
        ExampleController controller = createTestExampleController("testReturnModelMapValue");
        controller.returnModelMapValue();
        assertEncodeReturnModelValues(controller);
    }

    @Test
    public void testReturnModelAndViewValue() {
        ExampleController controller = createTestExampleController("testReturnModelAndViewValue");
        controller.returnModelAndViewValue();

        Operation op = assertEncodeReturnModelValues(controller);
        assertControllerView(op, controller);
    }

    @Test
    public void testReturnMapValue() {
        ExampleController controller = createTestExampleController("testReturnMapValue");
        controller.returnMapValue();
        assertEncodeReturnModelValues(controller);
    }

    @Test
    public void testWithModelArgument() {
        ExampleController controller = createTestExampleController("testWithModelArgument");
        Map<String, ?> argModel = createTestArgumentModelMap("testWithModelArgument");
        controller.withModelArgument(new ExtendedModelMap().addAllAttributes(argModel));
        assertEncodeModelArgValues(argModel);
    }

    @Test
    public void testWithModelMapArgument() {
        ExampleController controller = createTestExampleController("testWithModelMapArgument");
        Map<String, ?> argModel = createTestArgumentModelMap("testWithModelMapArgument");
        controller.withModelMapArgument(new ModelMap().addAllAttributes(argModel));
        assertEncodeModelArgValues(argModel);
    }

    @Test
    public void testWithSimpleMapArgument() {
        ExampleController controller = createTestExampleController("testWithSimpleMapArgument");
        Map<String, ?> argModel = createTestArgumentModelMap("testWithSimpleMapArgument");
        controller.withSimpleMapArgument(argModel);
        assertEncodeModelArgValues(argModel);
    }

    @Test
    public void testReturnModelAndViewValueWithModelArgument() {
        ExampleController controller = createTestExampleController("testReturnModelAndViewValue");
        Map<String, ?> argModel = createTestArgumentModelMap("testReturnModelAndViewValue");
        controller.returnModelAndViewValueWithModelArgument(new ExtendedModelMap().addAllAttributes(argModel));

        Operation op = assertEncodeReturnModelValues(controller);
        assertEncodeModelArgValues(op, argModel);
        assertControllerView(op, controller);
    }

    @Test
    public void testReturnView() {
        ExampleController controller = createTestExampleController("testReturnView");
        View view = controller.returnView();
        assertControllerView(view.getClass().getSimpleName());
    }

    @Test
    public void testReturnViewName() {
        ExampleController controller = createTestExampleController("testReturnViewName");
        assertControllerView(controller.returnViewName());
    }

    private ExampleController createTestExampleController(final String testName) {
        return new ExampleController(createTestReturnModelMap(testName), testName);
    }

    private Map<String, Object> createTestArgumentModelMap(final String testName) {
        return createTestModelMap(testName + "[" + ControllerOperationCollectionAspect.MODEL_ARGUMENT_NAME + "]");
    }

    private Map<String, Object> createTestReturnModelMap(final String testName) {
        return createTestModelMap(testName + "[" + ControllerOperationCollector.RETURN_VALUE_MODEL_MAP + "]");
    }

    private static String assertControllerView(Operation op, ExampleController controller) {
        return assertControllerView(op, controller.returnView);
    }

    private Operation assertEncodeModelArgValues(Map<String, ?> argModel) {
        Operation op = getLastEntered();
        assertNotNull("No operation entered", op);
        assertEncodeModelArgValues(op, argModel);
        return op;
    }

    private OperationMap assertEncodeModelArgValues(Operation op, Map<String, ?> argModel) {
        return assertEncodeModelValues(op, ControllerOperationCollectionAspect.MODEL_ARGUMENT_NAME, argModel);
    }

    @Override
    public ControllerOperationCollectionAspect getAspect() {
        return ControllerOperationCollectionAspect.aspectOf();
    }

    @Controller
    static class ExampleController extends TestSupportController {
        ExampleController() {
            this(Collections.<String, Object>emptyMap());
        }

        ExampleController(Map<String, ?> outgoingModel) {
            this(outgoingModel, "");
        }

        ExampleController(Map<String, ?> outgoingModel, String outgoingView) {
            super(outgoingModel, outgoingView);
        }

        @RequestMapping(value = "/example")
        public void example() {
            // do nothing
        }

        @RequestMapping(value = "/returnModel")
        public Model returnModelValue() {
            return new ExtendedModelMap().addAllAttributes(returnModel);
        }

        @RequestMapping(value = "/returnModelMapValue")
        public ModelMap returnModelMapValue() {
            return new ModelMap().addAllAttributes(returnModel);
        }

        @RequestMapping(value = "/returnModelAndViewValue")
        public ModelAndView returnModelAndViewValue() {
            return new ModelAndView(returnView, returnModel);
        }

        @RequestMapping(value = "/returnModelAndViewValueWithModelArgument")
        public ModelAndView returnModelAndViewValueWithModelArgument(Model model) {
            assertNotNull("Missing model value", model);
            return new ModelAndView(returnView, returnModel);
        }

        @RequestMapping(value = "/returnMapValue")
        public Map<String, ?> returnMapValue() {
            return returnModel;
        }

        @RequestMapping(value = "/withModelArgument")
        public void withModelArgument(Model model) {
            assertNotNull("Missing model value", model);
        }

        @RequestMapping(value = "/withModelMapArgument")
        public void withModelMapArgument(ModelMap model) {
            assertNotNull("Missing model value", model);
        }

        @RequestMapping(value = "/withSimpleMapArgument")
        public void withSimpleMapArgument(Map<String, ?> model) {
            assertNotNull("Missing model value", model);
        }

        @RequestMapping(value = "/returnView")
        public View returnView() {
            return new ExampleView("java/x-class");
        }

        @RequestMapping(value = "/returnViewName")
        public String returnViewName() {
            return returnView;
        }
    }

    static class ExampleView implements View {
        final String contentType;

        ExampleView() {
            this("");
        }

        ExampleView(String ct) {
            contentType = ct;
        }

        public String getContentType() {
            return contentType;
        }

        public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
            assertNotNull("No model", model);
            assertNotNull("No request", request);
            assertNotNull("No response", response);
        }
    }
}
TOP

Related Classes of com.springsource.insight.plugin.springweb.controller.ControllerOperationCollectionAspectTest$ExampleController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.