Author: reto
Date: Fri Mar 18 00:06:54 2011
New Revision: 1082762

URL: http://svn.apache.org/viewvc?rev=1082762&view=rev
Log:
CLEREZZA-465: An initial version, supporting creating skeletons with zz>Dev 
create 'scala_with_activator in /path/to/some/dir, the actual project prototype 
has yet to be finished and the naming skeleton/prototype has to made more 
consistent

Added:
    incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/
    incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/pom.xml
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Activator.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorld.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorldMessageRenderlet.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Ontology.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevDsl.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevShellCustomizer.scala
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/UnavailableSkeletonException.scala
Modified:
    incubator/clerezza/trunk/parent/sourcebundle/pom.xml
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/OSGI-INF/serviceComponents.xml
    
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/BundleRoot.scala

Modified: incubator/clerezza/trunk/parent/sourcebundle/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/pom.xml?rev=1082762&r1=1082761&r2=1082762&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/sourcebundle/pom.xml (original)
+++ incubator/clerezza/trunk/parent/sourcebundle/pom.xml Fri Mar 18 00:06:54 
2011
@@ -44,6 +44,14 @@
                        <artifactId>pax-swissbox-tinybundles</artifactId>
                        <version>1.3.0</version>
                </dependency>
+        <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>utils</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>shell</artifactId>
+               </dependency>
        </dependencies>
        <build>
                <sourceDirectory>src/main/scala</sourceDirectory>

Modified: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/OSGI-INF/serviceComponents.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/OSGI-INF/serviceComponents.xml?rev=1082762&r1=1082761&r2=1082762&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/OSGI-INF/serviceComponents.xml
 (original)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/OSGI-INF/serviceComponents.xml
 Fri Mar 18 00:06:54 2011
@@ -15,4 +15,11 @@
                                cardinality="1..1"
                                bind="bindPackageAdmin" 
unbind="unbindPackageAdmin"/>
     </scr:component>
