DATAREST-1386 - Add HAL Explorer module
We now ship a module containing the HAL Explorer [0] as an alternative to the HAL Browser which seems to be mostly out of maintenance and the WebJar refers to a jQuery version with a CVE. The new module still contains some customization code that we had in place for the browser to customize the POST/PUT forms to use the JSON Schema exposed for the aggregates. The HAL Browser extension is now deprecated in the form that its inclusion causes a warn log to recommend switching to the explorer. A couple of general coding improvements: package scope for controllers and handler methods. Better use of constants and newer request mapping annotations. Tweaked the configuration of static resource handlers to resolve the implicit cyclic dependency between the browser/explorer and the WebMVC module by introducing a Spring Factories backed extension SPI. [0] https://github.com/toedter/hal-explorer
This commit is contained in:
177
spring-data-rest-hal-explorer/pom.xml
Normal file
177
spring-data-rest-hal-explorer/pom.xml
Normal file
@@ -0,0 +1,177 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-rest-parent</artifactId>
|
||||
<version>3.2.0.BUILD-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>spring-data-rest-hal-explorer</artifactId>
|
||||
|
||||
<name>Spring Data REST - HAL Explorer</name>
|
||||
|
||||
<properties>
|
||||
<explorer.version>0.9.5</explorer.version>
|
||||
<json-editor.version>0.7.21</json-editor.version>
|
||||
<java-module-name>spring.data.rest.hal.explorer</java-module-name>
|
||||
<project.root>${basedir}/..</project.root>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>spring-data-rest-webmvc</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>hal-explorer</artifactId>
|
||||
<version>${explorer.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>json-editor</artifactId>
|
||||
<version>${json-editor.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>unpack-hal-explorer</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>hal-explorer</artifactId>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${project.build.directory}/hal-explorer</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
<!--
|
||||
<execution>
|
||||
<id>unpack-json-editor</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>json-editor</artifactId>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${project.build.directory}/json-editor</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
-->
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy todir="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer">
|
||||
<fileset dir="${project.build.directory}/hal-explorer/META-INF/resources/webjars/hal-explorer/${explorer.version}" />
|
||||
</copy>
|
||||
<!--
|
||||
<copy todir="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/vendor/js">
|
||||
<fileset dir="${project.build.directory}/json-editor/META-INF/resources/webjars/json-editor/${json-editor.version}" />
|
||||
</copy>
|
||||
<copy file="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/explorer.html"
|
||||
tofile="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/index.html" />
|
||||
<replace file="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/index.html">
|
||||
<replacefilter>
|
||||
<replacetoken><![CDATA[</body>]]></replacetoken>
|
||||
<replacevalue><![CDATA[
|
||||
<script id="dynamic-request-template" type="text/template">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3>Create/Update</h3>
|
||||
</div>
|
||||
|
||||
<form class="non-safe" action="<%= href %>">
|
||||
<div class="modal-body" style="padding-top: 0px">
|
||||
<div id="jsoneditor"></div>
|
||||
|
||||
<div class="well well-small" style="padding-bottom: 0px;">
|
||||
<div class="container-fluid">
|
||||
<div class="row-fluid">
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="display: inline-block; font-weight: bold;">Action:</label>
|
||||
<input name="method" type="text" class="method controls" style="width: 98%" value="POST" />
|
||||
<input name="url" type="text" class="url controls" style="width: 98%" value="<%= href %>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-primary">Make Request</button>
|
||||
</div>
|
||||
</form>
|
||||
</script>
|
||||
|
||||
<script src="vendor/js/jsoneditor.js"></script>
|
||||
<script src="js/CustomPostForm.js"></script>
|
||||
|
||||
</body>]]>
|
||||
</replacevalue>
|
||||
</replacefilter>
|
||||
</replace>
|
||||
-->
|
||||
<replace file="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/index.html">
|
||||
<replacefilter>
|
||||
<replacetoken>The HAL explorer</replacetoken>
|
||||
<replacevalue>The HAL Explorer (for Spring Data REST)</replacevalue>
|
||||
</replacefilter>
|
||||
</replace>
|
||||
<!--
|
||||
<delete file="${project.build.outputDirectory}/META-INF/spring-data-rest/hal-explorer/explorer.html" />
|
||||
-->
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
Reference in New Issue
Block a user