Author: reto
Date: Mon Nov 29 12:43:43 2010
New Revision: 1040089

URL: http://svn.apache.org/viewvc?rev=1040089&view=rev
Log:
CLEREZZA-356: added support for WebRenderingServices

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/SomeContentWebRenderingService.java
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/FelixClerezzaPlatformTest.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/RDFListRootResource.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scala/src/main/scala/org/apache/clerezza/platform/typerendering/scala/RenderedPage.scala
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererImpl.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/Renderlet.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/
   (props changed)

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
 Mon Nov 29 12:43:43 2010
@@ -262,6 +262,11 @@
                </dependency>
                <dependency>
                        <groupId>org.apache.clerezza</groupId>
+                       
<artifactId>org.apache.clerezza.platform.typerendering.scala</artifactId>
+                       <scope>provided</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
                        
<artifactId>org.apache.clerezza.platform.typerendering.ontologies</artifactId>
                        <scope>provided</scope>
                </dependency>
@@ -358,6 +363,12 @@
                        <scope>test</scope>
                </dependency>
                <dependency>
+                       <groupId>org.ops4j.pax.swissbox</groupId>
+                       <artifactId>pax-swissbox-tinybundles</artifactId>
+                       <version>1.3.0</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
                        <groupId>org.ops4j.pax.exam</groupId>
                        <artifactId>pax-exam-junit</artifactId>
                        <scope>test</scope>

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/FelixClerezzaPlatformTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/FelixClerezzaPlatformTest.java?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/FelixClerezzaPlatformTest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/FelixClerezzaPlatformTest.java
 Mon Nov 29 12:43:43 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.clerezza.platform.testing.blackbox.osgi;
 
+import java.io.ByteArrayOutputStream;
 import static org.ops4j.pax.exam.CoreOptions.felix;
 import static org.ops4j.pax.exam.CoreOptions.frameworks;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
@@ -28,11 +29,13 @@ import static org.ops4j.pax.exam.contain
 import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption;
 import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.webProfile;
 import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.dsProfile;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.profile;
 import static org.ops4j.pax.exam.junit.JUnitOptions.junitBundles;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringWriter;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -40,19 +43,29 @@ import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.ws.rs.core.MediaType;
 
 import junit.framework.Assert;
