[myblog] r443 committed - make some refactor:...

2 views
Skip to first unread message

myb...@googlecode.com

unread,
Jun 1, 2011, 4:33:42 AM6/1/11
to mybl...@googlegroups.com
Revision: 443
Author: rory.cn
Date: Wed Jun 1 01:33:04 2011
Log: make some refactor:
1.the package name.
2.make run on non-windows env.
http://code.google.com/p/myblog/source/detail?r=443

Added:
/branches/myblog-springmvc/src/main/java/com/jdkcn
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/domain
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/repository
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web
Deleted:
/branches/myblog-springmvc/src/main/java/com/myblog/domain
/branches/myblog-springmvc/src/main/java/com/myblog/repository
/branches/myblog-springmvc/src/main/java/com/myblog/service
/branches/myblog-springmvc/src/main/java/com/myblog/web
Modified:
/branches/myblog-springmvc/pom.xml
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/domain/Blog.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/repository/BlogDao.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/repository/BlogDaoImpl.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/AddPermission.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/AddPermissionValidator.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogManager.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogManagerImpl.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogValidator.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/DataSourcePopulator.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/AddDeleteBlogController.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/AdminPermissionController.java

/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/IndexController.java

/branches/myblog-springmvc/src/main/resources/applicationContext-common-business.xml
/branches/myblog-springmvc/src/main/webapp/WEB-INF/blogs-servlet.xml
/branches/myblog-springmvc/src/main/webapp/WEB-INF/web.xml

=======================================
--- /branches/myblog-springmvc/pom.xml Wed Jun 1 01:04:00 2011
+++ /branches/myblog-springmvc/pom.xml Wed Jun 1 01:33:04 2011
@@ -1,17 +1,75 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.myblog</groupId>
- <artifactId>myblog</artifactId>
- <version>2.0-SNAPSHOT</version>
- <packaging>war</packaging>
- <name>myblog</name>
- <description>This is the most simplest yet powerfull blog
engine</description>
- <repositories>
- </repositories>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <build>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.jdkcn.myblog</groupId>
+ <artifactId>myblog</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <name>myblog</name>
+ <description>This is the most simplest yet powerfull blog
engine</description>
+ <repositories>
+ <repository>
+ <id>Jboss</id>
+ <url>https://repository.jboss.org/nexus/content/groups/public</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <developers>
+ <developer>
+ <id>rory</id>
+ <name>Dingfu, Ye</name>
+ <email>ror...@gmail.com</email>
+ <organization>Jdkcn.com</organization>
+ <organizationUrl>http://jdkcn.com</organizationUrl>
+ <timezone>+8</timezone>
+ <roles>
+ <role>Administrator</role>
+ <role>Developer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>zhoushuqun</id>
+ <name>Shutra, Zhou</name>
+ <email>zhous...@gmail.com</email>
+ <organization>Redv Soft</organization>
+ <organizationUrl>http://www.redv.com</organizationUrl>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>+8</timezone>
+ </developer>
+ <developer>
+ <id>hhdem</id>
+ <name>Bing, Liu</name>
+ <email>liubin...@gmail.com</email>
+ <organization>www.hhdem.com</organization>
+ <organizationUrl>http://www.hhdem.com</organizationUrl>
+ <timezone>+8</timezone>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ </developer>
+ </developers>
+ <licenses>
+ <license>
+ <name>New BSD License</name>
+ <url>http://www.opensource.org/licenses/bsd-license.php</url>
+ <distribution>http://jdkcn.com</distribution>
+ </license>
+ </licenses>
+ <scm>
+
<connection>scm:svn:http://myblog.googlecode.com/svn/branches/myblog-springmvc</connection>
+
<developerConnection>scm:svn:https://myblog.googlecode.com/svn/branches/myblog-springmvc</developerConnection>
+ <url>http://myblog.googlecode.com/svn</url>
+ </scm>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -22,30 +80,43 @@
</configuration>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ </configuration>
+ </plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <encoding>UTF-8</encoding>
+ </configuration>
</plugin>
<plugin>
<!-- Download UMLGraph from the website and set PATH to the bin and
CLASSPATH to the Lib -->
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.8</version>
- <configuration>
- <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
- <docletArtifact>
- <groupId>org.umlgraph</groupId>
- <artifactId>doclet</artifactId>
- <version>5.1</version>
- </docletArtifact>
- <additionalparam>-views</additionalparam>
- <useStandardDocletOptions>true</useStandardDocletOptions>
- </configuration>
- </plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
+ <docletArtifact>
+ <groupId>org.umlgraph</groupId>
+ <artifactId>doclet</artifactId>
+ <version>5.1</version>
+ </docletArtifact>
+ <additionalparam>-views</additionalparam>
+ <useStandardDocletOptions>true</useStandardDocletOptions>
+ </configuration>
+ </plugin>
</plugins>
- </build>
-
- <dependencies>
+ </build>
+
+ <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
@@ -102,41 +173,41 @@
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>jsp-api</artifactId>
- <version>2.1</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.6</version>
- <scope>runtime</scope>
- </dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>2.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ <version>1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.1.6</version>
+ <scope>runtime</scope>
+ </dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
-
+
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
@@ -154,7 +225,7 @@
</dependency>

