Commit 0737c7d3a79e2c27459deb19974117d8f73e2e6e
1 parent
5221f7c6
Exists in
master
Atualização do arquétipo html-rest com cache e gzip
Showing
25 changed files
with
420 additions
and
119 deletions
Show diff stats
archetype/html-rest/src/main/resources/archetype-resources/src/main/resources/messages.properties
@@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
1 | +application.version=${project.version} |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/beans.xml
@@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
8 | <class>br.gov.frameworkdemoiselle.util.ValidatePayloadInterceptor</class> | 8 | <class>br.gov.frameworkdemoiselle.util.ValidatePayloadInterceptor</class> |
9 | <class>br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor</class> | 9 | <class>br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor</class> |
10 | <class>br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor</class> | 10 | <class>br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor</class> |
11 | + <class>br.gov.frameworkdemoiselle.util.CacheInterceptor</class> | ||
11 | </interceptors> | 12 | </interceptors> |
12 | 13 | ||
13 | </beans> | 14 | </beans> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
@@ -25,4 +25,34 @@ | @@ -25,4 +25,34 @@ | ||
25 | </filter-mapping> | 25 | </filter-mapping> |
26 | --> | 26 | --> |
27 | 27 | ||
28 | + <filter> | ||
29 | + <filter-name>Cache Filter</filter-name> | ||
30 | + <filter-class>br.gov.frameworkdemoiselle.util.CacheFilter</filter-class> | ||
31 | + <init-param> | ||
32 | + <param-name>value</param-name> | ||
33 | + <param-value>max-age=9223372036854775807,public</param-value> | ||
34 | + </init-param> | ||
35 | + </filter> | ||
36 | + <filter-mapping> | ||
37 | + <filter-name>Cache Filter</filter-name> | ||
38 | + <url-pattern>*.js</url-pattern> | ||
39 | + <url-pattern>*.html</url-pattern> | ||
40 | + <url-pattern>*.html?*</url-pattern> | ||
41 | + <url-pattern>*.css</url-pattern> | ||
42 | + <url-pattern>*.png</url-pattern> | ||
43 | + <url-pattern>*.svg</url-pattern> | ||
44 | + <url-pattern>*.ttf</url-pattern> | ||
45 | + <url-pattern>*.woff</url-pattern> | ||
46 | + <url-pattern>/api/metadata/*</url-pattern> | ||
47 | + </filter-mapping> | ||
48 | + | ||
49 | + <filter> | ||
50 | + <filter-name>GZip Filter</filter-name> | ||
51 | + <filter-class>org.tuckey.web.filters.urlrewrite.gzip.GzipFilter</filter-class> | ||
52 | + </filter> | ||
53 | + <filter-mapping> | ||
54 | + <filter-name>GZip Filter</filter-name> | ||
55 | + <url-pattern>/*</url-pattern> | ||
56 | + </filter-mapping> | ||
57 | + | ||
28 | </web-app> | 58 | </web-app> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/bookmark-edit.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="pt-br"> | 2 | <html lang="pt-br"> |
3 | + | ||
3 | <head> | 4 | <head> |
4 | - <meta charset="utf-8"> | ||
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
6 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
7 | - <title>Bookmark Edit</title> | ||
8 | - <link rel="stylesheet" href="css/bootstrap.min.css"> | ||
9 | - <link rel="stylesheet" href="css/bookmark.css"> | 5 | +<meta charset="utf-8"> |
6 | +<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
8 | +<title>Bookmark Edit</title> | ||
9 | +<link rel="stylesheet" href="css/bootstrap.min.css"> | ||
10 | +<link rel="stylesheet" href="css/bookmark.css"> | ||
10 | </head> | 11 | </head> |
12 | + | ||
11 | <body> | 13 | <body> |
12 | <div class="container"> | 14 | <div class="container"> |
13 | <div id="menu"></div> | 15 | <div id="menu"></div> |
@@ -33,14 +35,17 @@ | @@ -33,14 +35,17 @@ | ||
33 | </div> | 35 | </div> |
34 | </form> | 36 | </form> |
35 | </div> | 37 | </div> |
36 | - <p class="demoiselle">Aplicação de exemplo do Demoiselle 2.5.0</p> | ||
37 | - <script src="js/lib/jquery-2.1.0.min.js" type="text/javascript"></script> | ||
38 | - <script src="js/lib/bootstrap.min.js" type="text/javascript"></script> | ||
39 | - <script src="js/lib/purl.js" type="text/javascript"></script> | ||
40 | - <script src="js/lib/bootbox.js" type="text/javascript"></script> | ||
41 | - <script type="text/javascript" src="js/lib/app.js"></script> | ||
42 | - <script src="js/proxy/auth.js" type="text/javascript"></script> | ||
43 | - <script src="js/proxy/bookmark.js" type="text/javascript"></script> | ||
44 | - <script src="js/controller/menu.js" type="text/javascript"></script> | ||
45 | - <script src="js/controller/bookmark-edit.js" type="text/javascript"></script> | ||
46 | -</body> | ||
47 | \ No newline at end of file | 38 | \ No newline at end of file |
39 | + <p class="demoiselle"> | ||
40 | + Aplicação de exemplo do Demoiselle <span id="demoiselle-version"></span> | ||
41 | + | ||
42 | + <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> | ||
43 | + <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> | ||
44 | + <script type="text/javascript" src="js/lib/purl.js"></script> | ||
45 | + <script type="text/javascript" src="js/lib/bootbox.js"></script> | ||
46 | + <script type="text/javascript" src="js/lib/app.js"></script> | ||
47 | + <script type="text/javascript" src="js/proxy/metadata.js"></script> | ||
48 | + <script type="text/javascript" src="js/proxy/auth.js"></script> | ||
49 | + <script type="text/javascript" src="js/proxy/bookmark.js"></script> | ||
50 | + <script type="text/javascript" src="js/controller/menu.js"></script> | ||
51 | + <script type="text/javascript" src="js/controller/bookmark-edit.js"></script> | ||
52 | +</body> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/bookmark-list.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="pt-br"> | 2 | <html lang="pt-br"> |
3 | + | ||
3 | <head> | 4 | <head> |
4 | - <meta charset="utf-8"> | ||
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
6 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
7 | - <title>Bookmark List</title> | ||
8 | - <link rel="stylesheet" href="css/bootstrap.min.css"> | ||
9 | - <link rel="stylesheet" href="css/bookmark.css"> | ||
10 | - <link rel="stylesheet" href="css/datatables.css"> | 5 | +<meta charset="utf-8"> |
6 | +<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
8 | +<title>Bookmark List</title> | ||
9 | +<link rel="stylesheet" href="css/bootstrap.min.css"> | ||
10 | +<link rel="stylesheet" href="css/bookmark.css"> | ||
11 | +<link rel="stylesheet" href="css/datatables.css"> | ||
11 | </head> | 12 | </head> |
13 | + | ||
12 | <body> | 14 | <body> |
13 | <div class="container"> | 15 | <div class="container"> |
14 | <div id="menu"></div> | 16 | <div id="menu"></div> |
@@ -16,7 +18,7 @@ | @@ -16,7 +18,7 @@ | ||
16 | <button id="new" class="btn btn-success">Novo</button> | 18 | <button id="new" class="btn btn-success">Novo</button> |
17 | <button id="delete" class="btn btn-danger">Excluir</button> | 19 | <button id="delete" class="btn btn-danger">Excluir</button> |
18 | </p> | 20 | </p> |
19 | - <table id="resultList" cellpadding="0" cellspacing="0" border="0" class="datatable table table-striped table-bordered"> | 21 | + <table id="resultList" class="datatable table table-striped table-bordered"> |
20 | <thead> | 22 | <thead> |
21 | <tr> | 23 | <tr> |
22 | <th width="3px"></th> | 24 | <th width="3px"></th> |
@@ -26,16 +28,20 @@ | @@ -26,16 +28,20 @@ | ||
26 | </thead> | 28 | </thead> |
27 | </table> | 29 | </table> |
28 | </div> | 30 | </div> |
29 | - <p class="demoiselle">Aplicação de exemplo do Demoiselle 2.5.0</p> | 31 | + <p class="demoiselle"> |
32 | + Aplicação de exemplo do Demoiselle <span id="demoiselle-version"></span> | ||
33 | + </p> | ||
34 | + | ||
30 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> | 35 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> |
31 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> | 36 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> |
32 | <script type="text/javascript" src="js/lib/jquery.dataTables.js"></script> | 37 | <script type="text/javascript" src="js/lib/jquery.dataTables.js"></script> |
33 | <script type="text/javascript" src="js/lib/datatables.js"></script> | 38 | <script type="text/javascript" src="js/lib/datatables.js"></script> |
34 | <script type="text/javascript" src="js/lib/bootbox.js"></script> | 39 | <script type="text/javascript" src="js/lib/bootbox.js"></script> |
35 | <script type="text/javascript" src="js/lib/app.js"></script> | 40 | <script type="text/javascript" src="js/lib/app.js"></script> |
41 | + <script type="text/javascript" src="js/proxy/metadata.js"></script> | ||
36 | <script type="text/javascript" src="js/proxy/auth.js"></script> | 42 | <script type="text/javascript" src="js/proxy/auth.js"></script> |
37 | <script type="text/javascript" src="js/proxy/bookmark.js"></script> | 43 | <script type="text/javascript" src="js/proxy/bookmark.js"></script> |
38 | <script type="text/javascript" src="js/controller/menu.js"></script> | 44 | <script type="text/javascript" src="js/controller/menu.js"></script> |
39 | <script type="text/javascript" src="js/controller/bookmark-list.js"></script> | 45 | <script type="text/javascript" src="js/controller/bookmark-list.js"></script> |
40 | </body> | 46 | </body> |
41 | -</html> | ||
42 | \ No newline at end of file | 47 | \ No newline at end of file |
48 | +</html> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/fonts/glyphicons-halflings-regular.woff
No preview for this file type
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/home.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | + | ||
3 | <head> | 4 | <head> |
4 | - <meta charset="UTF-8"> | ||
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
6 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
7 | - <title>Bookmark</title> | ||
8 | - <link href="css/bootstrap.min.css" rel="stylesheet"> | ||
9 | - <link href="css/bookmark.css" rel="stylesheet"> | 5 | +<meta charset="UTF-8"> |
6 | +<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
8 | +<title>Bookmark</title> | ||
9 | +<link href="css/bootstrap.min.css" rel="stylesheet"> | ||
10 | +<link href="css/bookmark.css" rel="stylesheet"> | ||
10 | </head> | 11 | </head> |
12 | + | ||
11 | <body> | 13 | <body> |
12 | <div class="container"> | 14 | <div class="container"> |
13 | <div id="menu"></div> | 15 | <div id="menu"></div> |
14 | <div class="jumbotron"> | 16 | <div class="jumbotron"> |
15 | <h3> | 17 | <h3> |
16 | - Bem-vindo à aplicação de exemplo Bookmark usando arquétipo html-rest. <br /> | ||
17 | - Este é o seu ponto de partida, portanto sinta-se à vontade para modificar esta aplicação. | 18 | + Bem-vindo à aplicação de exemplo Bookmark usando arquétipo html-rest. <br /> Este é o seu ponto de partida, portanto sinta-se à vontade para |
19 | + modificar esta aplicação. | ||
18 | </h3> | 20 | </h3> |
19 | </div> | 21 | </div> |
20 | </div> | 22 | </div> |
21 | - <p class="demoiselle">Aplicação de exemplo do Demoiselle 2.5.0</p> | 23 | + <p class="demoiselle"> |
24 | + Aplicação de exemplo do Demoiselle <span id="demoiselle-version"></span> | ||
25 | + </p> | ||
26 | + | ||
22 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> | 27 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> |
23 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> | 28 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> |
24 | <script type="text/javascript" src="js/lib/bootbox.js"></script> | 29 | <script type="text/javascript" src="js/lib/bootbox.js"></script> |
25 | <script type="text/javascript" src="js/lib/app.js"></script> | 30 | <script type="text/javascript" src="js/lib/app.js"></script> |
31 | + <script type="text/javascript" src="js/proxy/metadata.js"></script> | ||
26 | <script type="text/javascript" src="js/proxy/auth.js"></script> | 32 | <script type="text/javascript" src="js/proxy/auth.js"></script> |
27 | <script type="text/javascript" src="js/controller/menu.js"></script> | 33 | <script type="text/javascript" src="js/controller/menu.js"></script> |
28 | <script type="text/javascript" src="js/controller/home.js"></script> | 34 | <script type="text/javascript" src="js/controller/home.js"></script> |
29 | </body> | 35 | </body> |
30 | -</html> | ||
31 | \ No newline at end of file | 36 | \ No newline at end of file |
37 | +</html> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/index.html
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/controller/bookmark-edit.js
1 | $(function() { | 1 | $(function() { |
2 | - | ||
3 | $("#delete").hide(); | 2 | $("#delete").hide(); |
4 | - | ||
5 | $("#description").focus(); | 3 | $("#description").focus(); |
6 | 4 | ||
5 | + MetadataProxy.getDemoiselleVersion().done(function(data) { | ||
6 | + $("#demoiselle-version").html(data); | ||
7 | + }); | ||
8 | + | ||
7 | $(document).ready(function() { | 9 | $(document).ready(function() { |
8 | if (id = $.url().param('id')) { | 10 | if (id = $.url().param('id')) { |
9 | BookmarkProxy.load(id).done(loadOk).fail(loadFailed); | 11 | BookmarkProxy.load(id).done(loadOk).fail(loadFailed); |
@@ -15,24 +17,24 @@ $(function() { | @@ -15,24 +17,24 @@ $(function() { | ||
15 | }); | 17 | }); |
16 | 18 | ||
17 | $("#save").click(function() { | 19 | $("#save").click(function() { |
18 | - var form = { | 20 | + var data = { |
19 | description : $("#description").val(), | 21 | description : $("#description").val(), |
20 | link : $("#link").val() | 22 | link : $("#link").val() |
21 | }; | 23 | }; |
22 | 24 | ||
23 | if (id = $("#id").val()) { | 25 | if (id = $("#id").val()) { |
24 | - BookmarkProxy.update(id, form).done(saveOk).fail(saveFailed); | 26 | + BookmarkProxy.update(id, data).done(saveOk).fail(saveFailed); |
25 | } else { | 27 | } else { |
26 | - BookmarkProxy.insert(form).done(saveOk).fail(saveFailed); | 28 | + BookmarkProxy.insert(data).done(saveOk).fail(saveFailed); |
27 | } | 29 | } |
28 | }); | 30 | }); |
29 | 31 | ||
30 | $("#delete").click(function() { | 32 | $("#delete").click(function() { |
31 | bootbox.confirm("Tem certeza que deseja apagar?", function(result) { | 33 | bootbox.confirm("Tem certeza que deseja apagar?", function(result) { |
32 | - if(result) { | ||
33 | - BookmarkProxy.remove([$("#id").val()]).done(removeOk); | 34 | + if (result) { |
35 | + BookmarkProxy.remove([ $("#id").val() ]).done(removeOk); | ||
34 | } | 36 | } |
35 | - }); | 37 | + }); |
36 | }); | 38 | }); |
37 | 39 | ||
38 | $("#back").click(function() { | 40 | $("#back").click(function() { |
@@ -52,7 +54,7 @@ function loadOk(data) { | @@ -52,7 +54,7 @@ function loadOk(data) { | ||
52 | function loadFailed(request) { | 54 | function loadFailed(request) { |
53 | switch (request.status) { | 55 | switch (request.status) { |
54 | case 404: | 56 | case 404: |
55 | - bootbox.alert("Você está tentando acessar um registro inexistente!", function(){ | 57 | + bootbox.alert("Você está tentando acessar um registro inexistente!", function() { |
56 | location.href = "bookmark-list.html"; | 58 | location.href = "bookmark-list.html"; |
57 | }); | 59 | }); |
58 | break; | 60 | break; |
@@ -96,4 +98,4 @@ function saveFailed(request) { | @@ -96,4 +98,4 @@ function saveFailed(request) { | ||
96 | 98 | ||
97 | function removeOk(data) { | 99 | function removeOk(data) { |
98 | location.href = 'bookmark-list.html'; | 100 | location.href = 'bookmark-list.html'; |
99 | -} | ||
100 | \ No newline at end of file | 101 | \ No newline at end of file |
102 | +} |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/controller/bookmark-list.js
1 | $(function() { | 1 | $(function() { |
2 | - | ||
3 | $("#new").focus(); | 2 | $("#new").focus(); |
4 | 3 | ||
4 | + MetadataProxy.getDemoiselleVersion().done(function(data) { | ||
5 | + $("#demoiselle-version").html(data); | ||
6 | + }); | ||
7 | + | ||
5 | $(document).ready(function() { | 8 | $(document).ready(function() { |
6 | BookmarkProxy.findAll().done(findAllOk); | 9 | BookmarkProxy.findAll().done(findAllOk); |
7 | }); | 10 | }); |
@@ -22,19 +25,21 @@ $(function() { | @@ -22,19 +25,21 @@ $(function() { | ||
22 | }); | 25 | }); |
23 | 26 | ||
24 | if (ids.length == 0) { | 27 | if (ids.length == 0) { |
25 | - bootbox.alert({message: "Nenhum registro selecionado"}); | 28 | + bootbox.alert({ |
29 | + message : "Nenhum registro selecionado" | ||
30 | + }); | ||
26 | } else { | 31 | } else { |
27 | bootbox.confirm("Tem certeza que deseja apagar?", function(result) { | 32 | bootbox.confirm("Tem certeza que deseja apagar?", function(result) { |
28 | - if(result) { | 33 | + if (result) { |
29 | BookmarkProxy.remove(ids).done(removeOk); | 34 | BookmarkProxy.remove(ids).done(removeOk); |
30 | } | 35 | } |
31 | - }); | 36 | + }); |
32 | } | 37 | } |
33 | }); | 38 | }); |
34 | }); | 39 | }); |
35 | 40 | ||
36 | function findAllOk(data) { | 41 | function findAllOk(data) { |
37 | - var oTable = $('#resultList').dataTable({ | 42 | + $('#resultList').dataTable({ |
38 | "aoColumns" : [ { | 43 | "aoColumns" : [ { |
39 | "aTargets" : [ 0 ], | 44 | "aTargets" : [ 0 ], |
40 | "mDataProp" : "id", | 45 | "mDataProp" : "id", |
@@ -70,10 +75,10 @@ function findAllOk(data) { | @@ -70,10 +75,10 @@ function findAllOk(data) { | ||
70 | "bDestroy" : true, | 75 | "bDestroy" : true, |
71 | "sPaginationType" : "bs_full", | 76 | "sPaginationType" : "bs_full", |
72 | "aaData" : data, | 77 | "aaData" : data, |
73 | - "bSort" : false | 78 | + "bSort" : true |
74 | }); | 79 | }); |
75 | } | 80 | } |
76 | 81 | ||
77 | function removeOk() { | 82 | function removeOk() { |
78 | BookmarkProxy.findAll().done(findAllOk); | 83 | BookmarkProxy.findAll().done(findAllOk); |
79 | -} | ||
80 | \ No newline at end of file | 84 | \ No newline at end of file |
85 | +} |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/controller/home.js
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/controller/login.js
1 | $(function() { | 1 | $(function() { |
2 | $("#username").focus(); | 2 | $("#username").focus(); |
3 | 3 | ||
4 | + MetadataProxy.getDemoiselleVersion().done(function(data) { | ||
5 | + $("#demoiselle-version").html(data); | ||
6 | + }); | ||
7 | + | ||
4 | $("form").submit(function(event) { | 8 | $("form").submit(function(event) { |
5 | event.preventDefault(); | 9 | event.preventDefault(); |
6 | 10 | ||
7 | $("[id$='-message']").hide(); | 11 | $("[id$='-message']").hide(); |
8 | 12 | ||
9 | - var form = { | 13 | + var data = { |
10 | 'username' : $("#username").val().trim(), | 14 | 'username' : $("#username").val().trim(), |
11 | 'password' : $("#password").val().trim() | 15 | 'password' : $("#password").val().trim() |
12 | }; | 16 | }; |
13 | 17 | ||
14 | - AuthProxy.login(form).done(loginOk).fail(loginFail); | 18 | + AuthProxy.login(data).done(loginOk).fail(loginFail); |
15 | }); | 19 | }); |
16 | }); | 20 | }); |
17 | 21 |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/controller/menu.js
1 | $(function() { | 1 | $(function() { |
2 | - | ||
3 | $("#menu").load("menu.html", function() { | 2 | $("#menu").load("menu.html", function() { |
4 | - | ||
5 | AuthProxy.getUser().done(getUserOk); | 3 | AuthProxy.getUser().done(getUserOk); |
6 | 4 | ||
7 | $("#logout").on("click", function() { | 5 | $("#logout").on("click", function() { |
8 | App.removeToken(); | 6 | App.removeToken(); |
9 | location.href = "login.html"; | 7 | location.href = "login.html"; |
10 | }); | 8 | }); |
11 | - | ||
12 | }); | 9 | }); |
13 | - | ||
14 | }); | 10 | }); |
15 | 11 | ||
16 | function getUserOk(data) { | 12 | function getUserOk(data) { |
17 | $("#username").html(data.username); | 13 | $("#username").html(data.username); |
18 | -} | ||
19 | \ No newline at end of file | 14 | \ No newline at end of file |
15 | +} |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/lib/app.js
@@ -2,7 +2,7 @@ $.ajaxSetup({ | @@ -2,7 +2,7 @@ $.ajaxSetup({ | ||
2 | error : function(request) { | 2 | error : function(request) { |
3 | switch (request.status) { | 3 | switch (request.status) { |
4 | case 401: | 4 | case 401: |
5 | - bootbox.alert("Você não está autenticado!", function(){ | 5 | + bootbox.alert("Você não está autenticado!", function() { |
6 | location.href = "login.html"; | 6 | location.href = "login.html"; |
7 | }); | 7 | }); |
8 | break; | 8 | break; |
@@ -25,5 +25,4 @@ var App = { | @@ -25,5 +25,4 @@ var App = { | ||
25 | removeToken : function() { | 25 | removeToken : function() { |
26 | sessionStorage.removeItem(this.tokenKey); | 26 | sessionStorage.removeItem(this.tokenKey); |
27 | } | 27 | } |
28 | - | ||
29 | -} | 28 | +}; |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/proxy/auth.js
@@ -8,7 +8,7 @@ var AuthProxy = { | @@ -8,7 +8,7 @@ var AuthProxy = { | ||
8 | type : "POST", | 8 | type : "POST", |
9 | data : JSON.stringify($credentials), | 9 | data : JSON.stringify($credentials), |
10 | contentType : "application/json", | 10 | contentType : "application/json", |
11 | - error: function(){ } | 11 | + error : function() {} |
12 | }); | 12 | }); |
13 | }, | 13 | }, |
14 | 14 | ||
@@ -31,5 +31,4 @@ var AuthProxy = { | @@ -31,5 +31,4 @@ var AuthProxy = { | ||
31 | } | 31 | } |
32 | }); | 32 | }); |
33 | } | 33 | } |
34 | - | ||
35 | -} | ||
36 | \ No newline at end of file | 34 | \ No newline at end of file |
35 | +}; |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/proxy/bookmark.js
1 | var BookmarkProxy = { | 1 | var BookmarkProxy = { |
2 | - | 2 | + |
3 | url : "api/bookmark", | 3 | url : "api/bookmark", |
4 | - | 4 | + |
5 | findAll : function() { | 5 | findAll : function() { |
6 | return $.ajax({ | 6 | return $.ajax({ |
7 | type : "GET", | 7 | type : "GET", |
@@ -11,7 +11,7 @@ var BookmarkProxy = { | @@ -11,7 +11,7 @@ var BookmarkProxy = { | ||
11 | } | 11 | } |
12 | }); | 12 | }); |
13 | }, | 13 | }, |
14 | - | 14 | + |
15 | load : function($id) { | 15 | load : function($id) { |
16 | return $.ajax({ | 16 | return $.ajax({ |
17 | type : "GET", | 17 | type : "GET", |
@@ -21,12 +21,12 @@ var BookmarkProxy = { | @@ -21,12 +21,12 @@ var BookmarkProxy = { | ||
21 | } | 21 | } |
22 | }); | 22 | }); |
23 | }, | 23 | }, |
24 | - | ||
25 | - insert : function($form) { | 24 | + |
25 | + insert : function($data) { | ||
26 | return $.ajax({ | 26 | return $.ajax({ |
27 | type : "POST", | 27 | type : "POST", |
28 | url : this.url, | 28 | url : this.url, |
29 | - data : JSON.stringify($form), | 29 | + data : JSON.stringify($data), |
30 | contentType : "application/json", | 30 | contentType : "application/json", |
31 | beforeSend : function(request) { | 31 | beforeSend : function(request) { |
32 | request.setRequestHeader("Authorization", App.getToken()); | 32 | request.setRequestHeader("Authorization", App.getToken()); |
@@ -45,7 +45,7 @@ var BookmarkProxy = { | @@ -45,7 +45,7 @@ var BookmarkProxy = { | ||
45 | } | 45 | } |
46 | }); | 46 | }); |
47 | }, | 47 | }, |
48 | - | 48 | + |
49 | remove : function($ids) { | 49 | remove : function($ids) { |
50 | return $.ajax({ | 50 | return $.ajax({ |
51 | type : "DELETE", | 51 | type : "DELETE", |
@@ -57,5 +57,4 @@ var BookmarkProxy = { | @@ -57,5 +57,4 @@ var BookmarkProxy = { | ||
57 | } | 57 | } |
58 | }); | 58 | }); |
59 | } | 59 | } |
60 | - | ||
61 | -} | ||
62 | \ No newline at end of file | 60 | \ No newline at end of file |
61 | +}; |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/proxy/metadata.js
0 → 100644
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +var MetadataProxy = { | ||
2 | + | ||
3 | + url : "api/metadata", | ||
4 | + | ||
5 | + getVersion : function() { | ||
6 | + return $.ajax({ | ||
7 | + type : "GET", | ||
8 | + url : this.url + "/version" | ||
9 | + }); | ||
10 | + }, | ||
11 | + | ||
12 | + getMessage : function($key) { | ||
13 | + return $.ajax({ | ||
14 | + type : "GET", | ||
15 | + url : this.url + "/message/" + $key | ||
16 | + }); | ||
17 | + }, | ||
18 | + | ||
19 | + getDemoiselleVersion : function() { | ||
20 | + return $.ajax({ | ||
21 | + type : "GET", | ||
22 | + url : this.url + "/demoiselle/version" | ||
23 | + }); | ||
24 | + } | ||
25 | +}; |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/login.html
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | -<head> | ||
4 | - <meta charset="UTF-8"> | ||
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
6 | - <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
7 | - <title>Bookmark</title> | ||
8 | - <link href="css/bootstrap.min.css" rel="stylesheet"> | ||
9 | - <link href="css/bookmark.css" rel="stylesheet"> | 3 | + |
4 | +<head> | ||
5 | +<meta charset="UTF-8"> | ||
6 | +<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
8 | +<title>Bookmark</title> | ||
9 | +<link href="css/bootstrap.min.css" rel="stylesheet"> | ||
10 | +<link href="css/bookmark.css" rel="stylesheet"> | ||
10 | </head> | 11 | </head> |
12 | + | ||
11 | <body> | 13 | <body> |
12 | <div class="container"> | 14 | <div class="container"> |
13 | - <form id="form-login" role="form"> | 15 | + <form id="form-login" role="form"> |
14 | <div class="col-md-4 col-md-offset-4"> | 16 | <div class="col-md-4 col-md-offset-4"> |
15 | <div class="form-group"> | 17 | <div class="form-group"> |
16 | <h1>Bookmark | Login</h1> | 18 | <h1>Bookmark | Login</h1> |
@@ -38,12 +40,16 @@ | @@ -38,12 +40,16 @@ | ||
38 | </div> | 40 | </div> |
39 | </form> | 41 | </form> |
40 | </div> | 42 | </div> |
41 | - <p class="demoiselle">Aplicação de exemplo do Demoiselle 2.5.0</p> | 43 | + <p class="demoiselle"> |
44 | + Aplicação de exemplo do Demoiselle <span id="demoiselle-version"></span> | ||
45 | + </p> | ||
46 | + | ||
42 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> | 47 | <script type="text/javascript" src="js/lib/jquery-2.1.0.min.js"></script> |
43 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> | 48 | <script type="text/javascript" src="js/lib/bootstrap.min.js"></script> |
44 | <script type="text/javascript" src="js/lib/bootbox.js"></script> | 49 | <script type="text/javascript" src="js/lib/bootbox.js"></script> |
45 | <script type="text/javascript" src="js/lib/app.js"></script> | 50 | <script type="text/javascript" src="js/lib/app.js"></script> |
51 | + <script type="text/javascript" src="js/proxy/metadata.js"></script> | ||
46 | <script type="text/javascript" src="js/proxy/auth.js"></script> | 52 | <script type="text/javascript" src="js/proxy/auth.js"></script> |
47 | <script type="text/javascript" src="js/controller/login.js"></script> | 53 | <script type="text/javascript" src="js/controller/login.js"></script> |
48 | </body> | 54 | </body> |
49 | -</html> | ||
50 | \ No newline at end of file | 55 | \ No newline at end of file |
56 | +</html> |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/menu.html
1 | <nav class="navbar navbar-default" role="navigation"> | 1 | <nav class="navbar navbar-default" role="navigation"> |
2 | - <div class="container-fluid"> | ||
3 | - <div class="navbar-header"> | ||
4 | - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||
5 | - <span class="sr-only">Toggle navigation</span> | ||
6 | - <span class="icon-bar"></span> | ||
7 | - <span class="icon-bar"></span> | ||
8 | - <span class="icon-bar"></span> | ||
9 | - </button> | ||
10 | - <a class="navbar-brand" href="home.html">Bookmark</a> | ||
11 | - </div> | ||
12 | - <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | ||
13 | - <ul class="nav navbar-nav"> | ||
14 | - <li class="dropdown"> | ||
15 | - <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-th-list"></span> Bookmark<b class="caret"></b></a> | ||
16 | - <ul class="dropdown-menu"> | ||
17 | - <li><a href="bookmark-edit.html"><span class="glyphicon glyphicon glyphicon-edit"></span> Novo</a></li> | ||
18 | - <li><a href="bookmark-list.html"><span class="glyphicon glyphicon-list-alt"></span> Listar</a></li> | ||
19 | - </ul> | ||
20 | - </li> | ||
21 | - </ul> | ||
22 | - <ul class="nav navbar-nav navbar-right"> | ||
23 | - <li id="username"></li> | ||
24 | - <li><a id="logout" href="#">Sair</a></li> | ||
25 | - </ul> | ||
26 | - </div> | ||
27 | - </div> | ||
28 | -</nav> | ||
29 | \ No newline at end of file | 2 | \ No newline at end of file |
3 | + <div class="container-fluid"> | ||
4 | + <div class="navbar-header"> | ||
5 | + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||
6 | + <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> | ||
7 | + </button> | ||
8 | + <a class="navbar-brand" href="home.html">Bookmark</a> | ||
9 | + </div> | ||
10 | + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | ||
11 | + <ul class="nav navbar-nav"> | ||
12 | + <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-th-list"></span> | ||
13 | + Bookmark<b class="caret"></b></a> | ||
14 | + <ul class="dropdown-menu"> | ||
15 | + <li><a href="bookmark-edit.html"><span class="glyphicon glyphicon glyphicon-edit"></span> Novo</a></li> | ||
16 | + <li><a href="bookmark-list.html"><span class="glyphicon glyphicon-list-alt"></span> Listar</a></li> | ||
17 | + </ul></li> | ||
18 | + </ul> | ||
19 | + <ul class="nav navbar-nav navbar-right"> | ||
20 | + <li id="username"></li> | ||
21 | + <li><a id="logout" href="#">Sair</a></li> | ||
22 | + </ul> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | +</nav> |
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Metadata.java
0 → 100644
@@ -0,0 +1,48 @@ | @@ -0,0 +1,48 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package br.gov.frameworkdemoiselle.util; | ||
38 | + | ||
39 | +public final class Metadata { | ||
40 | + | ||
41 | + private Metadata() { | ||
42 | + } | ||
43 | + | ||
44 | + public static String getVersion() { | ||
45 | + ResourceBundle bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-core-bundle")); | ||
46 | + return bundle.getString("version"); | ||
47 | + } | ||
48 | +} |
impl/core/src/main/resources/demoiselle-core-bundle.properties
@@ -33,6 +33,7 @@ | @@ -33,6 +33,7 @@ | ||
33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., | 33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., |
34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | 34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. |
35 | 35 | ||
36 | +version=${project.version} | ||
36 | engine-on=Iniciando o Demoiselle Framework ${project.version} | 37 | engine-on=Iniciando o Demoiselle Framework ${project.version} |
37 | resource-not-found=Arquivo {0} n\u00E3o foi encontrado | 38 | resource-not-found=Arquivo {0} n\u00E3o foi encontrado |
38 | key-not-found=A chave {0} n\u00E3o foi encontrada | 39 | key-not-found=A chave {0} n\u00E3o foi encontrada |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/MetadataREST.java
0 → 100644
@@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
1 | +package br.gov.frameworkdemoiselle.internal.implementation; | ||
2 | + | ||
3 | +import static javax.ws.rs.core.MediaType.TEXT_HTML; | ||
4 | + | ||
5 | +import java.util.ResourceBundle; | ||
6 | + | ||
7 | +import javax.inject.Inject; | ||
8 | +import javax.ws.rs.GET; | ||
9 | +import javax.ws.rs.Path; | ||
10 | +import javax.ws.rs.PathParam; | ||
11 | +import javax.ws.rs.Produces; | ||
12 | + | ||
13 | +import br.gov.frameworkdemoiselle.NotFoundException; | ||
14 | +import br.gov.frameworkdemoiselle.util.Metadata; | ||
15 | + | ||
16 | +@Path("metadata") | ||
17 | +public class MetadataREST { | ||
18 | + | ||
19 | + @Inject | ||
20 | + private ResourceBundle bundle; | ||
21 | + | ||
22 | + @GET | ||
23 | + @Path("demoiselle/version") | ||
24 | + @Produces("text/plain") | ||
25 | + public String getDemoiselleVersion() { | ||
26 | + return Metadata.getVersion(); | ||
27 | + } | ||
28 | + | ||
29 | + @GET | ||
30 | + @Path("version") | ||
31 | + @Produces("text/plain") | ||
32 | + public String getAppVersion() { | ||
33 | + return bundle.getString("application.version"); | ||
34 | + } | ||
35 | + | ||
36 | + @GET | ||
37 | + @Path("message/{key}") | ||
38 | + @Produces(TEXT_HTML) | ||
39 | + public String getMessage(@PathParam("key") String key) throws Exception { | ||
40 | + if (!bundle.containsKey(key)) { | ||
41 | + throw new NotFoundException(); | ||
42 | + } | ||
43 | + | ||
44 | + return bundle.getString(key); | ||
45 | + } | ||
46 | +} |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/util/Cache.java
0 → 100644
@@ -0,0 +1,58 @@ | @@ -0,0 +1,58 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package br.gov.frameworkdemoiselle.util; | ||
38 | + | ||
39 | +import static java.lang.annotation.ElementType.METHOD; | ||
40 | +import static java.lang.annotation.ElementType.TYPE; | ||
41 | +import static java.lang.annotation.RetentionPolicy.RUNTIME; | ||
42 | + | ||
43 | +import java.lang.annotation.Inherited; | ||
44 | +import java.lang.annotation.Retention; | ||
45 | +import java.lang.annotation.Target; | ||
46 | + | ||
47 | +import javax.enterprise.util.Nonbinding; | ||
48 | +import javax.interceptor.InterceptorBinding; | ||
49 | + | ||
50 | +@Inherited | ||
51 | +@InterceptorBinding | ||
52 | +@Target({ METHOD, TYPE }) | ||
53 | +@Retention(RUNTIME) | ||
54 | +public @interface Cache { | ||
55 | + | ||
56 | + @Nonbinding | ||
57 | + String value(); | ||
58 | +} |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/util/CacheInterceptor.java
0 → 100644
@@ -0,0 +1,66 @@ | @@ -0,0 +1,66 @@ | ||
1 | +/* | ||
2 | + * Demoiselle Framework | ||
3 | + * Copyright (C) 2010 SERPRO | ||
4 | + * ---------------------------------------------------------------------------- | ||
5 | + * This file is part of Demoiselle Framework. | ||
6 | + * | ||
7 | + * Demoiselle Framework is free software; you can redistribute it and/or | ||
8 | + * modify it under the terms of the GNU Lesser General Public License version 3 | ||
9 | + * as published by the Free Software Foundation. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License version 3 | ||
17 | + * along with this program; if not, see <http://www.gnu.org/licenses/> | ||
18 | + * or write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
19 | + * Fifth Floor, Boston, MA 02110-1301, USA. | ||
20 | + * ---------------------------------------------------------------------------- | ||
21 | + * Este arquivo é parte do Framework Demoiselle. | ||
22 | + * | ||
23 | + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou | ||
24 | + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação | ||
25 | + * do Software Livre (FSF). | ||
26 | + * | ||
27 | + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA | ||
28 | + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou | ||
29 | + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português | ||
30 | + * para maiores detalhes. | ||
31 | + * | ||
32 | + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título | ||
33 | + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/> | ||
34 | + * ou escreva para a Fundação do Software Livre (FSF) Inc., | ||
35 | + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | ||
36 | + */ | ||
37 | +package br.gov.frameworkdemoiselle.util; | ||
38 | + | ||
39 | +import java.io.Serializable; | ||
40 | + | ||
41 | +import javax.interceptor.AroundInvoke; | ||
42 | +import javax.interceptor.Interceptor; | ||
43 | +import javax.interceptor.InvocationContext; | ||
44 | +import javax.servlet.http.HttpServletResponse; | ||
45 | + | ||
46 | +/** | ||
47 | + * Intercepts calls with {@code @ValidatePayload} annotations. | ||
48 | + * | ||
49 | + * @author SERPRO | ||
50 | + */ | ||
51 | +@Interceptor | ||
52 | +@Cache(value = "") | ||
53 | +public class CacheInterceptor implements Serializable { | ||
54 | + | ||
55 | + private static final long serialVersionUID = 1L; | ||
56 | + | ||
57 | + @AroundInvoke | ||
58 | + public Object manage(final InvocationContext ic) throws Exception { | ||
59 | + Object result = ic.proceed(); | ||
60 | + | ||
61 | + HttpServletResponse response = Beans.getReference(HttpServletResponse.class); | ||
62 | + response.setHeader("Cache-Control", ic.getMethod().getAnnotation(Cache.class).value()); | ||
63 | + | ||
64 | + return result; | ||
65 | + } | ||
66 | +} |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/util/ValidatePayloadInterceptor.java
@@ -54,8 +54,8 @@ import javax.validation.ValidatorFactory; | @@ -54,8 +54,8 @@ import javax.validation.ValidatorFactory; | ||
54 | * | 54 | * |
55 | * @author SERPRO | 55 | * @author SERPRO |
56 | */ | 56 | */ |
57 | -@ValidatePayload | ||
58 | @Interceptor | 57 | @Interceptor |
58 | +@ValidatePayload | ||
59 | public class ValidatePayloadInterceptor implements Serializable { | 59 | public class ValidatePayloadInterceptor implements Serializable { |
60 | 60 | ||
61 | private static final long serialVersionUID = 1L; | 61 | private static final long serialVersionUID = 1L; |