You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2015/05/12 17:49:26 UTC
svn commit: r1678985 - in /sling/trunk/bundles/scripting/sightly/repl: ./
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/sling/ src/main/java/org/apache/sling/scripting/
src/main/java/org/apache/sling/scripting/sig...
Author: radu
Date: Tue May 12 15:49:25 2015
New Revision: 1678985
URL: http://svn.apache.org/r1678985
Log:
SLING-4713 - Update Sightly REPL to display generated Java source code
* Java source code for generated class is displayed by reading the *.java files from disk
in case the org.apache.sling.commons.fsclassloader bundle is active and the classes' source
code was generated by enabling Sightly's dev mode
Added:
sling/trunk/bundles/scripting/sightly/repl/src/main/java/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/
sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/REPLJavaSourceCodeServlet.java
Removed:
sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.js
Modified:
sling/trunk/bundles/scripting/sightly/repl/pom.xml
sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.html
Modified: sling/trunk/bundles/scripting/sightly/repl/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/repl/pom.xml?rev=1678985&r1=1678984&r2=1678985&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/repl/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/repl/pom.xml Tue May 12 15:49:25 2015
@@ -63,6 +63,17 @@
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
@@ -74,4 +85,44 @@
</plugin>
</plugins>
</build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.api</artifactId>
+ <version>2.4.0</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
</project>
Added: sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/REPLJavaSourceCodeServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/REPLJavaSourceCodeServlet.java?rev=1678985&view=auto
==============================================================================
--- sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/REPLJavaSourceCodeServlet.java (added)
+++ sling/trunk/bundles/scripting/sightly/repl/src/main/java/org/apache/sling/scripting/sightly/repl/REPLJavaSourceCodeServlet.java Tue May 12 15:49:25 2015
@@ -0,0 +1,68 @@
+package org.apache.sling.scripting.sightly.repl;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.sling.SlingServlet;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SlingServlet(
+ resourceTypes = {"repl/components/repl"},
+ selectors = {"java"},
+ methods = "GET",
+ extensions = "html"
+)
+public class REPLJavaSourceCodeServlet extends SlingSafeMethodsServlet {
+
+ private static final String FS_CLASSLOADER_SN = "org.apache.sling.commons.fsclassloader";
+ private static final Logger LOGGER = LoggerFactory.getLogger(REPLJavaSourceCodeServlet.class);
+
+ private File classesFolder;
+
+ @Activate
+ @SuppressWarnings("unused")
+ protected void activate(ComponentContext componentContext) {
+ for (Bundle bundle : componentContext.getBundleContext().getBundles()) {
+ if (FS_CLASSLOADER_SN.equals(bundle.getSymbolicName())) {
+ BundleContext context = bundle.getBundleContext();
+ classesFolder = new File(context.getDataFile(""), "classes");
+ }
+ }
+ }
+
+ @Override
+ protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/plain");
+ response.getWriter().write(getClassSourceCode());
+ }
+
+ private String getClassSourceCode() {
+ if (classesFolder != null && classesFolder.isDirectory()) {
+ File classFile = new File(classesFolder, "/apps/repl/components/repl/SightlyJava_template.java");
+ if (classFile.isFile()) {
+ try {
+ return IOUtils.toString(new FileInputStream(classFile), "UTF-8");
+ } catch (IOException e) {
+ LOGGER.error("Unable to read file " + classFile.getAbsolutePath(), e);
+ return "";
+ }
+ }
+ }
+ LOGGER.warn("Source code for " + (classesFolder.isDirectory() ? classesFolder.getAbsolutePath() : "") +
+ "/apps/repl/components/repl/SightlyJava_template.java was not found. Maybe you need to enable dev mode for Sightly?");
+ return "";
+ }
+
+}
Modified: sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.html?rev=1678985&r1=1678984&r2=1678985&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.html (original)
+++ sling/trunk/bundles/scripting/sightly/repl/src/main/resources/SLING-INF/apps/repl/components/repl/repl.html Tue May 12 15:49:25 2015
@@ -31,7 +31,7 @@
<link rel="stylesheet" type="text/css" href="/etc/clientlibs/repl/style.css">
</head>
- <body data-sly-use.repl="repl.js">
+ <body>
<div id="logo"> </div>
<h1><small>Read-Eval-Print Loop</small></h1>
@@ -58,7 +58,7 @@
</div>
<div id="source" class="output-view editor" data-src="/sightly/repl.template.html" data-mode="ace/mode/html"></div>
<iframe id="view" class="output-view hidden" src="/sightly/repl.template.html"></iframe>
- <div id="java" class="output-view editor hidden" data-src="${repl.classPath}" data-mode="ace/mode/java"></div>
+ <div id="java" class="output-view editor hidden" data-src="/sightly/repl.java.html" data-mode="ace/mode/java"></div>
</div>
</div>