Skip to content

Instantly share code, notes, and snippets.

View manuelbernhardt's full-sized avatar

Manuel Bernhardt manuelbernhardt

View GitHub Profile
<div class="row">
<h3>Wines</h3>
<div>
<div control-group label="Language">
<select id="languageCode" name="languageCode" ng-model="$parent.currentLang" ng-options="l.value as l.label for l in languages"></select>
</div>
<div control-group label="Title">
<input type="text" id="title" name="title" ng-model="wine.translations[$parent.currentLang].title" required>
<span validation-error-for="required">Required</span>
+------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------+
| org.mongodb:casbah_2.10:2.6.1 | com.novus:salat-core_2.10:1.9.2-SNAPSHOT | As casbah_2.10-2.6.1.pom |
+------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------+
| org.mongodb:casbah-gridfs_2.10:2.6.1 | org.mongodb:casbah_2.10:2.6.1 | As casbah-gridfs_2.10-2.6.1.jar |
+------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------+
| org.mongodb:casbah-core_2.10:2.6.1 | org.mongodb:casbah-gridfs_2.10:2.6.1
diff --git a/framework/src/play/src/main/scala/play/api/controllers/Assets.scala b/framework/src/play/src/main/scala/play/api/controllers/Assets.scala
index 18ef4cb..9649c5a 100644
--- a/framework/src/play/src/main/scala/play/api/controllers/Assets.scala
+++ b/framework/src/play/src/main/scala/play/api/controllers/Assets.scala
@@ -64,6 +64,7 @@ class AssetsBuilder extends Controller {
* @param file the file part extracted from the URL
*/
def at(path: String, file: String): Action[AnyContent] = Action { request =>
+ val now = System.currentTimeMillis()
// -- LastModified handling
@manuelbernhardt
manuelbernhardt / gist:3673622
Created September 8, 2012 11:15
WS UTF-8 bug workaround
def fetchList(): String = WS.url(SCHEMA_REPO + "/schema-repository.xml").get().await(5, TimeUnit.SECONDS).fold(
{ t: Throwable => log.error("Could not retrieve schema list", t); "" },
{ r: Response => r.getAHCResponse.getResponseBody("UTF-8") }
)
import core.SystemField
import models.MetadataCache
import play.api.libs.json.Json._
import play.api.libs.json.Format._
import play.api.libs.json._
import play.api.mvc.AnyContentAsJson
import play.api.test.Helpers._
import play.api.test.{FakeHeaders, FakeRequest}
/**
@manuelbernhardt
manuelbernhardt / gist:2722048
Created May 17, 2012 22:35
Akka / Play 2 & Groovy Deadlock
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):
"play-akka.actor.actions-dispatcher-11" prio=5 tid=7ff06b361000 nid=0x118434000 waiting on condition [118433000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <792efbd00> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.jsr166y.ForkJoinPool.scan(ForkJoinPool.java:1593)
at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Found one Java-level deadlock:
=============================
"application-akka.actor.default-dispatcher-13":
waiting to lock monitor 7ffabd802ff0 (object 79537ad48, a sbt.PlayReloader$$anon$2$$anon$1),
which is held by "application-akka.actor.default-dispatcher-9"
"application-akka.actor.default-dispatcher-9":
waiting to lock monitor 7ffabd803098 (object 79453edb8, a sbt.PlayCommands$$anonfun$49$$anonfun$51$$anon$2),
which is held by "play-akka.actor.actions-dispatcher-3"
"play-akka.actor.actions-dispatcher-3":
waiting to lock monitor 7ffabd802ff0 (object 79537ad48, a sbt.PlayReloader$$anon$2$$anon$1),
2012-05-16 10:14:59
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):
"New I/O server worker #1-4" prio=5 tid=7f9d79d30000 nid=0x119a92000 runnable [119a91000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <79bf3a138> (a sun.nio.ch.Util$2)
@manuelbernhardt
manuelbernhardt / gist:2694058
Created May 14, 2012 13:43
Play Akka deadlock
2012-05-14 15:41:08
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):
"New I/O server worker #1-9" prio=5 tid=7fdc4308c000 nid=0x116fb9000 runnable [116fb8000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <79507ad18> (a sun.nio.ch.Util$2)
@manuelbernhardt
manuelbernhardt / gist:1868295
Created February 20, 2012 07:42
Session composition for action composition
val newSession = additionalSessionParams.foldLeft[Session](request.session) { _ + _ }
val r: PlainResult = action(request).asInstanceOf[PlainResult]
// workaround since withSession calls aren't composable it seems
val innerSession = r.header.headers.get(SET_COOKIE).map(cookies => Session.decodeFromCookie(Cookies.decode(cookies).find(_.name == Session.COOKIE_NAME)))
if(innerSession.isDefined) {
// there really should be an API method for adding sessions
val combined = innerSession.get.data.foldLeft(newSession) { _ + _ }
r.withSession(combined)
} else {