Quantcast

Where to put data?

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Where to put data?

Tony Graham
Forgive me if this is a FAQ, but if it is, I couldn't find it by
searching the list archive.

I am working on making an eXist-db application for recording information
about the results from Antenna House Regression Testing System (AHRTS)
[1] runs. AHRTS produces XML reports about whether files have changed
between runs, but I'm also collecting information about whether or not
the results are correct and, optionally, collecting a comment about the
test results.

That's hardly earth shattering, and I have a reasonable first attempt at
a HTML summary plus an XForm for collecting the extra information. My
problem is not knowing the most correct way to arrange things so that I
can store results from multiple, arbitrarily-name AHRTS test sets and
also distribute an xar file so that others in Antenna House can have
their own eXist-db with their own arbitrarily-named AHRTS test sets.

The introduction in "Package Repository" [2] talks about how the package
repository is better than separating the application code and the data
stored inside the database.

"A Beginners Guide to XRX with eXist-db" [4] contains "Each XRX
application should store its data in a separate data collection. For
example, our term manager application will store all the data in
/db/apps/terms/data."


"Getting Started with Web Application Development" [3] has an oblique

reference to not keeping the data with the app in: "...and data all

reside in the same place - though maybe in different root collections."


"General considerations when writing a package" [5] from "Package
Repository" [2] has an example of accessing a 'data-pkg' by querying for
it by name.

I want to distribute the application code, but if I follow "A Beginners
Guide to XRX with eXist-db" and have the application in /db/apps/ahrts
with the data in /db/apps/ahrts/data, then whatever data I currently
have about my own AHRTS tests gets included when I 'Download app' from
eXide.

Is it correct that the best way to support other people's arbitrary
AHRTS test sets is:

  - Create an empty (no test sets) 'library' package for AHRTS test sets
    that contains a 'collection.xconf' but no application code

  - Create an 'application' package for the application code

  - Have the 'application' package depend on the 'library' package

  - Upload test sets as collections under the 'library' package location


  - Have the 'application' package locate the 'library' package by name

    when showing summaries, updating data, etc. for the test sets?

  - Distribute two separate xar files for the 'application' and 'library'

?

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

[1]
https://www.antennahouse.com/antenna1/antenna-house-regression-testing-system/
[2] http://localhost:8080/exist/apps/doc/repo.xml
[3] http://localhost:8080/exist/apps/doc/development-starter.xml
[4] http://localhost:8080/exist/apps/doc/beginners-guide-to-xrx-v4.xml
[5] http://localhost:8080/exist/apps/doc/repo.xml#D1.4.18

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Jonathan Rowell

Hi Graham,


My app is basically the same structure as you are thinking.


The first package is a collection of collections which I call the "Database part". If consists of all of the necessary data collections - one for each type of different data, together with their XConf files. It also contains triggers on these collections. This package is installed once and remains installed forever. It also contains one global module which provides a set of functions to access these collections. It uses the functions in the repo: namespace so that I don't have to know that it is in fact /db/databaseapp/collectionA and so on. I just get the collection via db:collectionA() where db is the namespace prefix for the module.


The second package is all the application code arranged in its own set of collections. This gets deinstalled and reinstalled as the application grows or as bugs are found.


The third package is a set of test data and test scripts which are used solely for testing.

The packages are developed in separate directories where the collections are stored as directories under the directory "src". I develop XQuery using eXide and copy to src, and XSLT, XSD in an IDE directly in src. I don't use XForms nor any HTML since the user side is in Angular via Node/Express. I build with Grunt.

I'm working on a set of Grunt plugins to support this senario to be used in continuous integration and testing - like with Jenkins.

Hope that helps

Jonathan


From: Tony Graham <[hidden email]>
Sent: Monday, February 27, 2017 4:34 PM
To: eXist open
Subject: [Exist-open] Where to put data?
 
Forgive me if this is a FAQ, but if it is, I couldn't find it by
searching the list archive.

I am working on making an eXist-db application for recording information
about the results from Antenna House Regression Testing System (AHRTS)
[1] runs. AHRTS produces XML reports about whether files have changed
between runs, but I'm also collecting information about whether or not
the results are correct and, optionally, collecting a comment about the
test results.

