initial commit for dropwizard integration, removed fallwizard dependency
diff --git a/.gitignore b/.gitignore
index 3d6b9a5..7fd4b48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,4 @@
freemarker-online.iws
**/.DS_Store
+/out/
diff --git a/build.gradle b/build.gradle
index 3e0405f..5151008 100644
--- a/build.gradle
+++ b/build.gradle
@@ -51,13 +51,13 @@
repositories {
mavenCentral()
- // For com.berico:fallwizard:1.1.1 that must be locally installed; see README.md!
- mavenLocal()
}
dependencies {
compile libraries.dropwizard
- compile libraries.dropwizrd_views
+ compile libraries.dropwizard_views
+ compile libraries.dropwizard_views_freemarker
+ compile libraries.dropwizard_assets
compile libraries.springCore
compile libraries.springContext
compile libraries.springContextSupport
@@ -65,7 +65,7 @@
compile libraries.springSecurityCore
compile libraries.springTransaction
compile libraries.springBeans
- compile libraries.fallwizard
+ compile libraries.springWeb
testCompile libraries.dropwizard_testing
testCompile libraries.springTest
@@ -100,7 +100,7 @@
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
manifest {
- attributes 'Main-Class': 'org.apache.freemarker.onlinetester.dropwizard.ApplicationStartup'
+ attributes 'Main-Class': 'org.apache.freemarker.onlinetester.dropwizard.FreeMarkerOnlineTester'
attributes 'Implementation-Version': "$version"
}
}
diff --git a/dependencies.gradle b/dependencies.gradle
index 80ff8ce..73d9088 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -18,14 +18,16 @@
*/
project.ext.set("libraries", "")
-ext.dw_version = "0.6.2";
-ext.spring_version = "3.2.2.RELEASE";
+ext.dw_version = "0.7.1";
+ext.spring_version = "3.2.18.RELEASE";
ext.jackson_version = "2.5.1";
project.libraries = [
- dropwizard: "com.yammer.dropwizard:dropwizard-core:$dw_version",
- dropwizard_client: "com.yammer.dropwizard:dropwizard-client:$dw_version",
- dropwizrd_views: "com.yammer.dropwizard:dropwizard-views:$dw_version",
+ dropwizard: "io.dropwizard:dropwizard-core:$dw_version",
+ dropwizard_client: "io.dropwizard:dropwizard-client:$dw_version",
+ dropwizard_views: "io.dropwizard:dropwizard-views:$dw_version",
+ dropwizard_views_freemarker: "io.dropwizard:dropwizard-views-freemarker:$dw_version",
+ dropwizard_assets: "io.dropwizard:dropwizard-assets:$dw_version",
guava: 'com.google.guava:guava:13.0.1',
jersey_core: 'com.sun.jersey:jersey-core:1.1.4.1',
@@ -37,19 +39,19 @@
springTransaction: "org.springframework:spring-tx:$spring_version",
springBeans: "org.springframework:spring-beans:$spring_version",
springJersey: "com.sun.jersey.contribs:jersey-spring:1.7",
+ springWeb: "org.springframework:spring-web:$spring_version",
// Security
// Spring and Spring Security support for dropwizard
- fallwizard: "com.berico:fallwizard:1.1.1",
// adheres to fallwizard version of spring security
springSecurityCore: "org.springframework.security:spring-security-core:3.1.4.RELEASE",
- dropwizardAuth: "com.yammer.dropwizard:dropwizard-auth:$dw_version",
+ dropwizardAuth: "io.dropwizard:dropwizard-auth:$dw_version",
// Spring test
springTest: "org.springframework:spring-test:$spring_version",
//Test libs
- dropwizard_testing: "com.yammer.dropwizard:dropwizard-testing:$dw_version",
+ dropwizard_testing: "io.dropwizard:dropwizard-testing:$dw_version",
junit: 'junit:junit-dep:4.11',
mockito: 'org.mockito:mockito-core:1.9.0',
hamcrest: 'org.hamcrest:hamcrest-library:1.3',
diff --git a/intellij.gradle b/intellij.gradle
index 0853356..72fdc24 100644
--- a/intellij.gradle
+++ b/intellij.gradle
@@ -39,7 +39,7 @@
list.appendNode('item', [index: '0', class: 'java.lang.String', itemvalue: 'MyProjectStartup'])
def Application = runManager.appendNode('configuration', [default: 'false', name: "${projectName}", type: 'Application', factoryName: 'Application'])
Application.appendNode('extension', [name: 'coverage', enabled: 'false', merge: 'false', runner: 'idea'])
- Application.appendNode('option', [name: 'MAIN_CLASS_NAME', value: "org.apache.freemarker.onlinetester.dropwizard.ApplicationStartup"])
+ Application.appendNode('option', [name: 'MAIN_CLASS_NAME', value: "org.apache.freemarker.onlinetester.dropwizard.FreeMarkerOnlineTester"])
Application.appendNode('option', [name: 'VM_PARAMETERS', value: ""])
Application.appendNode('option', [name: 'PROGRAM_PARAMETERS', value: "server src/main/resources/${projectName}.yml"])
Application.appendNode('option', [name: 'WORKING_DIRECTORY', value: "$projectDir"])
diff --git a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/ApplicationStartup.java b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/ApplicationStartup.java
deleted file mode 100644
index 4caf07c..0000000
--- a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/ApplicationStartup.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.freemarker.onlinetester.dropwizard;
-
-import com.berico.fallwizard.SpringConfiguration;
-import com.berico.fallwizard.SpringService;
-import com.yammer.dropwizard.assets.AssetsBundle;
-import com.yammer.dropwizard.config.Bootstrap;
-import com.yammer.dropwizard.views.ViewBundle;
-
-public class ApplicationStartup extends SpringService<SpringConfiguration> {
-
- public static void main(String[] args) throws Exception {
- new ApplicationStartup().run(args);
- }
-
- @Override
- public void initialize(Bootstrap<SpringConfiguration> bootstrap) {
- bootstrap.setName("freemarker-online");
- bootstrap.addBundle(new ViewBundle());
- bootstrap.addBundle(new AssetsBundle("/assets/css", "/css"));
- bootstrap.addBundle(new AssetsBundle("/assets/js", "/js"));
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java
new file mode 100644
index 0000000..3c48efd
--- /dev/null
+++ b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTester.java
@@ -0,0 +1,58 @@
+package org.apache.freemarker.onlinetester.dropwizard;
+
+
+import com.codahale.metrics.health.HealthCheck;
+
+import io.dropwizard.Application;
+import io.dropwizard.assets.AssetsBundle;
+import io.dropwizard.setup.Bootstrap;
+import io.dropwizard.setup.Environment;
+import io.dropwizard.views.ViewBundle;
+import org.apache.freemarker.onlinetester.spring.SpringConfiguration;
+import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
+
+
+import javax.ws.rs.Path;
+import java.util.Map;
+
+public class FreeMarkerOnlineTester extends Application<FreeMarkerOnlineTesterConfiguration> {
+
+ public static void main(String[] args) throws Exception {
+ new FreeMarkerOnlineTester().run(args);
+ }
+
+ @Override
+ public String getName() {
+ return "freemarker-online";
+ }
+
+ @Override
+ public void run(FreeMarkerOnlineTesterConfiguration configuration, Environment environment) throws Exception {
+ AnnotationConfigWebApplicationContext context = initializeSpringContext();
+
+
+ Map<String, Object> resources = context.getBeansWithAnnotation(Path.class);
+ for(Map.Entry<String,Object> entry : resources.entrySet()) {
+ environment.jersey().register(entry.getValue());
+ }
+
+ Map<String, HealthCheck> healthChecks = context.getBeansOfType(HealthCheck.class);
+ for(Map.Entry<String,HealthCheck> entry : healthChecks.entrySet()) {
+ environment.healthChecks().register("", entry.getValue());
+ }
+ }
+
+ private AnnotationConfigWebApplicationContext initializeSpringContext() {
+ AnnotationConfigWebApplicationContext springContext = new AnnotationConfigWebApplicationContext();
+ springContext.register(SpringConfiguration.class);
+ springContext.refresh();
+ springContext.start();
+ return springContext;
+ }
+
+ @Override
+ public void initialize(Bootstrap<FreeMarkerOnlineTesterConfiguration> bootstrap) {
+ bootstrap.addBundle(new ViewBundle());
+ bootstrap.addBundle(new AssetsBundle());
+ }
+}
diff --git a/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java
new file mode 100644
index 0000000..355192c
--- /dev/null
+++ b/src/main/java/org/apache/freemarker/onlinetester/dropwizard/FreeMarkerOnlineTesterConfiguration.java
@@ -0,0 +1,8 @@
+package org.apache.freemarker.onlinetester.dropwizard;
+
+
+import io.dropwizard.Configuration;
+
+public class FreeMarkerOnlineTesterConfiguration extends Configuration {
+
+}
diff --git a/src/main/java/org/apache/freemarker/onlinetester/healthchecks/MyProjectHealthCheck.java b/src/main/java/org/apache/freemarker/onlinetester/healthchecks/MyProjectHealthCheck.java
index 192fa46..6322100 100644
--- a/src/main/java/org/apache/freemarker/onlinetester/healthchecks/MyProjectHealthCheck.java
+++ b/src/main/java/org/apache/freemarker/onlinetester/healthchecks/MyProjectHealthCheck.java
@@ -19,17 +19,12 @@
package org.apache.freemarker.onlinetester.healthchecks;
-import com.yammer.metrics.core.HealthCheck;
+import com.codahale.metrics.health.HealthCheck;
import org.springframework.stereotype.Component;
@Component
public class MyProjectHealthCheck extends HealthCheck {
- // note that this is due to the default spring CTR
- public MyProjectHealthCheck() {
- super("MyProjectHealthCheck");
- }
-
@Override
protected Result check() throws Exception {
return Result.healthy(); // we're always healthy!
diff --git a/src/main/java/org/apache/freemarker/onlinetester/resources/TestResource.java b/src/main/java/org/apache/freemarker/onlinetester/resources/TestResource.java
new file mode 100644
index 0000000..df790bf
--- /dev/null
+++ b/src/main/java/org/apache/freemarker/onlinetester/resources/TestResource.java
@@ -0,0 +1,18 @@
+package org.apache.freemarker.onlinetester.resources;
+
+import org.springframework.stereotype.Component;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/test")
+@Component
+public class TestResource {
+ @GET
+ @Produces(MediaType.TEXT_HTML)
+ public String blankForm() {
+ return "Hello";
+ }
+}
diff --git a/src/main/java/org/apache/freemarker/onlinetester/spring/SpringConfiguration.java b/src/main/java/org/apache/freemarker/onlinetester/spring/SpringConfiguration.java
new file mode 100644
index 0000000..a4fe003
--- /dev/null
+++ b/src/main/java/org/apache/freemarker/onlinetester/spring/SpringConfiguration.java
@@ -0,0 +1,8 @@
+package org.apache.freemarker.onlinetester.spring;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan(basePackages = {"org.apache.freemarker.onlinetester"})
+public class SpringConfiguration {}
diff --git a/src/main/java/org/apache/freemarker/onlinetester/view/FreeMarkerOnlineView.java b/src/main/java/org/apache/freemarker/onlinetester/view/FreeMarkerOnlineView.java
index 3aecbb5..c90e2a5 100644
--- a/src/main/java/org/apache/freemarker/onlinetester/view/FreeMarkerOnlineView.java
+++ b/src/main/java/org/apache/freemarker/onlinetester/view/FreeMarkerOnlineView.java
@@ -26,11 +26,11 @@
import java.util.Locale;
import java.util.Map;
+import io.dropwizard.views.View;
import org.apache.commons.lang3.StringUtils;
import org.apache.freemarker.onlinetester.model.SelectionOption;
import org.apache.freemarker.onlinetester.services.AllowedSettingValuesMaps;
-import com.yammer.dropwizard.views.View;
import freemarker.template.Configuration;
diff --git a/src/main/resources/freemarker-online.yml b/src/main/resources/freemarker-online.yml
index 2b50ba5..f67fc2d 100644
--- a/src/main/resources/freemarker-online.yml
+++ b/src/main/resources/freemarker-online.yml
@@ -15,25 +15,19 @@
# specific language governing permissions and limitations
# under the License.
-# Spring configuration
-# Application Contexts to Load.
-applicationContext: ['classpath*:/spring/*-context.xml']
-
logging:
- # Settings for logging to a file.
- file:
- # If true, write log statements to a file.
- enabled: true
- threshold: ALL
- # The file to which current statements will be logged.
- currentLogFilename: /var/log/freemarker-online/freemarker-online.log
-
- # When the log file rotates, the archived log will be renamed to this and gzipped. The
- # %d is replaced with the previous day (yyyy-MM-dd). Custom rolling windows can be created
- # by passing a SimpleDateFormat-compatible format as an argument: "%d{yyyy-MM-dd-hh}".
- archivedLogFilenamePattern: /var/log/freemarker-online/freemarker-online-%d.log.gz
- # The number of archived files to keep.
- archivedFileCount: 5
-
- # The timezone used to format dates. HINT: USE THE DEFAULT, UTC.
- timeZone: UTC
+ level: INFO
+ appenders:
+ - type: file
+ currentLogFilename: /var/log/freemarker-online/freemarker-online.log
+ threshold: ALL
+ archive: true
+ archivedLogFilenamePattern: /var/log/freemarker-online/freemarker-online-%d.log.gz
+ archivedFileCount: 5
+ timeZone: UTC
+ logFormat:
+ - type: console
+ threshold: ALL
+ timeZone: UTC
+ target: stdout
+ logFormat:
\ No newline at end of file
diff --git a/src/main/resources/view/freemarker-online.ftl b/src/main/resources/view/freemarker-online.ftl
index 57194f0..7c57f3e 100644
--- a/src/main/resources/view/freemarker-online.ftl
+++ b/src/main/resources/view/freemarker-online.ftl
@@ -28,13 +28,13 @@
<html>
<head>
<meta charset="utf-8">
- <link rel="stylesheet" href="css/main.css">
+ <link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.blockUI/2.70/jquery.blockUI.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/autosize.js/3.0.8/autosize.min.js"></script>
- <script src="js/script.js"></script>
+ <script src="assets/js/script.js"></script>
<script>
$(function() {
// Auto-focus on first form input:
diff --git a/src/test/java/org/apache/freemarker/onlinetester/platform/DropWizardServiceTest.java b/src/test/java/org/apache/freemarker/onlinetester/platform/DropWizardServiceTest.java
index f23672c..c467a04 100644
--- a/src/test/java/org/apache/freemarker/onlinetester/platform/DropWizardServiceTest.java
+++ b/src/test/java/org/apache/freemarker/onlinetester/platform/DropWizardServiceTest.java
@@ -20,20 +20,22 @@
package org.apache.freemarker.onlinetester.platform;
import com.google.common.io.Resources;
-import org.apache.freemarker.onlinetester.dropwizard.ApplicationStartup;
-import com.yammer.dropwizard.testing.junit.DropwizardServiceRule;
+import io.dropwizard.testing.junit.DropwizardAppRule;
+
+import org.apache.freemarker.onlinetester.dropwizard.FreeMarkerOnlineTester;
+import org.apache.freemarker.onlinetester.dropwizard.FreeMarkerOnlineTesterConfiguration;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TestRule;
public class DropWizardServiceTest {
@ClassRule
- public static TestRule testRule = new DropwizardServiceRule<>(ApplicationStartup.class,
+ public static TestRule testRule = new DropwizardAppRule<FreeMarkerOnlineTesterConfiguration>(FreeMarkerOnlineTester.class,
Resources.getResource("freemarker-online.yml").getPath());
@Test
public void testServerIsUp() throws Exception {
- ((DropwizardServiceRule) testRule).getService();
+ ((DropwizardAppRule) testRule).getApplication();
}
}