Hello Reto, I found it cool from the first time we talked about it :-) Also I'd maintain the possibility to switch to Felix console in the future to provide a familiar shell environment to people new to Clerezza. Cheers, Tommaso
2010/12/1 Reto Bachmann-Gmuer <[email protected]> > I've just switched to the new Scala based shell in our launchers. What does > this involve? > > You'll notice that you're using the new shell by the zz> prompt > > This is how you are greated: > > > Welcome to the Apache Clerezza Console > > Console is based on Scala version 2.8.0.final (OpenJDK 64-Bit Server VM, > > Java 1.6.0_20). > > Type in expressions to have them evaluated. > > Hint: To execute a Felix-Shell command prepend ":f " > > Type :help for more information. > > zz> > > > > You're now using a scala shell and interpret scala code > > zz>val m = "hello world" > > m: java.lang.String = hello world > > zz>println(m) > > hello world > > > > You can also access the bundleContext > > zz>val b = bundleContext.getBundle(0) > > b: org.osgi.framework.Bundle = org.apache.felix.framework [0] > > zz>b.getHeaders > > res4: java.util.Dictionary[_, _] = {Bundle-Description=This bundle is > > system specific; it implements various system services., > > Bundle-ManifestVersion=2, Bundle-Name=System Bundle, > > Bundle-SymbolicName=org.apache.felix.framework, Bundle-Version=3.0.3, > > Export-Package=org.osgi.framework; version="1.5.0", > > org.osgi.framework.launch; version="1.0.0", > > org.osgi.framework.hooks.service; version="1.0.0", > > org.osgi.service.packageadmin; version="1.2.0", > org.osgi.service.startlevel; > > version="1.1.0", org.osgi.service.url; version="1.0.0", > > org.osgi.util.tracker; version="1.4.0", javax.accessibility; > > version="0.0.0.1_006_JavaSE", javax.activation; > > version="0.0.0.1_006_JavaSE", javax.activity; > version="0.0.0.1_006_JavaSE", > > javax.annotation; version="0.0.0.1_006_JavaSE", > javax.annotation.processing; > > versi...zz> > > zz> > > > > The console supports autocompletion with the TAB-key: > > zz>b.[TAB] > > > > asInstanceOf findEntries > > getBundleContext getBundleId > > getEntry getEntryPaths > > getHeaders getLastModified > > getLocation getPersistentState > > getRegisteredServices getResource > > getResources getServicesInUse > > getSignerCertificates getState > > getSymbolicName getVersion > > hasPermission init > > isInstanceOf loadClass > > setPersistentStateActive setPersistentStateInactive > > setPersistentStateUninstalled start > > stop toString > > uninstall update > > waitForStop > > > > You can access services using the syntax $[serviceInterface] > > > zz>val tcManager = $[rdf.core.access.TcManager] > > tcManager: org.apache.clerezza.rdf.core.access.TcManager = > > org.apache.clerezza.rdf.core.access.tcmana...@6241ad5d > > zz>import scala.collection.JavaConversions._ > > import scala.collection.JavaConversions._ > > zz>for (g <- tcManager.listMGraphs) {println(g)} > > <http://zz.localhost/enrichment.graph> > > <http://zz.localhost/graph-access.graph> > > <http://tpf.localhost/content.graph> > > <http://tpf.localhost/config.graph> > > <http://tpf.localhost/system.graph> > > <http://zz.localhost/web-resources.graph> > > > > While one could do all OSGi stuff using the bundleContext an DSL makes > things easier, it currently is very incomplete, but is hould be easy to add > everything that is frequently needed: > > http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/OsgiDsl.scala?view=markup > > > zz>install("mvn:example/example") > > zz>shutdown > > > > but as long as some command are missing in the DSL, there's still the > possibility to execute felix shell commands > > > zz>:f scr list > > Id State Name > > [ 0] [active ] > > org.apache.clerezza.platform.security.BundlePermissionManager > > ... > > > > Cheers, > reto >
