You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
|
Feb
(99) |
Mar
|
Apr
(6) |
May
(13) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(6) |
Nov
|
Dec
(9) |
2007 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2009 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
(5) |
From: <cw...@us...> - 2010-12-13 14:18:17
|
Revision: 49 http://proai.svn.sourceforge.net/proai/?rev=49&view=rev Author: cwilper Date: 2010-12-13 14:18:11 +0000 (Mon, 13 Dec 2010) Log Message: ----------- State of branches at the time of migration Added Paths: ----------- moved-to-github/branches/ Removed Paths: ------------- branches/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-12-13 14:13:58
|
Revision: 48 http://proai.svn.sourceforge.net/proai/?rev=48&view=rev Author: cwilper Date: 2010-12-13 14:13:52 +0000 (Mon, 13 Dec 2010) Log Message: ----------- State of tags at the time of migration Added Paths: ----------- moved-to-github/tags/ Removed Paths: ------------- tags/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-12-13 14:13:35
|
Revision: 47 http://proai.svn.sourceforge.net/proai/?rev=47&view=rev Author: cwilper Date: 2010-12-13 14:13:29 +0000 (Mon, 13 Dec 2010) Log Message: ----------- State of trunk at the time of migration Added Paths: ----------- moved-to-github/trunk/ Removed Paths: ------------- trunk/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-12-13 14:12:25
|
Revision: 46 http://proai.svn.sourceforge.net/proai/?rev=46&view=rev Author: cwilper Date: 2010-12-13 14:12:18 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Latest code is at https://github.com/fcrepo/proai Added Paths: ----------- moved-to-github/MOVED-README.txt Added: moved-to-github/MOVED-README.txt =================================================================== --- moved-to-github/MOVED-README.txt (rev 0) +++ moved-to-github/MOVED-README.txt 2010-12-13 14:12:18 UTC (rev 46) @@ -0,0 +1,10 @@ + NOTICE -- THIS REPOSITORY IS OUT OF DATE! + ----------------------------------------- + +This project's source code (and all commit history) has been migrated +to github. As of December 2010, it can be found here: + + https://github.com/fcrepo/proai + +The state of this project's source code AT THE TIME OF MIGRATION +is preserved here and will not change. Property changes on: moved-to-github/MOVED-README.txt ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-12-13 14:07:48
|
Revision: 45 http://proai.svn.sourceforge.net/proai/?rev=45&view=rev Author: cwilper Date: 2010-12-13 14:07:42 +0000 (Mon, 13 Dec 2010) Log Message: ----------- . Added Paths: ----------- moved-to-github/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-08-30 22:14:12
|
Revision: 44 http://proai.svn.sourceforge.net/proai/?rev=44&view=rev Author: cwilper Date: 2010-08-30 22:14:07 +0000 (Mon, 30 Aug 2010) Log Message: ----------- tagged for 1.1.2 release; August 30th 2010 Added Paths: ----------- tags/release-1.1.2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-08-30 22:12:32
|
Revision: 43 http://proai.svn.sourceforge.net/proai/?rev=43&view=rev Author: cwilper Date: 2010-08-30 22:12:26 +0000 (Mon, 30 Aug 2010) Log Message: ----------- upped version for release Modified Paths: -------------- trunk/README.txt Modified: trunk/README.txt =================================================================== --- trunk/README.txt 2010-08-30 22:11:34 UTC (rev 42) +++ trunk/README.txt 2010-08-30 22:12:26 UTC (rev 43) @@ -6,6 +6,7 @@ Copyright (c) 2006-2007, Cornell University Copyright (c) 2008-2009, Fedora Commons, Inc. + Copyright (c) 2009-2010, DuraSpace +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-08-30 22:11:40
|
Revision: 42 http://proai.svn.sourceforge.net/proai/?rev=42&view=rev Author: cwilper Date: 2010-08-30 22:11:34 +0000 (Mon, 30 Aug 2010) Log Message: ----------- prep for release - upped version and copyright information Modified Paths: -------------- trunk/src/doc/index.html trunk/src/doc/license/index.html trunk/src/java/proai/Proai.properties Modified: trunk/src/doc/index.html =================================================================== --- trunk/src/doc/index.html 2010-08-30 22:09:04 UTC (rev 41) +++ trunk/src/doc/index.html 2010-08-30 22:11:34 UTC (rev 42) @@ -194,6 +194,7 @@ <div id="copyright"> Copyright © 2006-2007, Cornell University<br/> Copyright © 2008-2009, Fedora Commons, Inc.<br/> + Copyright © 2009-2010, DuraSpace<br/> </div> </div> </body> Modified: trunk/src/doc/license/index.html =================================================================== --- trunk/src/doc/license/index.html 2010-08-30 22:09:04 UTC (rev 41) +++ trunk/src/doc/license/index.html 2010-08-30 22:11:34 UTC (rev 42) @@ -57,6 +57,7 @@ <div class="copyright"> Copyright © 2006-2007, Cornell University<br/> Copyright © 2008-2009, Fedora Commons, Inc.<br/> + Copyright © 2009-2010, DuraSpace<br/> </div> <div class="license"> Licensed under the <a href="asl-2.0.txt">Apache Software License, Version 2</a><br/> Modified: trunk/src/java/proai/Proai.properties =================================================================== --- trunk/src/java/proai/Proai.properties 2010-08-30 22:09:04 UTC (rev 41) +++ trunk/src/java/proai/Proai.properties 2010-08-30 22:11:34 UTC (rev 42) @@ -1,2 +1,2 @@ -proai.version = 1.1.1 +proai.version = 1.1.2 proai.buildDate = @buildDate@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2010-08-30 22:09:11
|
Revision: 41 http://proai.svn.sourceforge.net/proai/?rev=41&view=rev Author: cwilper Date: 2010-08-30 22:09:04 +0000 (Mon, 30 Aug 2010) Log Message: ----------- Fixes FCREPO-788: Misleading error message: Multiple instances of RecordCache not allowed Modified Paths: -------------- trunk/src/java/proai/cache/RecordCache.java Modified: trunk/src/java/proai/cache/RecordCache.java =================================================================== --- trunk/src/java/proai/cache/RecordCache.java 2009-08-31 10:44:57 UTC (rev 40) +++ trunk/src/java/proai/cache/RecordCache.java 2010-08-30 22:09:04 UTC (rev 41) @@ -221,11 +221,6 @@ logger.info("Initializing Record Cache..."); - // guard against programmer error - if (s_pool != null) { - throw new ServerException("Multiple instances of RecordCache not allowed"); - } - s_pool = pool; m_driver = driver; m_baseDir = baseDir; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-07-08 15:24:01
|
Revision: 36 http://proai.svn.sourceforge.net/proai/?rev=36&view=rev Author: cwilper Date: 2009-07-08 15:23:59 +0000 (Wed, 08 Jul 2009) Log Message: ----------- created branch from trunk r34 Added Paths: ----------- branches/fiz/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-05-04 16:46:17
|
Revision: 35 http://proai.svn.sourceforge.net/proai/?rev=35&view=rev Author: cwilper Date: 2009-05-04 16:46:13 +0000 (Mon, 04 May 2009) Log Message: ----------- tagged for 1.1.1 Added Paths: ----------- tags/release-1.1.1/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-05-04 16:43:11
|
Revision: 34 http://proai.svn.sourceforge.net/proai/?rev=34&view=rev Author: cwilper Date: 2009-05-04 16:43:06 +0000 (Mon, 04 May 2009) Log Message: ----------- updated test records to remove xmlns declaration, updated version to 1.1.1, updated license to Apache 2, added copyright info for Fedora Commons, and updated release notes for 1.1.1 release Modified Paths: -------------- trunk/README.txt trunk/src/doc/index.html trunk/src/doc/license/index.html trunk/src/doc/release-notes.txt trunk/src/java/proai/Proai.properties trunk/src/test/records/item1-oai_dc-2005-01-01T08-50-44.xml trunk/src/test/records/item1-test_format-2005-01-01T08-50-44.xml trunk/src/test/records/item2-oai_dc-2005-01-01T08-52-21.xml trunk/src/test/records/item2-test_format-2005-01-01T08-52-21.xml trunk/src/test/records/item3-oai_dc-2005-01-01T08-55-00.xml trunk/src/test/records/item3-test_format-2005-01-01T08-56-00.xml trunk/src/test/records/item4-oai_dc-2005-01-01T08-57-59.xml trunk/src/test/records/item5-oai_dc-2005-03-20T21-13-59.xml Removed Paths: ------------- trunk/src/doc/license/ecl-1.0.txt Modified: trunk/README.txt =================================================================== --- trunk/README.txt 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/README.txt 2009-05-04 16:43:06 UTC (rev 34) @@ -5,15 +5,16 @@ Source Distribution Copyright (c) 2006-2007, Cornell University + Copyright (c) 2008-2009, Fedora Commons, Inc. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE ======= -Proai is distributed under the Educational Community License (ECL), v1.0. +Proai is distributed under the Apache 2 license. Use of this software indicates your acceptance of the terms of this license. The distribution includes several third-party, open-source libraries with -thier own license terms. Specific terms of the ECL and all third-party +thier own license terms. Specific terms of the Apache 2 and all third-party licenses can be found in the src/doc/license/ directory. Modified: trunk/src/doc/index.html =================================================================== --- trunk/src/doc/index.html 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/doc/index.html 2009-05-04 16:43:06 UTC (rev 34) @@ -178,7 +178,7 @@ <div class="sec2"> <h2><a name="license">7. License Information</a></h2> <p> - Proai is distributed under the Educational Community License (ECL), v1.0. + Proai is distributed under the Apache Software License, v2.0. </p> <p> The distribution also includes several third-party, open-source libraries, @@ -192,7 +192,8 @@ <div id="footer"> <div id="copyright"> - Copyright © 2006-2007, Cornell University + Copyright © 2006-2007, Cornell University<br/> + Copyright © 2008-2009, Fedora Commons, Inc.<br/> </div> </div> </body> Deleted: trunk/src/doc/license/ecl-1.0.txt =================================================================== --- trunk/src/doc/license/ecl-1.0.txt 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/doc/license/ecl-1.0.txt 2009-05-04 16:43:06 UTC (rev 34) @@ -1,43 +0,0 @@ -Educational Community License version 1.0 - -This Original Work, including software, source code, documents, or -other related items, is being provided by the copyright holder(s) -subject to the terms of the Educational Community License. By -obtaining, using and/or copying this Original Work, you agree that you -have read, understand, and will comply with the following terms and -conditions of the Educational Community License: - -Permission to use, copy, modify, merge, publish, distribute, and -sublicense this Original Work and its documentation, with or without -modification, for any purpose, and without fee or royalty to the -copyright holder(s) is hereby granted, provided that you include the -following on ALL copies of the Original Work or portions thereof, -including modifications or derivatives, that you make: - -- The full text of the Educational Community License in a location -viewable to users of the redistributed or derivative work. - -- Any pre-existing intellectual property disclaimers, notices, or terms -and conditions. - -- Notice of any changes or modifications to the Original Work, -including the date the changes were made. - -- Any modifications of the Original Work must be distributed in such a -manner as to avoid any confusion with the Original Work of the -copyright holders. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The name and trademarks of copyright holder(s) may NOT be used in -advertising or publicity pertaining to the Original or Derivative Works -without specific, written prior permission. Title to copyright in the -Original Work and any associated documentation will at all times remain -with the copyright holders. - Modified: trunk/src/doc/license/index.html =================================================================== --- trunk/src/doc/license/index.html 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/doc/license/index.html 2009-05-04 16:43:06 UTC (rev 34) @@ -55,11 +55,11 @@ <ol> <li>Proai OAI Provider Library <div class="copyright"> - Written by Chris Wilper, - Copyright © 2006-2007, Cornell University + Copyright © 2006-2007, Cornell University<br/> + Copyright © 2008-2009, Fedora Commons, Inc.<br/> </div> <div class="license"> - Licensed under the <a href="ecl-1.0.txt">Educational Community License 1.0</a><br/> + Licensed under the <a href="asl-2.0.txt">Apache Software License, Version 2</a><br/> USE OF THIS SOFTWARE INDICATES YOUR ACCEPTANCE OF THE TERMS OF THIS LICENSE. </div> </li> Modified: trunk/src/doc/release-notes.txt =================================================================== --- trunk/src/doc/release-notes.txt 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/doc/release-notes.txt 2009-05-04 16:43:06 UTC (rev 34) @@ -21,3 +21,17 @@ o This version is compiled for Java 1.4, and works with Java 1.5. Future versions will likely not be compatible with Java 1.4. + +Version 1.1 - March 2009 +======================== + + o Misc cleanup and testing improvements + +Version 1.1.1 - May 2009 +======================== + + o No longer requires <record> elements from an OAIDriver to + declare their namespace in order for validation to work. + See https://fedora-commons.org/jira/browse/FCREPO-474 + + o This version is released under Apache 2 Modified: trunk/src/java/proai/Proai.properties =================================================================== --- trunk/src/java/proai/Proai.properties 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/java/proai/Proai.properties 2009-05-04 16:43:06 UTC (rev 34) @@ -1,2 +1,2 @@ -proai.version = 1.1 +proai.version = 1.1.1 proai.buildDate = @buildDate@ Modified: trunk/src/test/records/item1-oai_dc-2005-01-01T08-50-44.xml =================================================================== --- trunk/src/test/records/item1-oai_dc-2005-01-01T08-50-44.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item1-oai_dc-2005-01-01T08-50-44.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item1</identifier> <datestamp>2005-01-01T08:50:44Z</datestamp> Modified: trunk/src/test/records/item1-test_format-2005-01-01T08-50-44.xml =================================================================== --- trunk/src/test/records/item1-test_format-2005-01-01T08-50-44.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item1-test_format-2005-01-01T08-50-44.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item1</identifier> <datestamp>2005-01-01T08:50:44Z</datestamp> Modified: trunk/src/test/records/item2-oai_dc-2005-01-01T08-52-21.xml =================================================================== --- trunk/src/test/records/item2-oai_dc-2005-01-01T08-52-21.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item2-oai_dc-2005-01-01T08-52-21.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item2</identifier> <datestamp>2005-01-01T08:52:21Z</datestamp> Modified: trunk/src/test/records/item2-test_format-2005-01-01T08-52-21.xml =================================================================== --- trunk/src/test/records/item2-test_format-2005-01-01T08-52-21.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item2-test_format-2005-01-01T08-52-21.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item2</identifier> <datestamp>2005-01-01T08:52:21Z</datestamp> Modified: trunk/src/test/records/item3-oai_dc-2005-01-01T08-55-00.xml =================================================================== --- trunk/src/test/records/item3-oai_dc-2005-01-01T08-55-00.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item3-oai_dc-2005-01-01T08-55-00.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item3</identifier> <datestamp>2005-01-01T08:55:00Z</datestamp> Modified: trunk/src/test/records/item3-test_format-2005-01-01T08-56-00.xml =================================================================== --- trunk/src/test/records/item3-test_format-2005-01-01T08-56-00.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item3-test_format-2005-01-01T08-56-00.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item3</identifier> <datestamp>2005-01-01T08:56:00Z</datestamp> Modified: trunk/src/test/records/item4-oai_dc-2005-01-01T08-57-59.xml =================================================================== --- trunk/src/test/records/item4-oai_dc-2005-01-01T08-57-59.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item4-oai_dc-2005-01-01T08-57-59.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item4</identifier> <datestamp>2005-01-01T08:57:59Z</datestamp> Modified: trunk/src/test/records/item5-oai_dc-2005-03-20T21-13-59.xml =================================================================== --- trunk/src/test/records/item5-oai_dc-2005-03-20T21-13-59.xml 2009-05-04 16:11:40 UTC (rev 33) +++ trunk/src/test/records/item5-oai_dc-2005-03-20T21-13-59.xml 2009-05-04 16:43:06 UTC (rev 34) @@ -1,4 +1,4 @@ -<record xmlns="http://www.openarchives.org/OAI/2.0/"> +<record> <header> <identifier>oai:example.org:item5</identifier> <datestamp>2005-01-01T08:57:59Z</datestamp> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-05-04 16:11:52
|
Revision: 33 http://proai.svn.sourceforge.net/proai/?rev=33&view=rev Author: cwilper Date: 2009-05-04 16:11:40 +0000 (Mon, 04 May 2009) Log Message: ----------- no longer requires record element to declare its xmlns in order for validation to work Modified Paths: -------------- trunk/src/java/proai/cache/Worker.java Modified: trunk/src/java/proai/cache/Worker.java =================================================================== --- trunk/src/java/proai/cache/Worker.java 2009-02-23 16:27:05 UTC (rev 32) +++ trunk/src/java/proai/cache/Worker.java 2009-05-04 16:11:40 UTC (rev 33) @@ -61,6 +61,25 @@ _LOG.info("Worker finished"); } + private InputStream getRecordStreamForValidation(File recordFile) throws Exception { + StringBuilder builder = new StringBuilder(); + builder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + builder.append("<OAI-PMH xmlns=\"http://www.openarchives.org/OAI/2.0/\">\n"); + builder.append("<responseDate>2002-02-08T08:55:46Z</responseDate>\n"); + builder.append("<request verb=\"GetRecord\" identifier=\"oai:arXiv.org:cs/0112017\" "); + builder.append("metadataPrefix=\"oai_dc\">http://arXiv.org/oai2</request>\n"); + builder.append("<GetRecord>\n"); + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(recordFile))); + String line = reader.readLine(); + while (line != null) { + builder.append(line + "\n"); + line = reader.readLine(); + } + builder.append("</GetRecord>\n"); + builder.append("</OAI-PMH>"); + return new ByteArrayInputStream(builder.toString().getBytes("UTF-8")); + } + private void attempt(QueueItem qi) { RCDiskWriter diskWriter = null; @@ -83,7 +102,8 @@ retrievalDelay = endFetchTime - startFetchTime; if (_validator != null) { - _validator.validate(new FileInputStream(diskWriter.getFile()), + + _validator.validate(getRecordStreamForValidation(diskWriter.getFile()), RecordCache.OAI_RECORD_SCHEMA_URL); validationDelay = System.currentTimeMillis() - endFetchTime; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-02-23 16:27:08
|
Revision: 32 http://proai.svn.sourceforge.net/proai/?rev=32&view=rev Author: cwilper Date: 2009-02-23 16:27:05 +0000 (Mon, 23 Feb 2009) Log Message: ----------- removed dev-142339; branch has been merged to trunk Removed Paths: ------------- branches/dev-142339/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-02-23 16:26:40
|
Revision: 31 http://proai.svn.sourceforge.net/proai/?rev=31&view=rev Author: cwilper Date: 2009-02-23 16:26:36 +0000 (Mon, 23 Feb 2009) Log Message: ----------- added tag for 1.1 release Added Paths: ----------- tags/release-1.1/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2009-02-23 16:24:21
|
Revision: 30 http://proai.svn.sourceforge.net/proai/?rev=30&view=rev Author: cwilper Date: 2009-02-23 16:24:13 +0000 (Mon, 23 Feb 2009) Log Message: ----------- merged in dev-142339. This branch did misc cleanup and testing improvements in prep for Fedora's OAIProvider service release v1.2 Modified Paths: -------------- trunk/build.properties trunk/src/java/proai/CloseableIterator.java trunk/src/java/proai/Proai.properties trunk/src/java/proai/cache/CachedRecordContentIterator.java trunk/src/java/proai/cache/Committer.java trunk/src/java/proai/cache/ParsedRecord.java trunk/src/java/proai/cache/RCDatabase.java trunk/src/java/proai/cache/RCDisk.java trunk/src/java/proai/cache/RecordCache.java trunk/src/java/proai/cache/StringResultIterator.java trunk/src/java/proai/cache/Updater.java trunk/src/java/proai/cache/Worker.java trunk/src/java/proai/driver/OAIDriver.java trunk/src/java/proai/driver/RemoteIterator.java trunk/src/java/proai/driver/impl/OAIDriverImpl.java trunk/src/java/proai/driver/impl/RecordImpl.java trunk/src/java/proai/driver/impl/RemoteIteratorImpl.java trunk/src/java/proai/error/BadArgumentException.java trunk/src/java/proai/error/BadResumptionTokenException.java trunk/src/java/proai/error/BadVerbException.java trunk/src/java/proai/error/CannotDisseminateFormatException.java trunk/src/java/proai/error/IdDoesNotExistException.java trunk/src/java/proai/error/ImmediateShutdownException.java trunk/src/java/proai/error/NoMetadataFormatsException.java trunk/src/java/proai/error/NoRecordsMatchException.java trunk/src/java/proai/error/NoSetHierarchyException.java trunk/src/java/proai/error/ProtocolException.java trunk/src/java/proai/error/RepositoryException.java trunk/src/java/proai/error/ServerException.java trunk/src/java/proai/service/CacheSession.java trunk/src/java/proai/service/ListProvider.java trunk/src/java/proai/service/ProviderServlet.java trunk/src/java/proai/service/RecordListProvider.java trunk/src/java/proai/service/Responder.java trunk/src/java/proai/service/Session.java trunk/src/java/proai/service/SessionManager.java trunk/src/java/proai/service/SetListProvider.java trunk/src/java/proai/service/SnapshotSession.java trunk/src/java/proai/test/OAIDriverImplTest.java trunk/src/java/proai/test/RecordCacheTest.java trunk/src/java/proai/test/ResponderTest.java trunk/src/java/proai/util/DDLConverter.java trunk/src/java/proai/util/McKoiDDLConverter.java trunk/src/java/proai/util/MySQLDDLConverter.java trunk/src/java/proai/util/OracleDDLConverter.java trunk/src/java/proai/util/PostgresDDLConverter.java trunk/src/java/proai/util/SetSpec.java trunk/src/java/proai/util/TableSpec.java trunk/src/java/proai/util/TableSpecDeserializer.java Added Paths: ----------- trunk/.classpath Copied: trunk/.classpath (from rev 29, branches/dev-142339/.classpath) =================================================================== --- trunk/.classpath (rev 0) +++ trunk/.classpath 2009-02-23 16:24:13 UTC (rev 30) @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/java"/> + <classpathentry kind="lib" path="lib/bvalid-0.8.1.jar"/> + <classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/> + <classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/> + <classpathentry kind="lib" path="lib/commons-dbcp-1.2.1.jar"/> + <classpathentry kind="lib" path="lib/commons-httpclient-3.1-beta1.jar"/> + <classpathentry kind="lib" path="lib/commons-logging.jar"/> + <classpathentry kind="lib" path="lib/commons-pool-1.2.jar"/> + <classpathentry kind="lib" path="lib/gnu-regexp-1.1.4.jar"/> + <classpathentry kind="lib" path="lib/javax.servlet-2.3.jar"/> + <classpathentry kind="lib" path="lib/junit.jar"/> + <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/> + <classpathentry kind="lib" path="lib/mckoidb.jar"/> + <classpathentry kind="lib" path="lib/mkjdbc.jar"/> + <classpathentry kind="lib" path="lib/mysql-connector-java-5.0.4-bin.jar"/> + <classpathentry kind="lib" path="lib/postgresql-8.2-504.jdbc3.jar"/> + <classpathentry kind="lib" path="lib/PropsToDocs.jar"/> + <classpathentry kind="lib" path="lib/xercesImpl.jar"/> + <classpathentry kind="lib" path="lib/xml-apis.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path="bin"/> +</classpath> Modified: trunk/build.properties =================================================================== --- trunk/build.properties 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/build.properties 2009-02-23 16:24:13 UTC (rev 30) @@ -4,8 +4,8 @@ optimize = off debug = on -source = 1.4 -target = 1.4 +source = 1.5 +target = 1.5 # # Libraries Modified: trunk/src/java/proai/CloseableIterator.java =================================================================== --- trunk/src/java/proai/CloseableIterator.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/CloseableIterator.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,11 +4,11 @@ import proai.error.ServerException; -public interface CloseableIterator extends Iterator { +public interface CloseableIterator<T> extends Iterator<T> { public boolean hasNext() throws ServerException; - public Object next() throws ServerException; + public T next() throws ServerException; public void close() throws ServerException; Modified: trunk/src/java/proai/Proai.properties =================================================================== --- trunk/src/java/proai/Proai.properties 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/Proai.properties 2009-02-23 16:24:13 UTC (rev 30) @@ -1,2 +1,2 @@ -proai.version = 1.0 +proai.version = 1.1 proai.buildDate = @buildDate@ Modified: trunk/src/java/proai/cache/CachedRecordContentIterator.java =================================================================== --- trunk/src/java/proai/cache/CachedRecordContentIterator.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/CachedRecordContentIterator.java 2009-02-23 16:24:13 UTC (rev 30) @@ -3,15 +3,15 @@ import proai.CloseableIterator; import proai.error.ServerException; -public class CachedRecordContentIterator implements CloseableIterator { +public class CachedRecordContentIterator implements CloseableIterator<CachedContent> { - private CloseableIterator m_arrays; + private CloseableIterator<String[]> m_arrays; private RCDisk m_rcDisk; private boolean m_identifiers; private boolean m_closed; - public CachedRecordContentIterator(CloseableIterator paths, + public CachedRecordContentIterator(CloseableIterator<String[]> paths, RCDisk rcDisk, boolean identifiers) { m_arrays = paths; @@ -25,10 +25,10 @@ return m_arrays.hasNext(); } - public Object next() throws ServerException { + public CachedContent next() throws ServerException { if (!hasNext()) return null; try { - String[] array = (String[]) m_arrays.next(); + String[] array = m_arrays.next(); return m_rcDisk.getContent(array[0], array[1], m_identifiers); } catch (Exception e) { close(); Modified: trunk/src/java/proai/cache/Committer.java =================================================================== --- trunk/src/java/proai/cache/Committer.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/Committer.java 2009-02-23 16:24:13 UTC (rev 30) @@ -30,9 +30,9 @@ private int _maxCommitQueueSize; private int _maxRecordsPerTransaction; - private Map _formatKeyMap; + private Map<String, Integer> _formatKeyMap; - private List _commitQueue; + private List<QueueItem> _commitQueue; private int _lastCommitQueueSize; /** @@ -66,7 +66,7 @@ _maxCommitQueueSize = maxCommitQueueSize; _maxRecordsPerTransaction = maxRecordsPerTransaction; - _commitQueue = new ArrayList(_maxCommitQueueSize); + _commitQueue = new ArrayList<QueueItem>(_maxCommitQueueSize); // get this now -- it won't change while the thread is running Connection conn = null; @@ -91,7 +91,7 @@ * @return whether the handoff was successful. The handoff will only * fail if the <code>Committer</code> thread has been stopped. */ - protected synchronized boolean handoff(List queueItems) { + protected synchronized boolean handoff(List<QueueItem> queueItems) { int toAddSize = queueItems.size(); while (!_finishedRunning && @@ -124,7 +124,7 @@ // phase one while (_updater.anyWorkersAreRunning()) { - List nextItems = getNextTransactionItems(); + List<QueueItem> nextItems = getNextTransactionItems(); while (nextItems == null && _updater.anyWorkersAreRunning()) { // wait for the queue to have items _LOG.debug("Commit queue is empty; waiting for worker(s)"); @@ -137,7 +137,7 @@ } // phase two - List lastItems = getNextTransactionItems(); + List<QueueItem> lastItems = getNextTransactionItems(); while (!_updater.processingShouldStop() && lastItems != null) { commit(lastItems); lastItems = getNextTransactionItems(); @@ -148,7 +148,7 @@ } - private void commit(List items) { + private void commit(List<QueueItem> items) { Connection conn = null; boolean startedTransaction = false; @@ -161,9 +161,8 @@ startedTransaction = true; // update the database for each record, as necessary - Iterator iter = items.iterator(); - while (iter.hasNext()) { - updateItem(conn, (QueueItem) iter.next()); + for (QueueItem item : items) { + updateItem(conn, item); } // set the estimated commit date for all added/modified records @@ -202,10 +201,9 @@ } // ...delete uncommitted files - Iterator toDelete = items.iterator(); - while (toDelete.hasNext()) { - ParsedRecord pr = ((QueueItem) toDelete.next()).getParsedRecord(); - if (pr != null) pr.deleteFile(); + for (QueueItem item : items) { + ParsedRecord pr = item.getParsedRecord(); + if (pr != null) pr.deleteFile(); } // ...then signal error to updater @@ -264,13 +262,13 @@ * * Otherwise, return <code>null</code>. */ - private List getNextTransactionItems() { + private List<QueueItem> getNextTransactionItems() { synchronized (_commitQueue) { if (_commitQueue.size() == 0) { return null; } else { - List nextItems = new ArrayList(); + List<QueueItem> nextItems = new ArrayList<QueueItem>(); while ( (_commitQueue.size() > 0) && (nextItems.size() < _maxRecordsPerTransaction) ) { nextItems.add(_commitQueue.remove(0)); @@ -279,7 +277,6 @@ return nextItems; } } - } Modified: trunk/src/java/proai/cache/ParsedRecord.java =================================================================== --- trunk/src/java/proai/cache/ParsedRecord.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/ParsedRecord.java 2009-02-23 16:24:13 UTC (rev 30) @@ -13,8 +13,6 @@ import org.xml.sax.helpers.DefaultHandler; import proai.Record; -import proai.Writable; -import proai.driver.impl.OAIDriverImpl; import proai.error.ServerException; import proai.util.StreamUtil; @@ -29,7 +27,7 @@ private File m_file; private Date m_date; - private List m_setSpecs; + private List<String> m_setSpecs; private SimpleDateFormat m_formatter1; private SimpleDateFormat m_formatter2; @@ -48,7 +46,7 @@ m_sourceInfo = sourceInfo; m_file = file; m_date = new Date(0); - m_setSpecs = new ArrayList(); + m_setSpecs = new ArrayList<String>(); m_formatter1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); m_formatter2 = new SimpleDateFormat("yyyy-MM-dd"); @@ -151,7 +149,7 @@ return m_date; } - public List getSetSpecs() { + public List<String> getSetSpecs() { return m_setSpecs; } Modified: trunk/src/java/proai/cache/RCDatabase.java =================================================================== --- trunk/src/java/proai/cache/RCDatabase.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/RCDatabase.java 2009-02-23 16:24:13 UTC (rev 30) @@ -12,12 +12,12 @@ import proai.CloseableIterator; import proai.MetadataFormat; +import proai.SetInfo; import proai.driver.impl.RemoteIteratorImpl; import proai.driver.impl.SetInfoImpl; import proai.error.ServerException; import proai.util.DBUtil; import proai.util.DDLConverter; -import proai.util.StreamUtil; import proai.util.TableSpec; /** @@ -278,12 +278,13 @@ } } - public List getFormats(Connection conn) throws ServerException { + public List<CachedMetadataFormat> getFormats(Connection conn) throws ServerException { return getFormats(conn, null); } - public List getFormats(Connection conn, String identifier) throws ServerException { - List list = new ArrayList(); + public List<CachedMetadataFormat> getFormats(Connection conn, String identifier) + throws ServerException { + List<CachedMetadataFormat> list = new ArrayList<CachedMetadataFormat>(); Statement stmt = null; ResultSet rs = null; try { @@ -316,10 +317,10 @@ * Get a map of prefix (String) to formatKey (Integer) for all formats * in the database. */ - public Map getFormatKeyMap(Connection conn) throws ServerException { + public Map<String, Integer> getFormatKeyMap(Connection conn) throws ServerException { - Map map = new HashMap(); - Iterator iter = getFormats(conn).iterator(); + Map<String, Integer> map = new HashMap<String, Integer>(); + Iterator<CachedMetadataFormat> iter = getFormats(conn).iterator(); while (iter.hasNext()) { CachedMetadataFormat format = (CachedMetadataFormat) iter.next(); map.put(format.getPrefix(), new Integer(format.getKey())); @@ -394,8 +395,8 @@ } } - public List getSetInfo(Connection conn) throws ServerException { - List list = new ArrayList(); + public List<SetInfo> getSetInfo(Connection conn) throws ServerException { + List<SetInfo> list = new ArrayList<SetInfo>(); Statement stmt = null; ResultSet rs = null; try { @@ -414,8 +415,8 @@ } // return a closeableiterator of string[] (path) - public List getSetInfoPaths(Connection conn) throws ServerException { - List list = new ArrayList(); + public List<String[]> getSetInfoPaths(Connection conn) throws ServerException { + List<String[]> list = new ArrayList<String[]>(); Statement stmt = null; ResultSet rs = null; try { @@ -492,7 +493,7 @@ */ public void putRecord(Connection conn, ParsedRecord rec, - Map formatKeyMap) throws ServerException { + Map<String, Integer> formatKeyMap) throws ServerException { String xmlPath = rec.getSourceInfo(); Statement stmt = null; ResultSet rs = null; @@ -542,7 +543,7 @@ // Modified rcRecord. Now list the ids of the sets it WAS in, // and rectify that with the ones it's NOW in - List priorSetKeys = new ArrayList(); + List<Integer> priorSetKeys = new ArrayList<Integer>(); rs = executeQuery(stmt, "SELECT setKey from rcMembership WHERE recordKey = " + recordKey); while (rs.next()) { priorSetKeys.add(new Integer(rs.getInt(1))); @@ -561,9 +562,9 @@ } // which sets is the record no longer a member of? - Iterator liter = priorSetKeys.iterator(); + Iterator<Integer> liter = priorSetKeys.iterator(); while (liter.hasNext()) { - Integer priorSetKey = (Integer) liter.next(); + Integer priorSetKey = liter.next(); int psk = priorSetKey.intValue(); boolean noLongerInSet = true; for (int i = 0; i < setKeys.length; i++) { @@ -608,16 +609,16 @@ } } - private int[] getSetKeys(Statement stmt, List specs) throws ServerException { + private int[] getSetKeys(Statement stmt, List<String> specs) throws ServerException { ResultSet rs = null; try { int[] keys = new int[specs.size()]; for (int i = 0; i < specs.size(); i++) { - rs = executeQuery(stmt, "SELECT setKey from rcSet WHERE setSpec = " + qs((String) specs.get(i))); + rs = executeQuery(stmt, "SELECT setKey from rcSet WHERE setSpec = " + qs(specs.get(i))); if (rs.next()) { keys[i] = rs.getInt(1); } else { - throw new ServerException("Record contains setSpec not listed sets: " + (String) specs.get(i)); + throw new ServerException("Record contains setSpec not listed sets: " + specs.get(i)); } } return keys; @@ -709,7 +710,7 @@ // the responsibility of releasing the connection in some cases. // In particular, if this method does NOT return an iterator // that is attached to a ResultSet, it must release the connection. - public CloseableIterator findRecordInfo(Connection conn, + public CloseableIterator<String[]> findRecordInfo(Connection conn, Date from, Date until, String prefix, @@ -733,7 +734,7 @@ // no such format -- return an empty iterator try { rs.close(); } catch (Exception e) { } try { stmt.close(); } catch (Exception e) { } - return new RemoteIteratorImpl(new ArrayList().iterator()); + return new RemoteIteratorImpl<String[]>(new ArrayList<String[]>().iterator()); } int formatKey = rs.getInt(1); rs.close(); @@ -746,7 +747,7 @@ // no such set -- return an empty iterator try { rs.close(); } catch (Exception e) { } try { stmt.close(); } catch (Exception e) { } - return new RemoteIteratorImpl(new ArrayList().iterator()); + return new RemoteIteratorImpl<String[]>(new ArrayList<String[]>().iterator()); } setKey = rs.getInt(1); rs.close(); @@ -807,25 +808,25 @@ private void createTables(Connection conn, DDLConverter ddlc) throws ServerException { logger.debug("Creating tables..."); - List specs; + List<TableSpec> specs; try { InputStream in = this.getClass().getResourceAsStream("/dbspec.xml"); specs = TableSpec.getTableSpecs(in); } catch (Exception e) { throw new ServerException("Unable to initialize tablespecs", e); } - List createdCommands = new ArrayList(); - Iterator iter = specs.iterator(); + List<String> createdCommands = new ArrayList<String>(); + Iterator<TableSpec> iter = specs.iterator(); Statement stmt = null; String tableName = null; String command = null; try { stmt = getStatement(conn, false); while (iter.hasNext()) { - TableSpec spec = (TableSpec) iter.next(); + TableSpec spec = iter.next(); tableName = spec.getName(); logger.info("Creating " + tableName + " table"); - List commands = ddlc.getDDL(spec); + List<String> commands = ddlc.getDDL(spec); for (int i = 0; i < commands.size(); i++) { command = (String) commands.get(i); executeUpdate(stmt, command); Modified: trunk/src/java/proai/cache/RCDisk.java =================================================================== --- trunk/src/java/proai/cache/RCDisk.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/RCDisk.java 2009-02-23 16:24:13 UTC (rev 30) @@ -8,7 +8,6 @@ import proai.Writable; import proai.error.ServerException; -import proai.util.StreamUtil; /** * The file-based portion of the record cache. Modified: trunk/src/java/proai/cache/RecordCache.java =================================================================== --- trunk/src/java/proai/cache/RecordCache.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/RecordCache.java 2009-02-23 16:24:13 UTC (rev 30) @@ -16,7 +16,6 @@ import net.sf.bvalid.catalog.SchemaIndex; import net.sf.bvalid.locator.SchemaLocator; import net.sf.bvalid.locator.CachingSchemaLocator; -import net.sf.bvalid.locator.CatalogSchemaLocator; import net.sf.bvalid.locator.URLSchemaLocator; import org.apache.commons.dbcp.BasicDataSource; @@ -26,11 +25,9 @@ import proai.CloseableIterator; import proai.MetadataFormat; -import proai.Record; import proai.SetInfo; import proai.Writable; import proai.driver.OAIDriver; -import proai.driver.RemoteIterator; import proai.error.ServerException; import proai.util.DDLConverter; import proai.util.StreamUtil; @@ -82,7 +79,6 @@ private Updater m_updater; private OAIDriver m_driver; private File m_baseDir; - private Validator m_validator; private RCDatabase m_rcdb; private RCDisk m_rcDisk; @@ -91,11 +87,7 @@ String baseDir = getRequiredParam(props, PROP_BASEDIR); String oaiDriverClassName = getRequiredParam(props, PROP_OAIDRIVERCLASSNAME); - String pollSeconds = getRequiredParam(props, PROP_POLLSECONDS); - String dbURL = getRequiredParam(props, PROP_DB_URL); String dbDriverClassName = getRequiredParam(props, PROP_DB_DRIVERCLASSNAME); - String dbUsername = getRequiredParam(props, PROP_DB_USERNAME); - String dbPassword = getRequiredParam(props, PROP_DB_PASSWORD); boolean mySQLTrickling = false; String mt = props.getProperty(PROP_DB_MYSQL_TRICKLING); @@ -129,7 +121,7 @@ .createDataSource(getDBProperties(props, false)); pool.setDriverClassName(dbDriverClassName); Properties connProps = getDBProperties(props, true); - Enumeration e = connProps.propertyNames(); + Enumeration<?> e = connProps.propertyNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); pool.addConnectionProperty(name, (String) connProps.getProperty(name)); @@ -266,7 +258,7 @@ } } - Map opts = new HashMap(); + Map<ValidatorOption, String> opts = new HashMap<ValidatorOption, String>(); opts.put(ValidatorOption.CACHE_PARSED_GRAMMARS, "true"); try { validator = ValidatorFactory.getValidator(SchemaLanguage.XSD, @@ -396,7 +388,7 @@ private static final Properties getDBProperties(Properties props, boolean conn) { Properties dbProps = new Properties(); - Enumeration e = props.propertyNames(); + Enumeration<?> e = props.propertyNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); if (name.startsWith(dbpfx)) { @@ -468,7 +460,7 @@ Connection conn = null; try { conn = getConnection(); - List formats = m_rcdb.getFormats(conn, identifier); + List<CachedMetadataFormat> formats = m_rcdb.getFormats(conn, identifier); if (identifier != null && formats.size() == 0) return null; return new CachedContent(getFormatsXMLString(formats)); } catch (SQLException e) { @@ -478,12 +470,12 @@ } } - public CloseableIterator getSetInfoContent() throws ServerException { + public CloseableIterator<SetInfo> getSetInfoContent() throws ServerException { Connection conn = null; try { conn = getConnection(); - List list = m_rcdb.getSetInfo(conn); - CloseableIterator setInfo = new proai.driver.impl.RemoteIteratorImpl(list.iterator()); + List<SetInfo> list = m_rcdb.getSetInfo(conn); + CloseableIterator<SetInfo> setInfo = new proai.driver.impl.RemoteIteratorImpl<SetInfo>(list.iterator()); return setInfo; } catch (SQLException e) { throw new ServerException("Error getting a database connection", e); @@ -492,12 +484,12 @@ } } - public CloseableIterator getSetInfoPaths() throws ServerException { + public CloseableIterator<String[]> getSetInfoPaths() throws ServerException { Connection conn = null; try { conn = getConnection(); - List list = m_rcdb.getSetInfoPaths(conn); - CloseableIterator setInfo = new proai.driver.impl.RemoteIteratorImpl(list.iterator()); + List<String[]> list = m_rcdb.getSetInfoPaths(conn); + CloseableIterator<String[]> setInfo = new proai.driver.impl.RemoteIteratorImpl<String[]>(list.iterator()); return setInfo; } catch (SQLException e) { throw new ServerException("Error getting a database connection", e); @@ -506,7 +498,7 @@ } } - public CloseableIterator getRecordsContent(Date from, + public CloseableIterator<CachedContent> getRecordsContent(Date from, Date until, String prefix, String set, @@ -531,7 +523,7 @@ } } - public CloseableIterator getRecordsPaths(Date from, + public CloseableIterator<String[]> getRecordsPaths(Date from, Date until, String prefix, String set) throws ServerException { @@ -556,9 +548,9 @@ Connection conn = null; try { conn = getConnection(); - Iterator iter = m_rcdb.getFormats(conn).iterator(); + Iterator<CachedMetadataFormat> iter = m_rcdb.getFormats(conn).iterator(); while (iter.hasNext()) { - MetadataFormat fmt = (MetadataFormat) iter.next(); + MetadataFormat fmt = iter.next(); if (fmt.getPrefix().equals(mdPrefix)) return true; } return false; @@ -569,12 +561,12 @@ } } - private String getFormatsXMLString(List formats) { + private String getFormatsXMLString(List<? extends MetadataFormat> formats) { StringBuffer buf = new StringBuffer(); buf.append("<ListMetadataFormats>\n"); - Iterator iter = formats.iterator(); + Iterator<? extends MetadataFormat> iter = formats.iterator(); while (iter.hasNext()) { - MetadataFormat fmt = (MetadataFormat) iter.next(); + MetadataFormat fmt = iter.next(); buf.append(" <metadataFormat>\n"); buf.append(" <metadataPrefix>" + fmt.getPrefix() + "</metadataPrefix>\n"); buf.append(" <schema>" + fmt.getSchemaLocation() + "</schema>\n"); Modified: trunk/src/java/proai/cache/StringResultIterator.java =================================================================== --- trunk/src/java/proai/cache/StringResultIterator.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/StringResultIterator.java 2009-02-23 16:24:13 UTC (rev 30) @@ -24,7 +24,7 @@ * The first is the relative filesystem path and the second is an * ISO8601-formatted date (second precision). */ -public class StringResultIterator implements CloseableIterator { +public class StringResultIterator implements CloseableIterator<String[]> { private static final Logger logger = Logger.getLogger(StringResultIterator.class.getName()); @@ -54,7 +54,7 @@ return m_nextStringArray != null; } - public Object next() throws ServerException { + public String[] next() throws ServerException { String[] next = m_nextStringArray; m_nextStringArray = getNext(); return next; Modified: trunk/src/java/proai/cache/Updater.java =================================================================== --- trunk/src/java/proai/cache/Updater.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/Updater.java 2009-02-23 16:24:13 UTC (rev 30) @@ -19,7 +19,6 @@ import proai.error.ServerException; import proai.error.ImmediateShutdownException; import proai.util.SetSpec; -import proai.util.StreamUtil; public class Updater extends Thread { @@ -33,7 +32,6 @@ private int _maxRecordsPerTransaction; private OAIDriver _driver; - private RecordCache _cache; private RCDatabase _db; private RCDisk _disk; private Validator _validator; @@ -59,7 +57,6 @@ int maxRecordsPerTransaction, Validator validator) { _driver = driver; - _cache = cache; _db = db; _disk = disk; @@ -165,15 +162,12 @@ int pruneKey = Integer.parseInt(parts[0]); File file = _disk.getFile(parts[1]); - // attempt to delete from disk - boolean removeFromPruneList = true; if (file.exists()) { boolean deleted = file.delete(); if (deleted) { _LOG.debug("Deleted old cache file: " + parts[1]); } else { _LOG.warn("Unable to delete old cache file (will try again later): " + parts[1]); - removeFromPruneList = false; } } else { _LOG.debug("No need to delete non-existing old cache file: " + parts[1]); @@ -260,7 +254,7 @@ updateIdentify(conn); checkImmediateShutdown(); - List allPrefixes = updateFormats(conn); + List<String> allPrefixes = updateFormats(conn); checkImmediateShutdown(); updateSets(conn); @@ -311,13 +305,13 @@ * <p>This will add any new formats, modify any changed formats, * and delete any no-longer-existing formats (and associated records). */ - private List updateFormats(Connection conn) throws Exception { + private List<String> updateFormats(Connection conn) throws Exception { _LOG.info("Updating metadata formats..."); // apply new / updated - RemoteIterator riter = _driver.listMetadataFormats(); - List newPrefixes = new ArrayList(); + RemoteIterator<? extends MetadataFormat> riter = _driver.listMetadataFormats(); + List<String> newPrefixes = new ArrayList<String>(); try { while (riter.hasNext()) { @@ -335,10 +329,10 @@ } // apply deleted - Iterator iter = _db.getFormats(conn).iterator(); + Iterator<CachedMetadataFormat> iter = _db.getFormats(conn).iterator(); while (iter.hasNext()) { - CachedMetadataFormat format = (CachedMetadataFormat) iter.next(); + CachedMetadataFormat format = iter.next(); String oldPrefix = format.getPrefix(); if (!newPrefixes.contains(oldPrefix)) { @@ -361,9 +355,9 @@ _LOG.info("Updating sets..."); // apply new / updated - RemoteIterator riter = _driver.listSetInfo(); - Set newSpecs = new HashSet (); - Set missingSpecs = new HashSet (); + RemoteIterator<? extends SetInfo> riter = _driver.listSetInfo(); + Set<String> newSpecs = new HashSet<String> (); + Set<String> missingSpecs = new HashSet<String> (); try { while (riter.hasNext()) { @@ -397,16 +391,14 @@ } /* Add any sets that are IMPLIED to exist, but weren't defined */ - for (Iterator i = missingSpecs.iterator(); i.hasNext();) { - String possiblyMissing = (String) i.next(); + for (String possiblyMissing : missingSpecs) { if (!SetSpec.isValid(possiblyMissing)) { throw new RepositoryException("SetSpec '" + possiblyMissing + "' is malformed"); } - for (Iterator m = SetSpec.allSetsFor(possiblyMissing).iterator(); m.hasNext();) { - String spec = (String) m.next(); + for (String spec : SetSpec.allSetsFor(possiblyMissing)) { if (!newSpecs.contains(spec)) { _db.putSetInfo(conn, spec, _disk.write( SetSpec.defaultInfoFor(spec))); @@ -417,7 +409,7 @@ } // apply deleted - Iterator iter = _db.getSetInfo(conn).iterator(); + Iterator<SetInfo> iter = _db.getSetInfo(conn).iterator(); while (iter.hasNext()) { String oldSpec = ((SetInfo) iter.next()).getSetSpec(); @@ -430,18 +422,16 @@ } private void queueUpdatedRecords(Connection conn, - List allPrefixes, + List<String> allPrefixes, long latestRemoteDate) throws Exception { _LOG.info("Querying and queueing updated records..."); long queueStartTime = System.currentTimeMillis(); int totalQueuedCount = 0; - - Iterator iter = allPrefixes.iterator(); - while (iter.hasNext()) { - - String mdPrefix = (String) iter.next(); +; + for (String mdPrefix : allPrefixes) { + long lastPollDate = _db.getLastPollDate(conn, mdPrefix); // if something may have changed remotely *after* the last @@ -453,7 +443,7 @@ + lastPollDate + " is less than " + latestRemoteDate); checkImmediateShutdown(); - RemoteIterator riter = _driver.listRecords(new Date(lastPollDate), + RemoteIterator<? extends Record> riter = _driver.listRecords(new Date(lastPollDate), new Date(latestRemoteDate), mdPrefix); try { @@ -462,7 +452,7 @@ while (riter.hasNext()) { - Record record = (Record) riter.next(); + Record record = riter.next(); checkImmediateShutdown(); _db.queueRemoteRecord(conn, record.getItemID(), @@ -634,9 +624,9 @@ } // return null if no more batches or processing should stop - protected List getNextBatch(List finishedItems) { + protected List<QueueItem> getNextBatch(List<QueueItem> finishedItems) { - List nextBatch = null; + List<QueueItem> nextBatch = null; if (!processingShouldStop()) { @@ -647,7 +637,7 @@ try { synchronized (_queueIterator) { if (_queueIterator.hasNext()) { - nextBatch = new ArrayList(); + nextBatch = new ArrayList<QueueItem>(); while (_queueIterator.hasNext() && nextBatch.size() < _maxWorkBatchSize) { nextBatch.add(_queueIterator.next()); Modified: trunk/src/java/proai/cache/Worker.java =================================================================== --- trunk/src/java/proai/cache/Worker.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/cache/Worker.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,7 +4,6 @@ import java.util.*; import net.sf.bvalid.Validator; -import net.sf.bvalid.ValidationException; import org.apache.log4j.Logger; @@ -42,14 +41,14 @@ _LOG.info("Worker started"); - List queueItems = _updater.getNextBatch(null); + List<QueueItem> queueItems = _updater.getNextBatch(null); while (queueItems != null && !_updater.processingShouldStop()) { - Iterator iter = queueItems.iterator(); + Iterator<QueueItem> iter = queueItems.iterator(); while (iter.hasNext() && !_updater.processingShouldStop()) { - attempt((QueueItem) iter.next()); + attempt(iter.next()); } if (!_updater.processingShouldStop()) { Modified: trunk/src/java/proai/driver/OAIDriver.java =================================================================== --- trunk/src/java/proai/driver/OAIDriver.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/driver/OAIDriver.java 2009-02-23 16:24:13 UTC (rev 30) @@ -56,7 +56,7 @@ * * @see proai.MetadataFormat */ - public RemoteIterator listMetadataFormats() throws RepositoryException; + public RemoteIterator<? extends MetadataFormat> listMetadataFormats() throws RepositoryException; /** * Get an iterator over a list of SetInfo objects representing all @@ -71,7 +71,7 @@ * * @see proai.SetInfo */ - public RemoteIterator listSetInfo() throws RepositoryException; + public RemoteIterator<? extends SetInfo> listSetInfo() throws RepositoryException; /** * Get an iterator of <code>Record</code> objects representing all records @@ -84,7 +84,7 @@ * * @see proai.Record */ - public RemoteIterator listRecords(Date from, + public RemoteIterator<? extends Record> listRecords(Date from, Date until, String mdPrefix) throws RepositoryException; Modified: trunk/src/java/proai/driver/RemoteIterator.java =================================================================== --- trunk/src/java/proai/driver/RemoteIterator.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/driver/RemoteIterator.java 2009-02-23 16:24:13 UTC (rev 30) @@ -3,11 +3,11 @@ import proai.CloseableIterator; import proai.error.RepositoryException; -public interface RemoteIterator extends CloseableIterator { +public interface RemoteIterator<T> extends CloseableIterator<T> { public boolean hasNext() throws RepositoryException; - public Object next() throws RepositoryException; + public T next() throws RepositoryException; public void close() throws RepositoryException; Modified: trunk/src/java/proai/driver/impl/OAIDriverImpl.java =================================================================== --- trunk/src/java/proai/driver/impl/OAIDriverImpl.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/driver/impl/OAIDriverImpl.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,10 +4,12 @@ import java.text.*; import java.util.*; +import proai.MetadataFormat; +import proai.Record; +import proai.SetInfo; import proai.driver.OAIDriver; import proai.driver.RemoteIterator; import proai.error.RepositoryException; -import proai.util.StreamUtil; /** * An simple OAIDriver for testing/demonstration purposes. @@ -108,18 +110,20 @@ return new Date(latest); } - public RemoteIterator listMetadataFormats() { - return new RemoteIteratorImpl(getMetadataFormatCollection().iterator()); + public RemoteIterator<MetadataFormat> listMetadataFormats() { + return new RemoteIteratorImpl<MetadataFormat>( + getMetadataFormatCollection().iterator()); } - public RemoteIterator listSetInfo() { - return new RemoteIteratorImpl(getSetInfoCollection().iterator()); + public RemoteIterator<SetInfo> listSetInfo() { + return new RemoteIteratorImpl<SetInfo>( + getSetInfoCollection().iterator()); } - public RemoteIterator listRecords(Date from, + public RemoteIterator<Record> listRecords(Date from, Date until, String mdPrefix) { - return new RemoteIteratorImpl(getRecordCollection(from, + return new RemoteIteratorImpl<Record>(getRecordCollection(from, until, mdPrefix).iterator()); } @@ -155,9 +159,9 @@ } } - private Collection getSetInfoCollection() { + private Collection<SetInfo> getSetInfoCollection() { try { - List list = new ArrayList(); + List<SetInfo> list = new ArrayList<SetInfo>(); String[] names = m_setsDir.list(); for (int i = 0; i < names.length; i++) { if (names[i].endsWith(".xml")) { @@ -172,9 +176,9 @@ } } - private Collection getMetadataFormatCollection() { + private Collection<MetadataFormat> getMetadataFormatCollection() { try { - List list = new ArrayList(); + List<MetadataFormat> list = new ArrayList<MetadataFormat>(); String[] names = m_formatsDir.list(); for (int i = 0; i < names.length; i++) { if (names[i].endsWith(".txt")) { @@ -203,12 +207,11 @@ } } - private Collection getRecordCollection(Date from, + private Collection<Record> getRecordCollection(Date from, Date until, String mdPrefix) { - List list = new ArrayList(); + List<Record> list = new ArrayList<Record>(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss"); - long latest = 0; String[] names = m_recordsDir.list(); for (int i = 0; i < names.length; i++) { String[] temp = names[i].replaceFirst("-", " ") Modified: trunk/src/java/proai/driver/impl/RecordImpl.java =================================================================== --- trunk/src/java/proai/driver/impl/RecordImpl.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/driver/impl/RecordImpl.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,11 +1,8 @@ package proai.driver.impl; import java.io.File; -import java.io.PrintWriter; import proai.Record; -import proai.Writable; -import proai.error.ServerException; public class RecordImpl implements Record { Modified: trunk/src/java/proai/driver/impl/RemoteIteratorImpl.java =================================================================== --- trunk/src/java/proai/driver/impl/RemoteIteratorImpl.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/driver/impl/RemoteIteratorImpl.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,11 +4,11 @@ import proai.driver.RemoteIterator; -public class RemoteIteratorImpl implements RemoteIterator { +public class RemoteIteratorImpl<T> implements RemoteIterator<T> { - private Iterator m_iter; + private Iterator<T> m_iter; - public RemoteIteratorImpl(Iterator iter) { + public RemoteIteratorImpl(Iterator<T> iter) { m_iter = iter; } @@ -16,7 +16,7 @@ return m_iter.hasNext(); } - public Object next() { + public T next() { return m_iter.next(); } Modified: trunk/src/java/proai/error/BadArgumentException.java =================================================================== --- trunk/src/java/proai/error/BadArgumentException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/BadArgumentException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class BadArgumentException extends ProtocolException { - + static final long serialVersionUID = 1; + public BadArgumentException() { super("The request includes illegal arguments, is missing required arguments, includes a repeated argument, or values for arguments have an illegal syntax."); } Modified: trunk/src/java/proai/error/BadResumptionTokenException.java =================================================================== --- trunk/src/java/proai/error/BadResumptionTokenException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/BadResumptionTokenException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class BadResumptionTokenException extends ProtocolException { - + static final long serialVersionUID = 1; + public BadResumptionTokenException() { super("The value of the resumptionToken argument is invalid or expired."); } Modified: trunk/src/java/proai/error/BadVerbException.java =================================================================== --- trunk/src/java/proai/error/BadVerbException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/BadVerbException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class BadVerbException extends ProtocolException { - + static final long serialVersionUID = 1; + public BadVerbException() { super("Value of the verb argument is not a legal OAI-PMH verb, the verb argument is missing, or the verb argument is repeated."); } Modified: trunk/src/java/proai/error/CannotDisseminateFormatException.java =================================================================== --- trunk/src/java/proai/error/CannotDisseminateFormatException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/CannotDisseminateFormatException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class CannotDisseminateFormatException extends ProtocolException { - + static final long serialVersionUID = 1; + public CannotDisseminateFormatException() { super("The metadata format identified by the value given for the metadataPrefix argument is not supported by the item or by the repository."); } Modified: trunk/src/java/proai/error/IdDoesNotExistException.java =================================================================== --- trunk/src/java/proai/error/IdDoesNotExistException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/IdDoesNotExistException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class IdDoesNotExistException extends ProtocolException { - + static final long serialVersionUID = 1; + public IdDoesNotExistException() { super("The value of the identifier argument is unknown or illegal in this repository."); } Modified: trunk/src/java/proai/error/ImmediateShutdownException.java =================================================================== --- trunk/src/java/proai/error/ImmediateShutdownException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/ImmediateShutdownException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,7 +4,8 @@ * Signals that an immediate shutdown has been requested. */ public class ImmediateShutdownException extends RuntimeException { - + static final long serialVersionUID = 1; + public ImmediateShutdownException() { super(); } Modified: trunk/src/java/proai/error/NoMetadataFormatsException.java =================================================================== --- trunk/src/java/proai/error/NoMetadataFormatsException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/NoMetadataFormatsException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class NoMetadataFormatsException extends ProtocolException { - + static final long serialVersionUID = 1; + public NoMetadataFormatsException() { super("There are no metadata formats available for the specified item."); } Modified: trunk/src/java/proai/error/NoRecordsMatchException.java =================================================================== --- trunk/src/java/proai/error/NoRecordsMatchException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/NoRecordsMatchException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class NoRecordsMatchException extends ProtocolException { - + static final long serialVersionUID = 1; + public NoRecordsMatchException() { super("The combination of the values of the from, until, set and metadataPrefix arguments results in an empty list."); } Modified: trunk/src/java/proai/error/NoSetHierarchyException.java =================================================================== --- trunk/src/java/proai/error/NoSetHierarchyException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/NoSetHierarchyException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class NoSetHierarchyException extends ProtocolException { - + static final long serialVersionUID = 1; + public NoSetHierarchyException() { super("The repository does not support sets."); } Modified: trunk/src/java/proai/error/ProtocolException.java =================================================================== --- trunk/src/java/proai/error/ProtocolException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/ProtocolException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public abstract class ProtocolException extends ServerException { - + static final long serialVersionUID = 1; + public ProtocolException(String message) { super(message); } Modified: trunk/src/java/proai/error/RepositoryException.java =================================================================== --- trunk/src/java/proai/error/RepositoryException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/RepositoryException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -1,7 +1,8 @@ package proai.error; public class RepositoryException extends ServerException { - + static final long serialVersionUID = 1; + public RepositoryException(String message) { super(message); } Modified: trunk/src/java/proai/error/ServerException.java =================================================================== --- trunk/src/java/proai/error/ServerException.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/error/ServerException.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,7 +4,8 @@ * Signals an unexpected condition with the server. */ public class ServerException extends RuntimeException { - + static final long serialVersionUID = 1; + public ServerException(String message) { super(message); } Modified: trunk/src/java/proai/service/CacheSession.java =================================================================== --- trunk/src/java/proai/service/CacheSession.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/service/CacheSession.java 2009-02-23 16:24:13 UTC (rev 30) @@ -9,7 +9,7 @@ import proai.cache.*; import proai.error.*; -public class CacheSession extends Thread +public class CacheSession<T> extends Thread implements Session { private static final Logger _LOG = @@ -18,7 +18,7 @@ private SessionManager _manager; private File _baseDir; private int _secondsBetweenRequests; - private ListProvider _provider; + private ListProvider<T> _provider; private String _sessionKey; @@ -34,7 +34,7 @@ public CacheSession(SessionManager manager, File baseDir, int secondsBetweenRequests, - ListProvider provider) { + ListProvider<T> provider) { _manager = manager; _baseDir = baseDir; _secondsBetweenRequests = secondsBetweenRequests; @@ -63,9 +63,8 @@ public void run() { _LOG.info(_sessionKey + " retrieval thread started"); - RecordCache cache = _provider.getRecordCache(); int incompleteListSize = _provider.getIncompleteListSize(); - CloseableIterator iter = null; + CloseableIterator<String[]> iter = null; PrintWriter out = null; try { iter = _provider.getPathList(); // if empty, the impl should throw the right exception here Modified: trunk/src/java/proai/service/ListProvider.java =================================================================== --- trunk/src/java/proai/service/ListProvider.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/service/ListProvider.java 2009-02-23 16:24:13 UTC (rev 30) @@ -4,12 +4,12 @@ import proai.cache.*; import proai.error.*; -public interface ListProvider { +public interface ListProvider<T> { - public CloseableIterator getList() throws ServerException; + public CloseableIterator<T> getList() throws ServerException; // abbreviated form of above -- gets String[]s of ("cachePath" [, "dateString"]) - public CloseableIterator getPathList() throws ServerException; + public CloseableIterator<String[]> getPathList() throws ServerException; public RecordCache getRecordCache(); Modified: trunk/src/java/proai/service/ProviderServlet.java =================================================================== --- trunk/src/java/proai/service/ProviderServlet.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/service/ProviderServlet.java 2009-02-23 16:24:13 UTC (rev 30) @@ -17,6 +17,7 @@ import proai.util.StreamUtil; public class ProviderServlet extends HttpServlet { + static final long serialVersionUID = 1; private static final Logger logger = Logger.getLogger(ProviderServlet.class.getName()); @@ -32,6 +33,7 @@ /** * Entry point for handling OAI requests. */ + @SuppressWarnings("unchecked") public void doGet(HttpServletRequest request, HttpServletResponse response) { @@ -218,27 +220,11 @@ } } - private void sendBusy(HttpServletResponse response) { - try { - response.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE); - response.setHeader("Retry-After", "" + m_retrySeconds); - response.setContentType("text/plain; charset=UTF-8"); - PrintWriter writer = response.getWriter(); - writer.println("The OAI provider is too busy. Try again in " + m_retrySeconds + " seconds."); - writer.flush(); - writer.close(); - } catch (Throwable th) { - logger.warn("Error while sending SERVICE_UNAVAILABLE (503) response", th); - } - } - public void doPost(HttpServletRequest request, HttpServletResponse response) { doGet(request, response); } - private int m_retrySeconds; - private Responder m_responder; public void init() throws ServletException { @@ -257,7 +243,6 @@ public void init(Properties props) throws ServerException { m_responder = new Responder(props); - m_retrySeconds = 60; } /** Modified: trunk/src/java/proai/service/RecordListProvider.java =================================================================== --- trunk/src/java/proai/service/RecordListProvider.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/service/RecordListProvider.java 2009-02-23 16:24:13 UTC (rev 30) @@ -6,7 +6,7 @@ import proai.cache.*; import proai.error.*; -public class RecordListProvider implements ListProvider { +public class RecordListProvider implements ListProvider<CachedContent> { private RecordCache m_cache; private int m_incompleteListSize; @@ -33,12 +33,12 @@ m_set = set; } - public CloseableIterator getList() throws + public CloseableIterator<CachedContent> getList() throws CannotDisseminateFormatException, NoRecordsMatchException, NoSetHierarchyException, ServerException { - CloseableIterator iter = m_cache.getRecordsContent(m_from, + CloseableIterator<CachedContent> iter = m_cache.getRecordsContent(m_from, m_until, m_prefix, m_set, @@ -49,7 +49,7 @@ throw new CannotDisseminateFormatException(Responder.ERR_NO_SUCH_FORMAT); } if (m_set != null) { - CloseableIterator sic = m_cache.getSetInfoContent(); + CloseableIterator<SetInfo> sic = m_cache.getSetInfoContent(); boolean supportsSets = sic.hasNext(); try { sic.close(); } catch (Exception e) { } if (!supportsSets) { @@ -59,12 +59,12 @@ throw new NoRecordsMatchException(Responder.ERR_NO_RECORDS_MATCH); } - public CloseableIterator getPathList() throws + public CloseableIterator<String[]> getPathList() throws CannotDisseminateFormatException, NoRecordsMatchException, NoSetHierarchyException, ServerException { - CloseableIterator iter = m_cache.getRecordsPaths(m_from, + CloseableIterator<String[]> iter = m_cache.getRecordsPaths(m_from, m_until, m_prefix, m_set); @@ -74,7 +74,7 @@ throw new CannotDisseminateFormatException(Responder.ERR_NO_SUCH_FORMAT); } if (m_set != null) { - CloseableIterator sic = m_cache.getSetInfoContent(); + CloseableIterator<SetInfo> sic = m_cache.getSetInfoContent(); boolean supportsSets = sic.hasNext(); try { sic.close(); } catch (Exception e) { } if (!supportsSets) { Modified: trunk/src/java/proai/service/Responder.java =================================================================== --- trunk/src/java/proai/service/Responder.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/java/proai/service/Responder.java 2009-02-23 16:24:13 UTC (rev 30) @@ -251,7 +251,7 @@ checkGranularity(from, until); checkFromUntil(fromDate, untilDate); checkMetadataPrefix(metadataPrefix); - ListProvider provider = new RecordListProvider(m_cache, + ListProvider<CachedContent> provider = new RecordListProvider(m_cache, incompleteListSize, identifiersOnly, fromDate, @@ -388,7 +388,7 @@ } try { if (resumptionToken == null) { - ListProvider provider = new SetListProvider(m_cache, m_incompleteSetListSize); + ListProvider<SetInfo> provider = new SetListProvider(m_cache, m_incompleteSetListSize); return m_sessionManager.list(provider); } else { return m_sessionManager.getResponseData(resumptionToken); Modified: trunk/src/java/proai/service/Session.java =================================================================== --- trunk/src/java/proai/service/Session.java 2008-03-04 21:15:21 UTC (rev 29) +++ trunk/src/jav... [truncated message content] |
From: Ganesh N R Y. <Gan...@nl...> - 2007-10-09 11:42:20
|
Hi Chris, There has been a discussion on creating custom set based on datastream elements instead of using rels-ext. driver.fedora.itemID = dc:identifier driver.fedora.setSpec = dc:type driver.fedora.setSpec.name = dc:type driver.fedora.setSpec.desc.dissType = info:fedora/*/SetInfo.xml driver.fedora.itemSetSpecPath = $item <dc:type> $setSpec Do you forsee any issues if sets are configured using the approach mentioned above. Thanks in advance, Ganesh Calling all knowledge and information professionals! Register now for the 10th Interlending and Document Supply International Conference, 29 to 31 Oct 2007. Visit http://www.nlbconference.com/ilds/ for more information. Pick up your copy of GO LIBRARY at any of NLB's network of regional and community libraries. Tune in to various "channels" for exciting programmes happening at NLB's libraries! WARNING : This e-mail and any attached files may contain privileged or confidential information. If you are not the intended addressee, you must not disclose, reproduce, copy, distribute, disseminate, use this communication or take any action in reliance thereon. Communication of any information in this e-mail to any unauthorised person may constitute an offence under the Official Secrets Act (Cap 213). Please notify the sender immediately if you receive this by error. |
From: <cw...@us...> - 2007-08-13 18:17:03
|
Revision: 24 http://proai.svn.sourceforge.net/proai/?rev=24&view=rev Author: cwilper Date: 2007-08-13 11:17:07 -0700 (Mon, 13 Aug 2007) Log Message: ----------- fixed typo Modified Paths: -------------- trunk/CONTRIBUTORS.txt Modified: trunk/CONTRIBUTORS.txt =================================================================== --- trunk/CONTRIBUTORS.txt 2007-08-13 18:02:41 UTC (rev 23) +++ trunk/CONTRIBUTORS.txt 2007-08-13 18:17:07 UTC (rev 24) @@ -1,3 +1,3 @@ -Juan Corrales - jco...@us... +Juan Corrales - jco...@us... Submitted patch to pass OpenArchives registration validation. Sourceforge bug #1773259 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2007-08-13 18:02:44
|
Revision: 23 http://proai.svn.sourceforge.net/proai/?rev=23&view=rev Author: cwilper Date: 2007-08-13 11:02:41 -0700 (Mon, 13 Aug 2007) Log Message: ----------- added patch contributed by Juan Corrales, to fix OpenArchives validation issue Modified Paths: -------------- trunk/src/java/proai/service/ProviderServlet.java trunk/src/java/proai/service/Responder.java Added Paths: ----------- trunk/CONTRIBUTORS.txt Added: trunk/CONTRIBUTORS.txt =================================================================== --- trunk/CONTRIBUTORS.txt (rev 0) +++ trunk/CONTRIBUTORS.txt 2007-08-13 18:02:41 UTC (rev 23) @@ -0,0 +1,3 @@ +Juan Corrales - jco...@us... + Submitted patch to pass OpenArchives registration validation. + Sourceforge bug #1773259 Modified: trunk/src/java/proai/service/ProviderServlet.java =================================================================== --- trunk/src/java/proai/service/ProviderServlet.java 2007-01-18 18:14:36 UTC (rev 22) +++ trunk/src/java/proai/service/ProviderServlet.java 2007-08-13 18:02:41 UTC (rev 23) @@ -60,7 +60,7 @@ try { url = request.getRequestURL().toString(); verb = request.getParameter("verb"); - if (verb == null) throw new BadArgumentException("must specify a verb"); + if (verb == null) throw new BadVerbException("request did not specify a verb"); identifier = request.getParameter("identifier"); from = request.getParameter("from"); until = request.getParameter("until"); @@ -107,7 +107,7 @@ if (argCount > 1) throw new BadArgumentException("one or zero arguments needed, got " + argCount); data = m_responder.listSets(resumptionToken); } else { - throw new BadArgumentException("bad verb: " + verb); + throw new BadVerbException("bad verb: " + verb); } response.setStatus(HttpServletResponse.SC_OK); response.setContentType("text/xml; charset=UTF-8"); @@ -274,4 +274,4 @@ } } -} \ No newline at end of file +} Modified: trunk/src/java/proai/service/Responder.java =================================================================== --- trunk/src/java/proai/service/Responder.java 2007-01-18 18:14:36 UTC (rev 22) +++ trunk/src/java/proai/service/Responder.java 2007-08-13 18:02:41 UTC (rev 23) @@ -248,6 +248,7 @@ Date fromDate = validDate(from); Date untilDate = validDate(until); + checkGranularity(from, until); checkFromUntil(fromDate, untilDate); checkMetadataPrefix(metadataPrefix); ListProvider provider = new RecordListProvider(m_cache, @@ -460,6 +461,22 @@ } /** + * Checks that the granularity of the from and until arguments match. + */ + private static void checkGranularity(String from, String until) + throws BadArgumentException { + if (from!= null && until!=null) { + if ( ( (from.endsWith("Z")) + && (!until.endsWith("Z")) ) + || ( (until.endsWith("Z")) + && (!from.endsWith("Z")) ) ) { + throw new BadArgumentException("Date granularities of from and " + + "until arguments do not match."); + } + } + } + + /** * If <code>from</code> is later than <code>until</code>, throw a * <code>BadArgumentException</code>. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2007-01-18 18:14:35
|
Revision: 22 http://svn.sourceforge.net/proai/?rev=22&view=rev Author: cwilper Date: 2007-01-18 10:14:36 -0800 (Thu, 18 Jan 2007) Log Message: ----------- added tag for 1.0 release Added Paths: ----------- tags/release-1.0/ Copied: tags/release-1.0 (from rev 21, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2007-01-04 16:53:30
|
Revision: 21 http://svn.sourceforge.net/proai/?rev=21&view=rev Author: cwilper Date: 2007-01-04 08:53:30 -0800 (Thu, 04 Jan 2007) Log Message: ----------- updated build.xml with "release" target, included commons-logging, updated release notes and README.txt formatting, and put in final license updates. Modified Paths: -------------- trunk/README.txt trunk/build.properties trunk/build.xml trunk/src/doc/index.html trunk/src/doc/license/index.html trunk/src/doc/release-notes.txt Added Paths: ----------- trunk/lib/commons-logging.jar Modified: trunk/README.txt =================================================================== --- trunk/README.txt 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/README.txt 2007-01-04 16:53:30 UTC (rev 21) @@ -1,10 +1,10 @@ Proai OAI Provider Library - Version @proai.version@ + Version @proai.version@ - Source Distribution + Source Distribution - Copyright (c) 2006, Cornell University + Copyright (c) 2006-2007, Cornell University +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Modified: trunk/build.properties =================================================================== --- trunk/build.properties 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/build.properties 2007-01-04 16:53:30 UTC (rev 21) @@ -20,6 +20,7 @@ lib.pool = lib/commons-pool-1.2.jar lib.httpclient = lib/commons-httpclient-3.1-beta1.jar lib.codec = lib/commons-codec-1.3.jar +lib.logging = lib/commons-logging.jar # BValid from http://www.sf.net/projects/bvalid lib.bvalid = lib/bvalid-0.8.1.jar Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/build.xml 2007-01-04 16:53:30 UTC (rev 21) @@ -25,6 +25,7 @@ <path refid="compile.path"/> <pathelement location="${lib.codec}"/> <pathelement location="${lib.httpclient}"/> + <pathelement location="${lib.logging}"/> <pathelement location="${lib.mckoidb}"/> <pathelement location="${lib.mckoijdbc}"/> <pathelement location="${lib.mysqljdbc}"/> @@ -165,6 +166,39 @@ <test name="proai.test.ResponderTest"/> </junit> </target> + + <target name="srcrelease" depends="clean"> + <copy todir="dist/release/proai-${proai.version}-src"> + <fileset dir="."> + <exclude name="dist/**"/> + </fileset> + </copy> + <replace file="dist/release/proai-${proai.version}-src/README.txt" + value="value not found in version.properties" + propertyFile="src/java/proai/Proai.properties"> + <replacefilter token="@proai.version@" property="proai.version"/> + </replace> + <zip zipfile="dist/release/proai-${proai.version}-src.zip" basedir="dist/release" includes="proai-${proai.version}-src/**"/> + <delete dir="dist/release/proai-${proai.version}-src"/> + </target> + + <target name="binrelease" depends="dist,doc"> + <copy todir="dist/release/proai-${proai.version}"> + <fileset dir="dist"> + <exclude name="release/**"/> + </fileset> + </copy> + <zip zipfile="dist/release/proai-${proai.version}.zip" basedir="dist/release" includes="proai-${proai.version}/**"/> + <delete dir="dist/release/proai-${proai.version}"/> + </target> + + <target name="release" depends="srcrelease,binrelease" description="Build the source and binary distributions in dist/release"> + <checksum fileext=".md5"> + <fileset dir="dist/release"> + <include name="*.zip"/> + </fileset> + </checksum> + </target> <target name="prep" description="prepare for a build"> <mkdir dir="build"/> Added: trunk/lib/commons-logging.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/commons-logging.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/doc/index.html =================================================================== --- trunk/src/doc/index.html 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/src/doc/index.html 2007-01-04 16:53:30 UTC (rev 21) @@ -192,7 +192,7 @@ <div id="footer"> <div id="copyright"> - Copyright © 2006, Cornell University + Copyright © 2006-2007, Cornell University </div> </div> </body> Modified: trunk/src/doc/license/index.html =================================================================== --- trunk/src/doc/license/index.html 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/src/doc/license/index.html 2007-01-04 16:53:30 UTC (rev 21) @@ -56,7 +56,7 @@ <li>Proai OAI Provider Library <div class="copyright"> Written by Chris Wilper, - Copyright © 2006, Cornell University + Copyright © 2006-2007, Cornell University </div> <div class="license"> Licensed under the <a href="ecl-1.0.txt">Educational Community License 1.0</a><br/> Modified: trunk/src/doc/release-notes.txt =================================================================== --- trunk/src/doc/release-notes.txt 2007-01-04 16:34:12 UTC (rev 20) +++ trunk/src/doc/release-notes.txt 2007-01-04 16:53:30 UTC (rev 21) @@ -3,8 +3,8 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -Version 1.0 - December 22nd, 2006 -================================== +Version 1.0 - January 4th, 2007 +================================ o This is the first official release of Proai @@ -21,4 +21,3 @@ o This version is compiled for Java 1.4, and works with Java 1.5. Future versions will likely not be compatible with Java 1.4. - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2007-01-04 16:34:15
|
Revision: 20 http://svn.sourceforge.net/proai/?rev=20&view=rev Author: cwilper Date: 2007-01-04 08:34:12 -0800 (Thu, 04 Jan 2007) Log Message: ----------- outdated Removed Paths: ------------- trunk/.classpath Deleted: trunk/.classpath =================================================================== --- trunk/.classpath 2007-01-04 16:21:23 UTC (rev 19) +++ trunk/.classpath 2007-01-04 16:34:12 UTC (rev 20) @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src/java"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/> - <classpathentry kind="lib" path="lib/commons-dbcp-1.2.1.jar"/> - <classpathentry kind="lib" path="lib/commons-httpclient-2.0.1.jar"/> - <classpathentry kind="lib" path="lib/commons-logging.jar"/> - <classpathentry kind="lib" path="lib/commons-pool-1.2.jar"/> - <classpathentry kind="lib" path="lib/gnu-regexp-1.1.4.jar"/> - <classpathentry kind="lib" path="lib/javax.servlet-2.3.jar"/> - <classpathentry kind="lib" path="lib/junit.jar"/> - <classpathentry kind="lib" path="lib/log4j-1.2.8.jar"/> - <classpathentry kind="lib" path="lib/mckoidb.jar"/> - <classpathentry kind="lib" path="lib/mkjdbc.jar"/> - <classpathentry kind="lib" path="lib/mysql-connector.jar"/> - <classpathentry kind="lib" path="lib/xercesImpl.jar"/> - <classpathentry kind="lib" path="lib/xml-apis.jar"/> - <classpathentry kind="output" path="build"/> -</classpath> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2007-01-04 16:21:26
|
Revision: 19 http://svn.sourceforge.net/proai/?rev=19&view=rev Author: cwilper Date: 2007-01-04 08:21:23 -0800 (Thu, 04 Jan 2007) Log Message: ----------- including all relevant license info Modified Paths: -------------- trunk/src/doc/license/index.html Added Paths: ----------- trunk/src/doc/license/asl-1.1.txt trunk/src/doc/license/floss-exception.txt trunk/src/doc/license/gpl-2.0.txt Added: trunk/src/doc/license/asl-1.1.txt =================================================================== --- trunk/src/doc/license/asl-1.1.txt (rev 0) +++ trunk/src/doc/license/asl-1.1.txt 2007-01-04 16:21:23 UTC (rev 19) @@ -0,0 +1,48 @@ +/* + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ + * + * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modifica- + * tion, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The end-user documentation included with the redistribution, if any, must + * include the following acknowledgment: "This product includes software + * developed by the Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, if + * and wherever such third-party acknowledgments normally appear. + * + * 4. The names "log4j" and "Apache Software Foundation" must not be used to + * endorse or promote products derived from this software without prior + * written permission. For written permission, please contact + * ap...@ap.... + * + * 5. Products derived from this software may not be called "Apache", nor may + * "Apache" appear in their name, without prior written permission of the + * Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * on behalf of the Apache Software Foundation. For more information on the + * Apache Software Foundation, please see <http://www.apache.org/>. + * + */ Property changes on: trunk/src/doc/license/asl-1.1.txt ___________________________________________________________________ Name: svn:executable + * Added: trunk/src/doc/license/floss-exception.txt =================================================================== --- trunk/src/doc/license/floss-exception.txt (rev 0) +++ trunk/src/doc/license/floss-exception.txt 2007-01-04 16:21:23 UTC (rev 19) @@ -0,0 +1,99 @@ +MySQL FLOSS License Exception + +The MySQL AB Exception for Free/Libre and Open Source Software-only +Applications Using MySQL Client Libraries (the "FLOSS Exception"). + + +Exception Intent +We want specified Free/Libre and Open Source Software ("FLOSS") applications +to be able to use specified GPL-licensed MySQL client libraries (the +"Program") despite the fact that not all FLOSS licenses are compatible with +version 2 of the GNU General Public License (the "GPL"). + + +Legal Terms and Conditions +As a special exception to the terms and conditions of version 2.0 of the +GPL: + +0. You are free to distribute a Derivative Work that is formed entirely from + the Program and one or more works (each, a "FLOSS Work") licensed under + one or more of the licenses listed below in section 1, as long as: + + a. You obey the GPL in all respects for the Program and the Derivative + Work, except for identifiable sections of the Derivative Work which + are not derived from the Program, and which can reasonably be + considered independent and separate works in themselves, + + b. all identifiable sections of the Derivative Work which are not + derived from the Program, and which can reasonably be considered + independent and separate works in themselves, + + (i) are distributed subject to one of the FLOSS licenses listed + below, and + + (ii) the object code or executable form of those sections are + accompanied by the complete corresponding machine-readable + source code for those sections on the same medium and under the + same FLOSS license as the corresponding object code or + executable forms of those sections, and + + c. any works which are aggregated with the Program or with a Derivative + Work on a volume of a storage or distribution medium in accordance + with the GPL, can reasonably be considered independent and separate + works in themselves which are not derivatives of either the Program, + a Derivative Work or a FLOSS Work. + +If the above conditions are not met, then the Program may only be copied, +modified, distributed or used under the terms and conditions of the GPL or +another valid licensing option from MySQL AB. + +1. FLOSS License List + +License name Version(s)/Copyright Date +Academic Free License 2.0 +Apache Software License 1.0/1.1/2.0 +Apple Public Source License 2.0 +Artistic license From Perl 5.8.0 +BSD license "July 22 1999" +Common Public License 1.0 +GNU Library or "Lesser" General Public License (LGPL) 2.0/2.1 +Jabber Open Source License 1.0 +MIT License (As listed in file MIT-License.txt) - +Mozilla Public License (MPL) 1.0/1.1 +Open Software License 2.0 +PHP License 3.0 +Python license (CNRI Python License) - +Python Software Foundation License 2.1.1 +Sleepycat License "1999" +W3C License "2001" +X11 License "2001" +Zlib/libpng License - +Zope Public License 2.0 + +Due to the many variants of some of the above licenses, we require that any +version follow the 2003 version of the Free Software Foundation's Free +Software Definition (http://www.gnu.org/philosophy/free-sw.html) or version +1.9 of the Open Source Definition by the Open Source Initiative +(http://www.opensource.org/docs/definition.php). + +2. Definitions + + a. Terms used, but not defined, herein shall have the meaning provided in + the GPL. + + b. Derivative Work means a derivative work under copyright law. + +3. Applicability + +This FLOSS Exception applies to all Programs that contain a notice placed by +MySQL AB saying that the Program may be distributed under the terms of this +FLOSS Exception. If you create or distribute a work which is a Derivative +Work of both the Program and any other work licensed under the GPL, then +this FLOSS Exception is not available for that work; thus, you must remove +the FLOSS Exception notice from that work and comply with the GPL in all +respects, including by retaining all GPL notices. You may choose to +redistribute a copy of the Program exclusively under the terms of the GPL by +removing the FLOSS Exception notice from that copy of the Program, provided +that the copy has never been modified by you or any third party. + +$Id: FLOSS-exception.txt,v 1.5 2004/07/15 15:24:19 z Exp $ Added: trunk/src/doc/license/gpl-2.0.txt =================================================================== --- trunk/src/doc/license/gpl-2.0.txt (rev 0) +++ trunk/src/doc/license/gpl-2.0.txt 2007-01-04 16:21:23 UTC (rev 19) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Library General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it + in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. + + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, the commands you use may + be called something other than `show w' and `show c'; they could even be + mouse-clicks or menu items--whatever suits your program. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + + This General Public License does not permit incorporating your program into + proprietary programs. If your program is a subroutine library, you may + consider it more useful to permit linking proprietary applications with the + library. If this is what you want to do, use the GNU Library General + Public License instead of this License. + Modified: trunk/src/doc/license/index.html =================================================================== --- trunk/src/doc/license/index.html 2006-12-22 22:14:27 UTC (rev 18) +++ trunk/src/doc/license/index.html 2007-01-04 16:21:23 UTC (rev 19) @@ -53,7 +53,7 @@ <h2><a name="orig">Original Work</a></h2> <ol> - <li>Proai RDF Storage Engine + <li>Proai OAI Provider Library <div class="copyright"> Written by Chris Wilper, Copyright © 2006, Cornell University @@ -71,6 +71,30 @@ to its operation. </p> <ol> + <li>Apache Jakarta Commons Codec Library + <div class="copyright"> + Copyright © 2002-2004 The Apache Software Foundation. + </div> + <div class="license"> + Licensed under the <a href="asl-2.0.txt">Apache Software License 2.0.</a> + </div> + </li> + <li>Apache Jakarta Commons HttpClient + <div class="copyright"> + Copyright © 1999-2006 The Apache Software Foundation. + </div> + <div class="license"> + Licensed under the <a href="asl-2.0.txt">Apache Software License 2.0.</a> + </div> + </li> + <li>Apache Jakarta Commons Logging + <div class="copyright"> + Copyright © 2001-2004 The Apache Software Foundation. + </div> + <div class="license"> + Licensed under the <a href="asl-2.0.txt">Apache Software License 2.0.</a> + </div> + </li> <li>Apache Log4J <div class="copyright"> Copyright © 1998-2006 The Apache Software Foundation. @@ -80,6 +104,24 @@ Licensed under the <a href="asl-2.0.txt">Apache Software License 2.0.</a> </div> </li> + <li>Apache Xerces2 Java Parser + <div class="copyright"> + Copyright © 1999-2004 The Apache Software Foundation. + All rights reserved. + </div> + <div class="license"> + Licensed under the <a href="asl-1.1.txt">Apache Software License 1.1.</a> + </div> + </li> + <li>BValid XML Validation API + <div class="copyright"> + Copyright © 2006, Cornell University. + All rights reserved. + </div> + <div class="license"> + Licensed under the <a href="ecl-1.0.txt">Educational Community License 1.0</a> + </div> + </li> <li>Jakarta Commons-Collections <div class="copyright"> Copyright © 2003-2004 The Apache Software Foundation. @@ -123,8 +165,24 @@ Licensed under the <a href="cpl-1.0.txt">Common Public License 1.0.</a> </div> </li> - <li>Postgres 8.2 Type 3 JDBC Driver + <li>McKoi Java Database <div class="copyright"> + Copyright © 2000, 2001, 2002 Diehl and Associates, Inc. + </div> + <div class="license"> + Licensed under the <a href="gpl-2.0.txt">GNU General Public License 2.0.</a> + </div> + </li> + <li>MySQL Connector/J + <div class="copyright"> + </div> + <div class="license"> + Licensed under the <a href="gpl-2.0.txt">GNU General Public License 2.0</a>, + with the <a href="floss-exception.txt">MySQL FLOSS License Exception</a>. + </div> + </li> + <li>Postgres Type 3 JDBC Driver + <div class="copyright"> Copyright © 1997-2006 PostgreSQL Global Development Group. All rights reserved. </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2006-12-22 22:14:27
|
Revision: 18 http://svn.sourceforge.net/proai/?rev=18&view=rev Author: cwilper Date: 2006-12-22 14:14:27 -0800 (Fri, 22 Dec 2006) Log Message: ----------- upgraded mysql connector to latest, and added some info in release notes re:lib upgrades and optional schema validation feature Modified Paths: -------------- trunk/build.properties trunk/src/doc/release-notes.txt Added Paths: ----------- trunk/lib/mysql-connector-java-5.0.4-bin.jar Removed Paths: ------------- trunk/lib/mysql-connector.jar Modified: trunk/build.properties =================================================================== --- trunk/build.properties 2006-12-22 22:09:12 UTC (rev 17) +++ trunk/build.properties 2006-12-22 22:14:27 UTC (rev 18) @@ -35,8 +35,8 @@ lib.mckoijdbc = lib/mkjdbc.jar lib.gnuregexp = lib/gnu-regexp-1.1.4.jar -# Mysql Connector 3.0.15 (for testing) -lib.mysql-jdbc = lib/mysql-connector.jar +# Mysql Connector (for testing) +lib.mysql-jdbc = lib/mysql-connector-java-5.0.4-bin.jar # Postgres Type 3 JDBC driver (for testing) lib.postgres-jdbc = lib/postgresql-8.2-504.jdbc3.jar Added: trunk/lib/mysql-connector-java-5.0.4-bin.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/mysql-connector-java-5.0.4-bin.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/lib/mysql-connector.jar =================================================================== (Binary files differ) Modified: trunk/src/doc/release-notes.txt =================================================================== --- trunk/src/doc/release-notes.txt 2006-12-22 22:09:12 UTC (rev 17) +++ trunk/src/doc/release-notes.txt 2006-12-22 22:14:27 UTC (rev 18) @@ -8,6 +8,17 @@ o This is the first official release of Proai + o Proai now does (optional) schema validation from the source + + o Proai now works with Postgres + + o Library upgrades: + - Log4J 1.2.14 + - Commons-httpclient 3.1-beta1 + - Commons-codec (required by commons-httpclient) + - MySQL Connector 5.0.4 (for testing) + - BValid 0.8.1 + o This version is compiled for Java 1.4, and works with Java 1.5. Future versions will likely not be compatible with Java 1.4. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cw...@us...> - 2006-12-22 22:09:12
|
Revision: 17 http://svn.sourceforge.net/proai/?rev=17&view=rev Author: cwilper Date: 2006-12-22 14:09:12 -0800 (Fri, 22 Dec 2006) Log Message: ----------- upgraded to bvalid 0.8.1, which depends on httpclient-3.1-beta1 and transitively, commons-codec-1.3 Modified Paths: -------------- trunk/build.properties trunk/build.xml Added Paths: ----------- trunk/lib/bvalid-0.8.1.jar trunk/lib/commons-codec-1.3.jar trunk/lib/commons-httpclient-3.1-beta1.jar Removed Paths: ------------- trunk/lib/bvalid.jar Modified: trunk/build.properties =================================================================== --- trunk/build.properties 2006-12-22 20:49:19 UTC (rev 16) +++ trunk/build.properties 2006-12-22 22:09:12 UTC (rev 17) @@ -18,9 +18,11 @@ lib.dbcp = lib/commons-dbcp-1.2.1.jar lib.collections = lib/commons-collections-3.1.jar lib.pool = lib/commons-pool-1.2.jar +lib.httpclient = lib/commons-httpclient-3.1-beta1.jar +lib.codec = lib/commons-codec-1.3.jar -# BValid 0.8 from http://www.sf.net/projects/bvalid -lib.bvalid = lib/bvalid.jar +# BValid from http://www.sf.net/projects/bvalid +lib.bvalid = lib/bvalid-0.8.1.jar # Java servlet 2.3 interfaces (not distributed, only necessary for compilation) lib.servlet = lib/javax.servlet-2.3.jar Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2006-12-22 20:49:19 UTC (rev 16) +++ trunk/build.xml 2006-12-22 22:09:12 UTC (rev 17) @@ -23,6 +23,8 @@ <path id="test.path"> <path refid="compile.path"/> + <pathelement location="${lib.codec}"/> + <pathelement location="${lib.httpclient}"/> <pathelement location="${lib.mckoidb}"/> <pathelement location="${lib.mckoijdbc}"/> <pathelement location="${lib.mysqljdbc}"/> Added: trunk/lib/bvalid-0.8.1.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/bvalid-0.8.1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/lib/bvalid.jar =================================================================== (Binary files differ) Added: trunk/lib/commons-codec-1.3.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/commons-codec-1.3.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib/commons-httpclient-3.1-beta1.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/commons-httpclient-3.1-beta1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |