nl.surfnet.coin.api.ConfigurableApiController.java Source code

Java tutorial

Introduction

Here is the source code for nl.surfnet.coin.api.ConfigurableApiController.java

Source

/*
 * Copyright 2012 SURFnet bv, The Netherlands
 *
 * 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 nl.surfnet.coin.api;

import javax.annotation.Resource;

import nl.surfnet.coin.api.client.domain.Group20;
import nl.surfnet.coin.api.client.domain.Person;
import nl.surfnet.coin.api.service.ConfigurableGroupProvider;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
 * Controller for the mock REST interface..
 */
@Controller
@RequestMapping(value = "configure")
public class ConfigurableApiController {

    private static Logger LOG = LoggerFactory.getLogger(ConfigurableApiController.class);

    @Resource(name = "mockService")
    private ConfigurableGroupProvider configurableGroupProvider;

    @RequestMapping(value = { "/person" }, method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    @ResponseBody
    public void addPerson(@RequestBody Person person) {
        LOG.info("Request to add Person");
        configurableGroupProvider.addPerson(person);
    }

    @RequestMapping(value = { "/group" }, method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    @ResponseBody
    public void addGroup(@RequestBody Group20 group) {
        LOG.info("Request to add Group {}", group);
        configurableGroupProvider.addGroup(group);
    }

    @RequestMapping(value = { "/person/{userId:.+}/{groupId:.+}" }, method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    @ResponseBody
    public void addPersonToGroup(@PathVariable("userId") String personId, @PathVariable("groupId") String groupId) {
        LOG.info("Request to add Person {} to Group {}", new Object[] { personId, groupId });
        configurableGroupProvider.addPersonToGroup(personId, groupId);

    }

    @RequestMapping(value = { "/reset" }, method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void reset() {
        LOG.info("Request to reset the state for Mock External Group Provider");
        configurableGroupProvider.reset();
    }

    @RequestMapping(value = { "/sleep/{millSeconds}" }, method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void sleep(@PathVariable("millSeconds") long millSeconds) {
        LOG.info("Request to configure Mock External Group Provider for a sleep {} time", millSeconds);
        configurableGroupProvider.sleep(millSeconds);
    }

}