That's hardly earth shattering, and I have a reasonable first attempt at
a HTML summary plus an XForm for collecting the extra information. My
problem is not knowing the most correct way to arrange things so that I
can store results from multiple, arbitrarily-name AHRTS test sets and
also distribute an xar file so that others in Antenna House can have
their own eXist-db with their own arbitrarily-named AHRTS test sets.

The introduction in "Package Repository" [2] talks about how the package
repository is better than separating the application code and the data
stored inside the database.

"A Beginners Guide to XRX with eXist-db" [4] contains "Each XRX
application should store its data in a separate data collection. For
example, our term manager application will store all the data in
/db/apps/terms/data."


"Getting Started with Web Application Development" [3] has an oblique

reference to not keeping the data with the app in: "...and data all

reside in the same place - though maybe in different root collections."


"General considerations when writing a package" [5] from "Package
Repository" [2] has an example of accessing a 'data-pkg' by querying for
it by name.

I want to distribute the application code, but if I follow "A Beginners
Guide to XRX with eXist-db" and have the application in /db/apps/ahrts
with the data in /db/apps/ahrts/data, then whatever data I currently
have about my own AHRTS tests gets included when I 'Download app' from
eXide.

Is it correct that the best way to support other people's arbitrary
AHRTS test sets is:

  - Create an empty (no test sets) 'library' package for AHRTS test sets
    that contains a 'collection.xconf' but no application code

  - Create an 'application' package for the application code

  - Have the 'application' package depend on the 'library' package

  - Upload test sets as collections under the 'library' package location


  - Have the 'application' package locate the 'library' package by name

    when showing summaries, updating data, etc. for the test sets?

  - Distribute two separate xar files for the 'application' and 'library'

?

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

[1]
https://www.antennahouse.com/antenna1/antenna-house-regression-testing-system/
www.antennahouse.com
Antenna House Regression Testing System (AHRTS) conducts automated comparison of PDF documents. AHRTS performs pixel-by-pixel visual comparison of PDF outputs.


[2] http://localhost:8080/exist/apps/doc/repo.xml
[3] http://localhost:8080/exist/apps/doc/development-starter.xml
[4] http://localhost:8080/exist/apps/doc/beginners-guide-to-xrx-v4.xml
[5] http://localhost:8080/exist/apps/doc/repo.xml#D1.4.18

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
sdm.link
Slashdot: News for nerds, stuff that matters. Timely news source for technology related news with a heavy slant towards Linux and Open Source issues.


_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
lists.sourceforge.net
Your email address: Your name (optional): You may enter a privacy password below. This provides only mild security, but should prevent others from messing with ...



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Adam Retter
In reply to this post by Tony Graham
Hi Tony,

Welcome to eXist :-)

I am no authority on EXPath packages, and their might be better
approaches, but an option might be to:

* Have separate app and data collections, but under completely
different roots so that one doesn't affect the other. How about:
/db/apps/terms for your app, and /db/app-data/terms for your user's
data.

* Just have a single EXPath package, which contains your app, and also
a collection.xconf for the data collection (which would be copied into
/db/system/config/db/app-data/tems/collection.xconf via your
pre-install.xql in your package).

Then you could just ship the app, and ask the users to place their
data in /db/app-data/terms. They would also be able to customise their
copy of /db/system/config/db/app-data/tems/collection.xconf if they
needed some different indexes for some reason.

That should separate your app from user data.

On 27 February 2017 at 16:34, Tony Graham <[hidden email]> wrote:

