On Fri, Oct 12, 2012 at 8:09 PM, Jerome Velociter <[email protected]> wrote:
> On 10/12/2012 05:59 PM, Fabio Mancinelli wrote:
>>
>> On Mon, Oct 8, 2012 at 4:35 PM, Ludovic Dubost <[email protected]> wrote:
>>>
>>> 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 ?
>>>
>> I think that everything except XWikiResource and Relations should be
>> moved to internal.
>> These are implementations of the HTTP actions on different resources
>> and the implementation of content-type conversions. Everything that is
>> actually internal.
>>
>> Developers who wants to implement new resources only needs
>> XWikiRestComponent, XWikiResource (which provides an extensible class
>> with some utility methods) and XWikiRelations to have a list of the
>> relations that can be specified in <link>s
>>
>> So I am going to move everything else in internal.
>
>
> Sounds good, +1

+1 too

>
> Jerome
>
>>
>> -Fabio
>>
>>
>>
>>
>>> 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
>>> _______________________________________________
>>> devs mailing list
>>> [email protected]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
> _______________________________________________
> 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

Reply via email to