You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2013/07/02 17:44:55 UTC
svn commit: r1498988 - in /cxf/trunk/rt/frontend/jaxws/src:
main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java
test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java
Author: ay
Date: Tue Jul 2 15:44:55 2013
New Revision: 1498988
URL: http://svn.apache.org/r1498988
Log:
clean up and add another test for CXF-5095
Added:
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java?rev=1498988&r1=1498987&r2=1498988&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedAttachments.java Tue Jul 2 15:44:55 2013
@@ -19,7 +19,7 @@
package org.apache.cxf.jaxws.context;
-import java.util.Arrays;
+import java.lang.reflect.Array;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -65,7 +65,13 @@ class WrappedAttachments implements Set<
}
public Object[] toArray() {
- Object[] obj = new Object[attachments.size()];
+ return toArray(new Object[attachments.size()]);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ T[] copy = a.length == attachments.size()
+ ? a : (T[])Array.newInstance(a.getClass(), attachments.size());
int i = 0;
for (Map.Entry<String, DataHandler> entry : attachments.entrySet()) {
Attachment o = cache.get(entry.getKey());
@@ -73,15 +79,9 @@ class WrappedAttachments implements Set<
o = new AttachmentImpl(entry.getKey(), entry.getValue());
cache.put(entry.getKey(), o);
}
- obj[i++] = o;
+ copy[i++] = (T)o;
}
- return obj;
- }
-
- @SuppressWarnings("unchecked")
- public <T> T[] toArray(T[] a) {
- Object[] obj = toArray();
- return (T[])Arrays.copyOf(obj, obj.length, a.getClass());
+ return copy;
}
public boolean add(Attachment e) {
Added: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java?rev=1498988&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java (added)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/context/WrappedAttachmentsTest.java Tue Jul 2 15:44:55 2013
@@ -0,0 +1,74 @@
+/**
+ * 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.cxf.jaxws.context;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.cxf.attachment.AttachmentImpl;
+import org.apache.cxf.message.Attachment;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class WrappedAttachmentsTest extends Assert {
+ @Test
+ public void testCreateAndModify() {
+ Map<String, DataHandler> content = new HashMap<String, DataHandler>();
+ content.put("att-1", new DataHandler(new ByteArrayDataSource("Hello world!".getBytes(), "text/plain")));
+ content.put("att-2", new DataHandler(new ByteArrayDataSource("Hola mundo!".getBytes(), "text/plain")));
+ WrappedAttachments attachments = new WrappedAttachments(content);
+ Attachment att3 = new AttachmentImpl("att-3",
+ new DataHandler(new ByteArrayDataSource("Bonjour tout le monde!".getBytes(), "text/plain")));
+
+ assertEquals(2, attachments.size());
+ assertFalse(attachments.isEmpty());
+
+ attachments.add(att3);
+ assertEquals(3, attachments.size());
+
+ attachments.add(att3);
+ assertEquals(3, attachments.size());
+
+ attachments.remove(att3);
+
+ assertEquals(2, attachments.size());
+
+ Attachment attx = attachments.iterator().next();
+
+ attachments.remove(attx);
+
+ assertEquals(1, attachments.size());
+
+ Attachment[] atts = attachments.toArray(new Attachment[attachments.size()]);
+ assertEquals(1, atts.length);
+ assertEquals("att-1".equals(attx.getId()) ? "att-2" : "att-1", atts[0].getId());
+
+ attachments.clear();
+ assertTrue(attachments.isEmpty());
+ assertTrue(content.isEmpty());
+ }
+}