> Forgive me if this is a FAQ, but if it is, I couldn't find it by
> searching the list archive.
>
> I am working on making an eXist-db application for recording information
> about the results from Antenna House Regression Testing System (AHRTS)
> [1] runs. AHRTS produces XML reports about whether files have changed
> between runs, but I'm also collecting information about whether or not
> the results are correct and, optionally, collecting a comment about the
> test results.
>
> That's hardly earth shattering, and I have a reasonable first attempt at
> a HTML summary plus an XForm for collecting the extra information. My
> problem is not knowing the most correct way to arrange things so that I
> can store results from multiple, arbitrarily-name AHRTS test sets and
> also distribute an xar file so that others in Antenna House can have
> their own eXist-db with their own arbitrarily-named AHRTS test sets.
>
> The introduction in "Package Repository" [2] talks about how the package
> repository is better than separating the application code and the data
> stored inside the database.
>
> "A Beginners Guide to XRX with eXist-db" [4] contains "Each XRX
> application should store its data in a separate data collection. For
> example, our term manager application will store all the data in
> /db/apps/terms/data."
>
>
> "Getting Started with Web Application Development" [3] has an oblique
>
> reference to not keeping the data with the app in: "...and data all
>
> reside in the same place - though maybe in different root collections."
>
>
> "General considerations when writing a package" [5] from "Package
> Repository" [2] has an example of accessing a 'data-pkg' by querying for
> it by name.
>
> I want to distribute the application code, but if I follow "A Beginners
> Guide to XRX with eXist-db" and have the application in /db/apps/ahrts
> with the data in /db/apps/ahrts/data, then whatever data I currently
> have about my own AHRTS tests gets included when I 'Download app' from
> eXide.
>
> Is it correct that the best way to support other people's arbitrary
> AHRTS test sets is:
>
>   - Create an empty (no test sets) 'library' package for AHRTS test sets
>     that contains a 'collection.xconf' but no application code
>
>   - Create an 'application' package for the application code
>
>   - Have the 'application' package depend on the 'library' package
>
>   - Upload test sets as collections under the 'library' package location
>
>
>   - Have the 'application' package locate the 'library' package by name
>
>     when showing summaries, updating data, etc. for the test sets?
>
>   - Distribute two separate xar files for the 'application' and 'library'
>
> ?
>
> Regards,
>
>
> Tony Graham.
> --
> Senior Architect
> XML Division
> Antenna House, Inc.
> ----
> Skerries, Ireland
> [hidden email]
>
> [1]
> https://www.antennahouse.com/antenna1/antenna-house-regression-testing-system/
> [2] http://localhost:8080/exist/apps/doc/repo.xml
> [3] http://localhost:8080/exist/apps/doc/development-starter.xml
> [4] http://localhost:8080/exist/apps/doc/beginners-guide-to-xrx-v4.xml
> [5] http://localhost:8080/exist/apps/doc/repo.xml#D1.4.18
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Exist-open mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/exist-open



--
Adam Retter

eXist Developer
{ United Kingdom }
[hidden email]
irc://irc.freenode.net/existdb

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Tony Graham
On 27/02/2017 17:12, Adam Retter wrote:
> Welcome to eXist :-)

Thanks.

> I am no authority on EXPath packages, and their might be better
> approaches, but an option might be to:
>
> * Have separate app and data collections, but under completely
> different roots so that one doesn't affect the other. How about:
> /db/apps/terms for your app, and /db/app-data/terms for your user's
> data.
>
> * Just have a single EXPath package, which contains your app, and also
> a collection.xconf for the data collection (which would be copied into
> /db/system/config/db/app-data/tems/collection.xconf via your
> pre-install.xql in your package).
>
> Then you could just ship the app, and ask the users to place their
> data in /db/app-data/terms. They would also be able to customise their
> copy of /db/system/config/db/app-data/tems/collection.xconf if they
> needed some different indexes for some reason.

I ended up using 'post-install.xql' to do the work of creating
'/db/apps/ahrts-data', creating an 'ahrts-data' user and making it own
the collection, and copying the 'collection.xconf' to the right place
under '/system/config'.

I had to put the data under '/db/apps/ahrts-data' because I couldn't
access the PDFs using my web browser when the PDFs were under
'/db/ahrts-data'.

The data is uploaded using an Ant target. AFAICT, the 'xdb:chmod' task
doesn't have any effect (but it will complain if you try to change the
mode of a collection that doesn't exist). I'm currently using
'xdb:create' to create a collection that would be created moments later
anyway by 'xdb:store' just because 'xdb:create' does set permissions.

