blob: cc287300f4510be825cdbaca86c8af80cfda255f [file] [log] [blame]
package org.apache.clerezza.site
import org.osgi.framework.{BundleActivator, BundleContext, ServiceRegistration}
import scala.collection.JavaConversions.asJavaDictionary
import org.apache.clerezza.platform.typerendering.{TypeRenderlet, RenderletManager}
//import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider
import org.apache.clerezza.rdf.core.access.TcManager
import org.apache.clerezza.osgi.services.ServicesDsl
import org.apache.clerezza.platform.Constants
//import org.apache.clerezza.rdf.core.event.{GraphEvent, FilterTriple, GraphListener}
import org.apache.clerezza.rdf.core.serializedform.{Serializer, SupportedFormat, Parser}
import java.io.{FileOutputStream, FileInputStream, File}
/**
* Activator for a bundle using Apache Clerezza.
*/
class Activator extends BundleActivator {
var renderletRegistration,
titledContentRenderletRegistration,
globalMenuRenderletRegistration: ServiceRegistration[TypeRenderlet] = null
//var graphListenerOption: Option[GraphListener] = null
/**
* called when the bundle is started, this method initializes the provided service
*/
def start(context: BundleContext) {
val servicesDsl = new ServicesDsl(context)
import servicesDsl._
val renderlet = new HeadedPageRenderlet
renderletRegistration = context.registerService(classOf[TypeRenderlet],
renderlet, null)
titledContentRenderletRegistration = context.registerService(classOf[TypeRenderlet],
new TitledContentRenderlet, null)
globalMenuRenderletRegistration = context.registerService(classOf[TypeRenderlet],
new GlobalMenuRenderlet, null)
//context.installBundle("mvn:org.apache.clerezza/rdf.stable.serializer").start();
//context.installBundle("mvn:org.apache.clerezza/tools.offline").start();
val path = {
val bl = context.getBundle.getLocation
bl.substring(bl.indexOf(':')+1)
}
/*val graphFile = new File(new File(path), "graph.nt");
doWith {
(tcManager: TcManager, parser: Parser) => {
val contentGraph = tcManager.getGraph(Constants.CONTENT_GRAPH_URI)
val fileGraph = parser.parse(new FileInputStream(graphFile), SupportedFormat.N_TRIPLE)
if (contentGraph.size > fileGraph.size) {
println("content graph if bigger than the graph from file, not replacing with the content from file and not " +
"writing any data to the file, you should manually either write the content graph to the file or clear " +
"the content graph. Restart this bundle after resolving the issue.")
graphListenerOption = None
} else {
contentGraph.clear
contentGraph.addAll(fileGraph)
println("the content graph has been replaced with "+graphFile)
object graphListener extends GraphListener {
val serializer = $[Serializer]
override def graphChanged(events: java.util.List[GraphEvent]) {
serializer.serialize(new FileOutputStream(graphFile), contentGraph,SupportedFormat.N_TRIPLE)
}
}
contentGraph.addGraphListener(graphListener, new FilterTriple(null, null, null), 2000)
graphListenerOption = Some(graphListener)
println("A GraphListener has been added that writes changes to the content graph to graph.nt")
}
}
}*/
}
/**
* called when the bundle is stopped, this method unregisters the provided service
*/
def stop(context: BundleContext) {
renderletRegistration.unregister()
titledContentRenderletRegistration.unregister()
globalMenuRenderletRegistration.unregister()
val servicesDsl = new ServicesDsl(context)
import servicesDsl._
val tcManager = $[TcManager]
val contentGraph = tcManager.getGraph(Constants.CONTENT_GRAPH_URI)
/*graphListenerOption match {
case Some(l) => contentGraph.removeGraphListener(l)
case None => ;
}*/
println("bye")
}
}