You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ug...@apache.org on 2007/06/08 16:10:11 UTC

svn commit: r545512 [2/2] - in /labs/nucleus: ./ branches/ tags/ trunk/ trunk/.settings/ trunk/src/ trunk/src/main/ trunk/src/main/java/ trunk/src/main/java/org/ trunk/src/main/java/org/apache/ trunk/src/main/java/org/apache/labs/ trunk/src/main/java/o...

Added: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java (added)
+++ labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java Fri Jun  8 07:10:08 2007
@@ -0,0 +1,37 @@
+/*
+ * 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.labs.nucleus.test;
+
+import org.apache.abdera.protocol.server.provider.TargetType;
+import org.apache.abdera.protocol.server.util.RegexTargetResolver;
+
+/**
+ * 
+ * @version $Id$
+ */
+public class BlogTargetResolver extends RegexTargetResolver {
+
+    public BlogTargetResolver() {
+        super("");
+        setPattern("/(\\?[^#]*)?", TargetType.TYPE_SERVICE);
+        setPattern("/blogs/([^/#?]+)/?", TargetType.TYPE_COLLECTION);
+        setPattern("/blogs/([^/#?]+)/([^/#?]+)(\\?[^#]*)?", TargetType.TYPE_ENTRY);
+    }
+
+}

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogTargetResolver.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java (added)
+++ labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java Fri Jun  8 07:10:08 2007
@@ -0,0 +1,234 @@
+/*
+ * 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.labs.nucleus.test;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.model.Collection;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Service;
+import org.apache.abdera.model.Workspace;
+import org.apache.abdera.protocol.client.Client;
+import org.apache.abdera.protocol.client.ClientResponse;
+import org.apache.abdera.protocol.client.CommonsClient;
+import org.apache.abdera.protocol.client.RequestOptions;
+import org.apache.abdera.test.client.JettyTest;
+import org.apache.abdera.test.client.JettyUtil;
+import org.apache.labs.nucleus.server.servlet.NucleusServlet;
+
+
+/**
+ * 
+ * @version $Id$
+ */
+public class BlogservTest extends JettyTest {
+
+    private static final String SERVER_URL = "http://localhost:8080/";
+    private static final String APPLICATION_CONTEXT_CLASSPATH_LOCATION = "applicationContext.xml";
+    private static Abdera abdera = new Abdera();
+
+    private static Factory getFactory() {
+        return abdera.getFactory();
+    }
+
+    @Override
+    protected void getServletHandler() {
+        Map<String, String> params = new HashMap<String, String>(1);
+        params.put(NucleusServlet.APPLICATION_CONTEXT_LOCATION_PARAMETER, APPLICATION_CONTEXT_CLASSPATH_LOCATION);
+        JettyUtil.addServlet(NucleusServlet.class.getName(), "/*", params);
+    }
+
+    public void testGetServiceDocument() throws Exception {
+        Client client = new CommonsClient();
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        // do the introspection step
+        ClientResponse response = client.get(SERVER_URL, options);
+        assertEquals(200, response.getStatus());
+        Document<Service> service_doc = response.getDocument();
+        assertNotNull(service_doc);
+        assertEquals(1, service_doc.getRoot().getWorkspaces().size());
+        Workspace workspace = service_doc.getRoot().getWorkspace("blogs");
+        assertNotNull(workspace);
+        for (Collection c: workspace.getCollections()) {
+            assertNotNull(c.getTitle());
+            assertNotNull(c.getHref());
+            assertTrue(c.getHref().toString().startsWith(workspace.getTitle() + '/'));
+        }
+        response.release();
+    }
+
+    public void testReadFeed() throws Exception {
+        Client client = new CommonsClient();
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        ClientResponse response = client.get(SERVER_URL + "blogs/bbc", options);
+        assertEquals(200, response.getStatus());
+        
+        Feed feed = (Feed) response.getDocument().getRoot();
+        assertEquals("Testing feed length", 2, feed.getEntries().size());
+        response.release();
+    }
+
+    public void testReadUpdatedFeed() throws Exception {
+        Client client = new CommonsClient();
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        // do the introspection step
+        ClientResponse response = client.get(SERVER_URL, options);
+        Document<Service> service_doc = response.getDocument();
+        Collection coll = service_doc.getRoot().getWorkspace("blogs").getCollections().get(0);
+        IRI collIri = coll.getResolvedHref();
+        response = client.get(collIri.toString(), options);
+        Feed feed = (Feed) response.getDocument().getRoot();
+        int n = feed.getEntries().size();
+        response.release();
+        response = createBasicEntry(client);
+        response.release();
+
+        response = client.get(collIri.toString(), options);
+        feed = (Feed) response.getDocument().getRoot();
+        assertEquals("Testing feed length", n + 1, feed.getEntries().size());
+        assertEquals("Testing new entry title", "A test post", feed.getEntries().get(0).getTitle());
+        response.release();
+    }
+    
+    public void testCreateEntry() throws Exception {
+
+        Client client = new CommonsClient();
+        ClientResponse response = createBasicEntry(client);
+        
+        assertEquals(201, response.getStatus());
+        assertNotNull(response.getLocation());
+        response.release();
+    }
+
+    public void testCreateAndReadEntry() throws Exception {
+
+        Client client = new CommonsClient();
+        ClientResponse response = createBasicEntry(client);
+        
+        assertEquals(201, response.getStatus());
+        assertNotNull(response.getLocation());
+        response.release();
+        
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        response = client.get(response.getLocation().toString(), options);
+        assertEquals(200, response.getStatus());
+        Document<Entry> doc = response.getDocument();
+        Entry entry = doc.getRoot();
+        assertEquals("Some text", entry.getContent());
+        response.release();
+    }
+
+    public void testDeleteEntry() throws Exception {
+
+        Client client = new CommonsClient();
+        ClientResponse response = createBasicEntry(client);
+        
+        assertEquals(201, response.getStatus());
+        assertNotNull(response.getLocation());
+        String location = response.getLocation().toString();
+        response.release();
+        
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        response = client.get(location, options);
+        assertEquals(200, response.getStatus());
+        Document<Entry> doc = response.getDocument();
+        Entry entry = doc.getRoot();
+        assertNotNull("link rel='edit' must not be null", entry.getEditLinkResolvedHref());
+        response.release();
+        
+        response = client.delete(entry.getEditLinkResolvedHref().toString(), options);
+        assertEquals(200, response.getStatus());
+        response.release();
+
+        response = client.get(location, options);
+        assertEquals(404, response.getStatus());
+        response.release();
+    }
+    
+    public void testUpdateEntry() throws Exception {
+
+        Client client = new CommonsClient();
+        ClientResponse response = createBasicEntry(client);
+        
+        assertEquals(201, response.getStatus());
+        assertNotNull(response.getLocation());
+        response.release();
+        
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        response = client.get(response.getLocation().toString(), options);
+        assertEquals(200, response.getStatus());
+        Document<Entry> doc = response.getDocument();
+        Entry entry = doc.getRoot();
+        assertNotNull("link rel='edit' must not be null", entry.getEditLinkResolvedHref());
+        response.release();
+
+        entry.setContent("Modified text");
+        response = client.put(entry.getEditLinkResolvedHref().toString(), entry, options);
+        assertEquals(200, response.getStatus());
+        doc = response.getDocument();
+        Entry entry2 = doc.getRoot();
+        assertEquals("Modified text", entry2.getContent());
+        response.release();
+    }
+    
+    private ClientResponse createBasicEntry(Client client) throws Exception {
+        RequestOptions options = client.getDefaultRequestOptions();
+        options.setHeader("Connection", "close");
+        // do the introspection step
+        ClientResponse response = client.get(SERVER_URL, options);
+        Document<Service> service_doc = response.getDocument();
+        Workspace workspace = service_doc.getRoot().getWorkspace("blogs");
+        Collection coll = workspace.getCollections().get(0);
+        IRI iri = coll.getResolvedHref();
+
+        // post a new entry
+        Entry entry = getFactory().newEntry();
+        entry.setTitle("A test post");
+        entry.setContent("Some text");
+        entry.setId("test" + System.currentTimeMillis());
+        entry.setUpdated(new Date());
+        options.setSlug("test" + System.currentTimeMillis());
+        response = client.post(iri.toString(), entry, options);
+        
+        if (response.getStatus() != 201) {
+            BufferedReader br = new BufferedReader(new InputStreamReader(response.getInputStream()));
+            String line;
+            while ((line = br.readLine()) != null) {
+                System.err.println(line);
+            }
+        }
+        
+        return response;
+    }
+}

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/BlogservTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java (added)
+++ labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java Fri Jun  8 07:10:08 2007
@@ -0,0 +1,189 @@
+/*
+ * 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.labs.nucleus.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.i18n.iri.IRISyntaxException;
+import org.apache.abdera.model.Collection;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.parser.ParseException;
+import org.apache.labs.nucleus.store.EntryNotFoundException;
+import org.apache.labs.nucleus.store.Store;
+import org.apache.labs.nucleus.store.StoreException;
+
+
+
+public class FileBasedBlogStore implements Store {
+
+    private File rootDir;
+    private Abdera abdera;
+
+    public void setRootDir(File rootDir) {
+        this.rootDir = rootDir;
+    }
+    
+    public void setAbdera(Abdera abdera) {
+        this.abdera = abdera;
+    }
+
+    public java.util.Collection<String> listWorkspaces() {
+        return Arrays.asList(new String[] { "blogs" });
+    }
+    
+    public java.util.Collection<Collection> listCollections(String workspace) {
+        File[] files = rootDir.listFiles();
+        List<Collection> colls = new ArrayList<Collection>(files.length);
+        for (int i = 0 ; i < files.length ; ++i) {
+            if (files[i].isDirectory() && ! files[i].isHidden()) {
+                Collection sc = abdera.getFactory().newCollection();
+                sc.setTitle(files[i].getName());
+                colls.add(sc);
+            }      
+        }
+        return colls;
+    }
+
+    public Entry createEntry(IRI iri, Entry entry, String slug) {
+        try {
+            entry.setId("tag:blog.example.com,2006:" + slug);
+        } catch (IRISyntaxException e) {
+            throw new StoreException(e);
+        }
+        entry.setUpdated(new Date());
+        String pathInfo[] = iri.toString().split("/");
+        String dir = pathInfo[pathInfo.length - 1];
+        File file = new File(new File(this.rootDir, dir), slug);
+        FileOutputStream out = null;
+        try {
+            out = new FileOutputStream(file);
+            entry.writeTo(out);
+        } catch (FileNotFoundException e) {
+            throw new StoreException("File not found: " + file, e);
+        } catch (IOException e) {
+            throw new StoreException(e);
+        } finally {
+            if (out != null) try {
+                out.close();
+            } catch (IOException ignored) {}
+        }
+        return entry;
+    }
+
+    public Entry updateEntry(IRI iri, Entry entry) throws StoreException {
+        entry.setUpdated(new Date());
+        String pathInfo[] = iri.toString().split("/");
+        String dir = pathInfo[pathInfo.length - 2];
+        String slug = pathInfo[pathInfo.length - 1];
+        File file = new File(new File(this.rootDir, dir), slug);
+        FileOutputStream out = null;
+        try {
+            out = new FileOutputStream(file);
+            entry.writeTo(out);
+        } catch (FileNotFoundException e) {
+            throw new StoreException("File not found: " + file, e);
+        } catch (IOException e) {
+            throw new StoreException(e);
+        } finally {
+            if (out != null) try {
+                out.close();
+            } catch (IOException ignored) {}
+        }
+        return entry;
+    }
+
+    public Entry getEntry(IRI iri) throws StoreException {
+        String pathInfo[] = iri.toString().split("/");
+        String dir = pathInfo[pathInfo.length - 2];
+        String slug = pathInfo[pathInfo.length - 1];
+        File file = new File(new File(this.rootDir, dir), slug);
+        try {
+            Document<Entry> doc =  this.abdera.getParser().parse(new FileInputStream(file));
+            Entry entry = doc.getRoot();
+            if (entry.getEditLink() == null) {
+                entry.addLink(iri.toString(), "edit");
+            }
+            return entry;
+        } catch (ParseException e) {
+            throw new StoreException("Can't parse " + file);
+        } catch (FileNotFoundException e) {
+            throw new EntryNotFoundException("File not found: " + file);
+        } catch (IRISyntaxException e) {
+            throw new StoreException(e);
+        }
+    }
+
+    public void deleteEntry(IRI iri) {
+        String pathInfo[] = iri.toString().split("/");
+        String dir = pathInfo[pathInfo.length - 2];
+        String slug = pathInfo[pathInfo.length - 1];
+        File file = new File(new File(this.rootDir, dir), slug);
+        file.delete();
+    }
+
+
+    public Feed getEntries(IRI iri) {
+        String pathInfo[] = iri.toString().split("/");
+        String dir = pathInfo[pathInfo.length - 1];
+        File[] files = new File(rootDir, dir).listFiles();
+        Feed feed = abdera.getFactory().newFeed();
+        long lastModified = 0;
+        for (int i = 0 ; i < files.length ; ++i) {
+            if (files[i].isFile() && ! files[i].isHidden()) {
+                try {
+                    Document<Entry> doc = abdera.getParser().parse(new FileInputStream(files[i]));
+                    Entry entry = doc.getRoot();
+                    if (entry.getEditLink() == null) {
+                        entry.addLink(iri.toString() + '/' + files[i].getName(), "edit");
+                    }
+                    feed.addEntry(entry);
+                    if (files[i].lastModified() > lastModified) {
+                        lastModified = files[i].lastModified();
+                    }
+                } catch (ParseException e) {
+                    throw new StoreException("Can't parse " + files[i]);
+                } catch (FileNotFoundException e) {
+                    throw new StoreException("File not found: " + files[i], e);
+                } catch (IRISyntaxException e) {
+                    throw new StoreException(e);
+                }
+            }      
+        }
+        try {
+            feed.setTitle(dir);
+            feed.setUpdated(new Date(lastModified));
+            feed.setId("tag:blog.example.com,2006:" + dir);
+        } catch (IRISyntaxException e) {
+            throw new StoreException(e);
+        }
+        return feed;
+    }
+}

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/src/test/java/org/apache/labs/nucleus/test/FileBasedBlogStore.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: labs/nucleus/trunk/src/test/resources/applicationContext.xml
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/src/test/resources/applicationContext.xml?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/src/test/resources/applicationContext.xml (added)
+++ labs/nucleus/trunk/src/test/resources/applicationContext.xml Fri Jun  8 07:10:08 2007
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
+       
+  <bean name="abdera" class="org.apache.abdera.Abdera"/>
+  
+  <bean name="serviceContext" class="org.apache.labs.nucleus.server.SpringBasedServiceContext">
+    <property name="abdera" ref="abdera"/>
+    <property name="providerManager" ref="providerManager"/>
+    <property name="requestHandlerManager">
+      <bean class="org.apache.abdera.protocol.server.servlet.DefaultRequestHandlerManager"/>
+    </property>
+    <property name="subjectResolver">
+      <bean class="org.apache.abdera.protocol.server.util.SimpleSubjectResolver"/>
+    </property>
+    <property name="targetResolver">
+      <bean class="org.apache.labs.nucleus.test.BlogTargetResolver"/>
+    </property>
+  </bean>
+  
+  <bean name="providerManager" class="org.apache.labs.nucleus.server.provider.SpringProviderManager">
+    <property name="provider" ref="provider"/>
+  </bean>
+  
+  <bean name="provider" class="org.apache.labs.nucleus.store.StoreProvider" autowire="byType">
+  </bean>
+  
+  <bean name="store" class="org.apache.labs.nucleus.test.FileBasedBlogStore">
+    <property name="rootDir" value="file:var/blogs"/>
+    <property name="abdera" ref="abdera"/>
+  </bean>
+</beans>
\ No newline at end of file

Propchange: labs/nucleus/trunk/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: labs/nucleus/trunk/var/blogs/bbc/1.xml
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/var/blogs/bbc/1.xml?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/var/blogs/bbc/1.xml (added)
+++ labs/nucleus/trunk/var/blogs/bbc/1.xml Fri Jun  8 07:10:08 2007
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+  <id>tag:channels.theveniceproject.com,2006:bbc/1.xml</id>
+  <title type="text">Nice one</title>
+  <updated>2006-01-01T00:00:00z</updated>
+</entry>

Propchange: labs/nucleus/trunk/var/blogs/bbc/1.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/var/blogs/bbc/1.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/var/blogs/bbc/1.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: labs/nucleus/trunk/var/blogs/bbc/2.xml
URL: http://svn.apache.org/viewvc/labs/nucleus/trunk/var/blogs/bbc/2.xml?view=auto&rev=545512
==============================================================================
--- labs/nucleus/trunk/var/blogs/bbc/2.xml (added)
+++ labs/nucleus/trunk/var/blogs/bbc/2.xml Fri Jun  8 07:10:08 2007
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<entry xmlns="http://www.w3.org/2005/Atom">
+  <id>tag:channels.theveniceproject.com,2006:bbc/2.xml</id>
+  <title type="text">Another one</title>
+  <updated>2006-01-01T12:00:00z</updated>
+</entry>

Propchange: labs/nucleus/trunk/var/blogs/bbc/2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: labs/nucleus/trunk/var/blogs/bbc/2.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: labs/nucleus/trunk/var/blogs/bbc/2.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml



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