Rich, I was going to do an attempt to fix the issue we have with Hudson when several Axis2 related jobs run in parallel. For this I need a stable build. Therefore, I'm going to temporarily revert the change. Remember that you can easily reapply it using "svn -c 952971 . ." later.
Andreas On Wed, Jun 9, 2010 at 18:07, R J Scheuerle Jr <[email protected]> wrote: > Thanks Andreas, > > Phil is going to reopen the JIRA and change the WrappedDataHandler to avoid > the null DataSource issue. > > Rich Scheuerle > Senior Programmer, AIM SWG > IBM Web Services (JAX-RPC, JAX-WS, SAAJ) > Development, Customer Solutions, and Open Source > Apache Axis2 ([email protected]) > 512-286-8420 (IBM TL 363-8420) > > Andreas Veithen <[email protected]> wrote on 06/09/2010 10:12:16 AM: > >> Andreas Veithen <[email protected]> >> 06/09/2010 10:12 AM >> >> Please respond to >> [email protected] >> >> To >> >> [email protected] >> >> cc >> >> Subject >> >> Re: svn commit: r952971 - in /axis/axis2/java/core/trunk/modules: >> jaxws/src/org/apache/axis2/jaxws/message/impl/ jaxws/test/org/ >> apache/axis2/jaxws/message/impl/ kernel/src/org/apache/axis2/util/ > >> >> Rich, >> >> I think this change causes the Hudson build to fail, because passing >> null as DataSource argument to DataHandler is not allowed. Probably >> this depends on the particular JAF implementation that is used. Can >> you make sure that the DataHandler wrapper works with both the Sun and >> the Geronimo implementation? >> >> Andreas >> >> On Wed, Jun 9, 2010 at 14:02, <[email protected]> wrote: >> > Author: scheu >> > Date: Wed Jun 9 12:02:06 2010 >> > New Revision: 952971 >> > >> > URL: http://svn.apache.org/viewvc?rev=952971&view=rev >> > Log: >> > AXIS2-4733 >> > Contributor: Phil Adams >> > Contributed WrappedDataHandler to allow Axis2 to set the >> appropriate content-type on a DataHandler. >> > Also added a validation test. >> > >> > Added: >> > axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/ >> jaxws/message/impl/WrappedDataHandlerTest.java >> > axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/ >> util/WrappedDataHandler.java >> > Modified: >> > axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/ >> jaxws/message/impl/MessageFactoryImpl.java >> > >> > Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/ >> axis2/jaxws/message/impl/MessageFactoryImpl.java >> > URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/ >> modules/jaxws/src/org/apache/axis2/jaxws/message/impl/ >> MessageFactoryImpl.java?rev=952971&r1=952970&r2=952971&view=diff >> > >> >> ============================================================================== >> > --- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/ >> jaxws/message/impl/MessageFactoryImpl.java (original) >> > +++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/ >> jaxws/message/impl/MessageFactoryImpl.java Wed Jun 9 12:02:06 2010 >> > @@ -37,6 +37,7 @@ import org.apache.axis2.jaxws.message.da >> > import org.apache.axis2.jaxws.message.databinding.DataSourceBlock; >> > import org.apache.axis2.jaxws.message.factory.MessageFactory; >> > import org.apache.axis2.transport.http.HTTPConstants; >> > +import org.apache.axis2.util.WrappedDataHandler; >> > >> > import javax.xml.soap.AttachmentPart; >> > import javax.xml.soap.MimeHeader; >> > @@ -118,7 +119,7 @@ public class MessageFactoryImpl implemen >> > m.setDoingSWA(true); >> > while (it.hasNext()) { >> > AttachmentPart ap = (AttachmentPart)it.next(); >> > - m.addDataHandler(ap.getDataHandler(), >> ap.getContentId()); >> > + m.addDataHandler(new WrappedDataHandler >> (ap.getDataHandler(), ap.getContentType()), ap.getContentId()); >> > } >> > } >> > return m; >> > @@ -144,5 +145,4 @@ public class MessageFactoryImpl implemen >> > } >> > return createFrom(block.getXMLStreamReader(true), protocol); >> > } >> > - >> > } >> > >> > Added: axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/ >> axis2/jaxws/message/impl/WrappedDataHandlerTest.java >> > URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/ >> modules/jaxws/test/org/apache/axis2/jaxws/message/impl/ >> WrappedDataHandlerTest.java?rev=952971&view=auto >> > >> >> ============================================================================== >> > --- axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/ >> axis2/jaxws/message/impl/WrappedDataHandlerTest.java (added) >> > +++ axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/ >> axis2/jaxws/message/impl/WrappedDataHandlerTest.java Wed Jun 9 12:02:06 >> 2010 >> > @@ -0,0 +1,48 @@ >> > +package org.apache.axis2.jaxws.message.impl; >> > + >> > +/* >> > + * 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. >> > + */ >> > + >> > +import java.net.URL; >> > +import javax.activation.DataHandler; >> > + >> > +import org.apache.axis2.util.WrappedDataHandler; >> > + >> > +import junit.framework.TestCase; >> > + >> > +/** >> > + * Test the WrappedDataHandler class. >> > + */ >> > +public class WrappedDataHandlerTest extends TestCase { >> > + >> > + /** >> > + * Verify that the Wrapped DataHandler maintains the correct >> content-type value >> > + * for an XML document attachment. >> > + */ >> > + public void testWrappedDataHandler() throws Exception { >> > + URL xmlAttachment = new URL("file:./test-resources/xml/ >> soapmessage.xml"); >> > + >> > + DataHandler dh = new DataHandler(xmlAttachment); >> > + assertTrue(dh.getContentType().equals("application/xml")); >> > + >> > + WrappedDataHandler wrappedDH = new WrappedDataHandler(dh, >> "text/xml"); >> > + assertTrue(wrappedDH.getContentType() != null); >> > + assertTrue(wrappedDH.getContentType().equals("text/xml")); >> > + } >> > +} >> > >> > Added: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/ >> axis2/util/WrappedDataHandler.java >> > URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/ >> modules/kernel/src/org/apache/axis2/util/WrappedDataHandler.java? >> rev=952971&view=auto >> > >> >> ============================================================================== >> > --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/ >> axis2/util/WrappedDataHandler.java (added) >> > +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/ >> axis2/util/WrappedDataHandler.java Wed Jun 9 12:02:06 2010 >> > @@ -0,0 +1,185 @@ >> > +/* >> > + * 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.axis2.util; >> > + >> > +import java.awt.datatransfer.DataFlavor; >> > +import java.awt.datatransfer.UnsupportedFlavorException; >> > +import java.io.IOException; >> > +import java.io.InputStream; >> > +import java.io.OutputStream; >> > + >> > +import javax.activation.CommandInfo; >> > +import javax.activation.CommandMap; >> > +import javax.activation.DataHandler; >> > +import javax.activation.DataSource; >> > + >> > +import org.apache.commons.logging.Log; >> > +import org.apache.commons.logging.LogFactory; >> > + >> > +/** >> > + * This class acts as a wrapper for the javax.activation.DataHandler >> > class. >> > + * It is used to store away a (potentially) user-defined content- >> type value along with >> > + * the DataHandler instance. We'll delegate all method calls >> except for getContentType() >> > + * to the delegate DataHandler instance passed into the ctor. >> > + */ >> > +public class WrappedDataHandler extends DataHandler { >> > + >> > + private static final Log log = LogFactory.getLog >> (WrappedDataHandler.class); >> > + >> > + DataHandler delegate; >> > + String contentType; >> > + >> > + /** >> > + * Constructs a new instance of the WrappedDataHandler. >> > + * @param _delegate the real DataHandler instance being wrapped >> > + * @param _contentType the user-defined contentType >> associated with the DataHandler instance >> > + */ >> > + public WrappedDataHandler(DataHandler _delegate, String >> > _contentType) { >> > + super((DataSource)null); >> > + >> > + delegate = _delegate; >> > + contentType = _contentType; >> > + >> > + if (log.isDebugEnabled()) { >> > + log.debug("Created instance of WrappedDatahandler: " >> + this.toString() + ", contentType=" + contentType >> > + + "\nDelegate DataHandler: " + delegate.toString()); >> > + } >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getAllCommands() >> > + */ >> > + �...@override >> > + public CommandInfo[] getAllCommands() { >> > + return delegate.getAllCommands(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getBean >> (javax.activation.CommandInfo) >> > + */ >> > + �...@override >> > + public Object getBean(CommandInfo paramCommandInfo) { >> > + return delegate.getBean(paramCommandInfo); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getCommand(java.lang.String) >> > + */ >> > + �...@override >> > + public CommandInfo getCommand(String paramString) { >> > + return delegate.getCommand(paramString); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getContent() >> > + */ >> > + �...@override >> > + public Object getContent() throws IOException { >> > + return delegate.getContent(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getContentType() >> > + */ >> > + �...@override >> > + public String getContentType() { >> > + return (contentType != null ? contentType : >> delegate.getContentType()); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getDataSource() >> > + */ >> > + �...@override >> > + public DataSource getDataSource() { >> > + return delegate.getDataSource(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getInputStream() >> > + */ >> > + �...@override >> > + public InputStream getInputStream() throws IOException { >> > + return delegate.getInputStream(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getName() >> > + */ >> > + �...@override >> > + public String getName() { >> > + return delegate.getName(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getOutputStream() >> > + */ >> > + �...@override >> > + public OutputStream getOutputStream() throws IOException { >> > + return delegate.getOutputStream(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getPreferredCommands() >> > + */ >> > + �...@override >> > + public CommandInfo[] getPreferredCommands() { >> > + return delegate.getPreferredCommands(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getTransferData >> (java.awt.datatransfer.DataFlavor) >> > + */ >> > + �...@override >> > + public Object getTransferData(DataFlavor paramDataFlavor) >> throws UnsupportedFlavorException, IOException { >> > + return delegate.getTransferData(paramDataFlavor); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#getTransferDataFlavors() >> > + */ >> > + �...@override >> > + public synchronized DataFlavor[] getTransferDataFlavors() { >> > + return delegate.getTransferDataFlavors(); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#isDataFlavorSupported >> (java.awt.datatransfer.DataFlavor) >> > + */ >> > + �...@override >> > + public boolean isDataFlavorSupported(DataFlavor paramDataFlavor) { >> > + return delegate.isDataFlavorSupported(paramDataFlavor); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#setCommandMap >> (javax.activation.CommandMap) >> > + */ >> > + �...@override >> > + public synchronized void setCommandMap(CommandMap paramCommandMap) >> > { >> > + delegate.setCommandMap(paramCommandMap); >> > + } >> > + >> > + /* (non-Javadoc) >> > + * @see javax.activation.DataHandler#writeTo(java.io.OutputStream) >> > + */ >> > + �...@override >> > + public void writeTo(OutputStream paramOutputStream) throws >> IOException { >> > + delegate.writeTo(paramOutputStream); >> > + } >> > +} >> > >> > >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
