I have found an easier way!
XWikiDocument#getDocumentArchive() can be set to call 
loadDocumentArchive(XWikiContext) with an
XWikiContext from the ExecutionContext, gotten by way of either 
XWikiDocument#getContext() or
XWikiDocument#getXWikiContext()

WDYT?

Caleb

Caleb James DeLisle wrote:
> Based on the response, I am amending the proposal to add
> doc.XWikiDocument.getPreviousVersion(XWikiContext) in case
> future development in the old core finds it useful.
> api.Document.getPreviousVersion() will be redirected to the new
> method.
> 
> WDYT?
> 
> Caleb
> 
> 
> Caleb James DeLisle wrote:
>> Sergiu Dumitriu wrote:
>>> On 04/12/2010 04:58 PM, Caleb James DeLisle wrote:
>>>> Thomas Mortagne wrote:
>>>>> On Mon, Apr 12, 2010 at 15:12, Caleb James DeLisle
>>>>> <[email protected]>  wrote:
>>>>>> Currently, api.Document.getPreviousVersion() calls 
>>>>>> doc.XWikiDocument.getPreviousVersion() which
>>>>>> calls doc.XWikiDocument.getDocumentArchive() which will return null if 
>>>>>> the document archive is not
>>>>>> currently loaded.
>>>>>>
>>>>>> doc.XWikiDocument.getPreviousVersion() is inherently dangerous and 
>>>>>> should be deprecated then removed.
>>>>>> doc.XWikiDocument.getDocumentArchive() sometimes returns null and should 
>>>>>> be deprecated then made private.
>>>>>>
>>>>>> everywhere doc.XWikiDocument.getDocumentArchive() is used it should be 
>>>>>> replaced with
>>>>>> doc.XWikiDocument.getDocumentArchive(XWikiContext) which calls 
>>>>>> loadDocumentArchive first.
>>>>>>
>>>>>>
>>>>>> What I propose we do now (for 2.3)
>>>>>> #1
>>>>>> Change api.Document.getPreviousVersion() to call 
>>>>>> getDocumentArchive(getXWikiContext()) and move the logic
>>>>>> from doc.XWikiDocument.getPreviousVersion() into 
>>>>>> api.Document.getPreviousVersion()
>>>>>>
>>>>>> #2
>>>>>> change doc.XWikiDocument.copyDocument(DocumentReference 
>>>>>> newDocumentReference, XWikiContext context) to call
>>>>>> getDocumentArchive(XWikiContext) instead of getDocumentArchive()
>>>>>>
>>>>>> #3
>>>>>> Add warnings in javadoc for:
>>>>>> clone(XWikiDocument document)
>>>>>> cloneInternal(DocumentReference newDocumentReference, boolean 
>>>>>> keepsIdentity)
>>>>>> to say that they may not copy the archive since they use 
>>>>>> getDocumentArchive()
>>>>>>
>>>>>> #4
>>>>>> mark doc.XWikiDocument.getPreviousVersion() and 
>>>>>> doc.XWikiDocument.getDocumentArchive() as depricated and
>>>>>> explain why in a comment.
>>>>> What would you have to use instead of XWikiDocument.getPreviousVersion() ?
>>>> api.Document.getPreviousVersion()
>>> -0
>>>
>>> First, the API is not usually available inside the core, and it 
>>> shouldn't since actually this is not a service API, but a public 
>>> scripting API.
>>>
>>> Second, going to the API is an unneeded roundtrip, since the API should 
>>> not contain any logic, it should just forward the call to the internal 
>>> method, which is again XWikiDocument.getPreviousVersion.
>>>
>>> Third, the API might actually disappear in the future, once we move to 
>>> the 2.0 model and add @Security and @Access annotations to it to mark 
>>> public (scriptable) API methods and their associated access rights 
>>> requirements.
>> I thought the API would outlast the rest of the old core since removing the
>> API would break every application and snippet.
>> I did some find-grepping and it seems that getPreviousVersion is not used 
>> anywhere
>> in platform, watch, xoffice, xeclipse, or workspaces.
>> I don't see the reasoning for having no logic in the API and I hate to add 
>> methods
>> to XWikiDocument but another option is to add a method
>> XWikiDocument.getPreviousVersion(XWikiContext)
>>
>>>> My rationale is that we should use public api in internal code as often as 
>>>> possible because public api is
>>>> supposed to always stay the same and internal code will thus become 
>>>> stronger. Also it will mean that an
>>>> accidental api break will be more likely to cause test failures.
>>>>
>>>>>> WDYT?
>>>>>>
>>>>>> Caleb
>> _______________________________________________
>> 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

Reply via email to