Hi Jeff, I think I replied once. Let me re-reply :).
The file you have attached is not a patch, rather a diff. Its the whole file, which make it hard to find the changes you have done. can you please create a diff and send it over. -- Chinthaka Jeff Ling wrote: > Hi Eran, > > Did you look at the file? Do you think it's a problem? If so, when can > it be patched? > > Thanks, > Jeff > > > On 6/4/06, *Jeff Ling* < [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > Hi Eran, > > Here is the file again. > > Thanks, > Jeff > > > On 6/3/06, *Eran Chinthaka * <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > Hi Jeff, > > Thanks for reporting this. > > But the file you have attached doesn't seemed to be a patch. Can > you > please re-create it and send it over. > > -- Chinthaka > > Jeff Ling wrote: > > Hi guys, > > > > I got NullpointerException with the request content: > > > > <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope > xmlns:soapenv=" > > http://schemas.xmlsoap.org/soap/envelope/ > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fenvelope%2F> > > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fenvelope%2F > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fenvelope%2F>>"><soapenv:Header > > /><soapenv:Body><ns1:GetListItems xmlns:ns1=" > > http://schemas.microsoft.com/sharepoint/soap/ > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F> > > > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F>>"><listName > > > xmlns=" http://schemas.microsoft.com/sharepoint/soap/ > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F> > > < > > http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fschemas.microsoft.com%2Fsharepoint%2Fsoap%2F>>">{F8AC172B-2763-4898-B322-935BECA90900}</listName><Query > > /><QueryOptions><ViewAttributes Scope="Recursive" > > > /></QueryOptions></ns1:GetListItems></soapenv:Body></soapenv:Envelope> > > > > > > I traced down to StreamingOMSerializer::serializeAttributes > > > > namespaceName = reader.getAttributeNamespace(i); > > writerPrefix > > =writer.getNamespaceContext().getPrefix(namespaceName); > > In this case, "ViewAttributes"'s attribute namspace is null, and > > namspacecontext.getPrefix caused exception. > > > > Here is my fix: > > > > namespaceName = reader.getAttributeNamespace(i); > > if (namespaceName != null) > > writerPrefix > > =writer.getNamespaceContext().getPrefix(namespaceName); > > > > if (namespaceName != null && > !"".equals(namespaceName)){ > > //prefix has already being declared but this > particular > > attrib has a > > > > > > File is attached. I am not sure whether this group is > responsible for > > axiom, or I should submit to some other list? Please advice. > (seems to > > me ther only other list is "commons".) > > > > Thanks, > > Jeff > > > > > > > ------------------------------------------------------------------------ > > > > /* > > * Copyright 2004,2005 The Apache Software Foundation. > > * > > * Licensed 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 > > <http://www.google.com/url?sa=D&q=http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-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.axiom.om.impl.serialize; > > > > import org.apache.axiom.om.OMSerializer; > > > > import javax.xml.namespace.NamespaceContext; > > import javax.xml.stream.XMLStreamConstants ; > > import javax.xml.stream.XMLStreamException; > > import javax.xml.stream.XMLStreamReader; > > import javax.xml.stream.XMLStreamWriter; > > > > /** > > * Class StreamingOMSerializer > > */ > > public class StreamingOMSerializer implements > XMLStreamConstants, OMSerializer { > > > > private static int namespaceSuffix = 0; > > public static final String NAMESPACE_PREFIX = "ns"; > > > > /* > > * The behavior of the serializer is such that it returns > when it encounters the > > * starting element for the second time. The depth variable > tracks the depth of the > > * serilizer and tells it when to return. > > * Note that it is assumed that this serialization starts on > an Element. > > */ > > > > /** > > * Field depth > > */ > > private int depth = 0; > > > > /** > > * Method serialize. > > * > > * @param node > > * @param writer > > * @throws XMLStreamException > > */ > > public void serialize(XMLStreamReader node, XMLStreamWriter > writer) > > throws XMLStreamException { > > serializeNode(node, writer); > > } > > > > /** > > * Method serializeNode. > > * > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeNode(XMLStreamReader reader, > XMLStreamWriter writer) > > throws XMLStreamException { > > //TODO We get the StAXWriter at this point and uses it > hereafter assuming that this is the only entry point to this class. > > // If there can be other classes calling methodes of > this we might need to change methode signatures to OMOutputer > > while (reader.hasNext()) { > > int event = reader.next(); > > if (event == START_ELEMENT) { > > serializeElement(reader, writer); > > depth++; > > } else if (event == ATTRIBUTE) { > > serializeAttributes(reader, writer); > > } else if (event == CHARACTERS) { > > serializeText(reader, writer); > > } else if (event == COMMENT) { > > serializeComment(reader, writer); > > } else if (event == CDATA) { > > serializeCData(reader, writer); > > } else if (event == END_ELEMENT) { > > serializeEndElement(writer); > > depth--; > > }else if (event == START_DOCUMENT) { > > depth++; //if a start document is found then > increment the depth > > } else if (event == END_DOCUMENT) { > > if (depth!=0) depth--; //for the end document > - reduce the depth > > try { > > serializeEndElement(writer); > > } catch (Exception e) { > > //TODO: log exceptions > > } > > } > > if (depth == 0) { > > break; > > } > > } > > } > > > > /** > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeElement(XMLStreamReader reader, > > XMLStreamWriter writer) > > throws XMLStreamException { > > String prefix = reader.getPrefix(); > > String nameSpaceName = reader.getNamespaceURI(); > > if (nameSpaceName != null) { > > String writer_prefix = writer.getPrefix(nameSpaceName); > > if (writer_prefix != null) { > > writer.writeStartElement(nameSpaceName, > reader.getLocalName()); > > } else { > > if (prefix != null) { > > writer.writeStartElement(prefix, > reader.getLocalName(), > > nameSpaceName); > > writer.writeNamespace(prefix, nameSpaceName); > > writer.setPrefix(prefix, nameSpaceName); > > } else { > > writer.writeStartElement(nameSpaceName, > > reader.getLocalName()); > > writer.writeDefaultNamespace(nameSpaceName); > > writer.setDefaultNamespace(nameSpaceName); > > } > > } > > } else { > > writer.writeStartElement(reader.getLocalName()); > > } > > > > > > // add the namespaces > > int count = reader.getNamespaceCount(); > > String namespacePrefix; > > for (int i = 0; i < count; i++) { > > namespacePrefix = reader.getNamespacePrefix(i); > > if(namespacePrefix != null && > namespacePrefix.length()==0) > > continue; > > > > serializeNamespace(namespacePrefix, > > reader.getNamespaceURI(i), writer); > > } > > > > // add attributes > > serializeAttributes(reader, writer); > > > > } > > > > /** > > * Method serializeEndElement. > > * > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeEndElement(XMLStreamWriter writer) > > throws XMLStreamException { > > writer.writeEndElement(); > > } > > > > /** > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeText(XMLStreamReader reader, > > XMLStreamWriter writer) > > throws XMLStreamException { > > writer.writeCharacters(reader.getText()); > > } > > > > /** > > * Method serializeCData. > > * > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeCData(XMLStreamReader reader, > > XMLStreamWriter writer) > > throws XMLStreamException { > > writer.writeCData(reader.getText()); > > } > > > > /** > > * Method serializeComment. > > * > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeComment(XMLStreamReader reader, > > XMLStreamWriter writer) > > throws XMLStreamException { > > writer.writeComment(reader.getText()); > > } > > > > /** > > * @param reader > > * @param writer > > * @throws XMLStreamException > > */ > > protected void serializeAttributes(XMLStreamReader reader, > > XMLStreamWriter writer) > > throws XMLStreamException { > > int count = reader.getAttributeCount(); > > String prefix = null; > > String namespaceName = null; > > String writerPrefix=null; > > for (int i = 0; i < count; i++) { > > prefix = reader.getAttributePrefix(i); > > namespaceName = reader.getAttributeNamespace(i); > > if (namespaceName != null) > > writerPrefix > =writer.getNamespaceContext().getPrefix(namespaceName); > > > > if (namespaceName != null && > !"".equals(namespaceName)){ > > //prefix has already being declared but this > particular attrib has a > > //no prefix attached. So use the prefix > provided by the writer > > if (writerPrefix!=null && (prefix==null || > prefix.equals(""))){ > > writer.writeAttribute(writerPrefix, > namespaceName, > > reader.getAttributeLocalName(i), > > reader.getAttributeValue(i)); > > > > //writer prefix is available but different > from the current > > //prefix of the attrib. We should be > decalring the new prefix > > //as a namespace declaration > > }else if (prefix!=null && !"".equals(prefix)&& > !prefix.equals(writerPrefix)){ > > writer.writeNamespace (prefix,namespaceName); > > writer.writeAttribute(prefix, namespaceName, > > reader.getAttributeLocalName(i), > > reader.getAttributeValue (i)); > > > > //prefix is null (or empty), but the > namespace name is valid! it has not > > //being written previously also. So we need > to generate a prefix > > //here > > }else{ > > prefix = > generateUniquePrefix(writer.getNamespaceContext()); > > writer.writeNamespace(prefix,namespaceName); > > writer.writeAttribute(prefix, namespaceName, > > reader.getAttributeLocalName(i), > > reader.getAttributeValue(i)); > > } > > }else{ > > //empty namespace is equal to no namespace! > > > writer.writeAttribute(reader.getAttributeLocalName(i), > > reader.getAttributeValue(i)); > > } > > > > > > } > > } > > > > /** > > * Generates a unique namespace prefix that is not in the > > * scope of the NamespaceContext > > * @param nsCtxt > > * @return string > > */ > > private String generateUniquePrefix(NamespaceContext nsCtxt){ > > String prefix = NAMESPACE_PREFIX + namespaceSuffix++; > > //null should be returned if the prefix is not bound! > > while(nsCtxt.getNamespaceURI(prefix)!=null){ > > prefix = NAMESPACE_PREFIX + namespaceSuffix++; > > } > > > > return prefix; > > } > > /** > > * Method serializeNamespace. > > * @param prefix > > * @param URI > > * @param writer > > * @throws XMLStreamException > > */ > > private void serializeNamespace(String prefix, > > String URI, > > XMLStreamWriter writer) > > throws XMLStreamException { > > String prefix1 = writer.getPrefix(URI); > > if (prefix1 == null) { > > writer.writeNamespace(prefix, URI); > > writer.setPrefix(prefix, URI); > > } > > } > > } > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > > For additional commands, e-mail: [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > > > > > > >
signature.asc
Description: OpenPGP digital signature
