Skip to content

Commit

Permalink
10_3_JAX_RS
Browse files Browse the repository at this point in the history
  • Loading branch information
JavaWebinar committed Dec 18, 2017
1 parent dc87c0f commit 1299545
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 15 deletions.
33 changes: 33 additions & 0 deletions services/mail-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
<packaging>war</packaging>
<name>Mail Service</name>

<properties>
<jersey.version>2.26</jersey.version>
</properties>

<build>
<finalName>mail</finalName>
<plugins>
Expand Down Expand Up @@ -66,5 +70,34 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>

<!--https://github.com/jersey/jersey/issues/3664-->
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>${jersey.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
<version>${jersey.version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package ru.javaops.masterjava.service.mail.rest;


import org.hibernate.validator.constraints.NotBlank;
import ru.javaops.masterjava.service.mail.GroupResult;
import ru.javaops.masterjava.service.mail.MailServiceExecutor;
import ru.javaops.masterjava.service.mail.MailWSClient;
import ru.javaops.masterjava.web.WebStateException;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Collections;

@Path("/")
public class MailRS {
@GET
@Path("test")
@Produces(MediaType.TEXT_PLAIN)
public String test() {
return "Test";
}

@POST
@Path("send")
@Produces(MediaType.APPLICATION_JSON)
public GroupResult send(@NotBlank @FormParam("users") String users,
@FormParam("subject") String subject,
@NotBlank @FormParam("body") String body) throws WebStateException {

return MailServiceExecutor.sendBulk(MailWSClient.split(users), subject, body, Collections.emptyList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.javaops.masterjava.service.mail.rest;

import org.glassfish.jersey.server.ResourceConfig;

import javax.ws.rs.ApplicationPath;

@ApplicationPath("rest")
public class MailRestConfig extends ResourceConfig {
public MailRestConfig() {
packages("ru.javaops.masterjava.service.mail.rest");
}
}
11 changes: 10 additions & 1 deletion web/common-web/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,22 @@
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.8.RELEASE</version>
<version>3.0.9.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.22.0-GA</version>
</dependency>
</dependencies>
</project>
56 changes: 42 additions & 14 deletions web/webapp/src/main/webapp/WEB-INF/templates/users.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,36 +42,64 @@
<p>
<input id="attach" type="file">
</p>
<p>
<input type="radio" name="transport" onchange="setTransport('SOAP');" checked>SOAP<br>
<input type="radio" name="transport" onchange="setTransport('REST');">REST<br>
</p>
<p>
<button type="button" onclick="send()">Send</button>
</p>
<pre id="result"></pre>
</section>
<script type="text/javascript">
var transport = "SOAP"; //default

function setTransport(value) {
transport = value;
}

function send() {
$('#result').html("Sending ...");
var users = $("input:checkbox:checked").map(function () {
return this.value;
}).get();

// https://stackoverflow.com/a/5976031/548473
var fd = new FormData();
fd.append('users', users);
fd.append('subject', $("#subject").val());
fd.append('body', $("#body").val());
var attach = $('#attach')[0].files[0];
if (attach) fd.append('attach', attach);
if (users.length === 0) {
$('#result').html("Addresses are not selected");
return;
}

var param;
if (transport === "SOAP") {
// https://stackoverflow.com/a/5976031/548473
var data = new FormData();
data.append('users', users);
data.append('subject', $("#subject").val());
data.append('body', $("#body").val());
var attach = $('#attach')[0].files[0];
if (attach) data.append('attach', attach);
param = {
url: "send",
data: data,
contentType: false,
processData: false
};
} else if(transport === "REST"){
param = {
url: "/mail/rest/send",
data: "users=" + users + "&subject=" + $("#subject").val() + "&body=" + $("#body").val(),
contentType: "application/x-www-form-urlencoded"
};
}

// https://stackoverflow.com/a/22213543/548473
$.post({
url: 'send',
data: fd,
contentType: false,
processData: false
}).done(function (result) {
$.post(param).done(function (result) {
if (typeof result === "object") {
result = JSON.stringify(result)
}
$('#result').html(result);
}).fail(function (result) {
$('#result').html(result);
$('#result').html(result.responseText);
});
}
</script>
Expand Down

0 comments on commit 1299545

Please sign in to comment.