You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by zo...@apache.org on 2010/02/07 10:53:02 UTC

svn commit: r907404 - in /incubator/aries/trunk/samples/blog-sample/blog/src/main: java/org/apache/aries/samples/blog/ resources/OSGI-INF/blueprint/

Author: zoe
Date: Sun Feb  7 09:53:02 2010
New Revision: 907404

URL: http://svn.apache.org/viewvc?rev=907404&view=rev
Log:
ARIES-149

Added:
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorManagerImpl.java
      - copied, changed from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/AuthorManagerImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentManagerImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryImpl.java
      - copied, changed from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryManagerImpl.java
      - copied, changed from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostManagerImpl.java
Removed:
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/AuthorManagerImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostManagerImpl.java
Modified:
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BloggingServiceImpl.java
    incubator/aries/trunk/samples/blog-sample/blog/src/main/resources/OSGI-INF/blueprint/blueprint.xml

Modified: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorImpl.java?rev=907404&r1=907403&r2=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorImpl.java Sun Feb  7 09:53:02 2010
@@ -20,9 +20,12 @@
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 import org.apache.aries.samples.blog.api.BlogAuthor;
+import org.apache.aries.samples.blog.api.BlogEntry;
 import org.apache.aries.samples.blog.persistence.api.Author;
+import org.apache.aries.samples.blog.persistence.api.Entry;
 
 
 
@@ -30,12 +33,10 @@
 {
   private static Calendar cal = Calendar.getInstance();
   private Author author;
-  private BloggingServiceImpl bloggingService;
   
-  public BlogAuthorImpl(Author a, BloggingServiceImpl bs)
+  public BlogAuthorImpl(Author a)
   {
     author = a;
-    bloggingService = bs;
   }
 
   public String getBio()
@@ -75,4 +76,13 @@
     
     return year + "-" + month + "-" + date;
   }
+  
+	public List<? extends BlogEntry> getEntries() {
+		return adapt(author.getEntries());
+	}
+	
+	private List<? extends BlogEntry> adapt (List<? extends Entry> list) {
+		List<BlogEntryImpl> bei = null;;
+		return bei;
+	}
 }
\ No newline at end of file

Copied: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorManagerImpl.java (from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/AuthorManagerImpl.java)
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorManagerImpl.java?p2=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorManagerImpl.java&p1=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/AuthorManagerImpl.java&r1=907065&r2=907404&rev=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/AuthorManagerImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogAuthorManagerImpl.java Sun Feb  7 09:53:02 2010
@@ -20,7 +20,9 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 
 import org.apache.aries.samples.blog.api.*;
@@ -29,7 +31,7 @@
 
 
 
-public class AuthorManagerImpl implements AuthorManager
+public class BlogAuthorManagerImpl implements BlogAuthorManager
 {
   private BlogPersistenceService persistenceService;
 
@@ -50,15 +52,20 @@
     persistenceService.createAuthor(email, dateOfBirth, name, displayName, bio);
   }
   
-  public List<Author> getAllAuthors()
+  public List<? extends BlogAuthor> getAllAuthors()
   {
-    return persistenceService.getAllAuthors();
+	  List<? extends Author> authors = persistenceService.getAllAuthors();
+		return adaptAuthor(authors);
   }
   
-  public Author getAuthor(String emailAddress)
+  public BlogAuthor getAuthor(String emailAddress)
   {
     if(emailAddress == null) throw new IllegalArgumentException("Email must not be null");
-    return persistenceService.getAuthor(emailAddress);
+    Author a = persistenceService.getAuthor(emailAddress);
+    if (a != null)
+		return new BlogAuthorImpl(a);
+	else
+		return null;
   }
   
   public void removeAuthor(String emailAddress)
@@ -68,16 +75,24 @@
   }
   
   public void updateAuthor(String email, String dob, String name, String displayName, String bio) throws ParseException
-  {    
+  { 
+	  if (email == null)
+			throw new IllegalArgumentException("Email must not be null");
     Date dateOfBirth = (dob == null) ? null : new SimpleDateFormat("yyyy-MM-dd").parse(dob);
-    updateAuthor(email, dateOfBirth, name, displayName, bio);
+    persistenceService.updateAuthor(email, dateOfBirth, name, displayName, bio);
   }
   
-  public void updateAuthor(String email, Date dob, String name, String displayName, String bio) throws ParseException
-  {
-    if(email == null) throw new IllegalArgumentException("Email must not be null");   
-    
-    persistenceService.updateAuthor(email, dob, name, displayName, bio);
-  }
+	private List<? extends BlogAuthor> adaptAuthor(
+			List<? extends Author> authors) {
+		List<BlogAuthorImpl> list = new ArrayList<BlogAuthorImpl>();
+
+		Iterator<? extends Author> a = authors.iterator();
+		while (a.hasNext()) {
+			list.add(new BlogAuthorImpl(a.next()));
+		}
+
+		return list;
+
+	}
   
 }

Added: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentImpl.java?rev=907404&view=auto
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentImpl.java (added)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentImpl.java Sun Feb  7 09:53:02 2010
@@ -0,0 +1,88 @@
+/**
+ * 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.aries.samples.blog;
+
+import java.util.Date;
+import java.util.Calendar;
+
+import org.apache.aries.samples.blog.api.BlogAuthor;
+import org.apache.aries.samples.blog.api.BlogComment;
+import org.apache.aries.samples.blog.api.BlogEntry;
+import org.apache.aries.samples.blog.comment.persistence.api.Comment;
+
+
+public class BlogCommentImpl implements BlogComment {
+	private static Calendar cal = Calendar.getInstance();
+	
+	private Comment comment;
+	
+	public BlogCommentImpl(Comment c) {
+		 comment = c;
+	}
+  /** Get comment 
+   *  @return the String representing the comment 
+   */
+  public String getComment() {
+	  return comment.getComment();
+  }
+  
+  /** Get the author of the comment 
+   *  @return the BlogAuthor instance 
+   */
+  public BlogAuthor getAuthor() {
+	  return new BlogAuthorImpl(comment.getAuthor());
+  }
+  
+  /** Get the parent blog post for the comment 
+   *  @return the BlogPost instance the comment is attached to.  
+   */
+  public BlogEntry getEntry() {
+	  return new BlogEntryImpl(comment.getEntry());
+  }
+
+  /** Get the Id value of the comment 
+   *  @return the integer id of the comment 
+   */
+  public int getId() {
+	  return comment.getId();
+  }
+  
+  /** Get the creation date for the comment 
+   *  @return the String representation of the date the comment was
+   *  created in dd-mm-yyyy format. 
+   */
+  public String getCommentCreationDate() {
+	  
+	  Date dc = comment.getCreationDate();
+	  int year;
+		int month;
+		int date;
+
+		synchronized (cal) {
+			cal.setTime(dc);
+			year = cal.get(Calendar.YEAR);
+			month = cal.get(Calendar.MONTH) + 1;
+			date = cal.get(Calendar.DATE);
+		}
+
+		return year + "-" + month + "-" + date;
+
+  }
+  
+}

