Sample code for BAEL-1148 - earth001@gmail.com (#3268)
* Sample code for BAEL-1148 - earth001@gmail.com * Change tabs for spaces in non java files * Change tabs for spaces in non java files * Removed unnecessary argument
This commit is contained in:
parent
423486bce1
commit
09cbc1c6ee
1
spring-mvc-push/.gitignore
vendored
Normal file
1
spring-mvc-push/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/.tern-project
|
91
spring-mvc-push/pom.xml
Normal file
91
spring-mvc-push/pom.xml
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>spring-mvc-push</artifactId>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>spring-mvc-push</name>
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
|
<maven-surefire-plugin.version>2.20</maven-surefire-plugin.version>
|
||||||
|
<maven.compiler.version>3.7.0</maven.compiler.version>
|
||||||
|
<maven-war-plugin.version>3.2.0</maven-war-plugin.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<junit.jupiter.version>5.0.2</junit.jupiter.version>
|
||||||
|
<spring.version>5.0.2.RELEASE</spring.version>
|
||||||
|
<servlet.version>4.0.0</servlet.version>
|
||||||
|
<jstl.version>1.2</jstl.version>
|
||||||
|
<jsp-api.version>2.3.2-b02</jsp-api.version>
|
||||||
|
<junit.jupiter.version>5.0.2</junit.jupiter.version>
|
||||||
|
<junit.platform.version>1.0.2</junit.platform.version>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-webmvc</artifactId>
|
||||||
|
<version>${spring.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet</groupId>
|
||||||
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
|
<version>${servlet.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet</groupId>
|
||||||
|
<artifactId>jstl</artifactId>
|
||||||
|
<version>${jstl.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet.jsp</groupId>
|
||||||
|
<artifactId>javax.servlet.jsp-api</artifactId>
|
||||||
|
<version>${jsp-api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!--Testing -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-test</artifactId>
|
||||||
|
<version>${spring.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>${junit.jupiter.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven.compiler.version}</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
|
<version>${maven-war-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<warName>spring-mvc-push</warName>
|
||||||
|
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||||
|
<outputDirectory>${deploy-path}</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>${maven-surefire-plugin.version}</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.platform</groupId>
|
||||||
|
<artifactId>junit-platform-surefire-provider</artifactId>
|
||||||
|
<version>${junit.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<finalName>spring-mvc-push</finalName>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -0,0 +1,48 @@
|
|||||||
|
package com.baeldung.config;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.ServletRegistration;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.WebApplicationInitializer;
|
||||||
|
import org.springframework.web.context.ContextLoaderListener;
|
||||||
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||||
|
import org.springframework.web.servlet.DispatcherServlet;
|
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||||
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
import org.springframework.web.servlet.view.InternalResourceViewResolver;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebMvc
|
||||||
|
@ComponentScan(basePackages = "com.baeldung.controller")
|
||||||
|
public class PushConfiguration implements WebApplicationInitializer, WebMvcConfigurer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartup(ServletContext container) throws ServletException {
|
||||||
|
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
|
||||||
|
context.register(PushConfiguration.class);
|
||||||
|
container.addListener(new ContextLoaderListener(context));
|
||||||
|
ServletRegistration.Dynamic dispatcher = container.addServlet("DispatcherServlet", new DispatcherServlet(context));
|
||||||
|
dispatcher.setLoadOnStartup(1);
|
||||||
|
dispatcher.addMapping("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public InternalResourceViewResolver jspViewResolver() {
|
||||||
|
InternalResourceViewResolver bean = new InternalResourceViewResolver();
|
||||||
|
bean.setPrefix("/WEB-INF/views/");
|
||||||
|
bean.setSuffix(".jsp");
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
|
registry.addResourceHandler("/resources/**")
|
||||||
|
.addResourceLocations("/resources/");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.baeldung.controller;
|
||||||
|
|
||||||
|
import javax.servlet.http.PushBuilder;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class PushController {
|
||||||
|
|
||||||
|
@RequestMapping(value = "/demoWithPush")
|
||||||
|
public String demoWithPush(PushBuilder pushBuilder) {
|
||||||
|
if (null != pushBuilder) {
|
||||||
|
pushBuilder.path("resources/logo.png")
|
||||||
|
.addHeader("Content-Type", "image/png")
|
||||||
|
.push();
|
||||||
|
pushBuilder.path("resources/script.js")
|
||||||
|
.addHeader("Content-Type", "text/javascript")
|
||||||
|
.push();
|
||||||
|
pushBuilder.path("resources/style.css")
|
||||||
|
.addHeader("Content-Type", "text/css")
|
||||||
|
.push();
|
||||||
|
}
|
||||||
|
return "demo";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/demoWithoutPush")
|
||||||
|
public String demoWithoutPush() {
|
||||||
|
return "demo";
|
||||||
|
}
|
||||||
|
}
|
22
spring-mvc-push/src/main/webapp/WEB-INF/views/demo.jsp
Normal file
22
spring-mvc-push/src/main/webapp/WEB-INF/views/demo.jsp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||||
|
pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>PushBuilder demo</title>
|
||||||
|
<link href="<c:url value="/resources/style.css"/>" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<span class="single-title">PushBuilder demo</span>
|
||||||
|
<br>
|
||||||
|
<img src="<c:url value="/resources/logo.png"/>" alt="Logo" height="126"
|
||||||
|
width="411">
|
||||||
|
<br>
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="<c:url value="/resources/script.js"/>"></script>
|
||||||
|
<br> Go to
|
||||||
|
<a href="/spring-mvc-push/">index</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
14
spring-mvc-push/src/main/webapp/index.jsp
Normal file
14
spring-mvc-push/src/main/webapp/index.jsp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||||
|
pageEncoding="UTF-8"%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<title>PushBuilder demo</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h4>
|
||||||
|
Go to <a href="demoWithPush">PushBuilder demo</a><br> Go to
|
||||||
|
<a href="demoWithoutPush">Simple demo</a>
|
||||||
|
</h4>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
spring-mvc-push/src/main/webapp/resources/logo.png
Normal file
BIN
spring-mvc-push/src/main/webapp/resources/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
1
spring-mvc-push/src/main/webapp/resources/script.js
Normal file
1
spring-mvc-push/src/main/webapp/resources/script.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
console.log('Script')
|
9
spring-mvc-push/src/main/webapp/resources/style.css
Normal file
9
spring-mvc-push/src/main/webapp/resources/style.css
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.single-title {
|
||||||
|
font-size: 30px;
|
||||||
|
color: #535353;
|
||||||
|
font-weight: 200;
|
||||||
|
letter-spacing: -1.5px;
|
||||||
|
line-height: 64px;
|
||||||
|
max-width: 750px;
|
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.baeldung.controller;
|
||||||
|
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||||
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
|
||||||
|
import com.baeldung.config.PushConfiguration;
|
||||||
|
|
||||||
|
@Disabled
|
||||||
|
@SpringJUnitWebConfig(PushConfiguration.class)
|
||||||
|
public class PushControllerIntegrationTest {
|
||||||
|
@Autowired
|
||||||
|
private WebApplicationContext webAppContext;
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setup() {
|
||||||
|
mockMvc = MockMvcBuilders.webAppContextSetup(webAppContext)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDemoWithPushGETisPerformed_thenRetrievedStatusOk() throws Exception {
|
||||||
|
mockMvc.perform(get("/demoWithPush"))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDemoWithoutPushGETisPerformed_thenRetrievedStatusOk() throws Exception {
|
||||||
|
mockMvc.perform(get("/demoWithoutPush"))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user