You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by mw...@apache.org on 2009/02/20 15:17:00 UTC
svn commit: r746247 - in /james/mime4j/trunk/src:
main/java/org/apache/james/mime4j/message/Entity.java
test/java/org/apache/james/mime4j/message/EntityTest.java
Author: mwiederkehr
Date: Fri Feb 20 14:17:00 2009
New Revision: 746247
URL: http://svn.apache.org/viewvc?rev=746247&view=rev
Log:
MIME4J-119: added Entity.removeBody()
Modified:
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Entity.java
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/EntityTest.java
Modified: james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Entity.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Entity.java?rev=746247&r1=746246&r2=746247&view=diff
==============================================================================
--- james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Entity.java (original)
+++ james/mime4j/trunk/src/main/java/org/apache/james/mime4j/message/Entity.java Fri Feb 20 14:17:00 2009
@@ -126,13 +126,35 @@
* Sets the body of this entity.
*
* @param body the body.
+ * @throws IllegalStateException if the body has already been set.
*/
public void setBody(Body body) {
+ if (this.body != null)
+ throw new IllegalStateException("body already set");
+
this.body = body;
body.setParent(this);
}
/**
+ * Removes and returns the body of this entity. The removed body may be
+ * attached to another entity. If it is no longer needed it should be
+ * {@link Disposable#dispose() disposed} of.
+ *
+ * @return the removed body or <code>null</code> if no body was set.
+ */
+ public Body removeBody() {
+ if (body == null)
+ return null;
+
+ Body body = this.body;
+ this.body = null;
+ body.setParent(null);
+
+ return body;
+ }
+
+ /**
* Sets the specified message as body of this entity and the content type to
* "message/rfc822". A <code>Header</code> is created if this
* entity does not already have one.
Modified: james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/EntityTest.java
URL: http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/EntityTest.java?rev=746247&r1=746246&r2=746247&view=diff
==============================================================================
--- james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/EntityTest.java (original)
+++ james/mime4j/trunk/src/test/java/org/apache/james/mime4j/message/EntityTest.java Fri Feb 20 14:17:00 2009
@@ -26,6 +26,44 @@
public class EntityTest extends TestCase {
+ public void testSetBody() throws Exception {
+ Entity entity = new BodyPart();
+ assertNull(entity.getBody());
+
+ Body body = new BodyFactory().textBody("test");
+ assertNull(body.getParent());
+
+ entity.setBody(body);
+ assertSame(body, entity.getBody());
+ assertSame(entity, body.getParent());
+ }
+
+ public void testSetBodyTwice() throws Exception {
+ Entity entity = new BodyPart();
+
+ Body b1 = new BodyFactory().textBody("foo");
+ Body b2 = new BodyFactory().textBody("bar");
+
+ entity.setBody(b1);
+ try {
+ entity.setBody(b2);
+ fail();
+ } catch (IllegalStateException expected) {
+ }
+ }
+
+ public void testRemoveBody() throws Exception {
+ Entity entity = new BodyPart();
+ Body body = new BodyFactory().textBody("test");
+ entity.setBody(body);
+
+ Body removed = entity.removeBody();
+ assertSame(body, removed);
+
+ assertNull(entity.getBody());
+ assertNull(removed.getParent());
+ }
+
public void testGetDispositionType() throws Exception {
Entity entity = new BodyPart();