+       <scr:component enabled="true"  
name="org.apache.clerezza.sourcebundle.DevShellCustomizer">
+        <implementation 
class="org.apache.clerezza.sourcebundle.DevShellCustomizer"/>
+        <property name="service.pid" 
value="org.apache.clerezza.sourcebundle.DevShellCustomizer"/>
+               <service servicefactory="false">
+            <provide interface="org.apache.clerezza.shell.ShellCustomizer"/>
+        </service>
+    </scr:component>
 </components>

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/pom.xml?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/pom.xml
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/pom.xml
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><project 
xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.apache.clerezza</groupId>
+               <artifactId>parent</artifactId>
+               <version>0.2-incubating-SNAPSHOT</version>
+       </parent>
+       <artifactId>skeleton</artifactId>
+       <version>0.1-incubating-SNAPSHOT</version>
+       <packaging>bundle</packaging>
+       <name>Clerezza - Project Skeleton</name>
+       <dependencies>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.compendium</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.core</artifactId>
+               </dependency>
+        <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>platform.typerendering.core</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>platform.typerendering.scala</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>rdf.ontologies</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>rdf.utils</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>rdf.scala.utils</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>osgi.services</artifactId>
+               </dependency>
+        <dependency>
+                       <groupId>org.scala-lang</groupId>
+                       <artifactId>scala-library</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>javax.ws.rs</groupId>
+                       <artifactId>jsr311-api</artifactId>
+        </dependency>
+       </dependencies>
+       <build>
+               <sourceDirectory>src/main/scala</sourceDirectory>
+    <testSourceDirectory>src/test/scala</testSourceDirectory>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <configuration>
+                                       <instructions>
+                                               
<Bundle-activator>skeleton.Activator</Bundle-activator>
+                                               
<Export-Package>skeleton</Export-Package>
+                                               
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-eclipse-plugin</artifactId>
+                               <configuration>
+                                       <downloadSources>true</downloadSources>
+                                       
<downloadJavadocs>true</downloadJavadocs>
+                                       <buildcommands>
+                                               
<buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
+                                       </buildcommands>
+                                       <additionalProjectnatures>
+                                               
<projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature>
+                                       </additionalProjectnatures>
+                                       <classpathContainers>
+                                               
<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER
+                                               </classpathContainer>
+                                               
<classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER
+                                               </classpathContainer>
+                                       </classpathContainers>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.scala-tools</groupId>
+                               <artifactId>maven-scala-plugin</artifactId>
+                       </plugin>
+               </plugins>
+       </build>
+</project>
+
+

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Activator.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Activator.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Activator.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Activator.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,43 @@
+package skeleton
+
+import org.osgi.framework.{BundleActivator, BundleContext, ServiceRegistration}
+import scala.collection.JavaConversions.asJavaDictionary
+import org.apache.clerezza.platform.typerendering.{Renderlet, RenderletManager}
+
+/**
+ * Activator for a bundle using Apache Clerezza.
+ */
+class Activator extends BundleActivator {
+
+       var helloWorldRegistration: ServiceRegistration = null
+       var renderletRegistration: ServiceRegistration = null
+       /**
+        * called when the bundle is started, this method initializes the 
provided service
+        */
+       def start(context: BundleContext) {
+               //import org.apache.clerezza.shell.OsgiDsl
+               //val osgiDsl = new OsgiDsl(context, System.out)
+               //import osgiDsl._
+               println("activating...")
+               val args = scala.collection.mutable.Map("javax.ws.rs" -> true)
+               helloWorldRegistration = 
context.registerService(classOf[Object].getName,
+                                                                               
                  new HelloWorld(), args)
+               val renderlet = new HelloWorldMessageRenderlet
+               val serviceReference = 
context.getServiceReference(classOf[RenderletManager].getName)
+               renderlet bindRenderletManager 
context.getService(serviceReference).asInstanceOf[RenderletManager]
+
+               renderletRegistration = 
context.registerService(classOf[Renderlet].getName,
+                                                                               
                  renderlet, null)
+               println("enjoy!")
+       }
+
+       /**
+        * called when the bundle is stopped, this method unregisters the 
provided service
+        */
+       def stop(context: BundleContext) {
+               helloWorldRegistration.unregister()
+               renderletRegistration.unregister()
+               println("bye")
+       }
+
+}

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorld.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorld.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorld.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorld.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,22 @@
+package skeleton
+
+import javax.ws.rs._
+import org.apache.clerezza.rdf.core.BNode
+import org.apache.clerezza.rdf.core.impl.SimpleMGraph
+import org.apache.clerezza.rdf.ontologies.{DC, RDF}
+import org.apache.clerezza.rdf.utils.GraphNode;
+
+/**
+ * The classical Hello World root resource
+ */
+@Path("hello-world")
+class HelloWorld {
+       @GET def get() = {
+               val resultMGraph = new SimpleMGraph();
+               val graphNode = new GraphNode(new BNode(), resultMGraph);
+               graphNode.addProperty(RDF.`type` , 
Ontology.HelloWordMessageType);
+               graphNode.addPropertyValue(DC.description,"Hello world");
+               graphNode;
+
+       }
+}

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorldMessageRenderlet.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorldMessageRenderlet.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorldMessageRenderlet.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/HelloWorldMessageRenderlet.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,32 @@
+package skeleton
+
+import javax.ws.rs.core.MediaType
+import org.apache.clerezza.platform.typerendering._
+import org.apache.clerezza.rdf.core.UriRef
+import org.apache.clerezza.rdf.utils.GraphNode
+import org.apache.clerezza.rdf.ontologies._
+import org.apache.clerezza.rdf.core._
+import org.apache.clerezza.rdf.utils._
+import org.apache.clerezza.rdf.scala.utils.Preamble._
+import org.apache.clerezza.platform.typerendering.scala._
+
+/**
+ * A Renderlet for HelloWorldMessage
+ */
+class HelloWorldMessageRenderlet extends PageRenderlet {
+
+       val rdfType = Ontology.HelloWordMessageType
+       override def mode = "naked"
+
+       override def renderedPage(arguments: RenderedPage.Arguments): 
RenderedPage = {
+               new RenderedPage(arguments) {
+                       override def content = {
+                               
resultDocModifier.addStyleSheet("/styles/wall/wall.css")
+                               <div xmlns="http://www.w3.org/1999/xhtml"; 
id="tx-content">
+                                       <h2>Wall</h2>
+                               </div>
+                       }
+               }
+       }
+
+}

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Ontology.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Ontology.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Ontology.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/resources/org/apache/clerezza/sourcebundle/skeletons/scala_with_activator/src/main/scala/Ontology.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,12 @@
+package skeleton
+
+import org.apache.clerezza.rdf.core.UriRef
+
+object Ontology {
+
+       /**
+        * The uri for the RDF type of HelloWordMessage
+        */
+       val HelloWordMessageType = new 
UriRef("http://example.org/skeleton#HelloWordMessage";)
+
+}

Modified: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/BundleRoot.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/BundleRoot.scala?rev=1082762&r1=1082761&r2=1082762&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/BundleRoot.scala
 (original)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/BundleRoot.scala
 Fri Mar 18 00:06:54 2011
@@ -19,7 +19,7 @@
 
 package org.apache.clerezza.sourcebundle
 