I currently have a problem that I think is caused by having '=' in
collection names. I can create a 'testresult.xml' file in one of these
collections, and the results show in my summary page, but when I go to
updated the comment, etc., eXist-db/XForms can't find the file. The
files also don't show in any of the collection browser, the eXide
'directory' sidebar, the eXide 'Manage' dialog, or a database backup. In
a database backup, the file is listed in the '__contents__.xml' for the
collection but doesn't appear in the Zip-encoded archive.

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Tony Graham
On 28/02/2017 23:31, Tony Graham wrote:
...
> I currently have a problem that I think is caused by having '=' in
> collection names. I can create a 'testresult.xml' file in one of these
> collections, and the results show in my summary page, but when I go to
> updated the comment, etc., eXist-db/XForms can't find the file. The
> files also don't show in any of the collection browser, the eXide
> 'directory' sidebar, the eXide 'Manage' dialog, or a database backup. In
> a database backup, the file is listed in the '__contents__.xml' for the
> collection but doesn't appear in the Zip-encoded archive.

I solved my app not finding the file half the time (operator error), but
its not showing in eXide, etc. still happens.

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Hungerburg
Am 2017-03-01 um 12:04 schrieb Tony Graham:
> On 28/02/2017 23:31, Tony Graham wrote:
> ...
>> I currently have a problem that I think is caused by having '=' in
>> collection names.
> [...]
> its not showing in eXide, etc. still happens.

I traced that (current git develop, up to date eXide):
- in order to list a collection eXide sends an http GET query
- in its collections.xql the = gets encoded to %3D
- it never gets decoded back to =
->resource not found

Create collections /db/ABC and /db/A=B, see what these links return:
-
http://localhost:8080/exist/apps/eXide/modules/collections.xql?root=/db/ABC&view=r
-
http://localhost:8080/exist/apps/eXide/modules/collections.xql?root=/db/A=B&view=r

Dashboard and REST on the other hand handle this fine.
-
http://localhost:8080/exist/apps/dashboard/plugins/browsing/contents/?collection=/db/A=B
- http://localhost:8080/exist/rest/db/A=B

--
peter

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

'=' in collection names [Was: Where to put data?]

Tony Graham
On 01/03/2017 12:19, Hungerburg wrote:

> Am 2017-03-01 um 12:04 schrieb Tony Graham:
>> On 28/02/2017 23:31, Tony Graham wrote:
>> ...
>>> I currently have a problem that I think is caused by having '=' in
>>> collection names.
>> [...]
>> its not showing in eXide, etc. still happens.
>
> I traced that (current git develop, up to date eXide):
> - in order to list a collection eXide sends an http GET query
> - in its collections.xql the = gets encoded to %3D
> - it never gets decoded back to =
> ->resource not found

Thanks for looking into this. I figured it was an encode/decode
mismatch, but I wouldn't have known where to look.

I use '=' because the collection names come from filenames that are
themselves flattened versions of folder+file names of the original test
files. I picked '=' to be the folder name separator just because it's
not used in the names of the test files. Maybe I've worked out why...

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Adam Retter
In reply to this post by Tony Graham
> I had to put the data under '/db/apps/ahrts-data' because I couldn't
> access the PDFs using my web browser when the PDFs were under
> '/db/ahrts-data'.

Ah okay. So when things are under `/apps` they have a shorter
convenience URL. You can access things under /db/ahrts-data by using
the full REST Server URL: e.g.
http://localhost:8080/exist/rest/db/ahrts-data.

> The data is uploaded using an Ant target. AFAICT, the 'xdb:chmod' task
> doesn't have any effect (but it will complain if you try to change the
> mode of a collection that doesn't exist).

Hmm that sounds like a bug. Could you open an issue on the GitHub with
details of how to reproduce. If you mention me @adamretter in the
description, I will try and get this fixed for the upcoming eXist
3.1.0 release on the 7th March 2017.