+import org.apache.clerezza.platform.typerendering.RenderletManager;
+import 
org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
+import org.apache.clerezza.rdf.core.UriRef;
 
 import org.apache.clerezza.rdf.core.access.TcManager;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Customizer;
 import org.ops4j.pax.exam.Inject;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.Configuration;
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.ops4j.pax.swissbox.tinybundles.core.TinyBundles;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.framework.Constants;
+
+
 
 /**
  * 
@@ -179,6 +192,8 @@ public class FelixClerezzaPlatformTest {
                                
mavenBundle().groupId("org.apache.clerezza").artifactId(
                                
"org.apache.clerezza.platform.typerendering.manager").versionAsInProject(),
                                
mavenBundle().groupId("org.apache.clerezza").artifactId(
+                               
"org.apache.clerezza.platform.typerendering.scala").versionAsInProject(),
+                               
mavenBundle().groupId("org.apache.clerezza").artifactId(
                                
"org.apache.clerezza.platform.scripting.scriptmanager").versionAsInProject(),
                                
mavenBundle().groupId("org.apache.clerezza").artifactId(
                                
"org.apache.clerezza.platform.xhtml2html").versionAsInProject(),
@@ -197,13 +212,23 @@ public class FelixClerezzaPlatformTest {
                                
mavenBundle().groupId("org.mortbay.jetty").artifactId(
                                "servlet-api-2.5").version("6.1.12"),
                                dsProfile(),
+                               profile("felix.webconsole"),
                                configProfile(),
                                webProfile(),
                                junitBundles(),
                                vmOption("-XX:MaxPermSize=200m"),
                                frameworks(felix()),
                                
systemProperty("org.osgi.service.http.port").value(
-                               Integer.toString(testHttpPort)));
+                               Integer.toString(testHttpPort)),
+                               new Customizer() {
+
+                                       @Override
+                                       public InputStream 
customizeTestProbe(InputStream testProbe)
+                                                       throws IOException {
+                                               return 
TinyBundles.modifyBundle(testProbe).
+                                                               
set(Constants.EXPORT_PACKAGE, 
"org.apache.clerezza.platform.testing.blackbox.osgi").build();
+                                       }
+                               });
        }
        protected final static int testHttpPort = 8976;
        @Inject
@@ -227,6 +252,7 @@ public class FelixClerezzaPlatformTest {
        public void multi() throws Exception {
                checkTcManagerService();
                testJaxRsRegistration();
+               testWithScalaServerPage();
        }
 
        private void testJaxRsRegistration() throws InterruptedException, 
IOException {
@@ -243,6 +269,26 @@ public class FelixClerezzaPlatformTest {
                runRequestThreads(url);
        }
 
+       private void testWithScalaServerPage() throws InterruptedException, 
IOException {
+               registerRDFListRootResource();
+               final Dictionary<String, Object> webRenderingServiceProperty = 
new Hashtable<String, Object>();
+               {
+                       webRenderingServiceProperty.put("service.pid", 
SomeContentWebRenderingService.class.getName());
+               }
+               
bundleContext.registerService(SomeContentWebRenderingService.class.getName(),
+                               new SomeContentWebRenderingService(), 
webRenderingServiceProperty);
+               ServiceReference serviceReference = 
bundleContext.getServiceReference(RenderletManager.class.getName());
+               RenderletManager renderletManager = (RenderletManager) 
bundleContext.getService(serviceReference);
+               
renderletManager.registerRenderlet(ScalaServerPagesRenderlet.class.getName(),
+                               new 
UriRef(getClass().getResource("renderingServiceTest.ssp").toString()),
+                               RDFListRootResource.testType, null, 
MediaType.TEXT_PLAIN_TYPE, false);
+               URL url = new URL("http://localhost:"; + testHttpPort + "/list");
+               Thread.sleep(4000);
+               String returnedString = new String(requestUrl(url), "utf-8");
+               Assert.assertEquals("some content\n", returnedString);
+
+       }
+
        private void checkTcManagerService() throws Exception {
                Object service = waitFor(TcManager.class, 20000);
                Assert.assertTrue(service != null);
@@ -301,6 +347,16 @@ public class FelixClerezzaPlatformTest {
                                successfulRequests);
        }
 
+       private void registerRDFListRootResource() {
+               final Dictionary<String, Object> jaxRsResourceProperty = new 
Hashtable<String, Object>();
+               {
+                       jaxRsResourceProperty.put("javax.ws.rs", Boolean.TRUE);
+                       jaxRsResourceProperty.put("service.pid", 
RDFListRootResource.class.getName());
+               }
+               bundleContext.registerService(Object.class.getName(),
+                               new RDFListRootResource(), 
jaxRsResourceProperty);
+       }
+
        static class RequestThread extends Thread {
 
                private URL url;
@@ -325,11 +381,13 @@ public class FelixClerezzaPlatformTest {
                }
        }
 
-       private static void requestUrl(URL url) throws IOException {
+       private static byte[] requestUrl(URL url) throws IOException {
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
                URLConnection urlConnection = url.openConnection();
                InputStream in = urlConnection.getInputStream();
                for (int ch = in.read(); ch != -1; ch = in.read()) {
-                       System.out.print((char) ch);
+                       baos.write(ch);
                }
+               return baos.toByteArray();
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/RDFListRootResource.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/RDFListRootResource.java?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/RDFListRootResource.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/RDFListRootResource.java
 Mon Nov 29 12:43:43 2010
@@ -24,8 +24,10 @@ import javax.ws.rs.Produces;
 
 import org.apache.clerezza.rdf.core.BNode;
 import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
 import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
+import org.apache.clerezza.rdf.ontologies.RDF;
 import org.apache.clerezza.rdf.utils.GraphNode;
 import org.apache.clerezza.rdf.utils.RdfList;
 
@@ -36,13 +38,14 @@ import org.apache.clerezza.rdf.utils.Rdf
 @Path("/list")
 public class RDFListRootResource {
 
-       static final public String greeting = "hello";
+       static final public UriRef testType = new 
UriRef("http://example.org/foo";);
+
        
        @GET
-       @Produces("text/plain")
        public GraphNode sayHello() {
                TripleCollection resultGraph = new SimpleMGraph();
                GraphNode result = new GraphNode(new BNode(), resultGraph);
+               result.addProperty(RDF.type, testType);
                RdfList list = new RdfList(result);
                for (int i = 0; i < 10 ; i++) {
                        list.add(new PlainLiteralImpl("number "+i));

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/SomeContentWebRenderingService.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/SomeContentWebRenderingService.java?rev=1040089&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/SomeContentWebRenderingService.java
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/src/test/java/org/apache/clerezza/platform/testing/blackbox/osgi/SomeContentWebRenderingService.java
 Mon Nov 29 12:43:43 2010
@@ -0,0 +1,32 @@
+/*
+ *  Copyright 2010 reto.
+ * 
+ *  Licensed 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.
+ *  under the License.
+ */
+
+package org.apache.clerezza.platform.testing.blackbox.osgi;
+
+import org.apache.clerezza.platform.typerendering.WebRenderingService;
+
+/**
+ *
+ * @author reto
+ */
+...@webrenderingservice
+public class SomeContentWebRenderingService {
+
+       public String getSomeContent() {
+               return "some content";
+       }
+}

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scala/src/main/scala/org/apache/clerezza/platform/typerendering/scala/RenderedPage.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scala/src/main/scala/org/apache/clerezza/platform/typerendering/scala/RenderedPage.scala?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scala/src/main/scala/org/apache/clerezza/platform/typerendering/scala/RenderedPage.scala
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.scala/src/main/scala/org/apache/clerezza/platform/typerendering/scala/RenderedPage.scala
 Mon Nov 29 12:43:43 2010
