You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2009/10/20 14:10:12 UTC

svn commit: r827044 - in /mina/branches/3.0: ./ core/ core/src/ core/src/main/ core/src/main/java/ core/src/main/java/org/ core/src/main/java/org/apache/ core/src/main/java/org/apache/mina/ core/src/test/ core/src/test/java/

Author: jvermillard
Date: Tue Oct 20 12:10:11 2009
New Revision: 827044

URL: http://svn.apache.org/viewvc?rev=827044&view=rev
Log:
session related interfaces unbloated

Added:
    mina/branches/3.0/core/
    mina/branches/3.0/core/pom.xml
    mina/branches/3.0/core/src/
    mina/branches/3.0/core/src/main/
    mina/branches/3.0/core/src/main/java/
    mina/branches/3.0/core/src/main/java/org/
    mina/branches/3.0/core/src/main/java/org/apache/
    mina/branches/3.0/core/src/main/java/org/apache/mina/
    mina/branches/3.0/core/src/main/java/org/apache/mina/CloseFuture.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/IdleStatus.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/IoSessionFuture.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/WriteFuture.java
    mina/branches/3.0/core/src/test/
    mina/branches/3.0/core/src/test/java/
    mina/branches/3.0/pom.xml

Added: mina/branches/3.0/core/pom.xml
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/pom.xml?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/pom.xml (added)
+++ mina/branches/3.0/core/pom.xml Tue Oct 20 12:10:11 2009
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+  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.
+-->
+
+<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>
+  <parent>
+    <groupId>org.apache.mina</groupId>
+    <artifactId>mina-parent</artifactId>
+    <version>3.0.0-M1-SNAPSHOT</version>
+  </parent>
+  <artifactId>mina-core</artifactId>
+  <name>Apache MINA Core</name>
+  <packaging>bundle</packaging>
+  <properties>
+    <symbolicName>${groupId}.core</symbolicName>
+    <exportedPackage>${groupId}</exportedPackage>
+  </properties>
+</project>
+

Added: mina/branches/3.0/core/src/main/java/org/apache/mina/CloseFuture.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/CloseFuture.java?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/CloseFuture.java (added)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/CloseFuture.java Tue Oct 20 12:10:11 2009
@@ -0,0 +1,33 @@
+/*
+ *  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.mina;
+
+import java.util.concurrent.Future;
+
+/**
+ * a {@link Future} for asynchronous {@link IoSession} close operations.
+ * 
+ * @see IoSession.close
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
+public interface CloseFuture extends IoSessionFuture {
+
+}

Added: mina/branches/3.0/core/src/main/java/org/apache/mina/IdleStatus.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/IdleStatus.java?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/IdleStatus.java (added)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/IdleStatus.java Tue Oct 20 12:10:11 2009
@@ -0,0 +1,75 @@
+/*
+ *  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.mina;
+
+
+/**
+ * Represents the type of idleness of {@link IoSession} or
+ * {@link IoSession}.  There are three types of idleness:
+ * <ul>
+ *   <li>{@link #READER_IDLE} - No data is coming from the remote peer.</li>
+ *   <li>{@link #WRITER_IDLE} - Session is not writing any data.</li>
+ *   <li>{@link #BOTH_IDLE} - Both {@link #READER_IDLE} and {@link #WRITER_IDLE}.</li>
+ * </ul>
+ * <p>
+ * Idle time settings are all disabled by default.  You can enable them
+ * using {@link IoSessionConfig#setIdleTime(IdleStatus,int)}.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class IdleStatus {
+    /**
+     * Represents the session status that no data is coming from the remote
+     * peer.
+     */
+    public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
+
+    /**
+     * Represents the session status that the session is not writing any data.
+     */
+    public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
+
+    /**
+     * Represents both {@link #READER_IDLE} and {@link #WRITER_IDLE}.
+     */
+    public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");
+
+    private final String strValue;
+
+    /**
+     * Creates a new instance.
+     */
+    private IdleStatus(String strValue) {
+        this.strValue = strValue;
+    }
+
+    /**
+     * Returns the string representation of this status.
+     * <ul>
+     *   <li>{@link #READER_IDLE} - <tt>"reader idle"</tt></li>
+     *   <li>{@link #WRITER_IDLE} - <tt>"writer idle"</tt></li>
+     *   <li>{@link #BOTH_IDLE} - <tt>"both idle"</tt></li>
+     * </ul>
+     */
+    @Override
+    public String toString() {
+        return strValue;
+    }
+}
\ No newline at end of file

Added: mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java (added)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java Tue Oct 20 12:10:11 2009
@@ -0,0 +1,285 @@
+/*
+ *  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.mina;
+
+import java.net.SocketAddress;
+import java.util.Set;
+
+/**
+ * A handle which represents connection between two end-points regardless of
+ * transport types.
+ * <p/>
+ * {@link IoSession} provides user-defined attributes.  User-defined attributes
+ * are application-specific data which are associated with a session.
+ * It often contains objects that represents the state of a higher-level protocol
+ * and becomes a way to exchange data between filters and handlers.
+ * <p/>
+ * <h3>Adjusting Transport Type Specific Properties</h3>
+ * <p/>
+ * You can simply downcast the session to an appropriate subclass.
+ * </p>
+ * <p/>
+ * <h3>Thread Safety</h3>
+ * <p/>
+ * {@link IoSession} is thread-safe.  But please note that performing
+ * more than one {@link #write(Object)} calls at the same time will
+ * cause the {@link IoFilter#filterWrite(IoFilter.NextFilter,IoSession,WriteRequest)}
+ * to be executed simultaneously, and therefore you have to make sure the
+ * {@link IoFilter} implementations you're using are thread-safe, too.
+ * </p>
+ * <p/>
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public interface IoSession {
+
+    /* ADDRESSES */
+
+    /**
+     * Returns the socket address of remote peer.
+     */
+    SocketAddress getRemoteAddress();
+
+    /**
+     * Returns the socket address of local machine which is associated with this
+     * session.
+     */
+    SocketAddress getLocalAddress();
+    
+    
+    /* READ / WRITE / CLOSE */
+    
+    /**
+     * Returns <code>true</code> if this session is connected with remote peer.
+     */
+    boolean isConnected();
+
+    /**
+     * Returns <code>true</tt> if and only if this session is being closed
+     * (but not disconnected yet) or is closed.
+     */
+    boolean isClosing();
+
+    /**
+     * Closes this session immediately or after all queued write requests
+     * are flushed.  This operation is asynchronous.  Wait for the returned
+     * {@link CloseFuture} if you want to wait for the session actually closed.
+     *
+     * @param immediately {@code true} to close this session immediately.
+     *                    {@code false} to close this session after all queued
+     *                    write requests are flushed.
+     */
+    CloseFuture close(boolean immediately);
+    
+    /* READ/WRITE PAUSE MANAGEMENT */
+
+    /**
+     * Suspends read operations for this session.
+     */
+    void suspendRead();
+
+    /**
+     * Suspends write operations for this session.
+     */
+    void suspendWrite();
+
+    /**
+     * Resumes read operations for this session.
+     */
+    void resumeRead();
+
+    /**
+     * Resumes write operations for this session.
+     */
+    void resumeWrite();
+    
+    /**
+     * Is read operation is suspended for this session. 
+     * @return <code>true</code> if suspended
+     */
+    boolean isReadSuspended();
+    
+    /**
+     * Is write operation is suspended for this session.
+     * @return <code>true</code> if suspended
+     */
+    boolean isWriteSuspended();
+    
+    /* BASIC STATS */
+    
+    /**
+     * Returns the total number of bytes which were read from this session.
+     */
+    long getReadBytes();
+
+    /**
+     * Returns the total number of bytes which were written to this session.
+     */
+    long getWrittenBytes();
+
+    /* IDLE */
+    
+    /**
+     * @return the session's creation time in milliseconds
+     */
+    long getCreationTime();
+
+    /**
+     * Returns the time in millis when I/O occurred lastly.
+     */
+    long getLastIoTime();
+
+    /**
+     * Returns the time in millis when read operation occurred lastly.
+     */
+    long getLastReadTime();
+
+    /**
+     * Returns the time in millis when write operation occurred lastly.
+     */
+    long getLastWriteTime();
+
+    
+    /* ATTACHEMENT MANAGEMENT */
+    
+    /**
+     * Returns the value of the user-defined attribute of this session.
+     *
+     * @param key the key of the attribute
+     * @return <tt>null</tt> if there is no attribute with the specified key
+     */
+    Object getAttribute(Object key);
+
+    /**
+     * Returns the value of user defined attribute associated with the
+     * specified key.  If there's no such attribute, the specified default
+     * value is associated with the specified key, and the default value is
+     * returned.  This method is same with the following code except that the
+     * operation is performed atomically.
+     * <pre>
+     * if (containsAttribute(key)) {
+     *     return getAttribute(key);
+     * } else {
+     *     setAttribute(key, defaultValue);
+     *     return defaultValue;
+     * }
+     * </pre>
+     */
+    Object getAttribute(Object key, Object defaultValue);
+
+    /**
+     * Sets a user-defined attribute.
+     *
+     * @param key   the key of the attribute
+     * @param value the value of the attribute
+     * @return The old value of the attribute.  <tt>null</tt> if it is new.
+     */
+    Object setAttribute(Object key, Object value);
+
+    /**
+     * Sets a user defined attribute without a value.  This is useful when
+     * you just want to put a 'mark' attribute.  Its value is set to
+     * {@link Boolean#TRUE}.
+     *
+     * @param key the key of the attribute
+     * @return The old value of the attribute.  <tt>null</tt> if it is new.
+     */
+    Object setAttribute(Object key);
+    
+    /**
+     * Sets a user defined attribute if the attribute with the specified key
+     * is not set yet.  This method is same with the following code except
+     * that the operation is performed atomically.
+     * <pre>
+     * if (containsAttribute(key)) {
+     *     return getAttribute(key);
+     * } else {
+     *     return setAttribute(key, value);
+     * }
+     * </pre>
+     */
+    Object setAttributeIfAbsent(Object key, Object value);
+
+    /**
+     * Sets a user defined attribute without a value if the attribute with
+     * the specified key is not set yet.  This is useful when you just want to
+     * put a 'mark' attribute.  Its value is set to {@link Boolean#TRUE}.
+     * This method is same with the following code except that the operation
+     * is performed atomically.
+     * <pre>
+     * if (containsAttribute(key)) {
+     *     return getAttribute(key);  // might not always be Boolean.TRUE.
+     * } else {
+     *     return setAttribute(key);
+     * }
+     * </pre>
+     */
+    Object setAttributeIfAbsent(Object key);
+
+    /**
+     * Removes a user-defined attribute with the specified key.
+     *
+     * @return The old value of the attribute.  <tt>null</tt> if not found.
+     */
+    Object removeAttribute(Object key);
+
+    /**
+     * Removes a user defined attribute with the specified key if the current
+     * attribute value is equal to the specified value.  This method is same
+     * with the following code except that the operation is performed
+     * atomically.
+     * <pre>
+     * if (containsAttribute(key) && getAttribute(key).equals(value)) {
+     *     removeAttribute(key);
+     *     return true;
+     * } else {
+     *     return false;
+     * }
+     * </pre>
+     */
+    boolean removeAttribute(Object key, Object value);
+
+    /**
+     * Replaces a user defined attribute with the specified key if the
+     * value of the attribute is equals to the specified old value.
+     * This method is same with the following code except that the operation
+     * is performed atomically.
+     * <pre>
+     * if (containsAttribute(key) && getAttribute(key).equals(oldValue)) {
+     *     setAttribute(key, newValue);
+     *     return true;
+     * } else {
+     *     return false;
+     * }
+     * </pre>
+     */
+    boolean replaceAttribute(Object key, Object oldValue, Object newValue);
+
+    /**
+     * Returns <tt>true</tt> if this session contains the attribute with
+     * the specified <tt>key</tt>.
+     */
+    boolean containsAttribute(Object key);
+
+    /**
+     * Returns the set of keys of all user-defined attributes.
+     */
+    Set<Object> getAttributeKeys();
+}
\ No newline at end of file

