|
Lift Framework example source code file (MockServletContext.scala)
The Lift Framework MockServletContext.scala source code
/*
* Copyright 2008-2011 WorldWide Conferencing, LLC
*
* Licensed 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 net.liftweb
package mocks
import common.Logger
import scala.collection.mutable.HashMap
import java.io.PrintWriter
import java.io.StringReader
import java.io.BufferedReader
import java.io.ByteArrayOutputStream
import java.io.ByteArrayInputStream
import java.io.FileInputStream
import java.io.InputStream
import java.io.StringBufferInputStream
import java.io.File
import java.util.Arrays
import java.util.Date
import java.util.Locale
import java.util.Vector
import javax.servlet._
import javax.servlet.http._
/**
* An example of how to use these mock classes in your unit tests:
*
* def testLiftCore = {
* val output = new ByteArrayOutputStream
* val outputStream = new MockServletOutputStream(output)
* val writer = new PrintWriter(outputStream)
*
* val req = new MockHttpServletRequest
* req.method = "GET"
* req.path = "/"
* val res = new MockHttpServletResponse(writer, outputStream)
*
* val filter = new LiftFilter
* filter.init(new MockFilterConfig(new MockServletContext("target/test1-1.0-SNAPSHOT")))
* filter.doFilter(req, res,new DoNothingFilterChain)
* assertTrue(output.toString.startsWith("<?xml"))
* }
*/
/**
* A Mock ServletContext. LiftFilter expects a ServletContext inside a FilterConfig
*
* @param target the target directory where your template files live
*
* @author Steve Jenson (stevej@pobox.com)
*/
class MockServletContext(var target: String) extends ServletContext {
def getInitParameter(f: String): String = null
def getInitParameterNames(): java.util.Enumeration[Object] = new Vector[AnyRef]().elements
def getAttribute(f: String): Object = null
def getAttributeNames(): java.util.Enumeration[Object] = new Vector[AnyRef]().elements
def removeAttribute(name: String) {}
def setAttribute(name: String, o: Object) {}
def getContext(path: String): ServletContext = this
def getMajorVersion() = 2
def getMimeType(file: String): String = null
def getMinorVersion() = 3
def getRealPath(path: String): String = null
def getNamedDispatcher(name: String): RequestDispatcher = null
def getRequestDispatcher(path: String): RequestDispatcher = null
def getResource(path: String): java.net.URL = null
def getResourceAsStream(path: String): java.io.InputStream = {
val file = new File(target + path)
if (file.exists) {
new FileInputStream(file)
} else {
null
}
}
def getResourcePaths(path: String): java.util.Set[Object] = null
def getServerInfo(): String = null
def getServlet(name: String): Servlet = null
def getServletContextName(): String = null
def getServletNames(): java.util.Enumeration[Object] = new Vector[AnyRef]().elements
def getServlets(): java.util.Enumeration[Object] = new Vector[AnyRef]().elements
def log(msg: String, t: Throwable) {
t.printStackTrace
log(msg)
}
def log(e: Exception, msg: String) {
e.printStackTrace
log(msg)
}
def log(msg: String) = println("MockServletContext.log: " + msg)
def getContextPath(): String = null
}
/**
* A Mock FilterConfig. Construct with a MockServletContext and pass into
* LiftFilter.init
*/
class MockFilterConfig(servletContext: ServletContext) extends FilterConfig {
def getFilterName(): String = "LiftFilter" // as in lift's default web.xml
def getInitParameter(key: String): String = null
def getInitParameterNames(): java.util.Enumeration[Object] = new Vector[AnyRef]().elements
def getServletContext(): ServletContext = servletContext
}
/**
* A FilterChain that does nothing.
*
* @author Steve Jenson (stevej@pobox.com)
*/
class DoNothingFilterChain extends FilterChain with Logger {
def doFilter(req: ServletRequest, res: ServletResponse) { debug("Doing nothing on filter chain") }
}
/**
* A Mock ServletInputStream. Pass in any ol InputStream like a ByteArrayInputStream.
*
* @author Steve Jenson (stevej@pobox.com)
*/
class MockServletInputStream(is: InputStream) extends ServletInputStream {
def read() = is.read()
}
/**
* A Mock ServletOutputStream. Pass in any ol' OutputStream like a ByteArrayOuputStream.
*
* @author Steve Jenson (stevej@pobox.com)
*/
class MockServletOutputStream(os: ByteArrayOutputStream) extends ServletOutputStream {
def write(b: Int) {
os.write(b)
}
}
/**
* A Mock HttpSession implementation.
*
* @author Steve Jenson (stevej@pobox.com)
*/
class MockHttpSession extends HttpSession {
@volatile protected var values: Map[String, Object] = Map()
@volatile protected var attr: Map[String, Object] = Map()
import scala.collection.JavaConversions._
protected var maxii: Int = 0
protected var creationTime: Long = System.currentTimeMillis
def isNew = false
def invalidate {}
def getValue(key: String): Object = values.get(key) match {
case Some(v) => v
case None => null
}
def removeValue(key: String): Unit = values -= key
def putValue(key: String, value: Object): Unit = values += (key -> value)
def getAttribute(key: String): Object = attr.get(key) match {
case Some(v) => v
case None => null
}
def removeAttribute(key: String): Unit = attr -= key
def setAttribute(key: String, value: Object): Unit = attr += (key -> value)
def getValueNames(): Array[String] = values.keys.toList.toArray
def getAttributeNames(): java.util.Enumeration[Object] = new java.util.Enumeration[Object] {
private val keys = attr.keys.iterator
def hasMoreElements() = keys.hasNext
def nextElement(): Object = keys.next
}
def getSessionContext(): HttpSessionContext = null
def getMaxInactiveInterval(): Int = maxii
def setMaxInactiveInterval(i: Int): Unit = maxii = i
def getServletContext(): ServletContext = null
def getLastAccessedTime(): Long = 0L
def getId(): String = null
def getCreationTime(): Long = creationTime
}
Other Lift Framework examples (source code examples)Here is a short list of links related to this Lift Framework MockServletContext.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.