String.equals will work for both interned and non-interned Strings,
since it first checks if they are a reference to the same object. So
using String.equals seems safer and should be comparable performance I
would think. But maybe I'm missing something?
--Sean
Vishal Mahajan wrote:
> Do others also have views on this discussion?
>
> Thanks,
> Vishal
>
> Vishal Mahajan wrote:
>> Hi Raul,
>>
>> The parser that I am working with clearly doesn't intern element
>> namespace strings which is the reason I ran into this problem. And
>> actually I am not sure whether it's a good idea for a parser to
intern
>> element namespace strings given that there could be huge number of
>> elements being parsed and there's a potential risk of running out of
>> memory. Also you mention that xerces might be interning namespace
>> stings but looking at their code I was unable to find that. Can you
>> point me to the relevant piece of code?
>>
>> Thanks,
>>
>> Vishal
>>
>> Raul Benito wrote:
>>> Vishal the problem is that this codes is called gazillion of times,
>>> and even it
>>> seems a small thing, it takes a lot of accumulated time, I even
think
>>> in remove this checking altogether or control it by a property.
>>> Perhaps there is a feature set in your DOM parser that interns the
>>> namespaces. I have test with several DOM parsers (xerces, xmlbeans,
>>> jaxb) and all of them the namespaces strings are interns.
>>> If you are not able too toggle the behavior, We can begin to
think in
>>> other possibilities (create code on the fly, create an interface
with
>>> one implementation or the other a let the JVM inline it). But I
think
>>> will be the last resort.
>>>
>>> Regards,
>>> Raul
>>>
>>> On 10/2/06, Vishal Mahajan <[EMAIL PROTECTED]> wrote:
>>>> Any signature verification was failing for me, and I have a
different
>>>> DOM implementation in my environment, so probably you are right.
It was
>>>> such a basic error that it had to be something like this. In any
>>>> case, I
>>>> think we should keep string comparison safe.
>>>>
>>>> Vishal
>>>>
>>>> Raul Benito wrote:
>>>> > Hi Vishal,
>>>> >
>>>> > The namespaces strings are intern, at least in xerces.
>>>> >
>>>> > Can you post the code that is failing?
>>>> >
>>>> > On 10/2/06, Vishal Mahajan <[EMAIL PROTECTED]> wrote:
>>>> >> This problem was not allowing successful creation of
signature space
>>>> >> elements. Fix attached.
>>>> >>
>>>> >> Vishal
>>>> >>
>>>> >>
>>>> >>
>>>> >> Index: ElementProxy.java
>>>> >>
===================================================================
>>>> >> --- ElementProxy.java (revision 451991)
>>>> >> +++ ElementProxy.java (working copy)
>>>> >> @@ -281,7 +281,7 @@
>>>> >>
>>>> >> String localnameIS =
>>>> this._constructionElement.getLocalName();
>>>> >> String namespaceIS =
>>>> this._constructionElement.getNamespaceURI();
>>>> >> - if ((namespaceSHOULDBE!=namespaceIS) ||
>>>> >> + if (!namespaceSHOULDBE.equals(namespaceIS) ||
>>>> >> !localnameSHOULDBE.equals(localnameIS) ) {
>>>> >> Object exArgs[] = { namespaceIS +":"+ localnameIS,
>>>> >> namespaceSHOULDBE +":"+ localnameSHOULDBE};
>>>> >>
>>>> >>
>>>> >>
>>>> >
>>>> >
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>