You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by ha...@apache.org on 2010/02/24 11:09:06 UTC

svn commit: r915734 - in /incubator/clerezza/trunk/org.apache.clerezza.parent: org.apache.clerezza.platform.launcher.storageless.parent/ org.apache.clerezza.platform.launcher.storageless.parent/org.apache.clerezza.platform.launcher.storageless/ org.apa...

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