Added: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentManagerImpl.java?rev=907404&view=auto
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentManagerImpl.java (added)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogCommentManagerImpl.java Sun Feb  7 09:53:02 2010
@@ -0,0 +1,88 @@
+/**
+ * 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.aries.samples.blog;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.aries.samples.blog.api.BlogComment;
+import org.apache.aries.samples.blog.api.BlogCommentManager;
+import org.apache.aries.samples.blog.comment.persistence.api.BlogCommentService;
+import org.apache.aries.samples.blog.comment.persistence.api.Comment;
+
+
+public class BlogCommentManagerImpl implements BlogCommentManager {
+	
+	private BlogCommentService commentService;
+	private boolean commentServiceValid;
+	
+	// Injected via blueprint
+	public void setCommentService(BlogCommentService bcs) {
+		commentService = bcs;
+	}
+
+
+	public void createComment(String comment, String email, long entryId) {
+		commentService.createComment(comment, email, entryId);
+	}
+
+	public List<? extends BlogComment> getCommentsByAuthor(String email) {
+		List<? extends Comment> comment = commentService.getCommentsForAuthor(email);
+		return adaptComment(comment);
+		
+	}		
+
+	public List<? extends BlogComment> getCommentsForPost(long id) {
+		List<? extends Comment> comment = commentService.getCommentsForEntry(id);
+		return adaptComment(comment);
+	}
+		
+
+	public void deleteComment(int id) {
+		commentService.delete(id);
+	}
+
+	private List<? extends BlogComment> adaptComment(
+			List<? extends Comment> comments) {
+		List<BlogComment> list = new ArrayList<BlogComment>();
+
+		Iterator<? extends Comment> c = comments.iterator();
+		while (c.hasNext()) {
+			list.add(new BlogCommentImpl(c.next()));
+			
+		}
+		return list;
+
+	}
+	
+	public boolean isCommentingAvailable() {
+		return commentServiceValid;
+	}
+	
+	public void blogServiceBound(BlogCommentService comment, Map props) {
+		commentServiceValid = true;
+	}
+
+	public void blogServiceUnbound(BlogCommentService comment, Map props) {
+
+	}
+
+}

Copied: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryImpl.java (from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostImpl.java)
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryImpl.java?p2=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryImpl.java&p1=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostImpl.java&r1=907065&r2=907404&rev=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryImpl.java Sun Feb  7 09:53:02 2010
@@ -20,31 +20,25 @@
 
 import java.util.Date;
 
-import org.apache.aries.samples.blog.api.BlogPost;
-import org.apache.aries.samples.blog.api.BlogPostManager;
-import org.apache.aries.samples.blog.persistence.api.BlogEntry;
+import org.apache.aries.samples.blog.api.BlogAuthor;
+import org.apache.aries.samples.blog.api.BlogEntry;
+import org.apache.aries.samples.blog.persistence.api.Entry;
 
 
 /** Implementation of a BlogPast */
-public class BlogPostImpl implements BlogPost
+public class BlogEntryImpl implements BlogEntry
 {
-  public BlogEntry theEntry;
-  
-  private BlogPostManager postManager;
+  public Entry theEntry;
 
-  public BlogPostImpl(BlogEntry blogEntry, BlogPostManager pManager)
+  public BlogEntryImpl(Entry blogEntry)
   {
     theEntry = blogEntry;
-    postManager = pManager;
   }
 
-  public String getAuthor()
+  public BlogAuthor getAuthor()
   {
-    String result = theEntry.getAuthor().getDisplayName();
-    
-    if (result == null || result.length() == 0) result = theEntry.getAuthor().getEmail();
+    return new BlogAuthorImpl(theEntry.getAuthor());
     
-    return result;
   }
 
   public String getBody()
@@ -57,11 +51,6 @@
     return theEntry.getTitle();
   }
 
