Author: hasan
Date: Wed Feb 24 10:09:06 2010
New Revision: 915734

URL: http://svn.apache.org/viewvc?rev=915734&view=rev
Log:
CLEREZZA-128: closing issue (Show class of the Exception and stack trace in 
RenderingException in org.apache.clerezza.platform.typerendering)

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/
      - copied from r915732, 
incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingClassVisitor.java
      - copied unchanged from r915732, 
incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingClassVisitor.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingUtil.java
      - copied unchanged from r915732, 
incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingUtil.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingingMethodVisitor.java
      - copied unchanged from r915732, 
incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/util/LineNumbersAdjustingingMethodVisitor.java
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/org.apache.clerezza.platform.launcher.storageless/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderingException.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/TypeRenderingExceptionMapper.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/resources/org/apache/clerezza/platform/typerendering/exception-template.ssp
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/src/main/resources/org/apache/clerezza/platform/typerendering/ontologies/typerendering.rdf
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/  
 (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/service/ScalaServiceJava.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/BundleFS.scala
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/ScalaInterpreter.scala
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/CompiledScript.scala
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/ScalaService.scala

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Feb 24 10:09:06 2010
@@ -0,0 +1 @@
+/incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.platform.launcher.storageless.parent:912531-915732

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/org.apache.clerezza.platform.launcher.storageless/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 24 10:09:06 2010
@@ -1 +1,2 @@
+/incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.platform.launcher.storageless.parent/org.apache.clerezza.platform.launcher.storageless:912531-915732
 
/incubator/clerezza/issues/CLEREZZA-63/org.apache.clerezza.platform.launcher.storageless:905381-907977

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
 Wed Feb 24 10:09:06 2010
@@ -96,6 +96,11 @@
                        <artifactId>org.jruby</artifactId>
                        <scope>runtime</scope>
                </dependency>
+               <dependency>
+                       <groupId>asm</groupId>
+                       <artifactId>asm-all</artifactId>
+                       <scope>runtime</scope>
+               </dependency>
 
                <!--
                        Clerezza Bundles

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 24 10:09:06 2010
@@ -1,2 +1,3 @@
+/incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.platform.typerendering:910457-915732
 /incubator/clerezza/issues/CLEREZZA-34:890804-891129
 
/incubator/clerezza/issues/CLEREZZA-34/org.apache.clerezza.platform.typerendering:890796-891226

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderingException.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderingException.java?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderingException.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderingException.java
 Wed Feb 24 10:09:06 2010
@@ -18,10 +18,12 @@
  */
 package org.apache.clerezza.platform.typerendering;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.net.URI;
 import org.apache.clerezza.platform.typerendering.ontologies.TYPERENDERING;
 import org.apache.clerezza.rdf.core.BNode;
-import org.apache.clerezza.rdf.core.LiteralFactory;
+import org.apache.clerezza.rdf.core.PlainLiteral;
 import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
 import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
@@ -41,7 +43,9 @@
 
        public RenderingException(Exception cause, URI renderingSpecification,
                        GraphNode renderNode, GraphNode context) {
-               super(cause.getMessage(), renderingSpecification, renderNode, 
context);
+               super(cause.getClass().getName() + ": " + cause.getMessage(), 
renderingSpecification,
+                               renderNode, context);
+               this.cause = cause;
                this.renderingSpecification = renderingSpecification;
        }
 
@@ -49,10 +53,17 @@
        public GraphNode getExceptionGraphNode() {
                GraphNode result = new GraphNode(new BNode(), new 
SimpleMGraph());
                result.addProperty(RDF.type, TYPERENDERING.Exception);
-               LiteralFactory factory = LiteralFactory.getInstance();
                result.addProperty(TYPERENDERING.errorSource, new 
UriRef(renderingSpecification.toString()));
                result.addProperty(TYPERENDERING.message, new 
PlainLiteralImpl(getMessage()));
+               result.addProperty(TYPERENDERING.stackTrace, 
getStackTraceLiteral());
                return result;
        }
 
+       private PlainLiteral getStackTraceLiteral() {
+               StringWriter sw = new StringWriter();
+               PrintWriter pw = new PrintWriter(sw);
+               cause.printStackTrace(pw);
+               pw.flush();
+               return new PlainLiteralImpl(sw.toString());
+       }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/TypeRenderingExceptionMapper.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/TypeRenderingExceptionMapper.java?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/TypeRenderingExceptionMapper.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/TypeRenderingExceptionMapper.java
 Wed Feb 24 10:09:06 2010
@@ -61,6 +61,7 @@
                ResponseBuilder rb = Response.serverError();
                logger.info(exception.getMessage());
                if (exception.getRenderNode().hasProperty(RDF.type, 
TYPERENDERING.Exception)) {
+                       logger.error("Exception in template used for rendering 
exceptions ", exception);
                        rb.entity("There is an error in the template used for 
rendering" +
                                        " exceptions. Please check the console 
output for further" +
                                        " information. 
Thanks!").type(MediaType.TEXT_PLAIN_TYPE);

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/resources/org/apache/clerezza/platform/typerendering/exception-template.ssp
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/resources/org/apache/clerezza/platform/typerendering/exception-template.ssp?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/resources/org/apache/clerezza/platform/typerendering/exception-template.ssp
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/resources/org/apache/clerezza/platform/typerendering/exception-template.ssp
 Wed Feb 24 10:09:06 2010
@@ -23,6 +23,12 @@
                        }
                </p>
                <p>Description:</p>
-                               <pre>{res/typerendering("message")*}</pre>
-       </body>
+                               <pre>{res/typerendering("message")*}</pre>      
        
+               {
+                       if ((res/typerendering("stackTrace")).length > 0) {
+                               <p>Stack trace:</p>
+                               <pre>{res/typerendering("stackTrace")*}</pre>
+                       } else {""}
+               }
+               </body>
 </html>

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/src/main/resources/org/apache/clerezza/platform/typerendering/ontologies/typerendering.rdf
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/src/main/resources/org/apache/clerezza/platform/typerendering/ontologies/typerendering.rdf?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/src/main/resources/org/apache/clerezza/platform/typerendering/ontologies/typerendering.rdf
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/src/main/resources/org/apache/clerezza/platform/typerendering/ontologies/typerendering.rdf
 Wed Feb 24 10:09:06 2010
@@ -164,4 +164,14 @@
        <rdfs:domain 
rdf:resource="http://clerezza.org/2009/04/typerendering#Exception"; />
        <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
 </rdf:Property>
+
+<rdf:Property rdf:about="http://clerezza.org/2009/04/typerendering#stackTrace";>
+       <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"; 
/>
+       <rdf:type 
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"; />
+       <rdfs:label xml:lang="en">stack trace</rdfs:label>
+       <skos:definition xml:lang="en">Points to the the stack trace of the 
subject.</skos:definition>
+       <rdfs:isDefinedBy 
rdf:resource="http://clerezza.org/2009/04/typerendering#"; />
+       <rdfs:domain 
rdf:resource="http://clerezza.org/2009/04/typerendering#Exception"; />
+       <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+</rdf:Property>
 </rdf:RDF>

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Feb 24 10:09:06 2010
@@ -0,0 +1 @@
+/incubator/clerezza/issues/CLEREZZA-128/org.apache.clerezza.scala:910457-915732

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/pom.xml?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/pom.xml
 Wed Feb 24 10:09:06 2010
@@ -68,7 +68,10 @@
                        <groupId>org.apache.clerezza</groupId>
                        <artifactId>org.apache.clerezza.rdf.utils</artifactId>
                </dependency>
-
+               <dependency>
+                       <groupId>asm</groupId>
+                       <artifactId>asm-all</artifactId>
+               </dependency>
        </dependencies>
 
        <build>

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/service/ScalaServiceJava.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/service/ScalaServiceJava.java?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/service/ScalaServiceJava.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/java/org/apache/clerezza/scala/service/ScalaServiceJava.java
 Wed Feb 24 10:09:06 2010
@@ -32,7 +32,8 @@
  * @author rbn, mkn, pmg
  */
 public class ScalaServiceJava extends ScalaService {
-       public void activate(ComponentContext context){
+
+       public void activate(ComponentContext context) {
                super.activate(context);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/BundleFS.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/BundleFS.scala?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/BundleFS.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/BundleFS.scala
 Wed Feb 24 10:09:06 2010
@@ -25,130 +25,132 @@
 
 package org.apache.clerezza.scala.interpreter {
 
-/**
- * Implementation of {...@link AbstractFile} on top of a {...@link 
org.osgi.framework.Bundle}
- */
-object BundleFS {
-
   /**
-   * Create a new {...@link AbstractFile} instance representing an
-   * {...@link org.osgi.framework.Bundle}
-   * @param bundle
+   * Implementation of {...@link AbstractFile} on top of a {...@link 
org.osgi.framework.Bundle}
    */
-  def create(bundle: Bundle): AbstractFile = {
-    require(bundle != null, "bundle must not be null")
+  object BundleFS {
 
-    abstract class BundleEntry(url: URL, parent: DirEntry) extends 
AbstractFile {
-      require(url != null, "url must not be null")
-      lazy val (path: String, name: String) = getPathAndName(url)
-      lazy val fullName: String = 
(path::name::Nil).filter(!_.isEmpty).mkString("/")
-
-      /**
-       * @return null
-       */
-      def file: File = null
-
-      /**
-       * @return last modification time or 0 if not known
-       */
-      def lastModified: Long =
-        try { url.openConnection.getLastModified }
+       /**
+        * Create a new {...@link AbstractFile} instance representing an
+        * {...@link org.osgi.framework.Bundle}
+        * @param bundle
+        */
+       def create(bundle: Bundle): AbstractFile = {
+         require(bundle != null, "bundle must not be null")
+
+         abstract class BundleEntry(url: URL, parent: DirEntry) extends 
AbstractFile {
+               require(url != null, "url must not be null")
+               lazy val (path: String, name: String) = getPathAndName(url)
+               lazy val fullName: String = 
(path::name::Nil).filter(!_.isEmpty).mkString("/")
+
+               /**
+                * @return null
+                */
+               def file: File = null
+
+               /**
+                * @return last modification time or 0 if not known
+                */
+               def lastModified: Long =
+                 try { url.openConnection.getLastModified }
         catch { case _ => 0 }
 
-      @throws(classOf[IOException])
-      def container: AbstractFile =
-        valueOrElse(parent) {
-          throw new IOException("No container")
-        }
-
-      @throws(classOf[IOException])
-      def input: InputStream = url.openStream()
-
-      /**
-       * Not supported. Always throws an IOException.
-       * @throws IOException
-       */
-      @throws(classOf[IOException])
-      def output = throw new IOException("not supported: output")
-
-      private def getPathAndName(url: URL): (String, String) = {
-        val u = url.getPath
-        var k = u.length
-        while( (k > 0) && (u(k - 1) == '/') )
-          k = k - 1
-
-        var j = k
-        while( (j > 0) && (u(j - 1) != '/') )
-          j = j - 1
-
-        (u.substring(if (j > 0) 1 else 0, if (j > 1) j - 1 else j), 
u.substring(j, k))
-      }
-
-      override def toString = fullName
-    }
-
-    class DirEntry(url: URL, parent: DirEntry) extends BundleEntry(url, 
parent) {
-
-      /**
-       * @return true
-       */
-      def isDirectory: Boolean = true
-
-      def elements: Iterator[AbstractFile] = {
-        new Iterator[AbstractFile]() {
-          val dirs = bundle.getEntryPaths(fullName)
-          def hasNext = dirs.hasMoreElements
-          def next = {
-            val entry = dirs.nextElement.asInstanceOf[String]
-            var entryUrl = bundle.getResource("/" + entry)
-
-            // Bundle.getResource seems to be inconsistent with respect to 
requiring
-            // a trailing slash
-            if (entryUrl == null) 
-              entryUrl = bundle.getResource("/" + removeTralingSlash(entry))
+               @throws(classOf[IOException])
+               def container: AbstractFile =
+                 valueOrElse(parent) {
+                       throw new IOException("No container")
+                 }
+
+               @throws(classOf[IOException])
+               def input: InputStream = url.openStream()
+
+               /**
+                * Not supported. Always throws an IOException.
+                * @throws IOException
+                */
+               @throws(classOf[IOException])
+               def output = throw new IOException("not supported: output")
+
+               private def getPathAndName(url: URL): (String, String) = {
+                 val u = url.getPath
+                 var k = u.length
+                 while( (k > 0) && (u(k - 1) == '/') )
+                       k = k - 1
+
+                 var j = k
+                 while( (j > 0) && (u(j - 1) != '/') )
+                       j = j - 1
+
+                 (u.substring(if (j > 0) 1 else 0, if (j > 1) j - 1 else j), 
u.substring(j, k))
+               }
+
+               override def toString = fullName
+         }
+
+         class DirEntry(url: URL, parent: DirEntry) extends BundleEntry(url, 
parent) {
+
+               /**
+                * @return true
+                */
+               def isDirectory: Boolean = true
+
+               def elements: Iterator[AbstractFile] = {
+                 new Iterator[AbstractFile]() {
+                       val dirs = bundle.getEntryPaths(fullName)               
                                
+                         def hasNext = if (dirs != null) { 
dirs.hasMoreElements} else {false}
+                         def next = {
+                               val entry = 
dirs.nextElement.asInstanceOf[String]
+                               var entryUrl = bundle.getResource("/" + entry)
+
+                               // Bundle.getResource seems to be inconsistent 
with respect to requiring
+                               // a trailing slash
+                               if (entryUrl == null)
+                                 entryUrl = bundle.getResource("/" + 
removeTralingSlash(entry))
             
-            if (entry.endsWith(".class"))
-              new FileEntry(entryUrl, DirEntry.this)
-            else
-              new DirEntry(entryUrl, DirEntry.this)
-          }
+                               if (entry.endsWith(".class"))
+                                 new FileEntry(entryUrl, DirEntry.this)
+                               else
+                                 new DirEntry(entryUrl, DirEntry.this)
+                         }
           
-          private def removeTralingSlash(s: String): String = 
-            if (s == null || s.length == 0)
-              s
-            else if (s.last == '/') 
-              removeTralingSlash(s.substring(0, s.length - 1))
-            else
-              s
-        }
-      }
-
-      def lookupName(name: String, directory: Boolean): AbstractFile = {
-        val entry = bundle.getEntry(fullName + "/" + name)
-        nullOrElse(entry) { entry =>
-          if (directory)
-            new DirEntry(entry, DirEntry.this)
-          else
-            new FileEntry(entry, DirEntry.this)
-        }
-      }
-
-    }
-
-    class FileEntry(url: URL, parent: DirEntry) extends BundleEntry(url, 
parent) {
-
-      /**
-       * @return false
-       */
-      def isDirectory: Boolean = false
-      override def sizeOption: Option[Int] = 
Some(bundle.getEntry(fullName).openConnection().getContentLength())
-      def elements: Iterator[AbstractFile] = Iterator.empty
-      def lookupName(name: String, directory: Boolean): AbstractFile = null
-    }
+                         private def removeTralingSlash(s: String): String = {
+                               if (s == null || s.length == 0) {
+                                 s
+                               }else if (s.last == '/') {
+                                 removeTralingSlash(s.substring(0, s.length - 
1))
+                               } else {
+                                 s
+                               }
+                         }
+                 }
+               }
+
+               def lookupName(name: String, directory: Boolean): AbstractFile 
= {
+                 val entry = bundle.getEntry(fullName + "/" + name)
+                 nullOrElse(entry) { entry =>
+                       if (directory)
+                         new DirEntry(entry, DirEntry.this)
+                       else
+                         new FileEntry(entry, DirEntry.this)
+                 }
+               }
+
+         }
+
+         class FileEntry(url: URL, parent: DirEntry) extends BundleEntry(url, 
parent) {
+
+               /**
+                * @return false
+                */
+               def isDirectory: Boolean = false
+               override def sizeOption: Option[Int] = 
Some(bundle.getEntry(fullName).openConnection().getContentLength())
+               def elements: Iterator[AbstractFile] = Iterator.empty
+               def lookupName(name: String, directory: Boolean): AbstractFile 
= null
+         }
 
-    new DirEntry(bundle.getResource("/"), null)
-  }
+         new DirEntry(bundle.getResource("/"), null)
+       }
 
-}
+  }
 
 }
\ No newline at end of file

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/ScalaInterpreter.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/ScalaInterpreter.scala?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/ScalaInterpreter.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/interpreter/ScalaInterpreter.scala
 Wed Feb 24 10:09:06 2010
@@ -24,6 +24,7 @@
 import javax.script.ScriptException
 import java.security.{AccessController, PrivilegedAction}
 import java.lang.reflect.Method
+import org.apache.clerezza.scala.util.LineNumbersAdjustingUtil
 import scala.collection._
 import scala.tools.nsc.{Settings, Global}
 import scala.tools.nsc.interpreter.AbstractFileClassLoader
@@ -114,15 +115,13 @@
    * @return  a valid Scala source and the lines of headers that have been 
added before the actual code
    */
   protected def preProcess(name: String, code: String, bindings: Map[String, 
Type]): (String, Int) = {
-   
-    val compounds = packetize(name)
+
+         val compounds = packetize(name)
 
     def packageDeclaration =
       if (compounds.size > 1) compounds.init.mkString("package ", ".", "") + NL
       else "" //to make sure the header always has the same length
-
     def className = compounds.last
-
     val header = packageDeclaration +
     "object " + className + " {" + NL +
     "  def main(bindings: Map[String, Any]," + NL +
@@ -149,8 +148,11 @@
      "val " + key + " =  
bindings.get(\""+key+"\").get.asInstanceOf["+value.asInstanceOf[Class[AnyRef]].getName+"]"
    }).mkString(";"+NL)
   }
-  
-    
+
+  private def getName(filePath : String) : String = {
+       val compounds = packetize(filePath)
+       compounds.last
+  }    
 
   /**
    * Compiles a list of source files. No pre-processing takes place.
@@ -166,6 +168,8 @@
       reporter
     else {
       run.compileSources(sources)
+         LineNumbersAdjustingUtil.adjustAllFilesStartingWithFileName(
+               settings.outdir.value + "/", sources.first.path, -lineDeduction)
       reporter
     }
   }
@@ -187,9 +191,9 @@
    * @param bindings  variable bindings to pass to the script
    * @return  result of compilation
    */
-       def compile(name: String, code: String, bindings: Map[String, Type]) : 
Reporter = {
+       def compile(name: String, code: String, bindings: Map[String, Type], 
lineOffset : Int) : Reporter = {
                val preprocessedScript = preProcess(name, code, bindings)
-       compile(name, preprocessedScript._1, preprocessedScript._2)
+       compile(getName(name), preprocessedScript._1, preprocessedScript._2 + 
lineOffset)
     }
 
   /**

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/CompiledScript.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/CompiledScript.scala?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/CompiledScript.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/CompiledScript.scala
 Wed Feb 24 10:09:06 2010
@@ -31,26 +31,34 @@
         *
         * @param script
         *                      the script which has to be compiled and executed
-        * @param typeMap
+        * @param jTypeMap
         *                      a Java Map which contains the Types of the 
parameters
-        * @param interprete
+        * @param interpreter
         *                      the ScalaInterpreter which compiles and 
executes the script
-        *
+        * @param className
+        *                      the name of the class of the compiled script.
+        * @param lineOffset
+        *                      the offset used for adjusting the line numbers.
         * @author rbn, mkn, pmg
         */
   
-       class CompiledScript (script : String , jTypeMap : Map[String, Type] , 
interpreter : ScalaInterpreter){
-               val name = createClassName()
+       class CompiledScript (script : String , jTypeMap : Map[String, Type] , 
interpreter : ScalaInterpreter,
+                 className : String, lineOffset : Int){
+               val name = if (className == null) {
+                       createClassName("CompiledScalaScript");
+               } else {
+                       createClassName(className.replaceAll("-", "_"));
+               }
+               
                if (interpreter.getClassFile(name) == null) {
                        //prevents synchroneous compilation (even for different 
scripts)
                        CompiledScript.synchronized {
                                if (interpreter.getClassFile(name) == null) {
-                                       interpreter.compile(name, script, 
jTypeMap)
+                                       interpreter.compile(name, script, 
jTypeMap, lineOffset)
                                }
                        }
                }
 
-
                /**
                 * Executes the Creates and stores a concept with the specified 
prefLabel into the
                 * content graph if a concept with this prefLabel does not 
already exist in
@@ -73,7 +81,7 @@
                 *      Creates a name based on the hash value of the script
                 *      e.g. 54ec400cde5e65a27320d6c71e2a334d.class
                 */
-               protected def createClassName() = {
+               protected def createClassName(className : String) = {
                        val encryptMsg : Array[Byte] =
                        try {
                                val md = MessageDigest.getInstance("MD5")
@@ -93,7 +101,7 @@
                                }
                                strBuf.append(swap); // appending swap to get 
complete hash-key
                        }
-                       "CompiledScalaScript" + strBuf.toString()
+                       className + strBuf.toString()
                }
        }
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/ScalaService.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/ScalaService.scala?rev=915734&r1=915733&r2=915734&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/ScalaService.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/src/main/scala/org/apache/clerezza/scala/service/ScalaService.scala
 Wed Feb 24 10:09:06 2010
@@ -115,7 +115,7 @@
                                jTypeMap.put(entry._1, 
getAccessibleClass(entry._2.getClass))
                                valueMap.put(entry._1, entry._2)
                        }
-                       interpretScalaScript(script, 
jTypeMap).execute(valueMap).asInstanceOf[Object]
+                       interpretScalaScript(script, jTypeMap, null, 
0).execute(valueMap).asInstanceOf[Object]
                }
                override def getFactory() = this
                override def createBindings() : Bindings = new SimpleBindings
@@ -163,11 +163,14 @@
                 *                      the scala script
                 * @param jTypeMap
                 *                      the map with the parameter types
+                * @param className the name of the class that the compiled 
script will have.
+                * @param lineOffset the offset applied to the line numbers in 
the byte code.
                 * @return CompiledScript
                 *                      the compiled scala script
                 */
                @throws(classOf[ScriptException])
-               def interpretScalaScript(script : String , jTypeMap : 
java.util.Map[String, java.lang.reflect.Type]) : CompiledScript = {
+               def interpretScalaScript(script : String , jTypeMap : 
java.util.Map[String, java.lang.reflect.Type],
+                         className : String, lineOffset : Int) : 
CompiledScript = {
                        val jHashMap = new java.util.HashMap[String, 
java.lang.reflect.Type]()
                        jHashMap.putAll(jTypeMap)
                        val map : immutable.Map[String, java.lang.reflect.Type] 
=
@@ -175,7 +178,7 @@
                        try {
                                val compileScript = 
AccessController.doPrivileged(new PrivilegedExceptionAction[CompiledScript] {
                                                override def run(): 
CompiledScript = {
-                                                       new 
CompiledScript(script, map, interpreter)
+                                                       new 
CompiledScript(script, map, interpreter, className, lineOffset)
                                                }
                                 })
                                return compileScript


Reply via email to