Author: reto
Date: Thu Dec 20 10:17:45 2012
New Revision: 1424390

URL: http://svn.apache.org/viewvc?rev=1424390&view=rev
Log:
CLEREZZA-722: allowing to access arbitrary services through ServletContext 
(yes, stanbol component do this....)

Modified:
    
incubator/clerezza/trunk/jaxrs.stanbol.fragments/src/main/scala/org/apache/clerezza/jaxrs/stanbol/webfragements/WebFragmentRunner.scala

Modified: 
incubator/clerezza/trunk/jaxrs.stanbol.fragments/src/main/scala/org/apache/clerezza/jaxrs/stanbol/webfragements/WebFragmentRunner.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/jaxrs.stanbol.fragments/src/main/scala/org/apache/clerezza/jaxrs/stanbol/webfragements/WebFragmentRunner.scala?rev=1424390&r1=1424389&r2=1424390&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/jaxrs.stanbol.fragments/src/main/scala/org/apache/clerezza/jaxrs/stanbol/webfragements/WebFragmentRunner.scala
 (original)
+++ 
incubator/clerezza/trunk/jaxrs.stanbol.fragments/src/main/scala/org/apache/clerezza/jaxrs/stanbol/webfragements/WebFragmentRunner.scala
 Thu Dec 20 10:17:45 2012
@@ -208,7 +208,7 @@ class WebFragmentRunner extends javax.se
     servletContext.setAttribute(BaseStanbolResource.NAVIGATION_LINKS, 
navigationLinks);
     servletContext.setAttribute(CORS_ORIGIN, corsOrigins);
     servletContext.setAttribute(CORS_ACCESS_CONTROL_EXPOSE_HEADERS, 
exposedHeaders);
-    contextResolverImpl = new ContextResolverImpl(servletContext)
+    contextResolverImpl = new ContextResolverImpl(servletContext, 
bundleContext)
     winkRequestProcessor.bindComponent(contextResolverImpl)
   }
   
@@ -225,9 +225,49 @@ class WebFragmentRunner extends javax.se
 }
 
 @Provider
-class ContextResolverImpl(servletContext: ServletContext) extends 
ContextResolver[ServletContext] {
+class ContextResolverImpl(servletContext: ServletContext, bundleContext: 
BundleContext) extends ContextResolver[ServletContext] {
 
     def getContext(clazz: Class[_]): ServletContext = {
-        servletContext;
+        def wrapped = servletContext;
+        new ServletContext() {
+          def getServletContextName() :String = { 
wrapped.getServletContextName()}
+                       def removeAttribute(name: String) :Unit = { 
wrapped.removeAttribute(name)}
+                       def setAttribute(name: String, value: Any) :Unit = { 
wrapped.setAttribute(name, value)}
+                       def getAttributeNames() :java.util.Enumeration[_] = { 
wrapped.getAttributeNames()}
+                       def getAttribute(name: String) :Object = { 
+              val result = wrapped.getAttribute(name)
+              if (result != null) {
+                result
+              } else {
+                val serviceReference = bundleContext.getServiceReference(name)
+                if (serviceReference != null) {
+                  bundleContext.getService(serviceReference)
+                } else null
+              }
+            }
+                       def getInitParameterNames() :java.util.Enumeration[_] = 
{ wrapped.getInitParameterNames()}
+                       def getInitParameter(name: String) :String = { 
wrapped.getInitParameter(name)}
+                       def getServerInfo() :String = { wrapped.getServerInfo()}
+                       def getRealPath(name: String) :String = { 
wrapped.getRealPath(name)}
+                       def log(message: String, exception: Throwable) :Unit = 
{ wrapped.log(message,exception)}
+                       def log(exception: Exception, message: String) :Unit = 
{ wrapped.log(exception, message)}
+                       def log(message: String) :Unit = { wrapped.log(message)}
+                       @Deprecated
+                       def getServletNames() :java.util.Enumeration[_] = { 
wrapped.getServletNames()}
+                       @Deprecated
+                       def getServlets() :java.util.Enumeration[_] = { 
wrapped.getServlets()}
+                       @Deprecated
+                       def getServlet(name: String) :javax.servlet.Servlet = { 
wrapped.getServlet(name)}
+                       def getNamedDispatcher(name: String) 
:javax.servlet.RequestDispatcher = { wrapped.getNamedDispatcher(name)}
+                       def getRequestDispatcher(path: String) 
:javax.servlet.RequestDispatcher = { wrapped.getRequestDispatcher(path)}
+                       def getResourceAsStream(path: String) 
:java.io.InputStream = { wrapped.getResourceAsStream(path)}
+                       def getResource(path: String) :java.net.URL = { 
wrapped.getResource(path)}
+                       def getResourcePaths(path: String) :java.util.Set[_] = 
{ wrapped.getResourcePaths(path)}
+                       def getMimeType(file: String) :String = { 
wrapped.getMimeType(file)}
+                       def getMinorVersion() :Int = { 
wrapped.getMajorVersion()}
+                       def getMajorVersion() :Int = { 
wrapped.getMajorVersion()}
+                       def getContext(uripath: String) 
:javax.servlet.ServletContext = { wrapped.getContext(uripath)}
+                       def getContextPath() :String = { 
wrapped.getContextPath()}
+        }
     }
 }


Reply via email to