You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@abdera.apache.org by "Stevenson, Christopher" <Ch...@gs.com> on 2008/06/24 20:28:23 UTC

Storing extension elements using JCR Provider

Hello All, 

 

I have a quick question on the best way to store custom extension
elements, using the JCR provider.

 

It seems that the data is exposed as a FOM object at
AbstractEntityCollectionAdaptor line 140 (see below)

 

If we have extension elements we wish to store in the feed entry, should
we extend the JCR provider and implement our own postEntry method, that
retrieves these elements from the FOM and passes it to another method
that adds these entries to the JCR node?

 

Also, has anyone had any thoughts on a generic way to do this, it seems
like a generic solution of adding any extensions to the node that are
present and that have the handler registered might be a good thing, is
there any downside anyone knows if we do this?

 

Thanks in advance,

 

Chris

 

<code>

 

public ResponseContext postEntry(RequestContext request) {

    try {

      Entry entry = getEntryFromRequest(request);

      if (entry != null) {

        if (!ProviderHelper.isValidEntry(entry))

          return new EmptyResponseContext(400);

  

        entry.setUpdated(new Date());

        

        

          T entryObj = postEntry(entry.getTitle(),

                                 entry.getId(),

                                 entry.getSummary(),

                                 entry.getUpdated(),

                                 entry.getAuthors(),

                                 entry.getContentElement(), request);

          entry.getIdElement().setValue(getId(entryObj));

        

          IRI feedIri = getFeedIRI(entryObj, request);    

          String link = getLink(entryObj, feedIri, request);

          

          entry.addLink(link, "edit");

    

          return buildCreateEntryResponse(link, entry);

      } else {

        return new EmptyResponseContext(400);

      }

    } catch (ResponseContextException e) {

      return createErrorResponse(e);

    }

  }

</code>

 

 

_______________________________________________ 
Chris Stevenson 
LDN Cross Derivative Technology 
RC06 | 8-7051-0148 


Re: Storing extension elements using JCR Provider

Posted by Dan Diephouse <da...@mulesource.com>.
Hi Christopher,

I'd like to extend JcrCollectionAdapter so that we can do this. My idea is
that we just loop through ever element in the atom entry and serialize any
ones which are not recognized (i.e. your custom extensions).

In the mean time you could actually write your own code which looks for your
own custom elements by overriding mapEntryToNode. I just realized that it
was private though - so I changed the trunk/ code to make it protected.

Inerested in helping with a patch to make generic code that does this?

Dan

On Tue, Jun 24, 2008 at 8:28 PM, Stevenson, Christopher <
Christopher.Stevenson@gs.com> wrote:

> Hello All,
>
>
>
> I have a quick question on the best way to store custom extension
> elements, using the JCR provider.
>
>
>
> It seems that the data is exposed as a FOM object at
> AbstractEntityCollectionAdaptor line 140 (see below)
>
>
>
> If we have extension elements we wish to store in the feed entry, should
> we extend the JCR provider and implement our own postEntry method, that
> retrieves these elements from the FOM and passes it to another method
> that adds these entries to the JCR node?
>
>
>
> Also, has anyone had any thoughts on a generic way to do this, it seems
> like a generic solution of adding any extensions to the node that are
> present and that have the handler registered might be a good thing, is
> there any downside anyone knows if we do this?
>
>
>
> Thanks in advance,
>
>
>
> Chris
>
>
>
> <code>
>
>
>
> public ResponseContext postEntry(RequestContext request) {
>
>    try {
>
>      Entry entry = getEntryFromRequest(request);
>
>      if (entry != null) {
>
>        if (!ProviderHelper.isValidEntry(entry))
>
>          return new EmptyResponseContext(400);
>
>
>
>        entry.setUpdated(new Date());
>
>
>
>
>
>          T entryObj = postEntry(entry.getTitle(),
>
>                                 entry.getId(),
>
>                                 entry.getSummary(),
>
>                                 entry.getUpdated(),
>
>                                 entry.getAuthors(),
>
>                                 entry.getContentElement(), request);
>
>          entry.getIdElement().setValue(getId(entryObj));
>
>
>
>          IRI feedIri = getFeedIRI(entryObj, request);
>
>          String link = getLink(entryObj, feedIri, request);
>
>
>
>          entry.addLink(link, "edit");
>
>
>
>          return buildCreateEntryResponse(link, entry);
>
>      } else {
>
>        return new EmptyResponseContext(400);
>
>      }
>
>    } catch (ResponseContextException e) {
>
>      return createErrorResponse(e);
>
>    }
>
>  }
>
> </code>
>
>
>
>
>
> _______________________________________________
> Chris Stevenson
> LDN Cross Derivative Technology
> RC06 | 8-7051-0148
>
>


-- 
Dan Diephouse
http://mulesource.com | http://netzooid.com/blog