-  protected BlogEntry getBlogEntry()
-  {
-    return theEntry;
-  }
-
   public String getAuthorEmail()
   {
     return theEntry.getAuthor().getEmail();

Copied: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryManagerImpl.java (from r907065, incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostManagerImpl.java)
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryManagerImpl.java?p2=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryManagerImpl.java&p1=incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostManagerImpl.java&r1=907065&r2=907404&rev=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogPostManagerImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogEntryManagerImpl.java Sun Feb  7 09:53:02 2010
@@ -24,20 +24,18 @@
 import java.util.Date;
 import java.util.List;
 
-import org.apache.aries.samples.blog.api.BlogPost;
-import org.apache.aries.samples.blog.api.BlogPostManager;
-import org.apache.aries.samples.blog.persistence.api.Author;
-import org.apache.aries.samples.blog.persistence.api.BlogEntry;
+import org.apache.aries.samples.blog.api.BlogAuthor;
+import org.apache.aries.samples.blog.api.BlogEntry;
+import org.apache.aries.samples.blog.api.BlogEntryManager;
 import org.apache.aries.samples.blog.persistence.api.BlogPersistenceService;
+import org.apache.aries.samples.blog.persistence.api.Entry;
 
 
 
-public class BlogPostManagerImpl implements BlogPostManager
+public class BlogEntryManagerImpl implements BlogEntryManager
 {
   private BlogPersistenceService persistenceService;
   
-  
-  private boolean commentServiceValid;
 
   // Injected via blueprint
   public void setPersistenceService(BlogPersistenceService persistenceService)
@@ -46,39 +44,44 @@
   }
   
   
-  public void createBlogPost(Author a, String title, String blogText, List<String> tags)
+  public void createBlogPost(String email, String title, String blogText, List<String> tags)
   {
-    persistenceService.createBlogPost(a, title, blogText, tags);
+    persistenceService.createBlogPost(email, title, blogText, tags);
   }
   
-  public BlogEntry findBlogEntryByTitle(String title)
+  public Entry findBlogEntryByTitle(String title)
   {
     return persistenceService.findBlogEntryByTitle(title);
   }
   
-  public List<BlogEntry> getAllBlogEntries()
+  public List<? extends BlogEntry> getAllBlogEntries()
   {
-    return persistenceService.getAllBlogEntries();
+	  List<? extends Entry> entries = persistenceService.getAllBlogEntries();
+		return adaptEntries(entries);
   }
   
-  public List<BlogEntry> getBlogEntries(int firstPostIndex, int noOfPosts)
+  public List<? extends BlogEntry> getBlogEntries(int firstPostIndex, int noOfPosts)
   { 
-    return persistenceService.getBlogEntries(firstPostIndex, noOfPosts);
+	  List<? extends Entry> entries = persistenceService.getBlogEntries(firstPostIndex, noOfPosts);		   		      
+		return adaptEntries(entries);
   }
   
-  public List<BlogEntry> getBlogsForAuthor(String emailAddress)
+  public List<? extends BlogEntry> getBlogsForAuthor(String emailAddress)
   {
-    return persistenceService.getBlogsForAuthor(emailAddress);
+		List <?extends Entry> entries= persistenceService.getBlogsForAuthor(emailAddress);
+		return adaptEntries(entries);
+    
   }
   
-  public List<BlogEntry> getBlogEntriesModifiedBetween(String startDate, String endDate) throws ParseException
+  public List<? extends BlogEntry> getBlogEntriesModifiedBetween(String startDate, String endDate) throws ParseException
   {
     if(startDate == null || "".equals(startDate)) throw new IllegalArgumentException("A valid start date must be supplied");
     if(endDate == null || "".equals(endDate)) throw new IllegalArgumentException("A valid end date must be supplied");
     SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
     Date start = sdf.parse(startDate);
     Date end = sdf.parse(endDate);
-    return persistenceService.getBlogEntriesModifiedBetween(start, end); 
+	List <? extends Entry> entries = persistenceService.getBlogEntriesModifiedBetween(start, end);
+	return adaptEntries(entries);
   }
   
   public int getNoOfPosts()
@@ -86,47 +89,58 @@
     return persistenceService.getNoOfBlogEntries();
   }
   
