Hi there,
I've been looking at "shibbing" XWiki - i.e. turning it into a
Shibboleth compatible Service Provider. I've done that bit, using the
Guanxi system:
http://guanxi.uhi.ac.uk/xwiki
The goal of "shibbing" xwiki is to allow users from certain named
institutions to automatically login to xwiki and have an account
created on the fly, based on their attributes. What this involves is
two steps:
1) Protect an XWiki Shibboleth Login page with Guanxi - I've done that
2) Based on the SAML Assertion from their Identity Provider,
authenticate them - I've done that too (almost!)
3) Create them an account on the fly once authentication succeeds.
The information required to create an account (username etc.) would
come from their Identity Provider in SAML Attribute Assertions. I've
still to do this.
What I'm wondering is there a way to create users on the fly without
having an XWikiContext? What I'd like to do is create a new class
that can create XWiki users directly.
The goal of Guanxi + XWiki is an XWiki at, say UHI Millennium
Institute that will allow users at the University of Leeds or Oxford
who are software developers to login automatically, using their Leeds
or Oxford username, with their accounts being created on the fly, so
they don't need to register.
I've done about 80% of the work, I just need a cleaner way of
creating users without having to use the XWikiContext and request
parameter maps etc.
Hope you can help,
thanks,
Alistair
Would it be possible to retrieve all the XWiki documents from a java app
using the XWiki api. Does anybody have a code snippet of what that would
look like?
Thanks.
Jacco.
Suppose you want to do the following:
You want to use Wiki to create documents together with colleques. Once a
document is in a final stage (You could set a value somehow using the
templates.) it gets a flag like 'final' or something. All these
documents that are in a final stage can then be published in e.g
forrest. Based on another flag. (the subject) the documents will be
published in a specific tab under the forrest site.
The reason for doing this is that end users only get to see the final
state documents. Somebody with admin rights could decide if a document
is in the final state.
How would something like this be implemented in Wiki. Could somebody
give me an outline of how to do this. I am looking for a way to loop
over all the published documents in Wiki and check for the flags as
mentioned above. It probably could be a plugin but also could be a
standalone java app using the wiki api's.... Right?!?!?
Thanks in advance.
Jacco.
Hi List,
Following my proposal, I have released two packages, and committed some
files.
the first package is a zipped tar, containing the XWiki+Jetty+Hsqldb
files needed to use XWiki with no other dependencies.
the second one is a Windows installer, that installs the same files. You
can set the jetty server port number during the installation, and should
you want to update your standalone installation you are able to do it
without overwriting your database files (Update installation type).
build.xml has been updated, with the addition of the 'standalone'
target, which depends on files in the new 'standalone' directory.
Sebastien.
Hey Jim,
thanks for this long e-mail ! i see you did a lot of work and deep
thinking since our last conversation, and if you don't mind i'm going
to move this conversation to the developer's list, because i think
other people may have interesting points to raise into this
conversation ...
I need some time to reply to all the points you list, but several
points can be adressed right now :
- HQL is Hibernate query langage. Similar to SQL, but RDBMS
independant and allows you to directly use Plain Old Java Objects
(POJOs) and collections of POJO (one-to-many, many-to-many, etc ...).
You need to read the mapping (xwiki.hbm.xml) which maps those POJOs to
tables, columns, and relations to understand the queries there.
- because we use this framework, most of the benefit of stored
procedures (no sql in code, independence) is of no use for our
particular application. Regarding performance, i personally don't
think the models and problems of the xwiki data stores are complex
enough to be moved to the backend database. This might not be the case
for applications built on top of xwiki, and hibernate provides a very
limited support for calling stored procedures.
- about FK and PK constraints, it's true we might run into situations
where the data model would be corrupted by an untested commit and/or a
badly developped plugin. We need to balance the cost of enhancing the
data model to what you propose and its real benefit. My opinion is
that this would make the learning curve less steep for people starting
to develop on our platform. But the Document model is well
encapsulated at the very bottom of the Object model, and further
isolated by Hibernate, so i don't think this is that much of a
problem.
Again, your mileage may vary and this is the beauty of the OSS
development model :-)
Always happy to discuss this matter,
Erwan
On 11/23/05, Jim Stuttard <jastuttard(a)yahoo.co.uk> wrote:
> Hi Erwin,
>
> Thanks for the offer of some help in looking at normalisation.
>
> I've now managed to read the hibernate docs, run some queries against my
> mysql ISAM database
> and make a few notes.
>
> It would be very useful at least if you wouln't mind checking, correcting
> and refuting some of the things I'm trying to document. My aim would be to
> have some more sound assertions about xwiki to build on?
>
>
> Here are some preliminary topics we might consider:
>
> 1. MySql | Hypersonic | HQL
>
> * remove all sql into stored procedures. I see mysql now supports them;
> don't know anything about hypersonic.
>
> * what language is this? It appears to be joining a property value
> classname to a StringProperty name property id.id?
>
> "select prop.value from BaseObject as obj, StringProperty as prop where
> obj.className='Blog.Categories' and prop.id.id = obj.id and
> prop.id.name='name'</sql>"
>
> A bit difficult to understand how this fits in with my mysql tables but
> I'll pursue this and a few other queries in the code. (PS. I've probably
> read it wrong anyway)
>
> * I think I understand that the back-end store is not very important for
> referential integrity, more a data dump which doesn't necessarily have to
> be very organised or have any semantics. I think the smart idea used to be
> to dump as much processing into the back-end, Oracle, Siebel, SAP and even
> DB2 etc. because only their prefered architecture would ever run reliably,
> never mind fast enough.
>
> I think still agree with that. Stored procedures are not part of the data
> model; operations are part of some business logic controller. I can choose
> to partition my MVC that way and (for performance,SOC and maintenance
> reasons probably), I have never come across a better way. So I think I'd
> like to ask how much processing should go into the back end?
>
> To keep lightweight, portable and upgradeable I see that minimum
> interfaces are required. I don't think I would ever use an RDBMS which
> didn't support stored procs. SQL syntax translation isn't too difficult is
> it?
>
> * I note that InnoDB (vs ISAM) is needed in mysql to support explicit
> foreign key constraints.
> a. Is this digging in to techniques which will end up as a lock-in? Or
> b. Foreign key constraints are one's best handled by the DB? Or
> c. Use surrogate keys wherever possible, only natural keys where it makes
> performance sense and avoid composite
> keys. However there *are* still FK constraints between table columns.
> IMHO they should be enforced ASAP in processing, ie. before stuff comes
> out of the database.
>
> * The XWiki documentation seems to refer to HSQL a lot. Are Xprtnet
> planning to stablise on that or HQL, both or other?
>
> 2. Hibernate
>
> * I see Ludovic has followed the joined-table syntax with slistclasses and
> dblistclasses. This seems the best option for inheritance. I haven't quite
> managed to get my head round when to use the union-table syntax?
>
> * The Hibernate documentation says one thing and does another when it
> comes to natural and composite keys. I suppose it's the same with me if
> you talk about address field sets: very inefficient to normalise so use a
> surrogate key.
>
> * I can only see one-table-per class as the least risk first choice model.
> At a quick scan, per hierarchy and concrete class options seem to have too
> many drawbacks. But when it comes down to it the Hibs use natural
> composites, then add an OID.
> I thinks OIDs are irrelevant to an RDBMS except when we have multi-valued
> fields stored as indexed lists or arrays.
> Then there is a number column eg. listitem number and this is what
> hibernate persists.
>
> * Anyway I assume there is a stable consensus for the time being on
> following some hibernate OR architecture?
>
> 2. Data Analysis
>
> * Anyway down to work. So we have something to work on, I've attached a
> dumped zip xls file of current xwiki PK data.
> It seems easier to read these things on a spreadsheet. Can you check that
> this is a fairly default set of data with a few additional pages? Because
> I have had to manually delete a few "question" and "answer" fields from
> both strings table and properties table when failing to build a FAQ, or
> othe reasons, it might be corrupt.
>
> * If we had a reference data set we could possibly infer a lot more
> relationships?
>
> * I have loads of questions, notes and assumptions but this is enough for
> one email. I'll send the next one ASAP.
>
> 3. Goals
>
> SPerhaps a specification of some AOP module for run-time data integrity
> checking? Might be useful and good AOP and annotation practice?
>
> Best Regards
>
> Jim
>
>
>
> --
> Jim Stuttard
>
>
I couldn't get the FAQ going following Cody's instructions repeatedly.
I posted this on
http://www.xwiki.org/xwiki/bin/view/DevGuide/Packaging+Rules where there
doesn't seem to be a way of finding the original author because history is
not accessible.
RagBag 03/10/2005 13:56:59
Please could you explain the reasons behind these rules. In the FAQ
example I create the FAQs space and give FAQs.FAQClass, template and sheet
the FAQ namespace. Can you clarify that eg FAQClass does not have to be a
document called XWiki.FAQClass?
It contradicts the FAQ FAQ :)
Thanks Jim
--
Jim Stuttard
As a developer, but viewing XWiki from a user's standpoint, I wholly support
getting off of Radeox. It's poorly documented, inconsistent in the feature
department, and has not seen a release for almost two years. Kudos on the
proposal, it is welcomed, at least by this user.
Hi,
A new Wiki Language parser has been released on sourceforge and is
probably the most powerfull wiki parser available today. The specificity
is that it contains both an Envent Model (for parsing) and an Object
Model which gives on object oriented representation of a Wiki document.
The second feature is quite unique in the Wiki world and is quite
usefull for advanced features where you want to work with the wiki content.
Mikhail, the author, did an incredible job and showed me his work a few
month ago. We had a first look at how to use this in XWiki and made a
working Rendered talking to this parser.
I'm very eager to look into using this library as the default XWiki wiki
language parser.
Now there are a few hurdles to allow this. First there are some syntax
incompatibilities. Second we need to work on the plugin aspects and how
to make that work with the other renderers.
It is also the occasion to work on the renderering parameters of the
document and of the wiki as it has been proposed by Stephan (
http://www.xwiki.org/xwiki/bin/view/Dev/SyntaxProcessingIssues )
At the same time we can review how the scripting languages are embedded
in XWiki. Maybe we could make that a little more standard which would
help WYSIWYG Editors support it more easily.
Anyway this is not an easy project and we would probably need some
volunteers to work on this.
Don't hesitate to come and discuss that here with us.
Great work Mikhail, and congrats for making that library Open-Source.
Ludovic
--
Ludovic Dubost
XPertNet: http://www.xpertnet.fr/
Blog: http://www.ludovic.org/blog/
XWiki: http://www.xwiki.com
Skype: ldubost AIM: nvludo Yahoo: ludovic
Hi list,
In order to ease XWiki installation for those who don't want to deal
with tomcat/mysql, Ludovic asked me to work on a standalone installation
of XWiki based on jetty and hsqldb.
I think I get to a point where I have something useful, so I wanted to
describe what I have done, and if Ludo agrees to create an account for
me, I will be able to commit some files in the next few days ;-)
So, I have added a 'standalone' target into the build.xml file (see
below). This target expands a jetty.5.1.5 archive, removes the sample
applications, inserts the xwiki release (exploded war) into the webapps
directory, copies some configuration files in order to make xwiki use an
in-process hsqldb database. hsqldb database files are also copied into
the package. The database data have been taken from the mysql export
(xwiki-db-0.9.2.sql).
At the root of this package, 4 scripts are eventually copied in order to
help user to start/stop the application server (start_xwiki.bat|sh,
stop_xwiki.bat|sh).
The produced package is usable 'as-is' simply by copying the files
somewhere on your disk. And yes, it works on a USB key also. It weights
a total of 37 MB.
With this target, I have also written a basic Nullsoft Installer script,
in order to help Windows users in installing the package. Basically this
installer installs all the files produced by the standalone target in a
user specified directory, then create 3 shortcuts in the Windows start
menu: start, stop (à la tomcat) and uninstall. Before doing this the
installer checks if a jre 1.4 or newer is installed (I'm not sure that
1.4 is required for xwiki, this can be changed easily), if not the user
is redirected to the download section of the Java web site. This
installer weight a total of 30 MB.
On the todo list of this installer :
- add the possibility to specify a port number for the jetty server ;
- install a bundled jre if needed (have to check the sun license in
order to be sure this is possible)
- add a final window explaining what to do after the installation (use
the start/stop shortcuts, start a browser...)
On the todo list of this standalone installation :
- add an installer for Mac OS X platforms
- add an installer for Linux platforms (autopackage ?), may be not so
useful, since Linux users are more acquainted to tomcat/mysql
installation ...
Any question, comment, idea would be greatly appreciated.
Seb.
here is the standalone target code :
<!-- Standalone package properties -->
<property name="standalone.base.dir" value="${basedir}/standalone"/>
<property name="standalone.jetty.archive.dir" value="jetty-5.1.5"/>
<property name="standalone.jetty.archive"
value="${standalone.base.dir}/${standalone.jetty.archive.dir}.zip"/>
<property name="standalone.package.name" value="xwikionjetty"/>
<property name="standalone.release.dir"
value="${release.dir}/${standalone.package.name}"/>
<fileset id="standalone.db.bootstrap"
dir="${standalone.base.dir}/db" includes="xwiki_db.*"/>
<fileset id="standalone.config" dir="${standalone.base.dir}/config"
includes="xwiki.cfg, hibernate.cfg.hsql.xml"/>
<fileset id="standalone.scripts"
dir="${standalone.base.dir}/scripts" includes="*"/>
<target name="standalone" depends="release">
<!-- unzip jetty archive into standalone release dir -->
<!-- exclude some jetty provided jar files in order to avoid clashes -->
<!-- these jars are provided by xwiki -->
<unzip src="${standalone.jetty.archive}" dest="${release.dir}">
<patternset>
<exclude name="**/ext/xercesImpl.jar"/>
<exclude name="**/ext/xml-apis.jar"/>
<exclude name="**/ext/xmlParserAPIs-2.5.jar"/>
</patternset>
</unzip>
<move todir="${standalone.release.dir}">
<fileset dir="${release.dir}/${standalone.jetty.archive.dir}"/>
</move>
<!-- remove example webapps -->
<delete file="${standalone.release.dir}/webapps/javadoc.war"/>
<delete dir="${standalone.release.dir}/webapps/template"/>
<!-- explode xwiki war file into jetty/webapps -->
<mkdir dir="${standalone.release.dir}/webapps/xwiki"/>
<unwar src="${release.warfile}"
dest="${standalone.release.dir}/webapps/xwiki"/>
<!-- replace configuration files with standalone version -->
<copy todir="${standalone.release.dir}/webapps/xwiki/WEB-INF"
overwrite="true">
<fileset refid="standalone.config"/>
</copy>
<!-- install db bootstrap -->
<mkdir dir="${standalone.release.dir}/db"/>
<copy todir="${standalone.release.dir}/db">
<fileset refid="standalone.db.bootstrap" />
</copy>
<!-- install start/stop scripts -->
<copy todir="${standalone.release.dir}">
<fileset refid="standalone.scripts"/>
</copy>
</target>
The sounds awsome.
I really would like a standalone package that runs off a USB key.
I teach tech classes at a local college and have started using XWiki for presentations and documentation. Sometimes the colleges internet connection is not so reliable so I have fretted about not having my presentations available during class. To overcome this I have been bringing a laptop configured as a linux server with xwiki installed hosting all my presentations and notes.
As you can see XWiki on a USB key would be absolutlely useful
Great work!
Dennis
Dennis
> Hi list,
>
> In order to ease XWiki installation for those who don't want to deal
> with tomcat/mysql, Ludovic asked me to work on a standalone installation
> of XWiki based on jetty and hsqldb.
>
> I think I get to a point where I have something useful, so I wanted to
> describe what I have done, and if Ludo agrees to create an account for
> me, I will be able to commit some files in the next few days ;-)
>
> So, I have added a 'standalone' target into the build.xml file (see
> below). This target expands a jetty.5.1.5 archive, removes the sample
> applications, inserts the xwiki release (exploded war) into the webapps
> directory, copies some configuration files in order to make xwiki use an
> in-process hsqldb database. hsqldb database files are also copied into
> the package. The database data have been taken from the mysql export
> (xwiki-db-0.9.2.sql).
>
> At the root of this package, 4 scripts are eventually copied in order to
> help user to start/stop the application server (start_xwiki.bat|sh,
> stop_xwiki.bat|sh).
>
> The produced package is usable 'as-is' simply by copying the files
> somewhere on your disk. And yes, it works on a USB key also. It weights
> a total of 37 MB.
>
> With this target, I have also written a basic Nullsoft Installer script,
> in order to help Windows users in installing the package. Basically this
> installer installs all the files produced by the standalone target in a
> user specified directory, then create 3 shortcuts in the Windows start
> menu: start, stop (à la tomcat) and uninstall. Before doing this the
> installer checks if a jre 1.4 or newer is installed (I'm not sure that
> 1.4 is required for xwiki, this can be changed easily), if not the user
> is redirected to the download section of the Java web site. This
> installer weight a total of 30 MB.
>
> On the todo list of this installer :
>
> - add the possibility to specify a port number for the jetty server ;
> - install a bundled jre if needed (have to check the sun license in
> order to be sure this is possible)
> - add a final window explaining what to do after the installation (use
> the start/stop shortcuts, start a browser...)
>
> On the todo list of this standalone installation :
>
> - add an installer for Mac OS X platforms
> - add an installer for Linux platforms (autopackage ?), may be not so
> useful, since Linux users are more acquainted to tomcat/mysql
> installation ...
>
> Any question, comment, idea would be greatly appreciated.
>
> Seb.
>
> here is the standalone target code :
>
> <!-- Standalone package properties -->
> <property name="standalone.base.dir" value="${basedir}/standalone"/>
> <property name="standalone.jetty.archive.dir" value="jetty-5.1.5"/>
> <property name="standalone.jetty.archive"
> value="${standalone.base.dir}/${standalone.jetty.archive.dir}.zip"/>
> <property name="standalone.package.name" value="xwikionjetty"/>
> <property name="standalone.release.dir"
> value="${release.dir}/${standalone.package.name}"/>
>
> <fileset id="standalone.db.bootstrap"
> dir="${standalone.base.dir}/db" includes="xwiki_db.*"/>
> <fileset id="standalone.config" dir="${standalone.base.dir}/config"
> includes="xwiki.cfg, hibernate.cfg.hsql.xml"/>
> <fileset id="standalone.scripts"
> dir="${standalone.base.dir}/scripts" includes="*"/>
>
> <target name="standalone" depends="release">
> <!-- unzip jetty archive into standalone release dir -->
> <!-- exclude some jetty provided jar files in order to avoid clashes -->
> <!-- these jars are provided by xwiki -->
>
> <unzip src="${standalone.jetty.archive}" dest="${release.dir}">
> <patternset>
> <exclude name="**/ext/xercesImpl.jar"/>
> <exclude name="**/ext/xml-apis.jar"/>
> <exclude name="**/ext/xmlParserAPIs-2.5.jar"/>
> </patternset>
> </unzip>
> <move todir="${standalone.release.dir}">
> <fileset dir="${release.dir}/${standalone.jetty.archive.dir}"/>
> </move>
>
> <!-- remove example webapps -->
> <delete file="${standalone.release.dir}/webapps/javadoc.war"/>
> <delete dir="${standalone.release.dir}/webapps/template"/>
>
> <!-- explode xwiki war file into jetty/webapps -->
> <mkdir dir="${standalone.release.dir}/webapps/xwiki"/>
> <unwar src="${release.warfile}"
> dest="${standalone.release.dir}/webapps/xwiki"/>
>
> <!-- replace configuration files with standalone version -->
> <copy todir="${standalone.release.dir}/webapps/xwiki/WEB-INF"
> overwrite="true">
> <fileset refid="standalone.config"/>
> </copy>
>
> <!-- install db bootstrap -->
> <mkdir dir="${standalone.release.dir}/db"/>
> <copy todir="${standalone.release.dir}/db">
> <fileset refid="standalone.db.bootstrap" />
> </copy>
>
> <!-- install start/stop scripts -->
> <copy todir="${standalone.release.dir}">
> <fileset refid="standalone.scripts"/>
> </copy>
> </target>
>
>
>
>
>
>
>
> --
> You receive this message as a subscriber of the xwiki-dev(a)objectweb.org mailing
> list.
> To unsubscribe: mailto:xwiki-dev-unsubscribe@objectweb.org
> For general help: mailto:sympa@objectweb.org?subject=help
> ObjectWeb mailing lists service home page: http://www.objectweb.org/wws