Hi Giordano,
Maybe a quicker route for you to understand would be through Script
Services [1].
You basically write a java component and then you write a facade (script
service) for it which will be exposed to velocity code (that you usually
write in a wiki page, executed server side). Your velocity code talks to
the service which, in turn, talks to your java component.
Sure, you could write all your java code directly in the service, but
that`s not a very nice design, since these script services are not really
intended to be used in java code (they are intended for scripts --
velocity, groovy, etc.) and, if you would need to re-use your code in java
as well, a component is more suited that a script service (so you should do
the heavy coding in the component).
Finally, you write your wiki page using some velocity that handle the web
logic, (e.g. maybe get some request parameters, do some computations, use
some script services to perform more complex stuff and thus call java code,
do some redirects, etc.) and finally print the html output to the browser
that made the request.
All of this is also mentioned in our devguide about writing components,
maybe you`ve missed it [2].
However, as Marius hinted, the server side operations done in velocity (and
the java code called by the velocity scripts) are performed synchronously,
so the browser`s request needs to wait until all those operations finish
and the html result is outputed. If your application's logic can not afford
to wait for such a result to be computed, then you need to go the
asynchronous path, with jobs and with interrogating the job`s status,
providing progress information until it finishes executing.
Hope this helps,
Eduard
P.S.: We are more than happy to receive help on the documentation side,
specially in those places where it's sketchy and hard to understand, so you
are encouraged to pitch in (since it's an open wiki where everyone can
edit). I guess documentation is just like testing and it's quite a well
known fact that developers are not perfect at testing their own code :)
----------
[1] 
http://extensions.xwiki.org/xwiki/bin/view/Extension/Script+Module
[2]
http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingComponents#HFromwi…
On Wed, Nov 25, 2015 at 2:00 PM, Giordano Ninonà <giordano.ninona(a)gmail.com>
wrote:
  Thank you Marius for your reply, this is something
that I need, but I've
 still problems in understanding how to transfer the control from XWiki to
 Java then to XWiki again, in particular I can't understand which XWiki API
 I should use and how to properly use them on Java.
 Sorry but I am very confused, and it is strange because I fell that it is
 not so difficult bu I still don't understand :P
 Regards,
 Giordano Ninonà.
 2015-11-25 12:38 GMT+01:00 Marius Dumitru Florea <
 mariusdumitru.florea(a)xwiki.com>gt;:
  The operations you want to perform may take some
time, depending on the
 number of affected pages, so I wouldn't block the HTML request, triggered
 when you click the button, until the operation is done. Maybe this can 
 help
 
 http://platform.xwiki.org/xwiki/bin/view/DevGuide/PerformingAsynchronousTas…
  .
 On Wed, Nov 25, 2015 at 12:47 PM, Giordano Ninonà <
 giordano.ninona(a)gmail.com
  wrote: 
 > Hi Devs,
 >
 > I am a Master Student of Computer Science and of Business Information
 > Systems. I am developing my master thesis project on a case study 
 coming
   from
Learnpad, unfortunately I have some problems in understanding the 
 huge
  amount of documentation provided by the XWiki
website for developers,
 anyway the idea behind my project is the following:
 *Starting from a XWiki page, clicking on an hypothetical button, I want 
 to
 > be able to start a Java application that will aplly changes to the 
  XWiki
  > space, that are: *
 >
 >    - *Add and remove single or multiple pages to the space;*
 >    - *Set the content of the new pages;*
 >    - *Modify content of existing pages;*
 >
 > I am wondering because it is not clear, for me, if I need to create a
 > new *extension
 > *or a new *component *or a *macro*(and the differences between them), 
 how
   to
properly implement a java application for Xwiki or how to start it 
 from
  the Xwiki environment, if it is possible to
modify XWiki spaces at 
 runtime,
 > or how to associate java object to wiki pages....and stuff like that...
 >
 > I've already read the documentation, checked the existing extension,
 > cheched the Github repository, but it is dispersive, sometimes too
 > technical (with some knowledge taken for granted) and sometimes too
 > general. In the end I am stucked because I don't know how to approach 
  my
   problem
in this environment.
 Do you have any suggestion to help me? I need to be put on the right 
 truck
 Kind Regards,
 Giordano Ninonà.
 _______________________________________________
 devs mailing list
 devs(a)xwiki.org
 
http://lists.xwiki.org/mailman/listinfo/devs
  _______________________________________________
 devs mailing list
 devs(a)xwiki.org
 
http://lists.xwiki.org/mailman/listinfo/devs
   _______________________________________________
 devs mailing list
 devs(a)xwiki.org
 
http://lists.xwiki.org/mailman/listinfo/devs