Skip to content

Commit

Permalink
Sample app
Browse files Browse the repository at this point in the history
  • Loading branch information
pepite committed Mar 16, 2010
1 parent c5cc6b0 commit 68f7a64
Show file tree
Hide file tree
Showing 16 changed files with 514 additions and 0 deletions.
40 changes: 40 additions & 0 deletions README.textile
@@ -0,0 +1,40 @@
h1. Netty module

p(note). **Warning! This version contains JBoss Netty 3.1.5 GA. Be sure to remove the previous version of Netty in your module directory**

The netty module allows you to use JBoss Netty:http://jboss.org/netty as a play! server.

Version 3.1.5 GA of Netty.

h2. <a>Enable the Netty module for the application</a>

In the **/conf/application.conf** file, enable the Netty module by adding this line:

bc. # The netty module
module.netty=${play.path}/modules/netty

h2. <a>Starting the Play! with netty as application server</a>

bc. play netty:run myapplication

h2. <a>Configuration</a>

By default, there is no maximum upload size. But the max upload size can be configured. In your application.conf add the following line:

bc. play.module.netty.maxContentLength=1048576

This line set the maximum upload size to 1048576 bytes.

A value of -1 means that there is no maximum upload size (the default).

If the limit is exceeded, then an error message is set in the error scope. You can access it with the #{error} tag:

bc. #{errors}
<li>${error}</li>
#{/errors}

To change the default message, use the following message key:

play.module.netty.content.length.exceeded=My error

This property is currently set in the conf/messages directory of the netty module.
21 changes: 21 additions & 0 deletions samples-and-tests/test/app/controllers/Application.java
@@ -0,0 +1,21 @@
package controllers;

import org.apache.commons.io.FileUtils;
import play.Play;
import play.mvc.*;
import play.Logger;
import java.io.File;

public class Application extends Controller {

public static void index() {
render();
}

public static void upload(File file) throws Exception {
Logger.info("File is " + file.getAbsolutePath() + "]");
FileUtils.copyFile(file, new File(Play.getFile("data/"), file.getName()));
Logger.info("File size [" + file.length() + "]");
}

}
10 changes: 10 additions & 0 deletions samples-and-tests/test/app/views/Application/index.html
@@ -0,0 +1,10 @@
#{extends 'main.html' /}
#{set title:'Home' /}

<form action="@{Application.upload()}" method="post" enctype="multipart/form-data">

<input type="file" name="file" />

<input type="submit">

</form>
18 changes: 18 additions & 0 deletions samples-and-tests/test/app/views/errors/404.html
@@ -0,0 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Not found</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
#{if play.mode.name() == 'DEV'}
#{404 result /}
#{/if}
#{else}
<h1>Not found</h1>
<p>
${result.message}
</p>
#{/else}
</body>
</html>
18 changes: 18 additions & 0 deletions samples-and-tests/test/app/views/errors/500.html
@@ -0,0 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Application error</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
#{if play.mode.name() == 'DEV'}
#{500 exception /}
#{/if}
#{else}
<h1>Oops, an error occured</h1>
<p>
This exception has been logged with id <strong>${exception.id}</strong>.
</p>
#{/else}
</body>
</html>
16 changes: 16 additions & 0 deletions samples-and-tests/test/app/views/main.html
@@ -0,0 +1,16 @@
<!DOCTYPE html>

<html>
<head>
<title>#{get 'title' /}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" media="screen" href="@{'/public/stylesheets/main.css'}">
#{get 'moreStyles' /}
<link rel="shortcut icon" type="image/png" href="@{'/public/images/favicon.png'}">
<script src="@{'/public/javascripts/jquery-1.4.2.min.js'}" type="text/javascript" charset="utf-8"></script>
#{get 'moreScripts' /}
</head>
<body>
#{doLayout /}
</body>
</html>
177 changes: 177 additions & 0 deletions samples-and-tests/test/conf/application.conf
@@ -0,0 +1,177 @@
# This is the main configuration file for the application.
# ~~~~~
application.name=Test

# Application mode
# ~~~~~
# Set to dev to enable instant reloading and other development help.
# Otherwise set to prod.
application.mode=dev

# Secret key
# ~~~~~
# The secret key is used to secure cryptographics functions
# If you deploy your application to several instances be sure to use the same key !
application.secret=e8f5uk3qbb6xg388gscznaskzjnanaacfo51smh0ygt2wx8ay0027v48ibrbc219

# Additional modules
# ~~~~~
# A module is another play! application. Add a line for each module you want
# to add to your application. Modules path are either absolutes or relative to
# the application root.
# They get loaded from top to bottom; Syntax: module.{name}={path}
#
# Keep the next line as is to help the play script to manage modules.
# ---- MODULES ----
module.netty=../../

# i18n
# ~~~~~
# Define locales used by your application.
# You can then place localized messages in conf/messages.{locale} files
# application.langs=fr,en,ja