-  public void removeBlogEntry(Author a, String title, String publishDate) throws ParseException
+  public void removeBlogEntry(BlogAuthor a, String title, String publishDate) throws ParseException
   {
     if(a == null) throw new IllegalArgumentException("An author must be specified");
     if(title == null) title = "";
     if(publishDate == null) throw new IllegalArgumentException("The article must have a publication date");
-    BlogEntry found = null;
     Date pubDate = parseDate(publishDate);
+    long found = -920234218060948564L;
     
-    for(BlogEntry b : a.getPosts()) {
+    for(BlogEntry b : a.getEntries()) {
       if(title.equals(b.getTitle()) && pubDate.equals(b.getPublishDate())){
-        found = b;
+        found = b.getId();
         break;
       }
     }
     persistenceService.removeBlogEntry(found);
   }
   
-  public void updateBlogEntry(BlogEntry originalEntry, Author a, String title, String publishDate, String blogText, List<String> tags) throws ParseException
+  public void updateBlogEntry(BlogEntry originalEntry, BlogAuthor a, String title, String publishDate, String blogText, List<String> tags) throws ParseException
   {
-    if(originalEntry.getAuthor() == null || originalEntry.getAuthor().getEmail() == null) throw new IllegalArgumentException("An author must be specified");
-    if(title == null) title = "";
-    if(publishDate == null) throw new IllegalArgumentException("The article must have a publication date");
-    BlogEntry found = null;
-    Date pubDate = parseDate(publishDate);
-    for(BlogEntry b : getBlogsForAuthor(originalEntry.getAuthor().getEmail())) {
-      if(title.equals(b.getTitle()) && pubDate.equals(b.getPublishDate())){
-        found = b;
-        break;
-      }
-    }
-    
-    if(found == null) 
-      throw new IllegalArgumentException("No blog entry could be found");
-    
-    found.setAuthor(a);
-    found.setTitle(title);
-    found.setBlogText(blogText);
-    found.setTags((tags == null) ? new ArrayList<String>() : tags);
-    found.setUpdatedDate(new Date(System.currentTimeMillis()));
-    
-    persistenceService.updateBlogPost(found);
+	
+	if (originalEntry.getAuthor() == null
+			|| originalEntry.getAuthorEmail() == null)
+		throw new IllegalArgumentException("An author must be specified");
+	if (title == null)
+		title = "";
+	if (publishDate == null)
+		throw new IllegalArgumentException(
+				"The article must have a publication date");
+	long found = -920234218060948564L;
+	Date pubDate = parseDate(publishDate);
+	for (BlogEntry b : getBlogsForAuthor(originalEntry.getAuthorEmail()
+			)) {
+		if (title.equals(b.getTitle())
+				&& pubDate.equals(b.getPublishDate())) {
+			found = b.getId();
+			break;
+		}
+	}
+
+	if (found == -920234218060948564L)
+		throw new IllegalArgumentException("No blog entry could be found");
+
+	String email = a.getEmailAddress();
+
+	if (tags == null) {
+		tags = new ArrayList<String>();
+	}
+
+	Date updatedDate = new Date(System.currentTimeMillis());
+
+	persistenceService.updateBlogEntry(found, email, title, blogText, tags,
+			updatedDate);
   }
   
   private Date parseDate(String dateString) throws ParseException
@@ -135,14 +149,20 @@
     return sdf.parse(dateString);
   }
 
-  public boolean isCommentingAvailable()
-  {
-    return commentServiceValid;
-  }
-
   
-  public BlogPost getBlogPost(long id)
+  public BlogEntry getBlogPost(long id)
   {
-    return new BlogPostImpl(persistenceService.getBlogEntryById(id), this);
+    return new BlogEntryImpl(persistenceService.getBlogEntryById(id));
   }
+  
+	private List <? extends BlogEntry> adaptEntries(List<? extends Entry> e) {
+		  List<BlogEntryImpl> posts = new ArrayList<BlogEntryImpl>();
+		    
+		    for (Entry entry : e) {
+		      posts.add(new BlogEntryImpl(entry));
+		    }
+		      
+		return posts;
+	}
+	
 }
\ No newline at end of file

Modified: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogImpl.java?rev=907404&r1=907403&r2=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BlogImpl.java Sun Feb  7 09:53:02 2010
@@ -18,53 +18,15 @@
  */
 package org.apache.aries.samples.blog;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.aries.samples.blog.api.*;
-import org.apache.aries.samples.blog.persistence.api.Author;
-import org.apache.aries.samples.blog.persistence.api.BlogEntry;
+import org.apache.aries.samples.blog.api.Blog;
 
 
 /** Implementation of Blog */
 public class BlogImpl implements Blog
 {
-  private BlogPostManager postManager;
-  private AuthorManager authorManager;
   
-  public BlogImpl(AuthorManager aManager, BlogPostManager bManager)
-  {
-    postManager = bManager;
-    authorManager = aManager;
-  }
-
   public String getBlogTitle()
   {
     return "Sample Blog";
   }
-
-  public int getNoOfPosts()
-  {
-    return postManager.getNoOfPosts();
-  }
-  
-  public List<BlogPost> getPosts(int firstPostIndex, int noOfPosts)
-  {
-    List<BlogEntry> entries = postManager.getBlogEntries(firstPostIndex, noOfPosts);
-    List<BlogPost> posts = new ArrayList<BlogPost>();
-    
-    for (BlogEntry entry : entries) {
-      posts.add(new BlogPostImpl(entry, postManager));
-    }
-    
-    return posts;
-  }
-
-  public void createPost(String email, String title, String text, String tags)
-  {
-    Author author = authorManager.getAuthor(email);
-    
-    postManager.createBlogPost(author, title, text, Arrays.asList(tags.split(",")));
-  }
 }
