You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ha...@apache.org on 2011/12/08 02:59:38 UTC

svn commit: r1211734 - in /labs/magnet: core/ core/src/main/java/org/apache/labs/magnet/bbs/ core/src/main/java/org/apache/labs/magnet/service/ core/src/main/resources/META-INF/spring/ core/src/test/java/org/apache/labs/magnet/core/ magnet/

Author: hadrian
Date: Thu Dec  8 01:59:37 2011
New Revision: 1211734

URL: http://svn.apache.org/viewvc?rev=1211734&view=rev
Log:
Add bulletin processor as separate route. Minor jaxb improvements

Added:
    labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/jaxb.index
    labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/package-info.java
Modified:
    labs/magnet/core/pom.xml
    labs/magnet/core/src/main/java/org/apache/labs/magnet/service/BulletinBoardService.java
    labs/magnet/core/src/main/resources/META-INF/spring/beans.xml
    labs/magnet/core/src/test/java/org/apache/labs/magnet/core/RouteTest.java
    labs/magnet/magnet/pom.xml

Modified: labs/magnet/core/pom.xml
URL: http://svn.apache.org/viewvc/labs/magnet/core/pom.xml?rev=1211734&r1=1211733&r2=1211734&view=diff
==============================================================================
--- labs/magnet/core/pom.xml (original)
+++ labs/magnet/core/pom.xml Thu Dec  8 01:59:37 2011
@@ -66,6 +66,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-jaxb</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-jackson</artifactId>
     </dependency>
 

Added: labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/jaxb.index
URL: http://svn.apache.org/viewvc/labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/jaxb.index?rev=1211734&view=auto
==============================================================================
--- labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/jaxb.index (added)
+++ labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/jaxb.index Thu Dec  8 01:59:37 2011
@@ -0,0 +1,18 @@
+## ------------------------------------------------------------------------
+## 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.
+## ------------------------------------------------------------------------
+Bulletin
+BulletinList
\ No newline at end of file

Added: labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/package-info.java
URL: http://svn.apache.org/viewvc/labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/package-info.java?rev=1211734&view=auto
==============================================================================
--- labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/package-info.java (added)
+++ labs/magnet/core/src/main/java/org/apache/labs/magnet/bbs/package-info.java Thu Dec  8 01:59:37 2011
@@ -0,0 +1,19 @@
+/**
+ * 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.
+ */
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://labs.apache.org/magnet", elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.apache.labs.magnet.bbs;

