abdera-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Woody Anderson" <wo...@xoopit.com>
Subject Re: extensionfactory to handle bad namespace
Date Wed, 31 Oct 2007 22:45:26 GMT
ok. i tried to do this, but it seems i'm not understanding something
with regard to the getElementWrapper method.. and now the mimetype
(per Element?)

    public class AliasNamespacesFactory implements ExtensionFactory {
        HashSet<String> _namespaces = new HashSet<String>();
        public AliasNamespacesFactory( Set<String> namespaces ) {
            _namespaces.addAll( namespaces );
        }

        public <T extends Element> T getElementWrapper(Element internal) {
          // ????????
        }

        public <T extends Base> String getMimeType(T base) {
            // ??????????
        }

        public String[] getNamespaces() {
            return _namespaces.toArray( new String[ _namespaces.size() ] );
        }

        public boolean handlesNamespace(String namespace) {
            return _namespaces.contains( namespace );
        }
    }


do i have to have a if/else to instantiate FOMEntry, FOMLink, etc.. ?
most of the constructors are protected, which makes that sort of a non-starter.

FOMFactory seems to have a lot of methods, but these take objects that
i don't have at my disposal. And these seem much more geared toward
creation for population, not for cloning or refacing an existing
"Element".

do i need to basically recreate the FOMFactory for myself? and
subsequently all of the objects?

on a complete hack approach:
if i ask the ClientResponse for a reader and put the entire response
in a string replacing the namespace with the "correct" namespace. i
could just ask for the default parser and continue right?
i mean this would be ugly in the extreme, but it sounds only slightly
worse than recreating the entire FOM factory just to change broken-ns
to atom-ns.

and the only other way i see to get in front of the system is to front
a stream reader via. createXMLStreamReader, but that seems tied up in
axiom.. which is an extra helping of confusing.

thoughts?
-w

On 10/31/07, James M Snell <jasnell@gmail.com> wrote:
> Ok, this is actually somewhat difficult right now but definitely
> possible.  What you'd need to do is create a custom ExtensionFactory
> implementation (that does not extend AbstractExtensionFactory) and use
> that to create the appropriate objects.  The getElementWrapper method is
> not required to return an instance of an actual ElementWrapper subclass.
>
> It would take a bit of work to do, because the internal element passed
> in to getElementWrapper would need to be used to create a new instance
> of the appropriate FOM impl.
>
> It's entirely possible that this could be made easier.
>
> - James
>
> Woody Anderson wrote:
> > hello,
> >
> > i'm getting an errant namespace in responses from various servers.
> >
> > e.g.
> > <?xml version="1.0" encoding="utf-8"?>
> > <entry xmlns="http://purl.org/atom/ns#">
> >   <title xmlns="http://purl.org/atom/ns#">Example Title</title>
> >   <summary xmlns="http://purl.org/atom/ns#">Example Text</summary>
> >   <content xmlns="http://purl.org/atom/ns#" mode="xml">
> >     <div xmlns="http://www.w3.org/1999/xhtml">Example Text</div>
> >   </content>
> >   <id xmlns="http://purl.org/atom/ns#">urn:lj:livejournal.com:atom1:username:number</id>
> >   <link xmlns="http://purl.org/atom/ns#" type="application/x.atom+xml"
> > rel="service.edit"
> > href="http://www.livejournal.com/interface/atom/edit/3" title="Example
> > Title"/>
> >   <link xmlns="http://purl.org/atom/ns#" type="text/html"
> > rel="alternate" href="http://username.livejournal.com/number.html"
> > title="Example Title"/>
> > </entry>
> >
> > i want to handle this as though it were a correctly namespaced entry.
> > all types of elements from this server comeback with this namespace,
> > so i need this for each of the model elements.
> >
> > I'm a bit confused about how i do this for all elements. I've been
> > looking at AbstractExtensionFactory.
> > and ExtensionFactory docs, but it is unclear what getElementWrapper()
> > is supposed to do to make it all "work".
> >
> > i would hope that it's fairly simple to consume this bogus namespace.
> >
> > i found an old example doing something *similar* that extended
> > FOMExtensionFactory (which no longer exists..) to handle an Atom03
> > feed. This example doesn't work anymore and was still pretty confusing
> > as it seemed to work for Feed only.
> >
> > is there a simple way to handle this errant ns?
> > thanks
> > -w
> >
>

Mime
View raw message