\ No newline at end of file

Modified: incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BloggingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BloggingServiceImpl.java?rev=907404&r1=907403&r2=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BloggingServiceImpl.java (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/java/org/apache/aries/samples/blog/BloggingServiceImpl.java Sun Feb  7 09:53:02 2010
@@ -19,72 +19,109 @@
 package org.apache.aries.samples.blog;
 
 import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
 
-import org.apache.aries.samples.blog.api.AuthorManager;
-import org.apache.aries.samples.blog.api.Blog;
 import org.apache.aries.samples.blog.api.BlogAuthor;
-import org.apache.aries.samples.blog.api.BlogPost;
-import org.apache.aries.samples.blog.api.BlogPostManager;
+import org.apache.aries.samples.blog.api.BlogAuthorManager;
+import org.apache.aries.samples.blog.api.BlogComment;
+import org.apache.aries.samples.blog.api.BlogCommentManager;
+import org.apache.aries.samples.blog.api.BlogEntry;
+import org.apache.aries.samples.blog.api.BlogEntryManager;
 import org.apache.aries.samples.blog.api.BloggingService;
-import org.apache.aries.samples.blog.persistence.api.Author;
-
-
 
 /** Implementation of the BloggingService */
-public class BloggingServiceImpl implements BloggingService
-{
-  private BlogPostManager blogPostManager;
-  private AuthorManager authorManager;
-  
-  // Injected via blueprint
-  public void setBlogPostManager(BlogPostManager blogPostManager)
-  {
-    this.blogPostManager = blogPostManager;
-  }
-  
-  // Injected via blueprint
-  public void setAuthorManager(AuthorManager authorManager)
-  {
-    this.authorManager = authorManager;
-  }
-
-  public Blog getBlog()
-  {
-    return new BlogImpl(authorManager, blogPostManager);
-  }
-
-  public BlogAuthor getBlogAuthor(String email)
-  {
-    Author a = authorManager.getAuthor(email);
-    if (a != null)
-      return new BlogAuthorImpl(a, this);
-    else
-      return null;
-  }
-
-  public void createAuthor(String email, String nickName, String name, String bio, String dob)
-  {
-    try {
-      authorManager.createAuthor(email, dob, name, nickName, bio);
-    } catch (ParseException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-  }
-
-  public void updateAuthor(String email, String nickName, String name, String bio, String dob)
-  {
-    try {
-      authorManager.updateAuthor(email, dob, name, nickName, bio);
-    } catch (ParseException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-  }
-
-
-  public BlogPost getPost(long id)
-  {
-    return blogPostManager.getBlogPost(id);
-  }
+public class BloggingServiceImpl implements BloggingService {
+	private BlogEntryManager blogEntryManager;
+	private BlogAuthorManager blogAuthorManager;
+	private BlogCommentManager blogCommentManager;
+
+	// Injected via blueprint
+	public void setBlogEntryManager(BlogEntryManager blogPostManager) {
+		this.blogEntryManager = blogPostManager;
+	}
+
+	// Injected via blueprint
+	public void setBlogAuthorManager(BlogAuthorManager authorManager) {
+		this.blogAuthorManager = authorManager;
+	}
+	
+	// Injected via blueprint
+	public void setBlogCommentManager(BlogCommentManager commentManager) {
+		this.blogCommentManager = commentManager;
+	}
+
+
+	public String getBlogTitle() {
+		return new BlogImpl().getBlogTitle();
+	}
+
+	public BlogAuthor getBlogAuthor(String email) {
+		return blogAuthorManager.getAuthor(email);
+	}
+
+	public void createBlogAuthor(String email, String nickName, String name,
+			String bio, String dob) {
+		try {
+			blogAuthorManager.createAuthor(email, dob, name, nickName, bio);
+		} catch (ParseException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void updateBlogAuthor(String email, String nickName, String name,
+			String bio, String dob) {
+		try {
+			blogAuthorManager.updateAuthor(email, dob, name, nickName, bio);
+		} catch (ParseException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public BlogEntry getPost(long id) {
+		return blogEntryManager.getBlogPost(id);
+	}
+
+	public List<? extends BlogEntry> getBlogEntries(int firstPostIndex,
+			int noOfPosts) {
+		return blogEntryManager.getBlogEntries(firstPostIndex, noOfPosts);
+
+	}
+
+	public List<? extends BlogEntry> getAllBlogEntries() {
+		return blogEntryManager.getAllBlogEntries();
+	}
+
+	public int getNoOfEntries() {
+		return blogEntryManager.getNoOfPosts();
+	}
+
+	public void createBlogEntry(String email, String title, String blogText,
+			String tags) {
+		blogEntryManager.createBlogPost(email, title, blogText, Arrays
+				.asList(tags.split(",")));
+	}
+
+	public void createBlogComment(String comment, String authorEmail, long id) {
+		blogCommentManager.createComment(comment, authorEmail, id);
+	}
+
+	public void deleteBlogComment(BlogComment comment) {
+		blogCommentManager.deleteComment(comment.getId());
+	}
+
+	public List<? extends BlogComment> getCommentsForEntry(BlogEntry entry) {
+		return blogCommentManager.getCommentsForPost(entry.getId());
+	}
+
+	public BlogEntry getBlogEntry(long id) {
+		return blogEntryManager.getBlogPost(id);
+	}
+	
+	public boolean isCommentingAvailable() {
+		return blogCommentManager.isCommentingAvailable();
+
+	}
 }
\ No newline at end of file

Modified: incubator/aries/trunk/samples/blog-sample/blog/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/blog-sample/blog/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=907404&r1=907403&r2=907404&view=diff
==============================================================================
--- incubator/aries/trunk/samples/blog-sample/blog/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ incubator/aries/trunk/samples/blog-sample/blog/src/main/resources/OSGI-INF/blueprint/blueprint.xml Sun Feb  7 09:53:02 2010
@@ -19,21 +19,31 @@
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0">
 
-  <bean id="authorManager" class="org.apache.aries.samples.blog.AuthorManagerImpl" activation="lazy">
+  <bean id="blogAuthorManager" class="org.apache.aries.samples.blog.BlogAuthorManagerImpl">
     <property name="persistenceService" ref="persistenceManager"/>
   </bean>
-
-  <bean id="blogPostManager" class="org.apache.aries.samples.blog.BlogPostManagerImpl" activation="lazy">
+  
+  <bean id="blogEntryManager" class="org.apache.aries.samples.blog.BlogEntryManagerImpl">
     <property name="persistenceService" ref="persistenceManager"/>
   </bean>
-
-  <bean id="bloggingServiceComponent" class="org.apache.aries.samples.blog.BloggingServiceImpl" activation="lazy">
-    <property name="blogPostManager" ref="blogPostManager"/>
-    <property name="authorManager" ref="authorManager"/>
+  
+  <bean id="blogCommentManager" class="org.apache.aries.samples.blog.BlogCommentManagerImpl">
+    <property name="commentService" ref="commentPersistenceService"/>
   </bean>
-
-  <service id="bloggingService" ref="bloggingServiceComponent" interface="org.apache.aries.samples.blog.api.BloggingService"/>
+ 
+  
+  <bean id="bloggingServiceComponent" class="org.apache.aries.samples.blog.BloggingServiceImpl">
+    <property name="blogEntryManager" ref="blogEntryManager"/>
+    <property name="blogAuthorManager" ref="blogAuthorManager"/>
+  <property name="blogCommentManager" ref="blogCommentManager"/>
+  </bean>
+  
+  <service ref="bloggingServiceComponent" interface="org.apache.aries.samples.blog.api.BloggingService"/>
 
   <reference id="persistenceManager" interface="org.apache.aries.samples.blog.persistence.api.BlogPersistenceService"/>
 
+  <reference id="commentPersistenceService" availability="optional" interface="org.apache.aries.samples.blog.comment.persistence.api.BlogCommentService">
+    <reference-listener ref="blogCommentManager" bind-method="blogServiceBound" unbind-method="blogServiceUnbound"/>
+  </reference>
+ 
 </blueprint>