Author: hasan
Date: Wed Feb 24 10:17:06 2010
New Revision: 915738

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

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/java/org/apache/clerezza/platform/typerendering/scalaserverpages/ScalaServerPagesRenderlet.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/implicit-header.txt

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

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/java/org/apache/clerezza/platform/typerendering/scalaserverpages/ScalaServerPagesRenderlet.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/java/org/apache/clerezza/platform/typerendering/scalaserverpages/ScalaServerPagesRenderlet.java?rev=915738&r1=915737&r2=915738&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/java/org/apache/clerezza/platform/typerendering/scalaserverpages/ScalaServerPagesRenderlet.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/java/org/apache/clerezza/platform/typerendering/scalaserverpages/ScalaServerPagesRenderlet.java
 Wed Feb 24 10:17:06 2010
@@ -62,6 +62,7 @@
         */
        private ScalaService scalaService;
        private static final Logger logger = 
LoggerFactory.getLogger(ScalaServerPagesRenderlet.class);
+       private int byteHeaderLines = 0;
 
        /**
         * Default constructor as for usage as OSGi service
@@ -121,12 +122,11 @@
                        map.put("res", GraphNode.class);
                        map.put("context", GraphNode.class);
                        map.put("renderer", CallbackRenderer.class);
-                       map.put("mode", String.class);
-                       logger.debug("compiling script");
-                       
+                       map.put("mode", String.class);                  
+                       String scriptName = 
extractFileName(renderingSpecification);
+                       logger.debug("compiling script: " + scriptName);
                        CompiledScript cs = scalaService.interpretScalaScript(
-                                       new String(baos.toByteArray(), 
"UTF-8"), map);
-                       
+                                       new String(baos.toByteArray(), 
"UTF-8"), map, scriptName, getByteHeaderLines());                        
                        logger.debug("compiled");
                        final Map<String, Object> values = new HashMap<String, 
Object>();
                        values.put("res", res);
@@ -148,22 +148,25 @@
                                throw new RenderingException(cause, 
renderingSpecification, res, context);
                        }
                        throw new 
RenderingspecificationException(ex.getMessage(), renderingSpecification,
-                                       ex.getLineNumber() - 
getLines(byteHeader), ex.getColumnNumber(), res, context);
+                                       ex.getLineNumber(), 
ex.getColumnNumber(), res, context);
                }
        }
 
-       private int getLines(byte[] bytes) {
-               int count = 0;
-               LineNumberReader ln = new LineNumberReader(
-                               new InputStreamReader(new 
ByteArrayInputStream(bytes)));
-               try {
-                       while (ln.readLine() != null) {
-                               count++;
+       private int getByteHeaderLines() {
+               if (byteHeaderLines == 0) {
+                       int count = 0;
+                       LineNumberReader ln = new LineNumberReader(
+                                       new InputStreamReader(new 
ByteArrayInputStream(byteHeader)));
+                       try {
+                               while (ln.readLine() != null) {
+                                       count++;
+                               }
+                       } catch (IOException ex) {
+                               throw new RuntimeException(ex);
                        }
-               } catch (IOException ex) {
-                       throw new RuntimeException(ex);
+                       byteHeaderLines = count;
                }
-               return count;
+               return byteHeaderLines;
        }
 
        private String toString(Object object) {
@@ -173,4 +176,9 @@
                        return object.toString();
                }
        }
+
+       private String extractFileName(URI renderingSpecification) {
+               String path = renderingSpecification.getPath();
+               return path.substring(path.lastIndexOf("/") + 1, 
path.lastIndexOf("."));
+       }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/implicit-header.txt
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/implicit-header.txt?rev=915738&r1=915737&r2=915738&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/implicit-header.txt
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scalaserverpages/src/main/resources/org/apache/clerezza/platform/typerendering/scalaserverpages/implicit-header.txt
 Wed Feb 24 10:17:06 2010
@@ -5,7 +5,7 @@
 
 def render(resource : GraphNode, mode : String) = {
     def parseNodeSeq(string : String)  = {
-        scala.xml.XML.loadString("<elem>"+string+"</elem>").child
+        _root_.scala.xml.XML.loadString("<elem>"+string+"</elem>").child
     }
     val baos = new java.io.ByteArrayOutputStream
     renderer.render(resource, context, mode, baos)


Reply via email to