> I currently have a problem that I think is caused by having '=' in
> collection names. I can create a 'testresult.xml' file in one of these
> collections, and the results show in my summary page, but when I go to
> updated the comment, etc., eXist-db/XForms can't find the file. The
> files also don't show in any of the collection browser, the eXide
> 'directory' sidebar, the eXide 'Manage' dialog, or a database backup. In
> a database backup, the file is listed in the '__contents__.xml' for the
> collection but doesn't appear in the Zip-encoded archive.

Uggh this sounds like another URL encoding/decoding bug; I see that
Hungerburg has already answered that in another message, so I will
comment there...



--
Adam Retter

eXist Developer
{ United Kingdom }
[hidden email]
irc://irc.freenode.net/existdb

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Adam Retter
In reply to this post by Hungerburg
>>> I currently have a problem that I think is caused by having '=' in
>>> collection names.
>> [...]
>> its not showing in eXide, etc. still happens.
>
> I traced that (current git develop, up to date eXide):
> - in order to list a collection eXide sends an http GET query
> - in its collections.xql the = gets encoded to %3D
> - it never gets decoded back to =
> ->resource not found
>
> Create collections /db/ABC and /db/A=B, see what these links return:
> -
> http://localhost:8080/exist/apps/eXide/modules/collections.xql?root=/db/ABC&view=r
> -
> http://localhost:8080/exist/apps/eXide/modules/collections.xql?root=/db/A=B&view=r
>
> Dashboard and REST on the other hand handle this fine.
> -
> http://localhost:8080/exist/apps/dashboard/plugins/browsing/contents/?collection=/db/A=B
> - http://localhost:8080/exist/rest/db/A=B

If this is a eXide bug, can someone open an issue in its bugtracker
please: https://github.com/wolfgangmm/eXide/issues/



--
Adam Retter

eXist Developer
{ United Kingdom }
[hidden email]
irc://irc.freenode.net/existdb

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Joe Wicentowski
In reply to this post by Adam Retter
>> I had to put the data under '/db/apps/ahrts-data' because I couldn't
>> access the PDFs using my web browser when the PDFs were under
>> '/db/ahrts-data'.
>
> Ah okay. So when things are under `/apps` they have a shorter
> convenience URL. You can access things under /db/ahrts-data by using
> the full REST Server URL: e.g.
> http://localhost:8080/exist/rest/db/ahrts-data.

Alternatively, if you'd like to add a new URL entry to the "base
mappings", you could reach a collection like /db/ahrts-data at say
/exist/ahrts-data.  See the documentation about URL Rewriting and the
section therein about configuring base mappings; what's required is
editing $EXIST_HOME/webapp/WEB-INF/controller-config.xml and
restarting eXist to register the changes.

  http://exist-db.org/exist/apps/doc/urlrewrite.xml#D1.2.6

Joe

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Where to put data?

Tony Graham
On 01/03/2017 15:09, Joe Wicentowski wrote:

>>> I had to put the data under '/db/apps/ahrts-data' because I couldn't
>>> access the PDFs using my web browser when the PDFs were under
>>> '/db/ahrts-data'.
>>
>> Ah okay. So when things are under `/apps` they have a shorter
>> convenience URL. You can access things under /db/ahrts-data by using
>> the full REST Server URL: e.g.
>> http://localhost:8080/exist/rest/db/ahrts-data.
>
> Alternatively, if you'd like to add a new URL entry to the "base
> mappings", you could reach a collection like /db/ahrts-data at say
> /exist/ahrts-data.  See the documentation about URL Rewriting and the
> section therein about configuring base mappings; what's required is
> editing $EXIST_HOME/webapp/WEB-INF/controller-config.xml and
> restarting eXist to register the changes.
>
>   http://exist-db.org/exist/apps/doc/urlrewrite.xml#D1.2.6

Thanks, but getting other people to also edit that file on their
eXist-db when/before they deploy their copy of the app is a bit too much
to ask of them.

Currently got it working with Adam's suggestion of
http://localhost:8080/exist/rest/db/ahrts-data

Regards,


Tony Graham.
--
Senior Architect
XML Division
Antenna House, Inc.
----
Skerries, Ireland
[hidden email]

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Exist-open mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/exist-open
Loading...