On 12/16/2010 03:01 AM, Vincent Massol wrote: > Hi Caleb, > > On Dec 16, 2010, at 6:42 AM, Caleb James DeLisle wrote: > >> I would like to deprecate the following methods because they insert and >> remove content which is >> dependent on JRCS for parsing and generation: >> XWikiAttachmentArchive#getArchive() >> XWikiAttachmentArchive#getArchive(XWikiContext) >> XWikiAttachmentArchive#setArchive(byte[]) >> These are not easily removed because they are needed for the packaging >> plugin but I think we should >> move away from that means of import/export as it contains code (including >> JRCS) which is memory >> inefficient. > > +1 but if you deprecate you also need to explain by what it is replaced. These are only used by Hibernate and the packaging plugin. They are for serializing the attachment archive as a byte array so it can be stored or exported. Since the filesystem implementation will be storing each attachment as a separate file, there is no analog. I believe this is sufficiently internal that we need not offer an upgrade path.
> >> Also in the 3.0 cycle, I would like to make private the following methods >> from XWikiHibernateStore >> as they are not used externally and are currently deprecated: >> loadXWikiProperty >> saveXWikiClass >> loadXWikiClass >> loadAttachmentList >> saveAttachmentList >> saveAttachment >> injectCustomMappingsInSessionFactory >> injectInSessionFactory >> isValidCustomMapping > > +0, I don't know enough the impact so my +0 is an ok in principle if it > doesn't break anything known. > >> I would like to remove the following methods entirely as they are also >> deprecated and are not used >> at all: >> getBatcherStats >> resetBatcherStats >> deleteXWikiClass >> saveXWikiClassProperty > > Same as above: > +0, I don't know enough the impact so my +0 is an ok in principle if it > doesn't break anything known. > > <future design> > > I see you're going the evolution way rather than the revolution way. This is > good to make progress. I favor evolution over revolution not only for the obvious reason that it is available "now" but because it allows changes to be tested immedietly. God forbid we invest in 20k lines of code and when finished we find it "looked good on paper" but simply does not work. > In some not too far future I'd like that we introduce a new xwiki-storage > module with clean interface and based on components. The Model classes > (Document, Wiki, Space, etc) would have the calls to save/load/update/delete > and would call this storage module to perform the actual storage actions. > This module would offer generic interfaces and an implementation based on > Hibernate (in a separate xwiki-storage-hibernate module) and allow to have > other implementations (JCR, etc). I am also envisioning a new storage engine based on the TransactionRunnable class which is currently housed inside of FilesystemAttachmentStore. However, I want to experience the challenges of using TransactionRunnable in the real world before I start proposing any interfaces which use it. > > Note: I had wondered for a long time if we should use directly the JCR api > instead of having our own storage API (since JCR provides one) but in the end > I think it's better to have our own since it doesn't tie us to JCR and since > JCR is not a massive adoption success it's probably safest. +1 Caleb > > </future design> > > Have you been working on this too or do you plan to? > > Thanks > -Vincent > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

