Author: reto
Date: Tue Jun  8 12:28:25 2010
New Revision: 952633

URL: http://svn.apache.org/viewvc?rev=952633&view=rev
Log:
CLEREZZA-231: added clerezza.platform project

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/resources/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/test/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/test/java/
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
    incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml?rev=952633&r1=952632&r2=952633&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
 Tue Jun  8 12:28:25 2010
@@ -112,6 +112,11 @@
                -->
                <dependency>
                        <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.platform</artifactId>
+                       <scope>runtime</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.clerezza</groupId>
                        
<artifactId>org.apache.clerezza.platform.usermanager</artifactId>
                        <scope>runtime</scope>
                </dependency>

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml?rev=952633&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
 Tue Jun  8 12:28:25 2010
@@ -0,0 +1,27 @@
+<?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>org.apache.clerezza.parent</artifactId>
+               <version>0.2-incubating-SNAPSHOT</version>
+       </parent>
+       <groupId>org.apache.clerezza</groupId>
+       <artifactId>org.apache.clerezza.platform</artifactId>
+       <packaging>bundle</packaging>
+       <version>0.1-incubating-SNAPSHOT</version>
+       <name>Clerezza - Platform</name>
+       <description>Artifact with dependencies to the clerezza platform 
components
+       providing documentation and boot-status monitoring.</description>
+       <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.felix</groupId>
+                       
<artifactId>org.apache.felix.scr.annotations</artifactId>
+               </dependency>
+       </dependencies>
+</project>
+

Added: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java?rev=952633&view=auto
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
 (added)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
 Tue Jun  8 12:28:25 2010
@@ -0,0 +1,98 @@
+/*
+ * 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.platform;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.felix.scr.annotations.Reference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+
+/**
+ * This component logs a message when Apache Clerezza was launched 
successfully.
+ *
+ * @author reto
+ */
+/*
+ * For now this is done with hardcoded dependencies to services which are
+ * considered to be necessary for clerezza to be considered operational. This
+ * includes a hard-coded number of jax-rs resources. When this conditions are
+ * met the messages is logged after a period of 1 second during which no
+ * additional root resource has been registered.
+ *
+ *
+ * A more generic system might require the bundle providing the service marking
+ * a service as required component of the Apache Clerezza Platform
+ *
+ * see thread starting at 
http://www.mail-archive.com/[email protected]/msg07647.html
+ */
+
+...@component(enabled=true, immediate=true)
+...@reference(name="jaxrsResource",
+               cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
+               policy=ReferencePolicy.DYNAMIC,
+               referenceInterface=Object.class,
+               target="(javax.ws.rs=true)")
+public class BootMonitor {
+
+       private Set<Object> rootResources =
+                       Collections.synchronizedSet(new HashSet<Object>());
+
+       /**
+        * true when the user has been notified that clerezza started
+        */
+       private boolean started = false;
+
+       private final Logger logger = 
LoggerFactory.getLogger(BootMonitor.class);
+
+       protected void bindJaxrsResource(Object p) {
+               rootResources.add(p);
+               if (!started && (rootResources.size() == 35)) {
+                       Thread t = new Thread() {
+                               @Override
+                               public void run() {
+                                       int lastSize = 0;
+                                       for (int i = 0; i < 100; i++) {
+                                               if (rootResources.size() == 
lastSize) {
+                                                       started = true;
+                                                       logger.info("The Apache 
Clerezza Platform is now operational.");
+                                                       return;
+                                               }
+                                               lastSize = rootResources.size();
+                                               try {
+                                                       Thread.sleep(1000);
+                                               } catch (InterruptedException 
ex) {
+                                                       throw new 
RuntimeException();
+                                               }
+                                       }
+                               }
+                       };
+                       t.start();
+               }
+       }
+
+       protected void unbindJaxrsResource(Object p) {
+               rootResources.remove(p);
+       }
+
+}

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml?rev=952633&r1=952632&r2=952633&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml Tue Jun  8 
12:28:25 2010
@@ -37,6 +37,7 @@
                <module>org.apache.clerezza.maven-jaxrs-report-plugin</module>
                <module>org.apache.clerezza.maven-ontologies-plugin</module>
                <module>org.apache.clerezza.maven-pladoc-plugin</module>
+               <module>org.apache.clerezza.platform</module>
                
<module>org.apache.clerezza.platform.accountcontrolpanel</module>
                <module>org.apache.clerezza.platform.concepts</module>
                <module>org.apache.clerezza.platform.config</module>
@@ -629,6 +630,11 @@
                        </dependency>
                        <dependency>
                                <groupId>org.apache.clerezza</groupId>
+                               
<artifactId>org.apache.clerezza.platform</artifactId>
+                               <version>0.1-incubating-SNAPSHOT</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>org.apache.clerezza</groupId>
                                
<artifactId>org.apache.clerezza.platform.usermanager</artifactId>
                                <version>0.13-incubating-SNAPSHOT</version>
                        </dependency>


Reply via email to