Added: mina/branches/3.0/core/src/main/java/org/apache/mina/IoSessionFuture.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/IoSessionFuture.java?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/IoSessionFuture.java (added)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/IoSessionFuture.java Tue Oct 20 12:10:11 2009
@@ -0,0 +1,32 @@
+/*
+ *  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.mina;
+
+import java.util.concurrent.Future;
+
+/**
+ * a {@link Future} for asynchronous {@link IoSession} operations.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
+public interface IoSessionFuture extends Future<Boolean> {
+
+}

Added: mina/branches/3.0/core/src/main/java/org/apache/mina/WriteFuture.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/WriteFuture.java?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/WriteFuture.java (added)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/WriteFuture.java Tue Oct 20 12:10:11 2009
@@ -0,0 +1,32 @@
+/*
+ *  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.mina;
+
+import java.util.concurrent.Future;
+
+/**
+ * a {@link Future} for asynchronous {@link IoSession} write operations.
+ * 
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
+public interface WriteFuture extends IoSessionFuture {
+
+}

Added: mina/branches/3.0/pom.xml
URL: http://svn.apache.org/viewvc/mina/branches/3.0/pom.xml?rev=827044&view=auto
==============================================================================
--- mina/branches/3.0/pom.xml (added)
+++ mina/branches/3.0/pom.xml Tue Oct 20 12:10:11 2009
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+  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.
+-->
+
+<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>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>4</version>
+  </parent>
+  <organization>
+    <name>Apache MINA Project</name>
+    <url>http://mina.apache.org/</url>
+  </organization>
+  <groupId>org.apache.mina</groupId>
+  <version>3.0.0-M1-SNAPSHOT</version>
+  <artifactId>build</artifactId>
+  <name>Apache MINA</name>
+  <packaging>pom</packaging>
+
+  <url>http://mina.apache.org/</url>
+  <inceptionYear>2009</inceptionYear>
+
+  <issueManagement>
+    <system>jira</system>
+    <url>http://issues.apache.org/jira/browse/DIRMINA</url>
+  </issueManagement>
+
+  <scm>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/mina/tags/build-3.0.0-M1-SNAPSHOT</connection>
+    <url>http://svn.apache.org/viewvc/directory/mina/tags/build-3.0.0-M1-SNAPSHOT</url>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/mina/tags/build-3.0.0-M1-SNAPSHOT</developerConnection>
+  </scm>
+
+  <distributionManagement>
+    <site>
+      <id>apache.websites</id>
+      <url>scp://people.apache.org/www/mina.apache.org/report/3.0/</url>
+    </site>
+  </distributionManagement>
+
+  <ciManagement>
+    <notifiers>
+      <notifier>
+        <type>mail</type>
+        <address>dev@mina.apache.org</address>
+      </notifier>
+    </notifiers>
+  </ciManagement>
+
+  <description>Apache MINA is a network application framework which helps users develop high performance and highly scalable network applications easily.  It provides an abstract event-driven asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.</description>
+
+  <licenses>
+    <license>
+      <name>Apache 2.0 License</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+
+
+  <modules>
+    <module>core</module>
+  </modules>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.0.2</version>
+        <configuration>
+          <encoding>UTF-8</encoding>
+          <source>1.6</source>
+          <target>1.6</target>
+          <debug>true</debug>
+          <optimize>true</optimize>
+          <showDeprecations>true</showDeprecations>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+        <version>2.1.1</version>
+        <executions>
+          <execution>
+            <id>attach-source</id>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-release-plugin</artifactId>
+        <version>2.0-beta-9</version>
+        <configuration>
+          <tagBase>
+            https://svn.apache.org/repos/asf/mina/tags
+          </tagBase>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <version>2.0.1</version>
+        <inherited>true</inherited>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>${symbolicName}</Bundle-SymbolicName>
+            <Export-Package>${exportedPackage}.*;version=${pom.version}</Export-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.6</version>
+        <inherited>false</inherited>
+        <configuration>
+          <aggregate>true</aggregate>
+          <breakiterator>true</breakiterator>
+          <charset>UTF-8</charset>
+          <docencoding>UTF-8</docencoding>
+          <windowtitle>Apache MINA ${project.version} API Documentation</windowtitle>
+          <doctitle>Apache MINA ${project.version} API Documentation</doctitle>
+          <encoding>UTF-8</encoding>
+          <links>
+            <link>http://java.sun.com/j2se/1.6.0/docs/api/</link>
+            <link>http://www.slf4j.org/api/</link>
+          </links>
+          <locale>en_US</locale>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jxr-plugin</artifactId>
+        <version>2.1</version>
+        <inherited>false</inherited>
+        <configuration>
+          <aggregate>true</aggregate>
+          <inputEncoding>UTF-8</inputEncoding>
+          <outputEncoding>UTF-8</outputEncoding>
+          <windowTitle>Apache MINA ${project.version} Cross Reference</windowTitle>
+          <docTitle>Apache MINA ${project.version} Cross Reference</docTitle>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>rat-maven-plugin</artifactId>
+        <version>1.0-alpha-3</version>
+        <configuration>
+          <excludes>
+            <exclude>**/target/**/*</exclude>
+            <exclude>**/.*</exclude>
+            <exclude>**/NOTICE.txt</exclude>
+            <exclude>**/LICENSE*.txt</exclude>
+          </excludes>
+          <excludeSubProjects>false</excludeSubProjects>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>