diff options
author | Kjetil Ørbekk <orbekk@pvv.ntnu.no> | 2010-09-02 00:34:33 -0400 |
---|---|---|
committer | Kjetil Ørbekk <orbekk@pvv.ntnu.no> | 2010-09-02 00:34:33 -0400 |
commit | 699b451675830da041d09a6e32045772788ad66e (patch) | |
tree | cc3e46670503599dd546dbc1652189dd2b4fc02e |
Framework for Lino Quotes
-rw-r--r-- | build.xml | 130 | ||||
-rw-r--r-- | src/META-INF/jdoconfig.xml | 14 | ||||
-rw-r--r-- | src/WEB-INF/appengine-web.xml | 4 | ||||
-rw-r--r-- | src/WEB-INF/web.xml | 32 | ||||
-rw-r--r-- | src/log4j.properties | 24 | ||||
-rw-r--r-- | src/logging.properties | 27 | ||||
-rw-r--r-- | src/lq/Redirect.java | 23 | ||||
-rw-r--r-- | src/lq/ViewQuotes.java | 14 | ||||
-rw-r--r-- | src/org/example/HelloAppEngineServlet.java | 12 |
9 files changed, 280 insertions, 0 deletions
diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..c526843 --- /dev/null +++ b/build.xml @@ -0,0 +1,130 @@ +<!-- This is a template Ant file for a very basic Google AppEngine project --> + +<project name="myproject" default="war"> + + <property file="build.properties"/> + <property name="appengine.sdk" location="../.."/> + + <!-- Check that the SDK value is set and seems sane, so we can give a nicer + error if not. --> + <fail message="Please define the appengine.sdk property to point to your SDK directory"> + <condition> + <not> <and> + <isset property="appengine.sdk"/> + <available file="${appengine.sdk}/config/user/ant-macros.xml"/> + </and> </not> + </condition> + </fail> + + <!-- Pick up the Ant macros and taskdefs for App Engine --> + <import file="${appengine.sdk}/config/user/ant-macros.xml"/> + + + <!-- Remote debug port for dev_appserver --> + <property name="debug.port" value="5005"/> + + <!-- HTTP port for dev_appserver --> + <property name="http.port" value="8080"/> + + <!-- Name of log file to write logs to --> + <property name="log.file" value="app.log"/> + + <!-- Number of days worth of logs to retrieve --> + <property name="log.days" value="2"/> + + + <!-- Change if you like e.g. "war" better than "www" for the output --> + <property name="war.dir" location="www"/> + + <target name="war" depends="enhance" + description="Assemble the application directory"> + <mkdir dir="${war.dir}/WEB-INF"/> + <copy todir="${war.dir}"> + <fileset dir="html"> + <exclude name="**/.git/**"/> + <exclude name="**/.svn/**"/> + <exclude name="**/*~"/> + </fileset> + </copy> + <copy todir="${war.dir}/WEB-INF"> + <fileset dir="src/WEB-INF"> + <include name="*.xml"/> + </fileset> + </copy> + <enhance_war war="${war.dir}"/> + </target> + + <target name="enhance" depends="compile" + description="Enhance the classes after compilation"> + <enhance_war war="${war.dir}"/> + </target> + + <target name="compile" + description="Compile the application servlet code"> + <mkdir dir="${war.dir}/WEB-INF/classes"/> + <mkdir dir="${war.dir}/WEB-INF/lib"/> + <javac srcdir="src" destdir="${war.dir}/WEB-INF/classes"> + <classpath> + <fileset dir="${appengine.sdk}/lib/user"> + <include name="*.jar"/> + </fileset> + <fileset dir="${appengine.sdk}/lib/shared"> + <include name="*.jar"/> + </fileset> + </classpath> + </javac> + </target> + + <target name="clean" + description="Force a clean slate to rebuild"> + <delete dir="${war.dir}"/> + </target> + + <target name="runserver" depends="war" + description="Run the dev_appserver"> + <dev_appserver war="${war.dir}" port="${http.port}"/> + </target> + + <target name="dev_appserver" depends="runserver"/> + + <target name="debug" depends="war" + description="Launches dev_appserver with remote debugging enabled"> + <echo message="Launching dev_appserver on Web port ${http.port}, Java remote debug port ${debug.port}"/> + <dev_appserver war="${war.dir}" port="${http.port}"> + <options> + <arg value="--jvm_flag=-Xdebug"/> + <arg value="--jvm_flag=-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${debug.port}"/> + </options> + </dev_appserver> + </target> + + + + <target name="update" depends="war" + description="Uploads the application, including indexes"> + <appcfg action="update" war="${war.dir}"/> + </target> + + <target name="update_indexes" depends="war" + description="Uploads only the application's indexes"> + <appcfg action="update_indexes" war="${war.dir}"/> + </target> + + <target name="rollback" depends="war" + description="Rolls back any in-progress application update"> + <appcfg action="rollback" war="${war.dir}"/> + </target> + + <target name="request_logs" + description="Downloads the application's logs"> + <appcfg action="request_logs" war="${war.dir}"> + <options> + <arg value="--num_days=${log.days}"/> + </options> + <args> + <arg value="${log.file}"/> + </args> + </appcfg> + </target> + +</project> diff --git a/src/META-INF/jdoconfig.xml b/src/META-INF/jdoconfig.xml new file mode 100644 index 0000000..ae76ee7 --- /dev/null +++ b/src/META-INF/jdoconfig.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> + + <persistence-manager-factory name="transactions-optional"> + <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/> + <property name="javax.jdo.option.ConnectionURL" value="appengine"/> + <property name="javax.jdo.option.NontransactionalRead" value="true"/> + <property name="javax.jdo.option.NontransactionalWrite" value="true"/> + <property name="javax.jdo.option.RetainValues" value="true"/> + <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> + </persistence-manager-factory> +</jdoconfig> diff --git a/src/WEB-INF/appengine-web.xml b/src/WEB-INF/appengine-web.xml new file mode 100644 index 0000000..d61873a --- /dev/null +++ b/src/WEB-INF/appengine-web.xml @@ -0,0 +1,4 @@ +<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> + <application>linoquotes</application> + <version>1</version> +</appengine-web-app> diff --git a/src/WEB-INF/web.xml b/src/WEB-INF/web.xml new file mode 100644 index 0000000..067332b --- /dev/null +++ b/src/WEB-INF/web.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<web-app + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" + version="2.5"> + <display-name>Quotes fra #linux.no på freenode</display-name> + + <servlet> + <servlet-name>linoquotes</servlet-name> + <servlet-class>lq.ViewQuotes</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>linoquotes</servlet-name> + <url-pattern>/quotes</url-pattern> + </servlet-mapping> + + <servlet> + <servlet-name>redirect-to-quotes</servlet-name> + <servlet-class>lq.Redirect</servlet-class> + <init-param> + <param-name>destination</param-name> + <param-value>/quotes</param-value> + </init-param> + </servlet> + + <servlet-mapping> + <servlet-name>redirect-to-quotes</servlet-name> + <url-pattern>/</url-pattern> + </servlet-mapping> +</web-app> diff --git a/src/log4j.properties b/src/log4j.properties new file mode 100644 index 0000000..2768524 --- /dev/null +++ b/src/log4j.properties @@ -0,0 +1,24 @@ +# This was copied from the SDK's config/user/log4j.properties file. +# +# To use this configuration, deploy it into your application's WEB-INF/classes +# directory. You are also encouraged to edit it as you like. + +# Configure the console as our one appender +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n + +# tighten logging on the DataNucleus Categories +log4j.category.DataNucleus.JDO=WARN, A1 +log4j.category.DataNucleus.Persistence=WARN, A1 +log4j.category.DataNucleus.Cache=WARN, A1 +log4j.category.DataNucleus.MetaData=WARN, A1 +log4j.category.DataNucleus.General=WARN, A1 +log4j.category.DataNucleus.Utility=WARN, A1 +log4j.category.DataNucleus.Transaction=WARN, A1 +log4j.category.DataNucleus.Datastore=WARN, A1 +log4j.category.DataNucleus.ClassLoading=WARN, A1 +log4j.category.DataNucleus.Plugin=WARN, A1 +log4j.category.DataNucleus.ValueGeneration=WARN, A1 +log4j.category.DataNucleus.Enhancer=WARN, A1 +log4j.category.DataNucleus.SchemaTool=WARN, A1 diff --git a/src/logging.properties b/src/logging.properties new file mode 100644 index 0000000..5cf1d10 --- /dev/null +++ b/src/logging.properties @@ -0,0 +1,27 @@ +# This was copied from the SDK's config/user/logging.properties file. +# +# To use this configuration, copy it into your application's WEB-INF +# folder and add the following to your appengine-web.xml: +# +# <system-properties> +# <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> +# </system-properties> +# + +# Set the default logging level for all loggers to WARNING +.level = WARNING + +# Set the default logging level for ORM, specifically, to WARNING +DataNucleus.JDO.level=WARNING +DataNucleus.Persistence.level=WARNING +DataNucleus.Cache.level=WARNING +DataNucleus.MetaData.level=WARNING +DataNucleus.General.level=WARNING +DataNucleus.Utility.level=WARNING +DataNucleus.Transaction.level=WARNING +DataNucleus.Datastore.level=WARNING +DataNucleus.ClassLoading.level=WARNING +DataNucleus.Plugin.level=WARNING +DataNucleus.ValueGeneration.level=WARNING +DataNucleus.Enhancer.level=WARNING +DataNucleus.SchemaTool.level=WARNING diff --git a/src/lq/Redirect.java b/src/lq/Redirect.java new file mode 100644 index 0000000..b3414bb --- /dev/null +++ b/src/lq/Redirect.java @@ -0,0 +1,23 @@ +package lq; + +import java.io.IOException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; + +public class Redirect extends HttpServlet { + private String destination; + + @Override + public void init(ServletConfig config) throws ServletException { + destination = config.getInitParameter("destination"); + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws IOException { + resp.sendRedirect(destination); + } +} diff --git a/src/lq/ViewQuotes.java b/src/lq/ViewQuotes.java new file mode 100644 index 0000000..cc03f51 --- /dev/null +++ b/src/lq/ViewQuotes.java @@ -0,0 +1,14 @@ +package lq; + +import java.io.IOException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class ViewQuotes extends HttpServlet { + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws IOException { + resp.setContentType("text/plain"); + resp.getWriter().println("Hello, World!"); + } +} diff --git a/src/org/example/HelloAppEngineServlet.java b/src/org/example/HelloAppEngineServlet.java new file mode 100644 index 0000000..9b179fd --- /dev/null +++ b/src/org/example/HelloAppEngineServlet.java @@ -0,0 +1,12 @@ +package org.example; + +import java.io.IOException; +import javax.servlet.http.*; + +public class HelloAppEngineServlet extends HttpServlet { + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws IOException { + resp.setContentType("text/plain"); + resp.getWriter().println("Hello, world"); + } +}
\ No newline at end of file |