<!-- Spring Security -->
-
+
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-acl</artifactId>
@@ -216,41 +287,21 @@
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
-
+
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>3.3.1.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-search</artifactId>
- <version>3.1.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- <version>3.2.1.ga</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-annotations</artifactId>
- <version>3.2.1.ga</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.2.1.ga</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>4.0.2.GA</version>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.6.4.Final</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
+
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
@@ -283,14 +334,14 @@
</dependency>
<!-- Tiles Exception solution -->
<dependency>
- <groupId>javax.portlet</groupId>
- <artifactId>portlet-api</artifactId>
- <version>2.0</version>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>2.0</version>
</dependency>
<dependency>
<groupId>org.umlgraph</groupId>
<artifactId>doclet</artifactId>
<version>5.1</version>
</dependency>
- </dependencies>
+ </dependencies>
</project>
=======================================
--- /branches/myblog-springmvc/src/main/java/com/myblog/domain/Blog.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/domain/Blog.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.domain;
+package com.jdkcn.myblog.domain;

import java.io.Serializable;
import javax.persistence.Entity;
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/repository/BlogDao.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/repository/BlogDao.java
Wed Jun 1 01:33:04 2011
@@ -1,8 +1,8 @@
-package com.myblog.repository;
+package com.jdkcn.myblog.repository;

import java.util.List;

-import com.myblog.domain.Blog;
+import com.jdkcn.myblog.domain.Blog;