Modified: labs/magnet/core/src/main/java/org/apache/labs/magnet/service/BulletinBoardService.java
URL: http://svn.apache.org/viewvc/labs/magnet/core/src/main/java/org/apache/labs/magnet/service/BulletinBoardService.java?rev=1211734&r1=1211733&r2=1211734&view=diff
==============================================================================
--- labs/magnet/core/src/main/java/org/apache/labs/magnet/service/BulletinBoardService.java (original)
+++ labs/magnet/core/src/main/java/org/apache/labs/magnet/service/BulletinBoardService.java Thu Dec  8 01:59:37 2011
@@ -16,46 +16,57 @@
  */
 package org.apache.labs.magnet.service;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.io.File;
 
 import org.apache.labs.magnet.bbs.Bulletin;
 import org.apache.labs.magnet.bbs.BulletinBoard;
 import org.apache.labs.magnet.bbs.BulletinList;
 import org.apache.labs.magnet.bbs.BulletinProcessor;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 public class BulletinBoardService implements BulletinBoard {
     private static final Logger LOG = LoggerFactory.getLogger(BulletinBoardService.class);
 
-    private BulletinProcessor processor;
-    private Map<String, Bulletin> store = new HashMap<String, Bulletin>();
+    private final File store;
+    private final BulletinProcessor processor;
 
-    public BulletinBoardService() {
+    public BulletinBoardService(String path, BulletinProcessor processor) {
+    	this.processor = processor;
+    	store = new File(path);
+    	if (!store.exists() || !store.isDirectory()) {
+    		throw new IllegalArgumentException("Invalid directory location used to configure BulletinBoardService: " + path);
+    	}
     }
 
     @Override
     public Bulletin getBulletin(String id) {
-        return store.get(id);
+        return new Bulletin(id);
     }
 
     @Override
     public void addBulletin(Bulletin bulletin) throws Exception {
-    	String id = bulletin.getId();
-        LOG.info("Add message id=\"{}\"", id);
-        store.put(id, bulletin);
+        LOG.info("Add bulletin id=\"{}\"", bulletin.getId());
+        processor.process(bulletin);
     }
 
     @Override
     public BulletinList listBulletins() {
-    	LOG.info("Currently holding {} messages.", store.size());
+        String[] ids = store.list();
+    	LOG.info("Currently holding {} bulletins.", ids.length);
+
+    	// TODO: something more sophisticated here like
+    	// returning the complete content of the bulletin, maybe cache...
+    	Bulletin[] items = new Bulletin[ids.length];
+        for (int i = 0; i < ids.length; i++) {
+        	String id = ids[i];
+        	int ext = id.lastIndexOf('.');
+        	items[i] = new Bulletin(ext < 0 ? id : id.substring(0, ext));
+    	}
         BulletinList answer = new BulletinList();
-        answer.setBulletin((Bulletin[])store.values().toArray(new Bulletin[]{}));
+        answer.setBulletin(items);
         return answer;
     }
-    
-    public void setMessageListener(BulletinProcessor processor) {
-    	this.processor = processor;
-    }
 }

Modified: labs/magnet/core/src/main/resources/META-INF/spring/beans.xml
URL: http://svn.apache.org/viewvc/labs/magnet/core/src/main/resources/META-INF/spring/beans.xml?rev=1211734&r1=1211733&r2=1211734&view=diff
==============================================================================
--- labs/magnet/core/src/main/resources/META-INF/spring/beans.xml (original)
+++ labs/magnet/core/src/main/resources/META-INF/spring/beans.xml Thu Dec  8 01:59:37 2011
@@ -65,10 +65,16 @@
   <!-- Web Services -->
   <jaxrs:server address="camel://direct:bbs" id="bbs-server">
     <jaxrs:serviceBeans><ref bean="bbs-service" /></jaxrs:serviceBeans>
-    <jaxrs:inInterceptors><bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" /></jaxrs:inInterceptors>
+    <!-- jaxrs:inInterceptors><bean class="org.apache.cxf.interceptor.LoggingInInterceptor" /></jaxrs:inInterceptors -->
+    <!-- jaxrs:outInterceptors><bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" /></jaxrs:outInterceptors -->
   </jaxrs:server>
 
-  <bean id="bbs-service" class="org.apache.labs.magnet.service.BulletinBoardService" />
+  <bean id="bbs-service" class="org.apache.labs.magnet.service.BulletinBoardService">
+    <constructor-arg value="/x1/apache/magnet" />
+    <constructor-arg ref="bbs-processor" />
+  </bean>
+
+  <bean id="bbs-processor" class="org.apache.labs.magnet.service.BulletinProcessorService" />
 
   <!-- Camel configuration -->
   <bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">
@@ -78,16 +84,17 @@
   <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
     <package>org.apache.labs.magnet.core</package>
 
-    <route id="sample" autoStartup="false">
-      <from uri="{{schedule.task}}" />
-      <to uri="log:task" />
-    </route>
-
     <route id="bbs">
       <from uri="jetty:http://0.0.0.0:9100/bbs?matchOnUriPrefix=true" />
       <to uri="direct://bbs" />
     </route>
 
+    <route id="bbs-process">
+      <from uri="direct://bulletin-processor" />
+      <marshal><jaxb contextPath="org.apache.labs.magnet.bbs" /></marshal>
+      <to uri="file:/x1/apache/magnet" />
+    </route>
+
   </camelContext>
 
 </beans>

Modified: labs/magnet/core/src/test/java/org/apache/labs/magnet/core/RouteTest.java
URL: http://svn.apache.org/viewvc/labs/magnet/core/src/test/java/org/apache/labs/magnet/core/RouteTest.java?rev=1211734&r1=1211733&r2=1211734&view=diff
==============================================================================
--- labs/magnet/core/src/test/java/org/apache/labs/magnet/core/RouteTest.java (original)
+++ labs/magnet/core/src/test/java/org/apache/labs/magnet/core/RouteTest.java Thu Dec  8 01:59:37 2011
@@ -48,6 +48,6 @@ public class RouteTest extends CamelSpri
         } finally {
             httpclient.getConnectionManager().shutdown();
         }
-    	// Thread.sleep(5000);
+        Thread.sleep(1000);
     }
 }

Modified: labs/magnet/magnet/pom.xml
URL: http://svn.apache.org/viewvc/labs/magnet/magnet/pom.xml?rev=1211734&r1=1211733&r2=1211734&view=diff
==============================================================================
--- labs/magnet/magnet/pom.xml (original)
+++ labs/magnet/magnet/pom.xml Thu Dec  8 01:59:37 2011
@@ -93,6 +93,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-jaxb</artifactId>
+        <version>${camel.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-jackson</artifactId>
         <version>${camel.version}</version>
       </dependency>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org