Following a discussion with Vincent, I've created the

feature-restimprovements feature branch on the xwiki xwiki-platform github
and passed it to fabio who will:

- integrate his own patches for wiki creation and xar upload
- move internal code to internal

I've create a new pull request for this branch
https://github.com/xwiki/xwiki-platform/pull/71

The older pull request (https://github.com/xwiki/xwiki-platform/pull/56)
has been closed.

Ludovic

2012/10/8 Ludovic Dubost <[email protected]>

> Hi,
>
> All votes told to move the code to internal packages.
>
> This is something I can do, however I'm not sure exactly which code
> should go into the internal package and which one should stay where it
> is.
>
> Right now here is the list of classes failing or not the CLIRR tests
>
> Not failing:
>
> org.xwiki.rest.ComponentsObjectFactory
> org.xwiki.rest.Constants
> org.xwiki.rest.RangeIterable
> org.xwiki.rest.Relations
> org.xwiki.rest.Utils
> org.xwiki.rest.XWikiAuthentication
> org.xwiki.rest.XWikiJaxRsApplication
> org.xwiki.rest.XWikiResource
> org.xwiki.rest.XWikiRestComponent
> org.xwiki.rest.XWikiRestletJaxRsApplication
> org.xwiki.rest.XWikiRestletServlet
> org.xwiki.rest.XWikiSecretVerifier
> org.xwiki.rest.XWikiSetupCleanupFilter
> org.xwiki.rest.exceptions.QueryExceptionMapper
> org.xwiki.rest.exceptions.XWikiExceptionMapper
> org.xwiki.rest.representations.TextPlainReader
> org.xwiki.rest.representations.comments.FormUrlEncodedCommentReader
> org.xwiki.rest.representations.comments.TextPlainCommentReader
> org.xwiki.rest.representations.objects.FormUrlEncodedObjectReader
> org.xwiki.rest.representations.objects.FormUrlEncodedPropertyReader
> org.xwiki.rest.representations.objects.TextPlainPropertyReader
> org.xwiki.rest.representations.pages.FormUrlEncodedPageReader
> org.xwiki.rest.representations.pages.TextPlainPageReader
> org.xwiki.rest.representations.tags.FormUrlEncodedTagsReader
> org.xwiki.rest.representations.tags.TextPlainTagsReader
> org.xwiki.rest.resources.BrowserAuthenticationResource
> org.xwiki.rest.resources.RootResource
> org.xwiki.rest.resources.SyntaxesResource
> org.xwiki.rest.resources.attachments.AttachmentAtPageVersionResource
> org.xwiki.rest.resources.attachments.AttachmentHistoryResource
> org.xwiki.rest.resources.attachments.AttachmentResource
> org.xwiki.rest.resources.attachments.AttachmentVersionResource
> org.xwiki.rest.resources.classes.ClassPropertiesResource
> org.xwiki.rest.resources.classes.ClassPropertyResource
> org.xwiki.rest.resources.classes.ClassResource
> org.xwiki.rest.resources.classes.ClassesResource
> org.xwiki.rest.resources.objects.BaseObjectsResource
> org.xwiki.rest.resources.pages.ModifiablePageResource
> org.xwiki.rest.resources.pages.PageTagsResource
> org.xwiki.rest.resources.pages.PageTranslationsResource
> org.xwiki.rest.resources.spaces.SpaceResource
> org.xwiki.rest.resources.spaces.SpacesResource
> org.xwiki.rest.resources.tags.TagsResource
> org.xwiki.rest.resources.wikis.WikiPagesResource
> org.xwiki.rest.resources.wikis.WikiSearchQueryResource
> org.xwiki.rest.resources.wikis.WikisResource
>
> Failing:
>
> org.xwiki.rest.DomainObjectFactory
> org.xwiki.rest.resources.BaseAttachmentsResource
> org.xwiki.rest.resources.BaseSearchResult
> org.xwiki.rest.resources.ModificationsResource
> org.xwiki.rest.resources.attachments.AttachmentsAtPageVersionResource
> org.xwiki.rest.resources.attachments.AttachmentsResource
> org.xwiki.rest.resources.comments.CommentResource
> org.xwiki.rest.resources.comments.CommentVersionResource
> org.xwiki.rest.resources.comments.CommentsResource
> org.xwiki.rest.resources.comments.CommentsVersionResource
> org.xwiki.rest.resources.objects.AllObjectsForClassNameResource
> org.xwiki.rest.resources.objects.ObjectAtPageVersionResource
> org.xwiki.rest.resources.objects.ObjectPropertiesAtPageVersionResource
> org.xwiki.rest.resources.objects.ObjectPropertiesResource
> org.xwiki.rest.resources.objects.ObjectPropertyAtPageVersionResource
> org.xwiki.rest.resources.objects.ObjectPropertyResource
> org.xwiki.rest.resources.objects.ObjectResource
> org.xwiki.rest.resources.objects.ObjectsAtPageVersionResource
> org.xwiki.rest.resources.objects.ObjectsForClassNameResource
> org.xwiki.rest.resources.objects.ObjectsResource
> org.xwiki.rest.resources.pages.PageChildrenResource
> org.xwiki.rest.resources.pages.PageHistoryResource
> org.xwiki.rest.resources.pages.PageResource
> org.xwiki.rest.resources.pages.PageTranslationHistoryResource
> org.xwiki.rest.resources.pages.PageTranslationResource
> org.xwiki.rest.resources.pages.PageTranslationVersionResource
> org.xwiki.rest.resources.pages.PageVersionResource
> org.xwiki.rest.resources.pages.PagesResource
> org.xwiki.rest.resources.spaces.SpaceAttachmentsResource
> org.xwiki.rest.resources.spaces.SpaceSearchResource
> org.xwiki.rest.resources.tags.PagesForTagsResource
> org.xwiki.rest.resources.wikis.WikiAttachmentsResource
> org.xwiki.rest.resources.wikis.WikiSearchResource
>
>
> So which one of these are not internal ?
>
> Ludovic
>
> 2012/8/25 Thomas Mortagne <[email protected]>:
> > On Tue, Aug 21, 2012 at 10:18 PM, Vincent Massol <[email protected]>
> wrote:
> >>
> >> On Aug 21, 2012, at 2:18 PM, Fabio Mancinelli wrote:
> >>
> >>> On Fri, Jul 27, 2012 at 10:12 AM, Ludovic Dubost <[email protected]>
> wrote:
> >>>> As part of rest improvements to display pretty names of users and
> >>>> other improvements, I'm getting CLIRR errors because of API changes of
> >>>> the model and of public class:
> >>>>
> >>>>
> >>>> 1/ Model CLIRR error because the version field has been moved to
> >>>> PageSummary from Page. Page extends PageSummary. I need the version
> >>>> field also in representations sending back only PageSummaries.
> >>>> Unfortunately CLIRR does not realize that the version field is still
> >>>> there when moved to the super class. I believe it's safe to ignore
> >>>> this error. Howerver I've put ignore all errors on the Page class as I
> >>>> don't have a way to ignore this specific error
> >>>>
> >>> Yep, I think it's safe. We're adding stuff in a representation (page
> >>> summary) and keeping it also in the other, so API-wise it's ok.
> >>
> >> Note that CLIRR doesn't have false positives so if it complains it
> means there's a breakage. The only decision to take is whether it's an
> "acceptable" breakage, i.e. we voluntarily break assuming that nobody was
> using it and accept that a few users might get broken.
> >>
> >>>> 2/ CLIRR errors because of parameter additions to objects that are
> >>>> used (I think) only internally by the REST server API. Here are the
> >>>> errors:
> >>>>
> >>>> [ERROR] org.xwiki.rest.DomainObjectFactory: In method 'public
> >>>> org.xwiki.rest.model.jaxb.Attachment
> >>>> createAttachment(org.xwiki.rest.model.jaxb.ObjectFactory,
> >>>> java.net.URI, com.xpn.xwiki.api.Attachment, java.lang.String,
> >>>> java.lang.String)' the number of arguments has changed
> >>>
> >>> The DomainObjectFactory is actually a utility class that is used to
> >>> build REST-model objects from XWiki-model objects.
> >>> It has been created just to prevent code duplication in resource
> >>> implementations.
> >>
> >> The question is whether this is supposed to be a SPI or not.
> >>
> >>> Now I think it's unlikely that somebody uses it outside the REST
> >>> module (a quick grep confirmed this for platform).
> >>>
> >>> The only use case for a developer of a module to use this class is if
> >>> she wants to return a REST-model object and build it using the utility
> >>> methods.
> >>> I think this is quite unlikely.
> >>>
> >>> AFAIU all parameters additions are about "pretty names"
> >>> (
> https://github.com/ldubost/xwiki-platform/compare/master...bd49bcc84e1dec3d20b57e970c293a459524d2e4#L3L81
> )
> >>>
> >>> If we want to be conservative we might do the following: we can add
> >>> the new methods and preserve the old ones making them call the new
> >>> ones with default parameters.
> >>>
> >>> * false in methods like this
> >>>
> https://github.com/ldubost/xwiki-platform/compare/master...bd49bcc84e1dec3d20b57e970c293a459524d2e4#L3L407
> >>> * null, false in methods like this
> >>>
> https://github.com/ldubost/xwiki-platform/compare/master...bd49bcc84e1dec3d20b57e970c293a459524d2e4#L3L494
> >>> . This implies that in the new implementation the if statement should
> >>> also check for null values (like in this case:
> >>>
> https://github.com/ldubost/xwiki-platform/compare/master...bd49bcc84e1dec3d20b57e970c293a459524d2e4#L3R629
> )
> >>>
> >>> We could also think about whether continuing to keep this class in the
> >>> public API. It could make sense but I think that nobody will ever use
> >>> it so we can start to @deprecate it and eventually move it in internal
> >>> packages.
> >>
> >> Based on what you say I'd say that these classes/methods were put
> public by mistake and should all be moved to the internal package without
> going through deprecation.
> >
> > +1 for internal, if it's not supposed to be used outside of the module
> > that's the definition of internal
> >
> >>
> >> Of course this means no other other XWiki modules should use them
> either since they're internal.
> >>
> >> Also this means that we don't provide any SPI either since SPI are
> user-public. Is that what we want?
> >>
> >> Thanks
> >> -Vincent
> >> _______________________________________________
> >> devs mailing list
> >> [email protected]
> >> http://lists.xwiki.org/mailman/listinfo/devs
> >
> >
> >
> > --
> > Thomas Mortagne
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Ludovic Dubost
> Founder and CEO
> Blog: http://blog.ludovic.org/
> XWiki: http://www.xwiki.com
> Skype: ldubost GTalk: ldubost
>



-- 
Ludovic Dubost
Founder and CEO
Blog: http://blog.ludovic.org/
XWiki: http://www.xwiki.com
Skype: ldubost GTalk: ldubost
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to