work on rest controller and separated application contexts
This commit is contained in:
parent
019c235ea5
commit
dd4f730ca7
42
pom.xml
42
pom.xml
|
@ -69,12 +69,24 @@
|
||||||
<artifactId>spring-webmvc</artifactId>
|
<artifactId>spring-webmvc</artifactId>
|
||||||
<version>${org.springframework.version}</version>
|
<version>${org.springframework.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-oxm</artifactId>
|
||||||
|
<version>${org.springframework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.10</version>
|
<version>4.10</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
<dependency>
|
||||||
|
<groupId>javax.validation</groupId>
|
||||||
|
<artifactId>validation-api</artifactId>
|
||||||
|
<version>1.0.0.GA</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
@ -89,33 +101,9 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
<version>2.9.1</version>
|
<version>2.9.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!--
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.glassfish.maven.plugin</groupId>
|
|
||||||
<artifactId>maven-glassfish-plugin</artifactId>
|
|
||||||
<version>2.1</version>
|
|
||||||
<configuration>
|
|
||||||
<glassfishDirectory>/opt/glassfish3/glassfish/</glassfishDirectory>
|
|
||||||
<user>admin</user>
|
|
||||||
<adminPassword>foobar2342</adminPassword>
|
|
||||||
<domain>
|
|
||||||
<name>${project.artifactId}</name>
|
|
||||||
<adminPort>4848</adminPort>
|
|
||||||
<httpPort>8080</httpPort>
|
|
||||||
<httpsPort>8443</httpsPort>
|
|
||||||
</domain>
|
|
||||||
<components>
|
|
||||||
<component>
|
|
||||||
<name>${project.artifactId}</name>
|
|
||||||
<artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
|
|
||||||
</component>
|
|
||||||
</components>
|
|
||||||
</configuration>
|
|
||||||
|
|
||||||
</plugin>-->
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
package de.ctdo.bunti.web;
|
package de.ctdo.bunti.web;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import de.ctdo.bunti.control.BuntiController;
|
import de.ctdo.bunti.control.BuntiController;
|
||||||
import de.ctdo.bunti.dao.BuntiDevicesDAO;
|
import de.ctdo.bunti.webmodel.DeviceUpdate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.validation.Validator;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class RestController {
|
public class RestController {
|
||||||
|
private Validator validator;
|
||||||
private BuntiDevicesDAO devicesDAO;
|
|
||||||
private BuntiController controller;
|
private BuntiController controller;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public final void setDevicesDAO(BuntiDevicesDAO devicesDAO) {
|
public void setValidator(Validator validator) {
|
||||||
this.devicesDAO = devicesDAO;
|
this.validator = validator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -25,20 +25,25 @@ public class RestController {
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@RequestMapping(value = "/devices", method = RequestMethod.GET)
|
@RequestMapping(value = "/devices", method = RequestMethod.GET)
|
||||||
public final ModelAndView getAll() {
|
public final ModelAndView getAll() {
|
||||||
return new ModelAndView("deviceList", "deviceList", devicesDAO.getAllDevices());
|
return new ModelAndView("deviceList", "deviceList", controller.getAllDevices());
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/devices/{id}", method = RequestMethod.GET)
|
@RequestMapping(value = "/devices/{id}", method = RequestMethod.GET)
|
||||||
public final ModelAndView getDeviceById(@PathVariable("id") int id) {
|
public final ModelAndView getDeviceById(@PathVariable("id") int id) {
|
||||||
return new ModelAndView("device", "device", devicesDAO.getDeviceById(id));
|
return new ModelAndView("device", "device", controller.getDeviceById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/devices/{id}", method = RequestMethod.PUT)
|
@RequestMapping(value = "/devices/{id}", method = RequestMethod.PUT)
|
||||||
public final ModelAndView setDeviceById(@PathVariable("id") int id) {
|
public String setDeviceById(@ModelAttribute @Valid DeviceUpdate update, BindingResult errors) {
|
||||||
//controller.setDevice(id, ... )
|
if (errors.hasErrors()) {
|
||||||
return new ModelAndView("device", "device", devicesDAO.getDeviceById(id));
|
return "redirect:/index.html";
|
||||||
|
} else {
|
||||||
|
controller.setDevice(update.getDeviceId(), update.getOptions());
|
||||||
|
return "redirect:devices/" + update.getDeviceId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package de.ctdo.bunti.webmodel;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class DeviceUpdate implements Serializable {
|
||||||
|
private int deviceId;
|
||||||
|
private Map<String, Object> options;
|
||||||
|
|
||||||
|
public int getDeviceId() {
|
||||||
|
return deviceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceId(int deviceId) {
|
||||||
|
this.deviceId = deviceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> getOptions() {
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOptions(Map<String, Object> options) {
|
||||||
|
this.options = options;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xmlns:task="http://www.springframework.org/schema/task"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
|
||||||
|
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
|
||||||
|
>
|
||||||
|
|
||||||
|
<context:component-scan base-package="de.ctdo">
|
||||||
|
<context:exclude-filter type="regex" expression="de\.ctdo\.bunti\.web.*" />
|
||||||
|
</context:component-scan>
|
||||||
|
|
||||||
|
<task:annotation-driven scheduler="myScheduler"/>
|
||||||
|
<task:scheduler id="myScheduler" pool-size="3"/>
|
||||||
|
|
||||||
|
|
||||||
|
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
|
||||||
|
<property name="location" value="classpath:bunti.properties"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
|
||||||
|
|
||||||
|
<bean class="de.ctdo.bunti.dmx.DMXMixerImpl">
|
||||||
|
<property name="artNetDeviceAddress" value="${artnet.deviceAddress}"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
|
<bean id="marshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
|
||||||
|
<property name="aliases">
|
||||||
|
<map>
|
||||||
|
<entry value="de.ctdo.bunti.model.BuntiDevice" key="buntiDevice" />
|
||||||
|
<entry value="de.ctdo.bunti.model.BuntiDMXDevice" key="buntiDMXDevice" />
|
||||||
|
<entry value="de.ctdo.bunti.model.Par56Spot" key="par56Spot" />
|
||||||
|
<entry value="de.ctdo.bunti.model.Strobe1500" key="strobe1500" />
|
||||||
|
</map>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
|
@ -1,32 +1,32 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:context="http://www.springframework.org/schema/context"
|
|
||||||
xmlns:task="http://www.springframework.org/schema/task"
|
|
||||||
xsi:schemaLocation="
|
xsi:schemaLocation="
|
||||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
|
||||||
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
|
|
||||||
|
|
||||||
|
|
||||||
<context:component-scan base-package="de.ctdo" />
|
|
||||||
|
|
||||||
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
|
|
||||||
<property name="location" value="classpath:bunti.properties"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
|
|
||||||
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
|
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
|
||||||
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
|
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
|
||||||
|
|
||||||
<task:annotation-driven scheduler="myScheduler"/>
|
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
|
||||||
<!--<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
|
<property name="favorPathExtension" value="true" />
|
||||||
<task:executor id="myExecutor" pool-size="3-10" queue-capacity="50" />-->
|
|
||||||
<task:scheduler id="myScheduler" pool-size="3"/>
|
|
||||||
|
|
||||||
|
|
||||||
<bean class="de.ctdo.bunti.dmx.DMXMixerImpl">
|
|
||||||
<property name="artNetDeviceAddress" value="${artnet.deviceAddress}"/>
|
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
|
||||||
|
<property name="order" value="1" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
|
||||||
|
<property name="prefix" value="/WEB-INF/jsp/" />
|
||||||
|
<property name="suffix" value=".jsp" />
|
||||||
|
<property name="order" value="2" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="deviceList" class="org.springframework.web.servlet.view.xml.MarshallingView">
|
||||||
|
<property name="marshaller" ref="marshaller" />
|
||||||
|
<property name="modelKey" value="deviceList" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
|
<import resource="classpath:marshaller.xml" />
|
||||||
|
|
||||||
</beans>
|
</beans>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
||||||
|
pageEncoding="ISO-8859-1"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||||
|
<title>Device</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Device</h2>
|
||||||
|
<spring:bind path="device">
|
||||||
|
<font color="red"> <b><c:out value="${status.errorMessage}" /></b></font>
|
||||||
|
</spring:bind>
|
||||||
|
|
||||||
|
<c:out value="${device.deviceId}" />
|
||||||
|
<br />
|
||||||
|
<c:out value="${device.deviceName}" />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<a href="<spring:url value="/"/>">Home</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
||||||
|
pageEncoding="ISO-8859-1"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||||
|
<title>Devices</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Devices</h2>
|
||||||
|
<table border="1">
|
||||||
|
<thead>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Name</th>
|
||||||
|
</thead>
|
||||||
|
<c:forEach var="device" items="${deviceList}">
|
||||||
|
<tr>
|
||||||
|
<td><c:out value="${device.deviceId}" /></td>
|
||||||
|
<td><c:out value="${device.deviceName}" /></td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</table>
|
||||||
|
<a href="<spring:url value="/"/>">Home</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,7 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns="http://java.sun.com/xml/ns/javaee"
|
xmlns="http://java.sun.com/xml/ns/javaee"
|
||||||
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
|
||||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||||
id="WebApp_ID" version="3.0">
|
id="WebApp_ID" version="3.0">
|
||||||
|
|
||||||
|
@ -12,6 +11,15 @@
|
||||||
|
|
||||||
<description>CTDO bunti control Server</description>
|
<description>CTDO bunti control Server</description>
|
||||||
|
|
||||||
|
<listener>
|
||||||
|
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<context-param>
|
||||||
|
<param-name>contextConfigLocation</param-name>
|
||||||
|
<param-value>classpath:applicationContext.xml</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>dispatcher</servlet-name>
|
<servlet-name>dispatcher</servlet-name>
|
||||||
<servlet-class>
|
<servlet-class>
|
||||||
|
|
Loading…
Reference in New Issue