# Date format
# ~~~~~
date.format=dd-MM-yyyy
# date.format.us=MM-dd-yyyy

# Server configuration
# ~~~~~
# If you need to change the HTTP port, uncomment this (default is set to 9000)
# http.port=9000
#
# By default the server listen for HTTP on the wilcard address.
# You can restrict this.
# http.address=127.0.0.1

# Session configuration
# ~~~~~~~~~~~~~~~~~~~~~~
# By default, session will be written to the transient PLAY_SESSION cookie.
# application.session.cookie=PLAY
# application.session.maxAge=1h

# JVM configuration
# ~~~~~
# Define which port is used by JPDA when application is in debug mode (default is set to 8000)
# jpda.port=8000
#
# Java source level => 1.5, 1.6 or 1.7 (experimental)
# java.source=1.5

# Log level
# ~~~~~
# Specify log level for your application.
# If you want a very customized log, create a log4j.properties file in the conf directory
# application.log=INFO
#
# More logging configuration
# application.log.path=/log4j.properties
# application.log.system.out=off

# Database configuration
# ~~~~~
# Enable a database engine if needed.
#
# To quickly set up a development database, use either:
# - mem : for a transient in memory database (HSQL in memory)
# - fs : for a simple file written database (HSQL file stored)
# db=mem
#
# To connect to a local MySQL5 database, use:
# db=mysql:user:pwd@database_name
#
# If you need a full JDBC configuration use the following :
# db.url=jdbc:postgresql:database_name
# db.driver=org.postgresql.Driver
# db.user=root
# db.pass=secret
#
# Connections pool configuration :
# db.pool.timeout=1000
# db.pool.maxSize=30
# db.pool.minSize=10
#
# If you want to reuse an existing Datasource from your application server, use:
# db=java:/comp/env/jdbc/myDatasource

# JPA Configuration (Hibernate)
# ~~~~~
#
# Specify the custom JPA dialect to use here (default to guess):
# jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
#
# Specify the ddl generation pattern to use (default to update, set to none to disable it):
# jpa.ddl=update
#
# Debug SQL statements (logged using DEBUG level):
# jpa.debugSQL=true
#
# You can even specify additional hibernate properties here:
# hibernate.use_sql_comments=true
# ...

# Memcached configuration
# ~~~~~
# Enable memcached if needed. Otherwise a local cache is used.
# memcached=enabled
#
# Specify memcached host (default to 127.0.0.1:11211)
# memcached.host=127.0.0.1:11211
#
# Or you can specify multiple host to build a distributed cache
# memcached.1.host=127.0.0.1:11211
# memcached.2.host=127.0.0.1:11212

# HTTP Response headers control for static files
# ~~~~~
# Set the default max-age, telling the user's browser how long it should cache the page.
# Default is 3600 (one hour). Set it to 0 to send no-cache.
# This is only read in prod mode, in dev mode the cache is disabled.
# http.cacheControl=3600

# If enabled, Play will generate entity tags automatically and send a 304 when needed.
# Default is true, set it to false to deactivate use of entity tags.
# http.useETag=true

# WS configuration
# ~~~~~
# If you need to set proxy params for WS requests
# http.proxyHost = localhost
# http.proxyPort = 3128
# http.proxyUser = jojo
# http.proxyPassword = jojo

# Mail configuration
# ~~~~~
# Default is to use a mock Mailer
mail.smtp=mock

# Or, specify mail host configuration
# mail.smtp.host=127.0.0.1
# mail.smtp.user=admin
# mail.smtp.pass=
# mail.smtp.channel=ssl

# Execution pool
# ~~~~~
# Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode.
# Try to keep a low as possible. 1 thread will serialize all requests (very useful for debugging purpose)
# play.pool=3

# Open file from errors pages
# ~~~~~
# If your text editor supports opening files by URL, Play! will
# dynamically link error pages to files
#
# Example, for textmate:
# play.editor=txmt://open?url=file://%s&line=%s

# Testing. Set up a custom configuration for test mode
# ~~~~~
#%test.module.cobertura=${play.path}/modules/cobertura
%test.application.mode=dev
%test.db=mem
%test.jpa.ddl=create-drop
%test.mail.smtp=mock

3 changes: 3 additions & 0 deletions samples-and-tests/test/conf/messages
@@ -0,0 +1,3 @@
# You can specialize this file for each language.
# For example, for French create a messages.fr file
#
12 changes: 12 additions & 0 deletions samples-and-tests/test/conf/routes
@@ -0,0 +1,12 @@
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET / Application.index

# Map static resources from the /app/public folder to the /public path
GET /public/ staticDir:public

# Catch all
* /{controller}/{action} {controller}.{action}
Binary file added samples-and-tests/test/public/images/favicon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 68f7a64

Please sign in to comment.