fi.csc.emrex.smp.JsonController.java Source code

Java tutorial

Introduction

Here is the source code for fi.csc.emrex.smp.JsonController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.csc.emrex.smp;

import fi.csc.emrex.smp.model.VerifiedReport;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
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.client.RestTemplate;

/**
 *
 * @author salum
 */
@Controller
public class JsonController {

    @Value("${emreg.url}")
    private String emregUrl;

    @Value("${smp.return.url}")
    private String returnUrl;

    @Autowired
    private HttpServletRequest context;

    @RequestMapping("/smp/api/smp")
    @ResponseBody
    public List<NCPResult> smpncps() throws Exception {
        return this.ncps();
    }

    @RequestMapping(value = "/smp/api/sessiondata", method = RequestMethod.POST)
    @ResponseBody
    public SessionData smpSessionData(@RequestBody NCPChoice choice, HttpServletRequest request) throws Exception {
        return this.sessionData(choice, request);
    }

    @RequestMapping(value = "/api/sessiondata", method = RequestMethod.POST)
    @ResponseBody
    public SessionData sessionData(@RequestBody NCPChoice choice, HttpServletRequest request) throws Exception {
        SessionData result = new SessionData();
        result.setElmoSessionId(context.getSession().getId());
        result.setNcpPublicKey(FiSmpApplication.getPubKeyByReturnUrl(choice.getUrl(), emregUrl));
        result.setUrl(FiSmpApplication.getUrl(choice, request));
        result.setSessionId(context.getSession().getId());
        result.setReturnUrl(returnUrl);
        return result;
    }

    @RequestMapping("/api/smp")
    @ResponseBody
    public List<NCPResult> ncps() throws Exception {
        List<NCPResult> results;
        results = (List<NCPResult>) context.getSession().getAttribute("ncps");
        if (results == null) {
            results = FiSmpApplication.getNCPs(emregUrl);
            context.getSession().setAttribute("ncps", results);
        }
        return results;
    }

    @RequestMapping("/smp/api/emreg")
    @ResponseBody
    public String smpemreg() throws URISyntaxException {
        return emreg();
    }

    @RequestMapping("/api/emreg")
    @ResponseBody
    public String emreg() throws URISyntaxException {
        String emreg = (String) context.getSession().getAttribute("emreg");
        if (emreg == null) {
            RestTemplate template = new RestTemplate();
            emreg = template.getForObject(new URI(emregUrl), String.class);
            context.getSession().setAttribute("emreg", emreg);
        }
        return emreg;
    }

    @RequestMapping("/smp/api/reports")
    @ResponseBody
    public List<VerifiedReport> smpreports() {
        return reports();
    }

    @RequestMapping("/api/reports")
    @ResponseBody
    public List<VerifiedReport> reports() {
        return (List<VerifiedReport>) this.context.getSession().getAttribute("reports");
    }

    private void printAttributes(HttpServletRequest request) {
        if (request != null) {

            final Enumeration<String> attributeNames = request.getAttributeNames();
            while (attributeNames.hasMoreElements()) {
                final String name = attributeNames.nextElement();
                System.out.println(name + ": " + request.getAttribute(name).toString());
            }
        }
    }

}