/**
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/repository/BlogDaoImpl.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/repository/BlogDaoImpl.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.repository;
+package com.jdkcn.myblog.repository;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -9,7 +9,7 @@
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

-import com.myblog.domain.Blog;
+import com.jdkcn.myblog.domain.Blog;


/**
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/AddPermission.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/AddPermission.java
Wed Jun 1 01:33:04 2011
@@ -1,7 +1,8 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;

import org.springframework.security.acls.domain.BasePermission;
-import com.myblog.domain.Blog;
+
+import com.jdkcn.myblog.domain.Blog;


/**
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/AddPermissionValidator.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/AddPermissionValidator.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;

import org.springframework.security.acls.domain.BasePermission;
import org.springframework.validation.Errors;
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/BlogManager.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogManager.java
Wed Jun 1 01:33:04 2011
@@ -1,11 +1,11 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;

import org.springframework.security.access.prepost.PostFilter;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.acls.model.Permission;
import org.springframework.security.acls.model.Sid;

-import com.myblog.domain.Blog;
+import com.jdkcn.myblog.domain.Blog;

import java.util.List;

@@ -37,8 +37,8 @@
public List<String> getAllRecipients();

@PreAuthorize(
- "hasPermission(#id, 'com.myblog.domain.Blog', read) or " +
- "hasPermission(#id, 'com.myblog.domain.Blog', admin)")
+ "hasPermission(#id, 'com.jdkcn.myblog.domain.Blog', read) or "
+
+ "hasPermission(#id, 'com.jdkcn.myblog.domain.Blog', admin)")
public Blog getById(Long id);

public Blog getRandomBlog();
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/BlogManagerImpl.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogManagerImpl.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;


import org.springframework.security.acls.domain.BasePermission;
@@ -18,8 +18,10 @@
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.util.Assert;
-import com.myblog.domain.Blog;
-import com.myblog.repository.BlogDao;
+
+import com.jdkcn.myblog.domain.Blog;
+import com.jdkcn.myblog.repository.BlogDao;
+
import java.util.List;
import java.util.Random;

=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/BlogValidator.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/BlogValidator.java
Wed Jun 1 01:33:04 2011
@@ -1,9 +1,9 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;

import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

-import com.myblog.domain.Blog;
+import com.jdkcn.myblog.domain.Blog;


/**
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/service/DataSourcePopulator.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/service/DataSourcePopulator.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.service;
+package com.jdkcn.myblog.service;

import java.util.Random;

@@ -24,7 +24,7 @@
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.Assert;

-import com.myblog.domain.Blog;
+import com.jdkcn.myblog.domain.Blog;

/**
* Populates the Blogs database with blog and ACL information.
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/web/AddDeleteBlogController.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/AddDeleteBlogController.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.web;
+package com.jdkcn.myblog.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -11,9 +11,9 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

-import com.myblog.domain.Blog;
-import com.myblog.service.BlogManager;
-import com.myblog.service.BlogValidator;
+import com.jdkcn.myblog.domain.Blog;
+import com.jdkcn.myblog.service.BlogManager;
+import com.jdkcn.myblog.service.BlogValidator;

/**
*
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/web/AdminPermissionController.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/AdminPermissionController.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.web;
+package com.jdkcn.myblog.web;

import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -30,10 +30,10 @@
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

-import com.myblog.domain.Blog;
-import com.myblog.service.AddPermission;
-import com.myblog.service.AddPermissionValidator;
-import com.myblog.service.BlogManager;
+import com.jdkcn.myblog.domain.Blog;
+import com.jdkcn.myblog.service.AddPermission;
+import com.jdkcn.myblog.service.AddPermissionValidator;
+import com.jdkcn.myblog.service.BlogManager;

/**
* Web controller to handle <tt>Permission</tt> administration functions -
adding and deleting
=======================================
---
/branches/myblog-springmvc/src/main/java/com/myblog/web/IndexController.java
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/java/com/jdkcn/myblog/web/IndexController.java
Wed Jun 1 01:33:04 2011
@@ -1,4 +1,4 @@
-package com.myblog.web;
+package com.jdkcn.myblog.web;

import java.util.HashMap;
import java.util.List;
@@ -15,8 +15,8 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

-import com.myblog.domain.Blog;
-import com.myblog.service.BlogManager;
+import com.jdkcn.myblog.domain.Blog;
+import com.jdkcn.myblog.service.BlogManager;

/**
* Controller which handles simple, single request use cases such as index
pages and blog deletion.
=======================================
---
/branches/myblog-springmvc/src/main/resources/applicationContext-common-business.xml
Wed Jun 1 01:04:00 2011
+++
/branches/myblog-springmvc/src/main/resources/applicationContext-common-business.xml
Wed Jun 1 01:33:04 2011
@@ -23,15 +23,15 @@

<!-- Uncomment the following lines when first time you run the application
because DataSourcePopulator class will create and populate the tables for
you in mysql under "blog" database for testing purposes -->
- <bean id="dataSourcePopulator"
class="com.myblog.service.DataSourcePopulator">
+ <bean id="dataSourcePopulator"
class="com.jdkcn.myblog.service.DataSourcePopulator">
<property name="dataSource" ref="dataSource"/>
<property name="mutableAclService" ref="aclService"/>
<property name="platformTransactionManager"
ref="transactionManager"/>
</bean>

- <bean id="blogManager" class="com.myblog.service.BlogManagerImpl">
+ <bean id="blogManager"
class="com.jdkcn.myblog.service.BlogManagerImpl">
<property name="blogDao">
- <bean class="com.myblog.repository.BlogDaoImpl">
+ <bean class="com.jdkcn.myblog.repository.BlogDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
</property>
=======================================
--- /branches/myblog-springmvc/src/main/webapp/WEB-INF/blogs-servlet.xml
Wed Jun 1 01:04:00 2011
+++ /branches/myblog-springmvc/src/main/webapp/WEB-INF/blogs-servlet.xml
Wed Jun 1 01:33:04 2011
@@ -14,7 +14,7 @@
</list>
</property>
</bean>
- <context:component-scan base-package="com.myblog"/>
+ <context:component-scan base-package="com.jdkcn.myblog"/>
<context:annotation-config />

<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
@@ -25,7 +25,7 @@
<!-- General Configuration Either comment this whole block or tiles
block, don't keep both -->

<!--=======================================================================================-->

- <context:component-scan base-package="com.myblog"/>
+ <context:component-scan base-package="com.jdkcn.myblog"/>

<context:annotation-config />

=======================================
--- /branches/myblog-springmvc/src/main/webapp/WEB-INF/web.xml Wed Jun 1
01:04:00 2011
+++ /branches/myblog-springmvc/src/main/webapp/WEB-INF/web.xml Wed Jun 1
01:33:04 2011
@@ -22,7 +22,7 @@

<context-param>
<param-name>log4jConfigLocation</param-name>
- <param-value>/WEB-INF/classes/log4j.properties</param-value>
+ <param-value>classpath:log4j.properties</param-value>
</context-param>

<context-param>

Reply all
Reply to author
Forward
0 new messages