-import java.io._
+
 import scala.actors.DaemonActor
 import scala.io._
 import org.osgi.framework.Bundle
@@ -32,24 +32,28 @@ import org.apache.clerezza.scala.scripti
 import org.osgi.framework.Constants
 import org.osgi.service.component.ComponentContext
 import org.slf4j.LoggerFactory
-import scala.tools.nsc.io.AbstractFile
-import scala.tools.nsc.io.VirtualDirectory
 import scala.collection.mutable
 import org.osgi.service.packageadmin.PackageAdmin
+import tools.nsc.io.{AbstractFile, VirtualDirectory}
+import java.io.{File, FileInputStream, ByteArrayInputStream}
+import org.apache.clerezza.utils.osgi.BundlePathNode
+import org.wymiwyg.commons.util.dirbrowser.PathNode
 
 /**
  * Provides a service that allows to register directories containing a 
maven-style project
  * structure to be registered as SourceBundle which is added as OSGi Bundle 
and regenerated
  * whenever a file is changed.
  *
- * Currently only scala files a compiled.
+ * Currently only scala files are compiled.
  */
 class BundleRoot {
 
-       var compilerService: CompilerService = null
-       var packageAdmin: PackageAdmin = null
+       private var compilerService: CompilerService = null
+       private var packageAdmin: PackageAdmin = null
+
+       private var bundleContext: BundleContext = null
 
-       var bundleContext: BundleContext = null
+       private val skeletonsPath = "org/apache/clerezza/sourcebundle/skeletons"
 
        val sourceBundles = mutable.ListBuffer[SourceBundle]()
 
@@ -72,16 +76,65 @@ class BundleRoot {
                for (sb <- sourceBundles) sb.stop()
        }
 
-  /**
-   * Creates a SourceBundle for the sources in the specified dir
-   */
-       def createSourceBundle(dir: File) = {
+       /**
+        * adds a SourceBundle for the sources in the specified dir
+        */
+       def addSourceBundle(dir: File) = {
                val sourceBundle = new SourceBundle(dir)
                sourceBundle.start()
                sourceBundles += sourceBundle
                sourceBundle
        }
 
+       @deprecated
+       def createSourceBundle(dir: File) = addSourceBundle(dir)
+
+       /**
+       * list of the available skletons
+       */
+       def availableSkeletons: Seq[Symbol] = {
+               val skeletonsNode = new BundlePathNode(bundleContext.getBundle, 
skeletonsPath)
+               for (name <- skeletonsNode.list) yield {
+                       Symbol(name.substring(1,name.length-1))
+               }
+       }
+
+       /**
+        * Creates and adds a new SourceBundle from a skeleton, no existing 
file is
+        * replaced
+        */
+       def createSourceBundle(skeleton: Symbol, dir: File) = {
+               dir.mkdirs
+               val skeletonsNode = new BundlePathNode(bundleContext.getBundle, 
skeletonsPath)
+               val skeletonNode = skeletonsNode.getSubPath(skeleton.name)
+               if (!skeletonNode.exists) {
+                       throw new UnavailableSkeletonException(skeleton, 
availableSkeletons)
+               }
+               def processFile(p: PathNode, f: File) {
+                       if (!f.exists) {
+                               val in = 
scala.io.Source.fromInputStream(p.getInputStream)
+                               val out = new java.io.PrintWriter(f)
+                               try { in.getLines().foreach(out.println(_)) }
+                               finally { out.close }
+                       }
+               }
+               def processDir(p: PathNode, f: File) {
+                       f.mkdir()
+                       for (subPathString <- p.list()) {
+                               val subPathNode: PathNode = 
p.getSubPath(subPathString)
+                               val subFile: File = new File(f, subPathString)
+                               if (subPathNode.isDirectory) {
+                                       processDir(subPathNode, subFile)
+                               } else {
+                                       processFile(subPathNode, subFile)
+                               }
+                       }
+               }
+
+               processDir(skeletonNode, dir)
+               addSourceBundle(dir)
+       }
+
        def bindCompilerService(cs: CompilerService) {
                compilerService = cs;
        }
@@ -137,22 +190,27 @@ class BundleRoot {
 
                        val tinyBundle: TinyBundle = newBundle()
 
-                       def compileDir(sourceDir: File) {
-                               
+                       def compileDir(sourceDir: File): Option[String] = {
+
                                val charArrays = getFilesAsCharArrays(sourceDir)
                                logger.debug("compiling "+charArrays.size+" 
files")
-                               
+
                                val vdPathPrefix = "(memory)"
                                val virtualDirectory = new 
VirtualDirectory(vdPathPrefix, None)
                                //val wrappedDirectory = 
VirtualDirectoryWrapper.wrap(virtualDirectory, outputListener)
 
                                val writtenClasses = 
compilerService.compileToDir(charArrays, virtualDirectory)
                                logger.debug("virtualDirectory 
"+virtualDirectory.size)
+                               var potentialActivator: Option[String] = None
                                for (writtenClass <- writtenClasses) {
                                        val fullPath = writtenClass.path
                                        val path = 
fullPath.substring(vdPathPrefix.length+1)
+                                       if (path.endsWith("Activator.class")) {
+                                               potentialActivator = 
Some(path.substring(0, path.lastIndexOf('.')).replace('/', '.'))
+                                       }
                                        tinyBundle.add(path, new 
ByteArrayInputStream(writtenClass.toByteArray))
                                }
+                   potentialActivator
                        }
 
                        def copyResource(resourcesDir: File) {
@@ -178,10 +236,12 @@ class BundleRoot {
                        tinyBundle.set("Bundle-SymbolicName", symName)
 
                        val scalaSourceDir = new File(dir, "src/main/scala")
-                       if (scalaSourceDir.exists) {
+
+                       val potentialActivator = if (scalaSourceDir.exists) {
                                compileDir(scalaSourceDir)
                        } else {
                                logger.debug("No source dir "+scalaSourceDir)
+                               None
                        }
                        val resourcesDir = new File(dir, "src/main/resources")
                        if (resourcesDir.exists) {
@@ -194,6 +254,10 @@ class BundleRoot {
                                tinyBundle.set("Service-Component", 
"OSGI-INF/serviceComponents.xml")
                                tinyBundle.set(Constants.EXPORT_PACKAGE, 
"!OSGI-INF, *" )
                        }
+                       potentialActivator match {
+                               case Some(s) =>  
tinyBundle.set("Bundle-Activator", s)
+                               case _ => ;
+                       }
                        tinyBundle.set(Constants.IMPORT_PACKAGE, "*" );
                        val in = tinyBundle.build(
                                        withBnd()
@@ -206,7 +270,7 @@ class BundleRoot {
                        } else {
                                bundle.update(in)
                        }
-                       
+
                }
 
                def act() {

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevDsl.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevDsl.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevDsl.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevDsl.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.clerezza.sourcebundle
+
+import java.io.File
+import java.io.OutputStream
+import java.io.OutputStreamWriter
+import java.io.PrintWriter
+import org.osgi.framework.BundleContext
+import org.apache.clerezza.osgi.services.ServicesDsl
+
+class DevDsl(outputStream: OutputStream, bundleContext: BundleContext) {
+
+       object Dev {
+               private val serviceDsl = new ServicesDsl(bundleContext)
+               import serviceDsl._
+               private lazy val out = new PrintWriter(new 
OutputStreamWriter(outputStream, "utf-8"), true)
+               
+               def create(skeleton: Symbol) = new Object() {
+                       def in(location: String): Unit = try {
+                               $[BundleRoot].createSourceBundle(skeleton, new 
File(location))
+                       } catch {
+                               case u: UnavailableSkeletonException => {
+                                       out println "FAILURE: no skeleton 
"+skeleton+" is available"
+                                       out println "The following skeletons 
are available"
+                                       for (a <- u.available) {
+                                               out println "  - "+a
+                                       }
+                               }
+                       }
+               }
+       }
+
+}

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevShellCustomizer.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevShellCustomizer.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevShellCustomizer.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/DevShellCustomizer.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.clerezza.sourcebundle
+
+import org.apache.clerezza.shell.Shell
+import org.apache.clerezza.shell.ShellCustomizer
+
+class DevShellCustomizer extends ShellCustomizer {
+       def bindings(e: Shell.Environment): List[(String, String, Any)] = {
+               List(("devDsl", classOf[DevDsl].getName, new DevDsl(e.out,
+                                               
e.componentContext.getBundleContext)))
+       }
+       def imports: List[String] = List("devDsl._")
+}

Added: 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/UnavailableSkeletonException.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/UnavailableSkeletonException.scala?rev=1082762&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/UnavailableSkeletonException.scala
 (added)
+++ 
incubator/clerezza/trunk/parent/sourcebundle/src/main/scala/org/apache/clerezza/sourcebundle/UnavailableSkeletonException.scala
 Fri Mar 18 00:06:54 2011
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.clerezza.sourcebundle
+
+class UnavailableSkeletonException(val requested: Symbol, val available: 
Seq[Symbol])
+       extends RuntimeException("The Skeleton "+requested.name+" is not 
avialble") {
+
+}


Reply via email to