Hi,

Looks like you merge your work on master which is great but is it
normal that the "p2" branch is still here ? Also I don't understand
what is the "tm" branch for.

On Sun, Jun 24, 2012 at 10:17 AM, sasinda rukshan
<[email protected]> wrote:
> Hi ,
> Updated current archi.
> https://docs.google.com/drawings/d/1hwfQMVgCvYKS6iHU060drcET3Aq3Vles2DQlJOOt3n8/edit
>
>
>
> Improved  XWikiApplicationContext object. It is now used for IOC.
> Also it is now integrated to android native runtime. All activities can now
> call android native method "this.getApplication()" to receive a
> XWikiApplicationContext.
> https://github.com/xwiki-contrib/android-client/tree/p2
>
> Thanks
> Regards.
>
>
> Thanks,
> Best Regards.
>
> On Sat, Jun 23, 2012 at 10:40 AM, sasinda rukshan
> <[email protected]>wrote:
>
>> PS:
>> Forgot to mention,
>> Document API will have 2 additional methods.
>> activate()
>> passivate()
>> These are introduced to passivate the document when an Android Activity
>> shuts down if user is doing multi tasking.
>> For the rationale behind this, refer to
>> http://developer.android.com/guide/components/tasks-and-back-stack.html
>>   Tasks and BackStack
>> http://developer.android.com/guide/components/activities.html
>>               see, figure1:The Activity Lifecycle
>>
>> passivate() will pass the Document object to an Android
>> Service which will persist document to the device.
>>
>> I will do an incremental development.
>> 1st  increment: BlogDocument object will have functionality to send a
>> BlogPost. All lower layer functinality needed will be implemented.
>> 2nd increment: Save the BlogDocument in the device drive.
>> Rest I have not planned.
>>
>> Thanks
>> Best Regards.
>> Sasinda.
>>
>>
>> On Sat, Jun 23, 2012 at 10:26 AM, sasinda rukshan <
>> [email protected]> wrote:
>>
>>> hi,
>>>
>>> API update.
>>> Document: create,retrieve,update,delete. (same as above)
>>>
>>> We are using a ReSTful Manager and ReSTfulAccessObject[i.e. RAO<Document>
>>> for accssing doc from server and all that.]. It is the Data Access Object
>>> Pattern.This is to hide the underlying rest communication model.(i.e.
>>> Jackson/Gson/SimpleXml...). Also this will apply a database like feeling
>>> when accessing remote server ReSTful API. (this makes the architecture
>>> simple and consistent also).
>>>
>>> I did not see a method to querry all pages having a BlogPostClass object,
>>>  in the ReSTAPI documentation. Only possible way I found is to retrieve all
>>> pages and there object summaries and find which pages have a BlogPostClass
>>> in them.
>>> I will add the querry method to an implementation of RAO<Space>.
>>> It will be something like this.
>>>
>>> class defs
>>> interface RAO<T>{has a  method querry()}
>>> MYSpaceRAOImpl  implements RAO<Space>
>>> ReSTfulManager : Think that an instance of this is like a hibernate
>>> session. Since this is a mobile env (and I am not that smart to implement
>>> something like hibernate:-)
>>>                                we get an RAO(same as a DataAccessObject)
>>> from it rather than hiding  everything behind it.
>>>
>>> RAO<Space> spcRAO=ResTfulManager.getRAO(Space.class , fetchstrategy)
>>> spcRAO.querry( all documents having a BlogPostClass object in them)
>>>
>>> The SpaceRAO will handle the querying and return Document objects
>>> matching the query. Actually this should return a list of Wrappers of
>>>  Document objects, to do things like lazy fetching from the RemoteXWiki
>>> Server.Since time is limited, I will forget about wrappers and return back
>>> the whole document, fully loaded.
>>> I will implement a minimal functionality set in the above components. It
>>> is very easy to evolve the feature set later because of the patterns
>>> applied.
>>>
>>> Please give feedback on the idea.
>>>
>>> Thanks
>>> Best Regards.
>>> Sasinda.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Jun 22, 2012 at 9:08 AM, sasinda rukshan <
>>> [email protected]> wrote:
>>>
>>>> hi,
>>>> Document API.
>>>>
>>>> *create()*
>>>> put the page on server. If the doc includes Objects post them as well.
>>>> (likely for comments tags, attatchments)
>>>> *
>>>> *
>>>> *update(int strategy)*
>>>>  Update all things in Page. Throw XWikiException if page not yet created.
>>>> @param : strategy   values={MERGE / FORCED } OR {ALL/ OBJECTS /
>>>> TAGS/...}
>>>>        ex: thing there are objects 0,1,2 in server page.
>>>>
>>>>    - merge  (when local doc has objects 0,1 only)
>>>>       - update obj 0,1
>>>>    - forced (whne local doc has obj 0,1 only)
>>>>       - delete obj 2 in server. Update obj 0,1.
>>>>
>>>>    usage:
>>>>        doc.update(MERGE || OBJECTS || TAGS)         means update page,
>>>> merge objects and tags. Leave the rest as it is
>>>>
>>>>
>>>> *delete() *
>>>> delete the whole document.
>>>>
>>>> *get()*
>>>> load the doc from server
>>>>
>>>> *save()*
>>>> save to local device
>>>> *load()*
>>>> load from local device
>>>>
>>>> Document API is not exposed directly to Client Developers. All it's
>>>> methods are protected.
>>>> We have a BlogDocument [extension to Document]  which is exposed to the
>>>> BlogClient developer.
>>>> BlogDocument knows what a blog post is and it knows that it only needs
>>>> to update the BlogPostClass object in the server page. It calls the super
>>>> update() method with the relevant strategy.
>>>> Any way the Document is not the real guy who does all these updates to
>>>> server and local saves and loads.
>>>> For local saves and loads it calls a DAO(data Access Object ) in our
>>>> persistence lib.This DAO will call a FAO (File Access Object ) to save the
>>>> documents bulk to the local file system and enter a  light weight entry in
>>>> the SQLite DataBase.
>>>> For updating the server, Document delegate duties to
>>>> ReSTfulDocumentAdapter{implements ReSTfulAdapter}.We can configure which
>>>> ReST model to use in the adapter (currently only simpleXML model). Adapters
>>>> convert and adapt the Document model to a rest model and call the XWikiReST
>>>> API abstraction layer to update the remote server.
>>>> By the way, those ReSTfulAdapter(s) do a lot of things. Convert Document
>>>> to REST model.Choose an Update Strategy object for the document (passed by
>>>> param in doc.update(strat)) Calls REST api abstraction inside android
>>>> according to the Update strategy. They do a lot of things for an adapter.I
>>>> don't know what to call it :-).An Adapter or something else ??? :-O.
>>>>
>>>> Also for automatic syncs with the server when the device is offline and
>>>> user have made a blog post, user should be given the option to select
>>>> whether to automatically do it or manually post it.
>>>> For automatic sync/posting we can make android Services.
>>>>
>>>> Also currently the xwiki-androi-rest module does not use android native
>>>> services to call server.If a user gets a phone call or something when
>>>> uploading to server things might get messy.This is because android
>>>> Activities are stoped and may be destroyed on these occasions.I will see if
>>>> I can rectify it if I have time after the mid eval.(It may totally affect
>>>> how web services are called from upper layers)
>>>>
>>>> Thanks
>>>> Best Regards.
>>>> Sasinda.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Jun 22, 2012 at 7:33 AM, sasinda rukshan <
>>>> [email protected]> wrote:
>>>>
>>>>> hi,
>>>>> PS:
>>>>> check the *p2 branch*. Not master. Did not merge yet. :-)
>>>>>
>>>>> Regards,
>>>>> Sasinda.
>>>>>
>>>>> On Fri, Jun 22, 2012 at 7:31 AM, sasinda rukshan <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>> Pushed some initial scaffolding's of XWiki model to android, in to
>>>>>> https://github.com/xwiki-contrib/android-client
>>>>>> This is the basic idea.
>>>>>> The client app developers will be only exposed to a service layer. All
>>>>>> packages suffixed with "Svc" have these.
>>>>>> package: cmnSvc >> has the LoginFacade. called to log in to server and
>>>>>> system.(also update state of XWikiContext in the android and etc)
>>>>>> package blogSvc >> will have BlogDocument, CategoryDocument and etc
>>>>>> which can be used to create posts and update server.
>>>>>> The base class Document will handle all server updations(through a
>>>>>> ReSTfulAdapter, to decouple Document and underlying rest model: simple
>>>>>> XML/Gson) and etc.
>>>>>>
>>>>>> Please check whether approach to redesigning com.xpn....objects into
>>>>>> org.xwiki.android.xmodel.xobjects is correct.
>>>>>>
>>>>>> Thanks.
>>>>>> Best Regards.
>>>>>> Sasinda.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jun 18, 2012 at 3:20 PM, sasinda rukshan <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Thomas,
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>> ---------- Forwarded message ----------
>>>>>>> From: Thomas Mortagne <[email protected]>
>>>>>>> Date: Mon, Jun 18, 2012 at 3:08 PM
>>>>>>> Subject: Re: [xwiki-devs] Fwd: [GSoc] XDroid Platform
>>>>>>> To: [email protected], XWiki Developers <[email protected]>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jun 18, 2012 at 11:30 AM, sasinda rukshan
>>>>>>> <[email protected]> wrote:
>>>>>>> > ---------- Forwarded message ----------
>>>>>>> > From: sasinda rukshan <[email protected]>
>>>>>>> > Date: Mon, Jun 18, 2012 at 2:56 PM
>>>>>>> > Subject: Re: [xwiki-devs] [GSoc] XDroid Platform
>>>>>>> > To: XWiki Developers <[email protected]>
>>>>>>> >
>>>>>>> >
>>>>>>> > Hi Thomas,
>>>>>>> >
>>>>>>> > Thanks for the explanations.
>>>>>>> > The methods toXML , toEmbedXML are wrong.It was just an idea that
>>>>>>> came up
>>>>>>> > without much thinking. I will use a separate model
>>>>>>> > converter.(xwikitTosimpleModelConverter implements ModelConverter
>>>>>>> like
>>>>>>> > thing). So the model objects don't know about it at all.
>>>>>>> > By what you ment by "user" I think it is the client app developer
>>>>>>> is it?
>>>>>>>
>>>>>>> Yes I mean the user of the API.
>>>>>>>
>>>>>>> > you did not mean end user. I never reveal the xml representations
>>>>>>> to end
>>>>>>> > users.
>>>>>>> >
>>>>>>> > I came up with a simpler design. I will post diagram later tomorrow.
>>>>>>>
>>>>>>> Ok, this ASCII art here is not very easy to read ;)
>>>>>>>
>>>>>>> > To give a brief on it,
>>>>>>> > XObject           : has protected property List<XProperty>
>>>>>>>
>>>>>>> A Map<XProperty> would probably make more sense here since each
>>>>>>> property as a unique name in an object and you will need to set some
>>>>>>> specific property very often.
>>>>>>>
>>>>>>> > |__XPoperty  :<< all objects that can be added as a  property of an
>>>>>>> objects
>>>>>>> > should extend this. Has an attribute list. cancels the
>>>>>>> > |                         property list of XObject
>>>>>>> > |      |_____XString          :
>>>>>>> > |__Abstract XDocObject  :<< all documents should have an object of
>>>>>>> this.
>>>>>>> > This is the pages class. Has a object  List<XObject>
>>>>>>> > |       |____XBlog             :<< all documents which are blogs
>>>>>>> should
>>>>>>> > have a object of this. This determines the class of the object.
>>>>>>> > |                                          but this data is not
>>>>>>> posted
>>>>>>> > anywhere in <link rel="...../class"> . It is just kept for type
>>>>>>> checks.
>>>>>>> > That is like
>>>>>>> > |                                         this page should include
>>>>>>> > XBlogPost objects.
>>>>>>> > |__XBlogPost                   : <<the BlogPostClass object.
>>>>>>> >
>>>>>>> > In my view I assume every page has an object of some class. And
>>>>>>> this object
>>>>>>> > holds the objects which you can get under .../pages/BlogPg1/objects/
>>>>>>>
>>>>>>> Well not exactly, you don't always have an object. A document can be
>>>>>>> just about content. Just a wiki page if you prefer.
>>>>>>>
>>>>>>> >
>>>>>>> > [
>>>>>>> > an added advantage:
>>>>>>> > I think we can make a ViewEngine to generate android View
>>>>>>> components from
>>>>>>> > the above model. Since the objects in the page carry rendering
>>>>>>> > descriptions.We can make a general model like a browser to
>>>>>>> > brows xwiki using generated the views. But the problem is some
>>>>>>> features in
>>>>>>> > specific spaces like blog do not seem to be totally defined by the
>>>>>>> XWiki
>>>>>>> > Object model behind them. Also this is just an idea (not suggesting
>>>>>>> I do
>>>>>>> > for the GSoc).Making it a  usable reality is a little challenge.
>>>>>>> > ]
>>>>>>> >
>>>>>>> > So as you said if a document (I think it equivalent to a page) can
>>>>>>> have
>>>>>>> > many class types my assumption fails.
>>>>>>> > Why should a document be of multiple classes. I was thinking a page
>>>>>>> belongs
>>>>>>> > to a class. And the page is an instance of that class. If page can
>>>>>>> have
>>>>>>> > multiple classes my understanding should be wrong. Isn't it?
>>>>>>>
>>>>>>> I don't understand, what I said is that you can only have one class in
>>>>>>> a document but you can have several objects.
>>>>>>>
>>>>>>> >
>>>>>>> > Thanks
>>>>>>> > Best Regards
>>>>>>> > Sasinda.
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
> _______________________________________________
> 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