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