Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 50c5cae6

Přidáno uživatelem Tomáš Šimandl před více než 6 roky(ů)

Fix LoadGraphData response codes

Zobrazit rozdíly:

sources/src/main/java/cz/zcu/kiv/offscreen/servlets/api/LoadGraphData.java
37 37
            String diagram_id = request.getParameter("diagramId");
38 38

  
39 39
            if (diagram_id == null) {
40
                response.getWriter().write(getDiagramFromSession(request));
40
                getDiagramFromSession(request, response);
41 41
            } else {
42
                response.getWriter().write(getDiagramById(request, Integer.parseInt(diagram_id)));
42
                getDiagramById(request, response, Integer.parseInt(diagram_id));
43 43
            }
44
            
45 44
        } else {
46
            response.getWriter().write(getDemoDiagram(request));
45
            getDemoDiagram(request, response);
47 46
        }
48 47
    }
49 48

  
50 49
    /**
51
     * Return json of file which was uploaded and is stored in session.
50
     * Add file which was uploaded and is stored in session to response or set http status code to BAD_REQUEST.
52 51
     */
53
    private String getDiagramFromSession(HttpServletRequest request) throws IOException {
52
    private void getDiagramFromSession(HttpServletRequest request, HttpServletResponse response) throws IOException {
54 53
        String jsonToDisplay = (String) request.getSession().getAttribute("json_graph");
55 54

  
56 55
        if (!Strings.isNullOrEmpty(jsonToDisplay)) {
......
61 60
            GraphExport export = new GraphExport(graph);
62 61
            JSONObject json = JSONObject.fromObject(export);
63 62

  
64
            return json.toString();
63
            response.setStatus(HttpServletResponse.SC_OK);
64
            response.getWriter().write(json.toString());
65
            response.getWriter().flush();
66
            return;
65 67
        }
66 68

  
67
        return "";  // TODO: ugly fallback
69
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
68 70
    }
69 71

  
70 72
    /**
71
     * Return json of diagram which is taken from database. Permissions of user to this diagram is checked.
73
     * Add json of diagram which is taken from database to response or set http status code to UNAUTHORIZED.
74
     * Permissions of user to this diagram is checked.
72 75
     */
73
    private String getDiagramById(HttpServletRequest request, int diagramId){
76
    private void getDiagramById(HttpServletRequest request, HttpServletResponse response, int diagramId) throws IOException {
74 77
        DB db = new DB(getServletContext());
75 78
        Diagram diagram = new Diagram(db, diagramId);
76 79

  
80
        String json = "";
81

  
77 82
        if (diagram.isPublic()) {
78
            return diagram.getJsonDiagram();
79
        }
83
            json =  diagram.getJsonDiagram();
80 84

  
81
        // diagram is not public
82
        if (isLoggedIn(request)) {
83
            int loggedUserId = getUserId(request);
85
        } else {
86
            if (isLoggedIn(request)) {
87
                int loggedUserId = getUserId(request);
84 88

  
85
            if (diagram.getUserId() == loggedUserId) {
86
                return diagram.getJsonDiagram();
89
                if (diagram.getUserId() == loggedUserId) {
90
                    json = diagram.getJsonDiagram();
91
                }
87 92
            }
88 93
        }
89 94

  
90
        // User is not logged in or is not owner of diagram
91
        return "";  // TODO: ugly fallback
95
        if (Strings.isNullOrEmpty(json)){
96
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
97
        } else {
98
            response.setStatus(HttpServletResponse.SC_OK);
99
            response.getWriter().write(json);
100
            response.getWriter().flush();
101
        }
92 102
    }
93 103

  
94 104
    /**
95
     * Return demo diagram from file system.
105
     * Add demo diagram from file system to response.
96 106
     */
97
    private String getDemoDiagram(HttpServletRequest request){
107
    private void getDemoDiagram(HttpServletRequest request, HttpServletResponse response) throws IOException {
98 108
        String demoId = request.getSession().getAttribute("demo_id").toString();
99 109
        String path = "/WEB-INF" + File.separator + "demoDiagram" + File.separator + demoId + ".json";
100 110

  
......
103 113

  
104 114
        request.getSession().setAttribute("demo_id", null);
105 115

  
106
        return loader.readDemoJSONFromFile(in);
116
        response.setStatus(HttpServletResponse.SC_OK);
117
        response.getWriter().write(loader.readDemoJSONFromFile(in));
118
        response.getWriter().flush();
107 119
    }
108 120
}

Také k dispozici: Unified diff