@@ -4,6 +4,7 @@ import java.io.OutputStream
 import java.io.PrintWriter
 import java.net.URI
 import javax.ws.rs.core.MediaType
+import org.osgi.framework.BundleContext
 import scala.xml._
 import org.apache.clerezza.platform.typerendering._
 import org.apache.clerezza.platform.typerendering.Renderlet.RequestProperties
@@ -17,7 +18,7 @@ import org.apache.clerezza.rdf.scala.uti
 /**
  * PageRenderlet.renderedPage returns an instance of this class, implementing
  * the content method to produce an XML Elmenet suitable as response to the
- * request yieldingto the arguments passed to the constructor.
+ * request yielding to the arguments passed to the constructor.
  */
 abstract class RenderedPage(arguments: RenderedPage.Arguments) {
        val RenderedPage.Arguments(
@@ -56,6 +57,10 @@ abstract class RenderedPage(arguments: R
        object $ {
                def apply(key: String) = sharedRenderingValues.get(key)
                def update(key: String, value: Object) = 
sharedRenderingValues.put(key, value)
+               def apply[T](implicit m: Manifest[T]): T = {
+                       val clazz = m.erasure.asInstanceOf[Class[T]]
+                       requestProperties.getRenderingService(clazz)
+               }
        }
 
        def ifx[T](con:  => Boolean)(f: => T) :  T = {

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Nov 29 12:43:43 2010
@@ -2,3 +2,4 @@
 .settings
 target
 .project
+.externalToolBuilders

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererImpl.java?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererImpl.java
 Mon Nov 29 12:43:43 2010
@@ -30,6 +30,7 @@ import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriInfo;
 import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.utils.GraphNode;
+import org.osgi.framework.BundleContext;
 
 /**
  *
@@ -45,10 +46,12 @@ class RendererImpl implements Renderer, 
        private boolean builtIn;
        private String mode;
        private final RenderletRendererFactoryImpl renderletRendererFactoryImpl;
+       private final BundleContext bundleContext;
 
        RendererImpl(UriRef renderingSpecification,
                        Renderlet renderlet, String mode, MediaType mediaType, 
int prio,
-                       RenderletRendererFactoryImpl 
renderletRendererFactoryImpl, boolean builtIn) {
+                       RenderletRendererFactoryImpl 
renderletRendererFactoryImpl, boolean builtIn,
+                       BundleContext bundleContext) {
                this.renderlet = renderlet;
                this.mediaType = mediaType;
                this.mode = mode;
@@ -62,7 +65,7 @@ class RendererImpl implements Renderer, 
                                throw new WebApplicationException(ex);
                        }
                }
-
+               this.bundleContext = bundleContext;
        }
 
        @Override
@@ -94,7 +97,7 @@ class RendererImpl implements Renderer, 
                                uriInfo, httpHeaders, mediaType, 
sharedRenderingValues);
                renderlet.render(resource, context, sharedRenderingValues, 
callbackRenderer,
                        renderSpecUri, mode, mediaType,
-                       new Renderlet.RequestProperties(uriInfo, httpHeaders),
+                       new Renderlet.RequestProperties(uriInfo, httpHeaders, 
bundleContext),
                        entityStream);
        }
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/Renderlet.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/Renderlet.java?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/Renderlet.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/Renderlet.java
 Mon Nov 29 12:43:43 2010
@@ -27,6 +27,8 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriInfo;
 import org.apache.clerezza.rdf.utils.GraphNode;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 
 /**
  * A renderlet renders a <code>GraphNode</code> with the optionally specified
@@ -38,16 +40,19 @@ public interface Renderlet {
 
        /**
         * A class repressing properties of the http request within which the
-        * Renderlet is used
+        * Renderlet is used, it also allows access to contextual rendering 
services.
         */
        static class RequestProperties {
                private UriInfo uriInfo;
                private MultivaluedMap<String, Object> httpHeaders;
+               private final BundleContext bundleContext;
 
                public RequestProperties(UriInfo uriInfo, 
-                               MultivaluedMap<String, Object> httpHeaders) {
+                               MultivaluedMap<String, Object> httpHeaders,
+                               BundleContext bundleContext) {
                        this.uriInfo = uriInfo;
                        this.httpHeaders = httpHeaders;
+                       this.bundleContext = bundleContext;
                }
 
                public MultivaluedMap<String, Object>  getHttpHeaders() {
@@ -58,6 +63,26 @@ public interface Renderlet {
                        return uriInfo;
                }
 
+               /**
+                * Rendering services
+                *
+                * @param type
+                * @return a intsance of the requested rendering services
+                */
+               public <T> T getRenderingService(Class<T> type) {
+                       ServiceReference serviceReference = 
bundleContext.getServiceReference(type.getName());
+                       if (serviceReference != null) {
+                               T resultCandidate = (T) 
bundleContext.getService(serviceReference);
+                               if 
(resultCandidate.getClass().getAnnotation(WebRenderingService.class) != null) {
+                                       return resultCandidate;
+                               } else {
+                                       return null;
+                               }
+                       } else {
+                               return null;
+                       }
+               }
+
        }
        
        /**

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java?rev=1040089&r1=1040088&r2=1040089&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RenderletRendererFactoryImpl.java
 Mon Nov 29 12:43:43 2010
@@ -60,6 +60,7 @@ import org.apache.clerezza.rdf.utils.Rdf
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.clerezza.rdf.ontologies.RDFS;
+import org.osgi.framework.BundleContext;
 
 /**
  *
@@ -95,6 +96,7 @@ public class RenderletRendererFactoryImp
        private final Set<ServiceReference> renderletRefStore =
                        Collections.synchronizedSet(new 
HashSet<ServiceReference>());
        List<Resource> rdfTypePrioList;
+       private BundleContext bundleContext;
 
        @Override
        public Renderer createRenderer(GraphNode resource, String mode, 
List<MediaType> acceptableMediaTypes) {
@@ -154,7 +156,7 @@ public class RenderletRendererFactoryImp
                                                        mode,
                                                        
getMostConcreteMediaType(mediaTypeRequested, mediaTypeInGraph),
                                                        prio, 
RenderletRendererFactoryImpl.this,
-                                                       
renderletDef.isBuiltIn()));
+                                                       
renderletDef.isBuiltIn(), bundleContext));
                                }
                        }
                        if (!configurationList.isEmpty()) {
@@ -360,6 +362,7 @@ public class RenderletRendererFactoryImp
         * @param componentContext
         */
        protected void activate(ComponentContext componentContext) {
+               bundleContext = componentContext.getBundleContext();
                graphChanged(null);
                configGraph.addGraphListener(this,
                                new FilterTriple(null, RDF.first, null), 1000);
@@ -411,6 +414,7 @@ public class RenderletRendererFactoryImp
         */
        protected void deactivate(ComponentContext componentContext) {
                configGraph.removeGraphListener(this);
+               bundleContext = null;
        }
 
        @Override

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.ontologies/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Nov 29 12:43:43 2010
@@ -2,3 +2,4 @@
 .settings
 target
 .project
+.externalToolBuilders


Reply via email to