Created
February 9, 2012 21:21
-
-
Save LeifW/1783365 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.util.Hashtable | |
| import javax.naming._ | |
| import javax.naming.spi._ | |
| import org.postgresql.ds.PGPoolingDataSource | |
| object FakeJndiFactory { | |
| def install() { | |
| System setProperty (Context.INITIAL_CONTEXT_FACTORY , classOf[FakeJndiFactory].getName) | |
| } | |
| val datasource = { | |
| val ds = new PGPoolingDataSource() | |
| ds setDatabaseName "database" | |
| ds setServerName "localhost" | |
| ds setPortNumber 5432 | |
| ds setUser "user" | |
| ds setPassword "password" | |
| ds | |
| } | |
| val env:Map[String, AnyRef] = Map( | |
| "java:comp" -> Map( | |
| "env" -> Map( | |
| "jdbc" -> Map( | |
| "myDB" -> datasource | |
| ) | |
| ) | |
| ) | |
| ) | |
| } | |
| class FakeJndiFactory extends InitialContextFactory { | |
| def getInitialContext(environment:Hashtable[_,_]):Context = new FakeJndiContext(FakeJndiFactory.env) | |
| } | |
| class FakeJndiContext(environment: Map[String, AnyRef]) extends Context { | |
| def getNameInNamespace():String = error("not implemented") | |
| def close():Unit = error("not implemented") | |
| def getEnvironment():Hashtable[_, _] = error("not implemented") | |
| def removeFromEnvironment(propName:String):AnyRef = error("not implemented") | |
| def addToEnvironment(propName:String, propVal:Any):AnyRef = error("not implemented") | |
| def composeName(name:String, prefix:String):String = error("not implemented") | |
| def composeName(name:Name, prefix:Name):Name = error("not implemented") | |
| def getNameParser(name:String):NameParser = error("not implemented") | |
| def getNameParser(name:Name):NameParser = error("not implemented") | |
| def lookupLink(name:String):AnyRef = error("not implemented") | |
| def lookupLink(name:Name):AnyRef = error("not implemented") | |
| def createSubcontext(name:String):Context = error("not implemented") | |
| def createSubcontext(name:Name):Context = error("not implemented") | |
| def destroySubcontext(name:String):Unit = error("not implemented") | |
| def destroySubcontext(name:Name):Unit = error("not implemented") | |
| def listBindings(name:String):NamingEnumeration[Binding] = error("not implemented") | |
| def listBindings(name:Name):NamingEnumeration[Binding] = error("not implemented") | |
| def list(name:String):NamingEnumeration[NameClassPair] = error("not implemented") | |
| def list(name:Name):NamingEnumeration[NameClassPair] = error("not implemented") | |
| def rename(oldName:String, newName:String):Unit = error("not implemented") | |
| def rename(oldName:Name, newName:Name):Unit = error("not implemented") | |
| def unbind(name:String):Unit = error("not implemented") | |
| def unbind(namex:Name):Unit = error("not implemented") | |
| def rebind(name:String, obj:Any):Unit = error("not implemented") | |
| def rebind(name:Name, obj:Any):Unit = error("not implemented") | |
| def bind(name:String, obj:Any):Unit = error("not implemented") | |
| def bind(name:Name, obj:Any):Unit = error("not implemented") | |
| def lookup(name:String):AnyRef = { | |
| val path = name.split('/') | |
| path.init.foldLeft(environment) {(map, key) => | |
| map(key).asInstanceOf[Map[String, AnyRef]] | |
| }(path.last) match { | |
| case m:Map[String, AnyRef] => new FakeJndiContext(m) | |
| case otherwise => otherwise | |
| } | |
| } | |
| def lookup(name:Name):AnyRef = error("not implemented") | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment