Apache OODT Change Log
======================
Release 1.2.5 - 09/06/2018

* Fix logging for webapps 

Release 1.2.4 - 08/13/2018

* Restore JDK 8 Support

Release 1.2.3 - 08/06/2018

* OODT-989 Fix Lucene Catalog crashes

Release 1.2.2 - 02/05/2018

* OODT-968 Add metadata removes product


Release 1.2.1 - 11/10/2017

* OODT-967 Solr version for 1.2.1 breaks SolrDumper in File Manager (mattmann)

Release 1.3 - In Progress

* OODT-964, OODT-963 Fix issues merging Distributed ZK Config module into Avro-RPC branch (imesha,mattmann)
* OODT-957 Add CVE reporting plugin to maven build chain
* OODT-958 Update commons-collections
* OODT-959 Update tika to 1.16

Release 1.2 - 08/14/2017

* OODT-955 Fix numhits error in Lucene Catalog (magicaltrout) 

* OODT-956 Add connection checks to components (magicaltrout) 

Release 1.1 - 07/18/2017

*** NOTE: A change was introduced in this version that causes a forced upgrade to your
Lucene Workflow Instance repository catalog. If you are using Lucene in the workflow manager,
the best bet is to blow away your old workflow instance catalog, and then allow it to be 
rebuilt automatically. You can detect if you are affected by this issue if you see a message
akin to the below.
Jul 19, 2017 10:45:02 AM org.apache.oodt.cas.workflow.instrepo.LuceneWorkflowInstanceRepository addWorkflowInstanceToCatalog
WARNING: Unable to index workflow instance: [d8dad567-6c90-11e7-9e4e-7574e3a12106]: Message: Format version is not supported 
(resource BufferedChecksumIndexInput(MMapIndexInput(path="/project/oodt/dev/jedi/data/workflow/slothrop/segments"))): -1 (needs 
to be between 1071082519 and 1071082519). This version of Lucene only supports indexes created with release 5.0 and later.
java.lang.NullPointerException
****

* OODT-954 CAS-PGE FileManagerFileStager has NPE b/c it does not set Product Structure (mattmann)

* OODT-526 Add base functionality in Curator for Task List persistence (mjoyce, mattmann)

* OODT-525 Export IngestTaskList from Curator (mjoyce, mattmann)

* OODT-304 Add a Getter method to get the file handler configuration (Michael Cayanan via mattmann)

* OODT-877 Fix 2 failures in o.a.o.commons.util.XMLTest on Windows 2008 Server (lewismc, mattmann)

* OODT-305 Make the Resource Manager manage different queues of jobs independently (resneck, mattmann)

* OODT-753 Move FM and WM Python APIs into "agility" component (kelly, mattmann)

* OODT-563 Task editing and Workflow execution (varun, mattmann)

* OODT-212 Rollback capability for Workflows (sherylj via mattmann)

* OODT-836, OODT-837 Remove Non-Essential Components (mattmann, mdstarch, magicaltrout)

* OODT-213 Reading/Writing API for XML-based Workflow Task policy (mattmann)

* OODT-775 XSD's for pushpull's mimetypes.xml (Lewis John McGibbney via mattmann)

* OODT-847 New FilemgrMetExtractor to extract File System Attributes (Aditya Dhulipala, rverma via mattmann)

* OODT-948 Fix dockerfile (magicaltrout/R B Krishna)

* OODT-938 update netcdf (magicaltrout)

* OODT-943 update javadoc and site plugin versions (magicaltrout)

* OODT-931 CAS Crawler and metadata preconditions should say what preconditions 
  failed (mattmann)

* OODT-932 OODT-Core forces javadoc to run and fails on linting - it shouldn't 
  do that (mattmann)

* OODT-929 EnvUtilities should only load environment variables one time and 
  statically cache them (mattmann)


Release 1.0 - 06/21/2016

* OODT-925 - Update schema.xml field defs for SOLR 5.x
* OODT-926 - Fix pom versioning
* OODT-927 - Sanitize SQL commands in CAS DatasourceIngestMapper
* OODT-928 - UPdate maven-compiler-plugin

Release 0.12 - 02/10/2016

* OODT-781 Add missing XMLRPC endpoint for remove hashtable. (magicaltrout)

* OODT-923 Fix start script for solr deployments (magicaltrout)

* OODT-924 Fix missing timestamp metadata field in returned data from solr (magicaltrout)

* OODT-992 Fix incorrect product count for solr backed store (magicaltrout)

Release 0.11 - 12/29/2015

* OODT-918 - Created a prerequisite workflow condition for DRAT (Karanjeet
  Singh via mattmann)

* OODT-913 Multiple metadata values not written out into product-types.xml (luca)

* ODT-862 Include the Workflow ID as part of the standard metadata (luca)
 
* OODT-885 RegEx Precondition Comparator for DRAT --exclude feature (Karanjeet
  Singh via mattmann)

* OODT-874 Corrected workflow/bin/wmgr and resource/bin/resmgr to make sure
  they both delete the cas.xxxx.pid file when stopped using the 'stop'
  command. (mallder)

* OODT-872 Upgrade Jena dependencies to org.apache.jena 3.0.0 (lewismc, mattmann)

* OODT-882 Merge dependency update into master (magicaltrout)

* OODT-887 Prevent DNS resolution on URL Lookup (magicaltrout)

* OODT-888 Replace += with StringBuilders to improve performance (magicaltrout)

* OODT-889 Fix TopN with Type (magicaltrout)

* OODT-891 Add clover placeholder(waiting on license from Atlassian) (magicaltrout)

* OODT-892 Tidy up null assignments (magicaltrout)

* OODT-755 Fix error message in FM client when ingestion fails  - code quality from sonar (magicaltrout)

* OODT-894 Remove inefficient constructors - code quality from sonar (magicaltrout)

* OODT-909 create more explicit exceptions - code quality from sonar (magicaltrout)

* OODT-907 remove never queries collections - code quality from sonar (magicaltrout)

* OODT-906 remove redundant assignments - code quality from sonar (magicaltrout)

* OODT-904 remove redundant throws - code quality from sonar (magicaltrout)

* OODT-903 simplify flows - code quality from sonar (magicaltrout)

* OODT-902 remove redundant modifiers from enums - code quality from sonar (magicaltrout)

* OODT-901 resolve javadoc issues - code quality from sonar (magicaltrout)

* OODT-900 remove boxing/unboxing etc in code - code quality from sonar (magicaltrout)

* OODT-899 remove redundant local variables - code quality from sonar (magicaltrout)

* OODT-898 remove redundant finals - code quality from sonar (magicaltrout)

* OODT-897 remove module dependencies - code quality from sonar (magicaltrout)

* OODT-896 remove interface modifers - code quality from sonar (magicaltrout) 

* OODT-895 remove redundant measure unit - code quality from sonar (magicaltrout)

* OODT-894 tidy up inefficient constructors - code quality from sonar (magicaltrout)

* OODT-912 replace print stacttraces with log output - code quality from sonar (magicaltrout)
Release 0.10 - 08/30/2015

* OODT-871 Issues with OODT 0.10 RC#1 (lewismc, mattmann)

* OODT-246 Give user the ability to print a detailed report on what jobs in 
  the Resource Manager are running on what nodes (Gabe Resneck, mattmann)

* OODT-245 List results from the Resource Manager client should be sorted 
  alphabetically (Gabe Resneck via mattmann)

* OODT-248 Give user the ability to print a detailed report on the load, capacity 
  and queues of all nodes in the Resource Manager (Gabe Resneck, mattmann)

* OODT-247 Resource Manager client should allow users to see what jobs are 
  currently in the queue (Gabe Resneck, mattmann)

* OODT-244 Allow the Resource Manager scheduler to cycle on a non-integer 
  number of seconds (Gabe Resneck via mattmann)

* OODT-864 Upgrade to Tika 1.10 (mattmann,tpalsulich)

* OODT-686 AddProductTypeCliAction should prompt for ProductTypeId (rverma, mattmann)

* OODT-302 Add support in the xmlquery package to handle HTTP Redirection (Michael Cayanan via mattmann)

* OODT-303 Add support in the Grid Package to throw an HTTP Servlet Response (Michael Cayanan via mattmann)

* OODT-480 Balance: default view not found (Nesbert Hidalgo via mattmann)

* OODT-598 XMLQuery DIS-style query parser needs to treat "#" as a word character (kelly via mattmann)

* OODT-870 Integrate Curator into OPSUI (mattmann)

* OODT-842 create restful version of cas curator services (mattmann)

* OODT-838 Separate RESTful Servers and Clients (Michael Starch, mattmann)

* OODT-824 Port the Curator to Apache Wicket (mattmann)

* OODT-861 Workflow Manager client will print the list of task ids for a given workflow, if requested (luca)

* OODT-854 Enable File Manager and Resource Manager to collect configuration files by parsing a directory tree recursively (luca)

* OODT-781 Fix removal of files from the LocalDataTransferer (magicaltrout)

Release 0.9 - 05/31/2015

* OODT-841 Update Maven instructions in README to include clean command (Ethan Wang via mattmann)

* OODT-844 Scala maven plugin for streaming only (Jane Wyngaard via mattmann)

* OODT-829 Implement an Apache Tika based Server Side Extractor (Radu Manole via mattmann)

* OODT-826 Add the capability to check external preconditions before ingesting a file.

* OODT-832 Move streaming items to seperate top-level component (starchmd)

* OODT-831 CAS PGE adapter framework build failed (Aditya Dhulipala via mattmann)

* OODT-830 Queue Assertion failure of XmlQueueRepository under CAS Resource Manager (Aditya Dhulipala via mattmann)

* OODT-823 OODT JDK8 Maven3 build errors (Aditya Dhulipala via mattmann)

* OODT-715 SolrIndexer fails to index when numProducts == pageSize (pramirez, mdstarch via mattmann)

* OODT-821 OODT-821 FMProd RDF conf shouldn't use EDRN as a default namespace for keys and for types (mattmann)

* OODT-818 CmdLineIngester should log there was an exception and move on during ingest (mattmann)

* OODT-817 TikaCmdLineExtractor needs to add Filename and FileLocation fields (mattmann)

* OODT-813 CAS-PGE incorrectly passes varargs to DynamicConfigFile implementations (mattmann)

* OODT-812 RADIX ingest script (mattmann)

* OODT-811 RADIX incorrectly sets up PCS REST services app config (mattmann)

* OODT-810 Metadata PreCondition Comparators based on FileName and LastModified time (Luca Cinquini via mattmann)

* OODT-809 A CrawlerAction that indexes to Solr (Luca Cinquini via mattmann)


Release 0.8.1 - 01/28/2015
-------------------------------------------
* OODT-804 Broken trunk build on Jenkins

* OODT-699 Mesos cluster manager backend to resource manager

* OODT-780 Spark backend to resource manager

* OODT-802 Create Dockerfile for OODT Radix.

* OODT-761 Update PGE version in Radix.

* OODT-749 Remove old XercesImpl jar from grid pom.

* OODT-771 Fix push_pull_framework.properties path reference for config.external.properties.files in incorrect with a patch from Lewis

* OODT-770 Fix the RADIX Issues with a patch from Lewis McGibbney

Release 0.8 - 12/19/2014
--------------------------------------------

* OODT-751 OPSUI pages constantly expire (Tom Barber, mattmann)

* OODT-748 Fix Description in agility/setup.py

* OODT-787 PGE_ROOT env variable does not work in PGEConfig.xml and tasks.xml (Yi Sun, Sneha Deshmukh via mattmann)

* OODT-562 Exposing parent-child & element addition/deletion functionality for product types using cas-curator (varunr)

* OODT-563 Modifying Workflow Manager to allow adding new workflows (varunr)

* OODT-786 Change shebang to bash for proper color output (Poojit Sharma via mattmann)

* OODT-785 Update batch stub with legacyMode set to true (meghamsh4 via mattmann)

* OODT-783 RADiX Crawler action bean config refers to WORKFLOWMGR_URL (Angela Wang via mattmann)

* OODT-782 Resource manager port number must be compatible with the one used in workflow.properties (Imran Mammaldi via mattmann)

* OODT-769 The wiki page command installs 0.6 version of the oodt radix installer (lewismc, Santosh SHankar)

* OODT-777 Update fileconcatenator-pge.tar for building fileconcatenator-pge (threeears via mattmann)

* OODT-776 Test fix: log messages can be different for different locales (Tom Tung via mattmann)

* OODT-701 Adding in stream product structure for filemanager. Add in check for valid product structures, and fixed tests breaking from that check.

* OODT-699 Adding in cluster managment scripts for mesos.

* OODT-764 Adding in multiplexing resource manager backend.

* OODT-763 Correcting path to OODT_HOME and FILEMGR_HOME (vishalhemnani via mattmann)

* OODT-385, OODT-630, OODT-631, OODT-632. Upgraded Tika to version 1.6.

* OODT-757 Fixed PGETaskInstance bug that prevented instantiation of AutoDetectProductCrawler (luca)

* OODT-756 HttpClient NoClassDefFoundError For the url-downloader Script (Mengying Wang via mattmann)

* OODT-754 Contribute ProdTypePatternMetExtractor (rickdn)

* OODT-750 Issue with running mvn site:site due to old findbugs plugin (mattmann)


Release 0.7 - 09/15/2014
-------------------------------------------- 

* OODT-669 Make Resource Manager work without Ganglia (mattmann, rajith)

* OODT-644 Fix to FTP protocol tests, abstracting some of the logic to make the code better suited to mocking(magicaltrout)

* OODT-644 Fix to stub FTP client protocol so it doesn't fail when the port is in use

* OODT-644 Partial fix to stub SSH client so it doesn't fail when SSHD is running locally

* OODT-745 Removed trailing spaces in the radix wmgr filex

* OODT-473 Rremove "Deleted" Metadata Flag from Solr Indexer (magicaltrout)

* OODT-736 Clean up test data left by TestTypeHandler test (rlaidlaw)

* OODT-667 CAS-PGE no longer respects writers and file tags from 
  earlier pgeConfig.xml files (mattmann)

* OODT-741 Remove static modifier from elementMap, subToSuperMap and
  productTypeElementMap fields in XMLValidationLayer (rlaidlaw)

* OODT-737 Copied over latest cmd-line-options.xml with typeName (rlaidlaw)

* OODT-739 Fix File Manager unit tests (step 12) - fix test classes in
  'metadata' and 'versioning' packages (rlaidlaw)

* OODT-738 Contribute workflow scripts to kill all by status or kill by instance ID (mattmann)

* OODT-737 Fix File Manager unit tests (step 11) - fix test classes in 'cli'
  package (rlaidlaw)

* OODT-736 Fix File Manager unit tests (step 10) - fix test classes in 'structs'
  package (rlaidlaw)

* OODT-735 Fix File Manager unit tests (step 9) - fix test classes in 'tools'
  package (rlaidlaw)

* OODT-734 Fix File Manager unit tests (step 8) - fix test classes in 'system'
  package (rlaidlaw)

* OODT-733 Fix File Manager unit tests (step 7) - fix test classes in 'ingest'
  package (rlaidlaw)

* OODT-732 Fix File Manager unit tests (step 6) - fix test classes in
  'datatransfer' package (rlaidlaw)

* OODT-731 Fix File Manager unit tests (step 5) - fix test classes in 'catalog'
  package (rlaidlaw)

* OODT-728 Figure out why certain metadata fields get set twice during pipeline processing (mattmann)

* OODT-729 Fix File Manager unit tests (step 4) - fix test classes in 'util'
  package (rlaidlaw)

* OODT-690 RADiX example policy for GenericFile missing "<metadata/>" node (rverma via mattmann)

* OODT-718 RADiX Build Failure (tpalsulich, goodale via mattmann)

* OODT-726 Create MetFilter Task Example (mattmann)

* OODT-724 Crawler action bean config refers to WORKFLOWMGR_URL (mattmann)

* OODT-723 Fix File Manager unit tests (step 3) - fix test class in 'validation'
  package (rlaidlaw)

* OODT-722 Fix File Manager unit tests (step 2) - fix test class in 'repository'
  package (rlaidlaw)

* OODT-672 OODT Start script does not notify user of status (asumarlidason via mattmann)

* OODT-721 Fix File Manager unit tests (step 1) - remove duplicate XML from test
  resources (rlaidlaw)
  
* OODT-719 Prevent httpclient from spawning closewait tcp connections (Konstantinos Mavrommatis via lewismc)

* OODT-685 ix OODT 0.7-SNAPSHOT Jenkins nightly build on Ubuntu 1st Pass (lewismc)

* OODT-716 Vagrant user on VM unable to start/stop oodt services (sherylj)

* OODT-708 Add PGE RADiX Archetype (skhudiky)

* OODT-593 Dyn workflows in Workflow Manager cause NPEs on restart (mattmann)

* OODT-705 RADIX one step script (mattmann)

* OODT-703 DataUtil.createProductZipFile throws exception when creating a zipfile of a hierarchical product (thomas)

* OODT-674 MoveDatafileToFailureDir fails to move files off an NFS mounted directory (thomas)

* OODT-662 Upgrade cog-jglobus dependency in protocol-ftp (lewismc)

* OODT-668 ProductQueryServlet will now rename zip attachments with proper ".zip" extension,
  and the conventions used can be overridden by subclasses (luca)

* OODT-217 CAS-PGE User Manual (rverma, bfoster, mattmann)

* OODT-665 CAS RDF and RSS product service doesn't allow product type met to have keys 
  with spaces (mattmann)

* OODT-664 RADIX deployment of opsui incorrectly uses /pcs-opsui as the web.xml context 
  and omits 2 key PCS properties from context.xml (mattmann, pramirez, ahart)

* OODT-663 Sample CAS-PGE workflow task should be included in cas-pge (mattmann)

* OODT-661 Enabled case-insensitive specification of "OFSN" and "RT" parameter names
  (not values!) when issuing a request to the Product Server (luca)

* OODT-656 Provide alternative implementation of QueryServlet that is able 
  to construct queries from non DIS-style parameters (luca)

* OODT-613 CAS Product web application - configurable content writers for RDF
  and RSS (rlaidlaw)

* OODT-612 CAS Product web application - add content writers for XML, JSON, RDF,
  RSS (rlaidlaw)

* OODT-652 New TikaCmdLineMetExtractor (riverma)

* OODT-651 Improve parameter initialization, validation and logging for
  CAS-Product web application (rlaidlaw)

* OODT-650 Remove duplicate context container example from CAS-Product web
  application (rlaidlaw)

* OODT-649 Add PathUtils.replaceEnvVariables wrapper around calls to
  context.getInitParameter to process environment variables (rlaidlaw)

* OODT-611 Implement JAX-RS services to access File Manager products as raw
  data (rlaidlaw)

* OODT-648 Add license headers to files so that mvn rat:check is successful 
  (lewismc)

* OODT-642 In CAS-Product, moved tests to src/test/java and test resources to
  src/test/resources to match Maven standard directory layout (rlaidlaw)

* OODT-619 Implement the capability to pull status of resource 
  nodes from ganglia (Rajith Siriwardana via mattmann)


Release 0.6 - 07/08/2013
--------------------------------------------

* OODT-633 Update PEAR package.xml files for upcoming release. (gmcdonald)

* OODT-640 Added version number for maven-war-plugin to CAS-Product POM
  (rlaidlaw)

* OODT-639 Add a versioner based on Product Type Metadata (mattmann)

* OODT-638 Include more provenance metadata in trace product type (mattmann)

* OODT-637 Geo Product Type policy includes duplicative elements (mattmann)

* OODT-635 Fix trivial errors in Basic CAS Curation Example (lewismc via mattmann, Bill Rideout)

* OODT-636 Fixed Javadoc warnings in CAS-Product (rlaidlaw)

* OODT-634 Fixed lingering bug in Solr Catalog implementation that would still not return null
           if no matching product is found (luca)
* OODT-628 Multiple cluster Ganglia xml parse error (Rajith Siriwardana via mattmann)

* OODT-610 Added new empty package oodt.cas.product.service for future JAX-RS
  classes (rlaidlaw)

* OODT-609 Added Apache CXF dependency to the CAS-Product POM (rlaidlaw)

* OODT-624 Updated maven-javadoc-plugin to v2.9 (rlaidlaw)

* OODT-623 Addition of relativePath to the opendapps/pom.xml to help it locate
  the oodt-core POM (rlaidlaw)

* OODT-618 Implement ganglia XML parser (Rajith Siriwardana via mattmann)

* OODT-625 Bake TraceableFile product policy into FM (mattmann)

* OODT-622 Updated svn:ignore properties for several modules to add Eclipse
  configuration files to the ignore lists (rlaidlaw)

* OODT-572 Replace mkdir with more multi-thread resilient forceMkdir in 
  LocalDataTransferer (Tom Barber via mattmann)

* OODT-559 Unit test failure in testDoDynamicReplacement for "Europe/London" 
  timezone (Tom Barber via mattmann)

* OODT-615 Fixed bug in SolrCatalog that would throw exception if no matching products are found
           (luca)

* OODT-408 Drop Spring logging levels from WARNING to SEVERE (Lewis John McGibbney
  via mattmann, bfoster)

* OODT-607 SciPgeWriter that is a simple MetKey template replacer (mattmann)

* OODT-606 SciPgeWriter that uses ApacheVelocity (mattmann, pramirez)

* OODT-592 Provide Solr-based implementation of CAS File Manager (luca)

* OODT-590 modify pcs references in opsui webapp (riverma)

* OODT-589 add pcs_home env variable to env script (riverma)

* OODT-586 RADiX archetype does not properly deploy crawler (riverma)

* OODT-603 Enable Resource Manager start/stop within RADiX (riverma)

* OODT-600 Modularize old OPSUI theme into a separate Wicket "skin" (riverma)

* OODT-599 Modularize new theme into a stand-alone Wicket "skin" (riverma)

* OODT-597 Improve theme/styling of OPSUI (riverma)

* OODT-596 Fix opsui webapp's wicket 'Page Expired' error (riverma)

* OODT-595 Improve styling of Workflow Viewer (webapp/components) (riverma)

* OODT-602 Load not settable for WorkflowTaskJobs in 
  IterativeWorkflowProcessThread (mattmann)

* OODT-470 Enabled RSSProductTransferServlet to be configured using an XML
  configuration file (rlaidlaw)

* OODT-560 XmlStructFactory::getProductTypeMapXmlDocument does not 
  output virtual product types (Varun Ratnakar via mattmann)

* OODT-583 Added JUnit test class for RSSConfigReader (rlaidlaw)

* OODT-582 Fix for oodt.cas.product.rss.RSSConfigReader.readTags() for detection
  of source attribute for tags defined in the RSS configuration file (rlaidlaw)

* OODT-576 Used try...finally in oodt.commons.database.SqlScript.loadScript() to
  close BufferedReader (rlaidlaw)

* OODT-537 Push/Pull NullPointerException on startup (mattmann, joyce)

* OODT-578 Workflow Monitor experiences runtime exception (NPE) out 
  of the box with RADIX (Arni Sumarlidason via mattmann)

* OODT-575 Metadata extractor for parsing filename based on regex 
  (Nga Chung via mattmann)

* OODT-573 Refactored the return statement in the getTopNProducts method in the
  LuceneCatalog class (rlaidlaw)

* OODT-571 Updated assignments in setWorkflowInst and setWaitforConditionSatisfy
  methods in IterativeWorkflowProcessorThread class (rlaidlaw)

* OODT-574 RADiX POM Parent References (Arni Sumarlidason via mattmann)

* OODT-491 Add nextState (determineNextState) function to 
  WorkflowProcessor (mattmann)

* OODT-558 Introducing optional web-grid servlet init parameter "org.apache.oodt.grid.GridServlet.config" 
 that can be used to read/write its configuration to a location external to the web app directory (luca).

* OODT-564 XMLPS should provided ordered results based on 
  requested fields (mattmann, joyce)

* OODT-369 Building with Maven3 (mattmann, Adam Estrada)

* OODT-555, OODT-557 - Changed behavior of Lucene Catalog update methods to retrieve a product from the index to the cache, 
  instead of failing if it is not found in the cache. At the same time, simplify the Curator updateMetadata() method to just update
  the metadata, without removing and re-inserting the product before that.
  (luca, rishi, mattmann)

* OODT-553 Update org.apache.oodt.commons.exec.EnvUtilities to Use System.getEnvironment 
  (Michael Starch via mattmann)

* OODT-551 Insert primary key in metadata table for database-based File Manager, to always return metadata values in proper order
           (luca, mattmann, bfoster)

* OODT-548 Be more resilient to table definitions matching the master table 
  in the Mapping config file (mattmann,joyce)

* OODT-546 XMLPS inner-joins default table with itself (mattmann,joyce)

* OODT-547 Switch newest Curator upudate metadata method to use XML-RPC FileManager client.
           Switch other Curator update metadata method to use shared instance of Catalog Factory 
           to minimize use of resources.
           (luca)


Release 0.5 
--------------------------------------------
Release Date: December 18, 2012

* OODT-541 Implement a LenientDataSourceCatalog that allows for dynamically named
  metadata fields, effectively bypassing the validation layer.
  (luca)

* OODT-544 Implement a DataSourceCatalog back-end to the CAS FileManager 
  where the "product_id" column is of type string.
  (luca)

* OODT-545 Allow Curator web app to use a configurable CAS Catalog Factory 
  as specified in curator.xml.
  (luca)

* OODT-543 Update ExpImpCatalog tool to allow core Metadata to pass through 
  when Embedded Catalogs are used (mattmann, cinquini)

* OODT-542 Need to update logging.properties for all servers post CAS CLI
  (mattmann)

* OODT-535 Provide capability to remove metadata tags through Curator 
  web app. (luca)

* OODT-533 Allow SolrIndexer to query and ingest products from the File 
  Manager catalog by name. (luca)

* OODT-534 Better error message when a product is looked by id in the catalog 
  and not found. (luca)
                      
* OODT-529 Allow Lucene Catalog to be "lenient" with respect to XML validation,
  i.e. allow handling of dynamically named fields if the "lenient" flag is set 
  (defaults to false). (luca)

* OODT-530 Bug fix: crawler MetExtractorProductCrawler had a list of precondition 
  beans that was not initialized to an empty list, with would cause a Spring 
  initialization exception when more than one preconditions was injected. (luca)
           
* OODT-531 Bug fix: the legacy Spring configuration file legacy-cmd-line-options.xml 
  was missing some required configuration for the beans "noRecur" and "crawlForDirs".
  (luca)
           
* OODT-532 Bug fix: pre-condition bean "AprioriUniquessCheckWithFilemgr" was missing 
 the filemgrUrl property, which was therefore never set at initialization. (luca)

* OODT-522 Provided additional Curator REST endpoint: "/metadata/update" that updated 
  product metadata in place, i.e. preserves all existing catalog metadata (luca)

* OODT-523 Updated Curator CXF dependency to 2.6.0 and removed FIXME patch to 
  extract "id" from "/metadata/catalog" request (luca)

* OODT-528 Merged back changed to CuratorLuceneCatalog into File Manager LuceneCatalog,
  and change Curator to use mainstream File Manager Lucene Catalog (luca)

* OODT-272 Enable Removal of Finished Ingestion Tasks
  (Michael Joyce via mattmann)

* OODT-328 Remove jpl.nasa.gov references from code 
  (Michael Joyce via mattmann)

* OODT-520 Default Crawler launcher doesn't reference FileManager 
  properties (Mike Joyce via mattmann)

* OODT-502: Support pre and post conditions in Workflow Processor 
  Queue (mattmann)

* OODT-516: Add WorkflowLifecycle tests that check pctComplete for 
  wengine and w1 style lifecycles (mattmann)

* OODT-501: Method to create Processor from Instance should be based on 
  Graph structure (mattmann)

* OODT-511: Solr Indexer Date Formatting Removes Metadata (pramirez)

* OODT-510: SolrIndexer fails on ProductTypes that have 0 products (pramirez, ahart)

* OODT-496: Convert EngineRunner interface to take TaskProcessor (mattmann)

* OODT-505: Remove synchronous Runner (mattmann)

* OODT-498: Overwrite and bring back 0.3 ThreadPoolWorkflowEngine plus 
  patches (mattmann)

* OODT-500: Rename property for max threads in AsyncLocalEngineRunner (mattmann)

* OODT-497: Make WorkflowProcessor PrioritySorters thread-safe (mattmann)

* OODT-492: Refactor Workflow Instance repo to store/retrieve that state 
  information (mattmann)

* OODT-490: Refactor WorkflowProcessor to push all of its state information 
  into Workflow Instance (mattmann)

* OODT-432: Add FileSize to know metadata fields set by CAS-Crawler 
  (bfoster via mattmann)

* OODT-381: Create Runner framework to allow flexible WorkflowTask 
  execution on different runtimes (mattmann, bfoster)

* OODT-215: Workflow2 Architecture (mattmann, bfoster, sherylj)

* OODT-310: Port WEngine to trunk (mattmann, bfoster, sherylj)

* OODT-487: MetadataBasedProductMover to handle when the source and destinations match (cgoodale)

* OODT-488: Enhanced Solr Indexer capabilities (pramirez)

* OODT-390: Removal of optimize call in Lucene Workflow Instance Repository (pramirez)

* OODT-486: WorkflowInstance tries to cast null strings into dates causing
  exceptions on getters/setters (mattmann)

* OODT-483: Fix to prevent NumberFormatException in XmlRpcStructFactory (rlaidlaw)

* OODT-471: Added namespace definitions to RSS config files for CAS REST API (rlaidlaw)

* OODT-469: Modified RSSProductServlet to remove hard-coded namespaces and allow 
configurable namespaces via RSS config files (rlaidlaw)

* OODT-485: Factory out EngineRunner and WorkflowProcessor classes into their own packages (bfoster)

* OODT-481: CAS-Pushpull uniqueMetadataElement is being loaded as empty String instead of null (bfoster)

* OODT-474: Fixed the probem having in a configuration file 
  ProtocolFactoryInfo.xml (mattmann, YunHee Kang)

* OODT-478: Balance: New hook for hooks.php (nhidalgo via ahart)

* OODT-476: RemoteSiteFile doesn't always set RemoteSite (bfoster)

* OODT-477: CommonsNetFtpProtocol throws exception on successful download (bfoster)

* OODT-329: OODT PEAR Channel (Gavin McDonald via mattmann)

* OODT-472: Puny Module - Return to previous page once the user is done editing  (skhudiky)

* OODT-467: Change SciPgeConfigFileWriter to DynamicConfigFileWriter (bfoster)

* OODT-464: Add file staging support to CAS-PGE's XmlFilePgeConfigBuilder (bfoster)

Release 0.4
--------------------------------------------
Release Date: June 13th, 2012

* OODT-446 Addition of Puny module to Balance (skhudiky)

* OODT-462: Include support for special processing instructions in opendap-ps configuration file (luca)

* OODT-463: Ignore container-type DAS attributes when parsing metadata in opendap-ps module (luca)

* OODT-402: Provided default File Manager policy and RSS configuration for 
products with location metadata.  See subtasks OODT-449, 452 and 453. (rlaidlaw)

* OODT-449: Added default GeoRSS configuration file for the CAS REST RSS service. (rlaidlaw)

* OODT-452: Moved File Manager policy files for GenericFile type (elements.xml, product-types.xml, 
product-type-element-map.xml) to filemgr/src/main/resources/examples/core subdirectory.  
Updated six unit tests to use the new subdirectory. (rlaidlaw)

* OODT-453: Added File Manager policy files for simple LocationAwareProduct
(elements.xml, product-types.xml, product-type-element-map.xml). (rlaidlaw)

* OODT-457: add missing Datatables images for paging through Cas-browser index page (skhudiky)

* OODT-455 Small CSS tweak for the OPSUI Wicket App (cgoodale)

* OODT-451 Implemented CAS metadata precondition class to check for existence of given marker file
           within product directory (luca)

* OODT-445 Extend env replace support introduced in OODT-343 (ahart)

* OODT-444 Utils class missing from Balance cas-browser module (ahart)

* OODT-448 added missing character (skhudiky)

* OODT-447 changed reference to CAS-SSO directory in the profile management module README.txt (skhudiky)

* OODT-450 Crawler being able to delete a non-empty product directory
  upon successful product ingestion (luca)

* OODT-421 Make WorkflowLifecycleManager understand 
  WorkflowStates (mattmann)

* OODT-440 Replace legacy getMetadata("UUID") calls with 
  getMetadata("CAS." + CoreMetKeys.PRODUCT_ID) (thomas)

* OODT-442 Apache project branding requirements: DOAP
  file [PATCH] (Shane Curcuru via mattmann)

* OODT-438 Make CAS-Crawlers MimeExtractorConfigReader relative file paths be relative to its
   XML file (bfoster)
 
* OODT-426 Introduce a CAS-Metadata based renaming interface (bfoster)

* OODT-435 Refactor Graph and ParentChildWorkflow class 
  outside of PackagedWorkflowRepository (mattmann)

* OODT-157 PCS Operator User Interface web application  
  (mattmann, ahart, cgoodale, pramirez)

* OODT-401 added profile management module to balance modules directory (skhudiky)
  
* OODT-433 Fix retrieveFileByName and retrieveFileById buy setting the product's references 
  before calling retrieveProduct (thomas)

* OODT-430 Update all boolean type bean properties in the crawler cmd-line-options.xml (thomas)

* OODT-412 Bugfix: MoveMetadataToFailureDir should read MoveMetadataFileToFailureDir (thomas)

* OODT-428 CrawlerBeansPropHandler doesn't set list properties for Spring
  PropertyOverrideConfigurer correctly (bfoster)

* OODT-429 filemgr query throws NPE when sorting by key with possibly empty values (rickdn)

* OODT-427 filemgr query throws "String index out of range: -1" when some products have undefined
  metadata values (rickdn)

* OODT-405 Introduced new syntax for environment variable replacement in opendapps module (luca)

* OODT-425 CAS-PGE logger unit-test fails because it sometimes finds logger lock file (bfoster)

* OODT-422 Allow for CAS-PGE PgeMetadata to be dumped to an xml
  file after initialization (bfoster)

* OODT-410 DataSourceCatalog compatible with HypersonicSQL 
  (mattmann,rickdn,bfoster,pramirez)

* OODT-413 filemgr query throws NPE when some products have undefined metadata values (rickdn)

* OODT-420 CAS-PGE should fail when product ingests fail (bfoster)

* OODT-419 Make PgeConfigBuilder configuration via PgeTaskMetKeys (bfoster)

* OODT-418 Improve CAS-PGE logging (bfoster)

* OODT-71 Add lifecycle model supporting transition, done 
  and waiting states (mattmann)

* OODT-414 Create Java Logger Handler for CAS-PGE (bfoster)

* OODT-415 Add support to ExecUtils callProgram to take OutputStreams
  for forwarding stdout and stderr (bfoster)

* OODT-249 When a node is removed from the Resource Management 
  system, it should be removed from all of its queues as well (gabe via mattmann)

* OODT-376 Addition of Cas-Browser Balance module (gabe)

* OODT-411 Port CAS-PGE's PcsMetadataKeys to PgeTaskMetKeys (bfoster)

* OODT-409 Convert CAS-PGE metadata keys and workflow statuses from static Strings to enums (bfoster)

* OODT-406 Add CAS-PGE support for multiple Property Adders (bfoster)

* OODT-403 Port wengine ControlMetadata to cas-pge's PgeMetadata (bfoster)

* OODT-34 Ability for File Manager to stage an ingested Product to one of its clients (bfoster)

* OODT-400 Add options for CAS-Crawler's SendNotification CrawlerAction (bfoster)

* OODT-399 cas-cli sub-option requirements for help printing was not
  using p:required for GroupSubOption (bfoster)
 
* OODT-395 SerializableMetadata.toXml() doesn't set namespace on root element (rickdn)

* OODT-361 Workflow test event fails with NPE (rickdn)

* OODT-373 PCS OpsUI component not listed in OODT pom.xml (ahart)

* OODT-397 XmlRpcWorkflowManager tests don't properly clean up 
  LuceneCatalog remnants (mattmann)

* OODT-396 Add shutdown hook to the Workflow Manager server (mattmann)

* OODT-394 Integrate CAS-Protocol with CAS-CLI (bfoster)

* OODT-392 Remove old command line option code from commons (bfoster)

* OODT-391 Integrate CAS-Catalog with CAS-CLI (bfoster)

* OODT-352 Integrate CAS-CLI into CAS-Crawler (bfoster)

* OODT-389 Lucene Workflow Instance Repository index now intialized on startup (pramirez)

* OODT-382 Lucene FileManager index now intialized on startup (pramirez)

* OODT-388 Clearly indicate location for loading globally-required Balance modules (ahart)

* OODT-379 Fix CAS-CLI help option sorting and added handler initialization (bfoster)

* OODT-362 Change CmdLineAction names to match their CmdLineOption long option (bfoster)

* OODT-371 Improvements in the richness and consistency of metadata extracted from the THREDDS catalogs
  in the opendap-ps module (luca)

* OODT-341 XMLPS should be able to stream large results (rickdn)

* OODT-375 Improve ApplicationResponse::includeJavascript to support including 
  JavaScript snippets in addition to static files (ahart)

* OODT-356 Tool to clean Workflow Instance repositories (mattmann, bfoster)

* OODT-372 Correct LDAPAuthenticationProvider class name (Shakeh Khudikyan via ahart)

* OODT-256 updateMetadata needed in XmlRpcFileManager (mattmann)

* OODT-368 Refactoring of metadata extraction functionality for 
  opendapps module (Luca Cinquini, mattmann)

* OODT-366 Extension to opendapps module to extract ALL variables 
  in DDS stream (Luca Cinquini, mattmann)

* OODT-365 Main class to drive opendapps profile generation 
  (Luca Cinquini, mattmann)

* OODT-367 Integrate CAS protocol into PushPull (mattmann, bfoster)

* OODT-364 Prevent XSS attacks via malformed query string (ahart)

* OODT-363 Add support for LuceneQuery action to optionally return more than
  just Product ID results (bfoster)

* OODT-351 Integrate CAS-CLI into CAS-Filemgr (bfoster)

* OODT-360 Add supported for CmdLineAction detailed help description (bfoster)

* OODT-359 CmdLineUtility is not printing action messages (bfoster)

* OODT-358 Change CmdLineUtility's run(String[]) method to throw
  RuntimeException when in debug mode (bfoster)

* OODT-357 Change Print Supported Actions StdCmdLinePrinter output
  format to more "readable" (bfoster)

* OODT-338 XMLPS unit tests should change constructor to 
  setUp() (Ricky Nguyen via mattmann)

* OODT-337 XMLPSProductHandler methods should return empty lists instead 
  of null (Ricky Nguyen via mattmann)

* OODT-336 xmlps should omit joining of tables that are unnecessary to 
  fulfill query (Ricky Nguyen via mattmann)

* OODT-339 MappingReader should add default join table to DatabaseTable 
  if none defined (Ricky Nguyen via mattmann)

* OODT-354 CAS-CLI StdCmdLinePrinter doesn't print optional sub-options
  for group options (bfoster)

* OODT-343 Add support for basic 'environment replacement' in 
  module config.ini files (ahart)

* OODT-353 getXmlRpcProduct and getProductFromXmlRpc should allow 
  null values for product member variables since Product is just 
  a carrier object (bfoster)

* OODT-349 CAS-CLI CmdLineAction should take a printer which
  it is required to print it's messages to (bfoster)

* OODT-350 File Manager query_tool bug fix for Lucene
  style queries (goodale, mattmann, bfoster)

* OODT-348 Integration CAS-Resource with CAS-CLI (bfoster)

* OODT-345 Integration CAS-Workflow with CAS-CLI (bfoster)

* OODT-344 Workflow Conditions and Timeout Seconds causes 
  backwards incompat SerDe issues with XML-RPC (mattmann)

* OODT-330 Factor out command line utility from oodt-commons
    - check in CAS-CLI... integration to other components to come (bfoster)

* OODT-333 XMLPS query doesn't quote literal string 
  (Ricky Nguyen, mattmann, Sheryl John)

* OODT-323 Add new command line option in Workflow manager 
  client to get Workflow Instance Metadata (Sheryl John via mattmann)

* OODT-52 Update the CAS File Manager User Guide (thomas, goodale)

* OODT-322 LDAPAuthenticationProvider class requires 
  a non-existent path (Shakeh Khudikyan via mattmann)

* OODT-321 PEAR install of PHP filemgr is not working 
  properly (Shakeh Khudikyan via mattmann)

* OODT-327 Open SSO plug-in client for CAS-SSO (mattmann, pramirez)

* OODT-326 A tool to dump the File Manager catalog metadata 
  into Solr (mattmann, pramirez)

* OODT-37 Create an Action to Group other Actions Together (pramirez, mattmann)

* OODT-36 Create an Action to Support Simple Branching (pramirez, mattmann)

* OODT-150 ToggleAction addition to crawler (bfoster, mattmann)

* OODT-34 Create an Action to Ingest an Ancillary File (mattmann, pramirez)

* OODT-33 Refactor and Improve File Based Actions (mattmann, pramirez)

* OODT-35 Create an Action to Send an Email (mattmann, pramirez)

* OODT-320 Update OODT About Page (Adam Estrada via mattmann)

* OODT-61 appendTableName property for mapping files in XMLPS 
  breaks columnname-based lookup in 
  ResultSet (Ricky Nguyen, mattmann, davekale) 

* OODT-318 Fix for Jenkins builds and java.io.tmpdir issue 
  for testing via Maven (mattann, Olivier Lamy)
  
* OODT-317 Workflow Priority Sorting (mattmann, bfoster)

* OODT-172 Update CAS Curator Tutorial (thomas via mattmann)

* OODT-316 Add the WorkflowManager Use Case Diagram back into 
  the User Guide (mattmann)

* OODT-43 Add the FileManager Use Case Diagram back into the 
  User Guide (mattmann, cgoodale)

* OODT-313 Copyright statement on OODT website needs updating 
  (mattmann, Greg Stein)

* OODT-311 Test failing related to workflow tasks and the 
  DataSourceWorkflowRepository (mattmann, riverma, Cecilia S. Cheng)

* OODT-299 Rename all Authentication properties to use
  Authentication instead of Auth (ahart, Shakeh Khudikyan)

* OODT-309 SequentialWorkflowProcessor doesn't need to be a 
  Thread (mattmann)

* OODT-205 WorkflowInstances should have pre-conditions as 
  well (mattmann)

* OODT-306 Added FileManager Tool Aliases (mattmann, goodale)

* OODT-208 WorkflowConditions should be identifiable as optional 
  or required (mattmann)

* OODT-209 Workflow Manager Dynamic Workflows (mattmann)

* OODT-211 Sub Workflows (mattmann, per OODT-70)

* OODT-207 WorkflowConditions should have a timeout (mattmann)

* OODT-308 WEditor save feature is not implemented (bfoster via mattmann)

* OODT-296 Workflow Editor GUI (mattmann, bfoster, ahart)

* OODT-294 Updated website to announce release of 0.3 (goodale)

* OODT-180 Fixed small typo on website (goodale)

* OODT-70 Add ability for sequential and parallel task 
  specifications for Workflows (mattmann, bfoster)

* OODT-295 BasicVersioner doesn't work with Hierarchical 
  Products (mattmann, Tim Stough)


Release 0.3
--------------------------------------------
Release Date: June 20th, 2011

* OODT-292 Updated webapp poms to inherit from core parent pom to allow maven
  release plugin to function properly (pramirez)

* OODT-279 Make Resource Manager FAILURE and SUCCESS aware instead of just 
  COMPLETE aware (mattmann, bfoster)

* OODT-278 CAS-PGE returns success even if product file(s) fail to 
  ingest (mattmann, bfoster)

* OODT-243 Add method is called on already existing jobspec (mattmann, bfoster)

* OODT-199 CoreMetExtractor chokes on Hierarchical Products (mattmann)

* OODT-200 FinalFileLocationExtractor chokes on Hierarchical products
  (mattmann)

* OODT-186 Common base library for modular OODT web applications built 
  using PHP (ahart, Gabe Resneck, Shakeh Khudikyan)

* OODT-191 PushPull FileRetrievalSystem NPE if mime comment for type doesn't 
  include ampersand (mattmann, bfoster) 

* OODT-184 Add ability to poll the load of any particular node (Gabe Resneck via mattmann)

* OODT-60 Annoying build warnings about dependencies that 
  have "been relocated" (mattmann, davidkale)

* OODT-198 Add test harness for XmlRpcResourceManager (mattmann)

* OODT-182 Add ability to change node capacity during execution (Gabe Resneck via mattmann)

* OODT-162 Parametric Data Model File Manager Catalog (mattmann, ahart, cgoodale)

* OODT-195 XMLValidationLayer: Elements Map and ProductType to Element 
  Map can become inconsistent (Michael Starch, mattmann, bfoster)

* OODT-197 Null descriptions from elements.xml cause NPE when writing 
  elements.xml file back out (mattmann, Michael Starch)

* OODT-193 PGE ExternMetExtractor MetWriter (bfoster, mattmann)

* OODT-192 PGE FilenameExtractorMetWriter (mattmann)

* OODT-156 Rewrite Workflow Monitor webapp using Apache Wicket (mattmann)

* OODT-190 WorkflowCondition configuration isn't read (mattmann)

* OODT-189 Refactor and clean up WorkflowCondition 
  Configuration (mattmann)

* OODT-188 Precondition Comparator to ignore files with 
  a particular extension (mattmann)

* OODT-129 Integrate with Maven Central (mattmann)

* OODT-177 PHP implementation of sso (ahart)

* OODT-175 cas-wm-webapp javadoc fails maven build (mattmann, bfoster)

* OODT-54 Xml Rpc Serde Casts Longs to Ints (pramirez via mattmann)

* OODT-155 Rewrite File Manager Browser webapp using Apache Wicket (mattmann)

* OODT-185 The File Manager's query_tool script does not handle quoted parameter values. (shardman)

* OODT-181 Add documentation for metFileExt attribute on exec element in
  ExternMetExtractor (mattmann)

* OODT-179 Upgrade PushPull FTP protocol to use Commons Net 2.2 (mattmann)

* OODT-176 Baked in file manager policy should include example of product type metadata (mattmann)

* OODT-174 TestAcquisitionDateVersioner fails in the later evening (bfoster via mattmann)

* OODT-172 Improvements to the Filename Extractor (mattmann)

* OODT-170 cas-catalog shuffles query results . . . order is lost (bfoster)

* OODT-169 Pushpull dirstruct xml files fail to replace global 
  variables in name attribute for dir and file elements (bfoster)

* OODT-166 Ability for puspull to dynamically generate ProductName for a given mime-type (bfoster)

* OODT-167 ProcessedPageInfo isLastPage fails for case PageNum = 1 and totalPages = 0 (bfoster)

* OODT-164 AcqusitionDate Versioner (mattmann)

* OODT-163 DirectoryProduct Versioner for the File Manager (mattmann)

* OODT-160 Allow number of session protocol connections in 
  pushpull to be configurable for each site (bfoster)

* OODT-161 PushPull getTextContext()/getNode() value still poses an issue for some JVMs (bfoster)

* OODT-159 Dynamic Queue/Node was not added to command-line usage printout (bfoster)

* OODT-152 Fixed website and download page.  Reverted back
  to the same site from OODT-134. (goodale)

* OODT-153 PathUtils [DATE.MONTH] and [DATE.DAY] should pad with 
  a "0" not a " " (empty space) (bfoster via mattmann)

* OODT-139 PCS JAX-RS services (mattmann, pramirez, bfoster, ahart)

* OODT-151 Add xdocs for modules from old JPL site (mattmann)

* OODT-110 TestExternMetExtractor fails if temp directory is mounted noexec (pramirez, smclees)

* OODT-145 StreamGobbler stopGobblingAndDie() method doesn't wait 
  until gobble is really dead (bfoster)

* OODT-112 Link to slides on web-grid Maven page is broke (mattmann, goodale)

* OODT-130 Fixed mailing list links for CAS Components maven generated site pages (goodale)

* OODT-144 ExternAction for crawler which executes some external command (bfoster)

* OODT-143 addition of fmprod context.xml and maven servlet-api 
  dependency scope change to provider (Shakeh Khudikyan, mattmann)

* OODT-142 TypeHandler SerDe is backwards incompat with older 
  versions of FM (mattmann)

* OODT-141 LuceneCatalog pagination throws LuceneException when 
  grabbing out of bounds hitNum

* OODT-140 commons-lang version should be standardized on 
  (2.1. vs 2.3) (bfoster)

* OODT-135 Process Control System Package (mattmann)

* OODT-138 Reference class prints stack trace when mime type repo 
  cannot be found (mattmann)

* OODT-136 Lack of cataloged mime type causes recoverable exception in 
  Reference core class (mattmann)

* OODT-134 Update website with News of Release 0.2 and links for download (goodale)

* OODT-128 CAS workflow monitor webapp fails to load due to unparsable 
  character in JSP file (Rishi Verma via mattmann)

Release 0.2 
--------------------------------------------
Release Date: January 17th, 2011

* OODT-119 Curator REST API documentation (mattmann, joshuaga)

* OODT-118 CAS Curator doesn't allow metadata update on file 
  manager browser (mattmann)

* OODT-116 Cas Curator doesn't ingest (mattmann)

* OODT-117 Final File Location Extractor fails in actual use despite unit test 
  passing (mattmann)

* OODT-115 TestCatalogServiceLocal fails (mattmann, pramirez)

* OODT-65 Release process now includes publishing to PyPi (pramirez, kelly, mattmann)

* OODT-112 Link to slides on web-grid Maven page is broke (mattmann, kelly)

* OODT-111 Allow a file to be specified in the URL for the 
  opendapp configurator (Victor Hwang via mattmann)

* OODT-108 Ability for the file manager to ingest a file in 
  place (Faranak Davoodi via mattmann)

* OODT-73 Update the OODT website @ http://oodt.apache.org  (goodale, kelly) 

* OODT-86 The Product Server Should Have the Capability to Turn Off 
  Reporting of File Sizes For File Listing Functions (Michael Cayanan via mattmann)

* OODT-41 Product Constructor does not set transfer status (mattmann)

* OODT-72 Unable to set Metadata based off Product Versioning during 
  Product ingestion (mattmann, bfoster)

* OODT-68 Add Number of Product Hits to ProductPage (bfoster, mattmann)

* OODT-107 Typo identified in filemgr-client usage statement (Rishi Verma via mattmann)

* OODT-58 update file manager to use Tika for mime-type detection (mattmann)

* OODT-106 Logging properties for OPeNDAP ps doesn't include required .level suffix (mattmann)

* OODT-105 Fix GeospatialCoverage in OPeNDAP ps (mattmann)

* OODT-104 Allow const section to plumb information into profile elements (mattmann)

* OODT-90 (cas-crawler patch) CAS-PGE returns success even if product file(s) failed to ingest (bfoster)

* OODT-103 modify cas-common's cmd-line parser to throw a special OptionHelpException if no args 
  are specified so it can be specifically trapped (bfoster)

* OODT-192 cas-catalog should require a metadata flag for allowing Transaction updates (bfoster)

* OODT-95 cas-catalog throws exceptions with blank messages (bfoster)

* OODT-98 Resource Manager TestXmlQueueRepository test fails on some computers because 
 <hashmap>.keySet() order is undefined (bfoster, mattmann)

* OODT-97 Allow for unsorted paging across all catalogs to give option of lowering heap footprint (bfoster)

* OODT-96 cas-catalog query parser fails when bucketNames are given (bfoster)

* OODT-94 DataSourceIndex doesn't filter it's query to the bucket names provided in the QueryExpression (bfoster)

* OODT-93 Spring XML resource classpaths are still set to /gov/nasa/jpl... and commons classpaths were not updates to remove 'cas' (bfoster)

* OODT-91 cas-commons command-line help for a given arguments (bfoster)

* OODT-89 (cas-pushpull patch) Synchonize OODT-CAS components, which depend on one another, on a particular Apache-Tika version (bfoster)

* OODT-88 mvn eclipse:eclipse fails to merge resources (bfoster)

* OODT-89 (cas-metadata patch) Synchonize OODT-CAS components, which depend on one another, on a particular Apache-Tika version (bfoster)

* OODT-87 Add date roll dynamic replacement fuction to PathUtils (bfoster)

* OODT-63 Use hard coded version numbers in shared component POMs so that MVN install works (bfoster)

* OODT-85 XML configurator for opendap crashes on null pointer exceptions for some datasets (Victor Hwang via mattmann)

* OODT-78 Ability for Resource Manager to dynamically add/remove nodes and modify queues at run-time (bfoster)

* OODT-79 LRUScheduler removes a job from the JobQueue, but adds it back if can't schedule it, which (in the 
  JobStack impl) causes JobRepo to create duplicate copies of the same JobSpec with different JobIds (bfoster)

* OODT-77 Make resource manager Queue aware (bfoster)

* OODT-80 Create Cached JobRepository for cas-resource (bfoster)

* OODT-82 Make resource manager's node ip addresses envReplace-able (bfoster)

* OODT-83 the artifactid for pushpull should change to cas-pushpull (Faranak Davoodi via mattmann)

* OODT-76 Commons TimeEventWeightedHash throws a StackOverthrow Error when epsilon is large and event duration is small (bfoster)

* OODT-9 Create a generic OpenDAP profile server (mattmann, Victor Hwang, smcclees)

* OODT-67 All Loggers should be "static final" (bfoster)

* OODT-66 Allow Filemgr XML-RPC connection retries and retry interval to be configurable (bfoster)

* OODT-62 DateTimeVersioner fails on + side of the GMT line (Thomas Bennett via mattmann)

* OODT-57 LuceneCatalog.getNumHits() doesn't properly translate the 
  given Query object into the equivalent Lucene query (Gabe Resneck via mattmann)



Release 0.1-incubating 
--------------------------------------------
Release Date: 0ct 31, 2010

* OODT-56 Web Grid config contains old caltech licensing header (woollard)

* OODT-55 Latest Tika 0.8-SNAPSHOT broke pushpull (mattmann)

* OODT-51 Workflow unit test fails due to hsql not parsing the apache header correctly (woollard)

* OODT-49 Basic user guide for PushPull (mattmann)

* OODT-22 remove pushpull's jvftp dependency (mattmann)

* OODT-47 Web-grid admin pages reference jpl.eda instead of org.apache.oodt (mattmann)

* OODT-46 XMLPS mapping file doesn't declare XML at top of conf file (mattmann)

* OODT-48 WildcardExpression in XMLPS generates incorrect SQL (mattmann)

* OODT-44 doesn't build in JDK5 because of stringPropertyNames() in 
  cas/workflow/structs/TaskJobInput.java (mattmann, davekale)

* OODT-42 Fix CAS-Catalog to work in apache and pull over new changes 
  since apache port (bfoster)

* OODT-3 Update source code to use ASL headers and add NOTICE, etc. 
  (smcclees, ahart, woollard, mattmann, kelly, pramirez)

* OODT-38 Removed RAT from default build process. Use "mvn -P audit ..." to run RAT (pramirez)

* OODT-40 DataSourceCatalogFactory default validation layer class is incorrect (pramirez via mattmann)

* OODT-39 LuceneCatalogFactory default validation layer class is incorrect (pramirez via mattmann)

* OODT-15 One trunk for all OODT components with top level build (mattmann, bfoster, kelly, woollard)

* OODT-30 updated "grid" svn:ignore property to ignore target folder (David Kale via mattmann)

* OODT-29 Import (ERNE) XMLPS component (David Kale, ahart, woollard, mattmann)

* OODT-27 Import Web Grid component (David Kale, mattmann)

* OODT-26 Typo identified in basic user's guide (Rishi Verma via mattmann)

* OODT-16 OODT website (kelly)

* OODT-24 Fmprod webapp currently depended on the toXML method of the Metadata object 
  in cas-metadata, which has been removed... (woollard)

* OODT-23 remove pushpull's javamail dependency (mattmann)

* OODT-20 Upgrade oodt-profile's jena dependency to more recent version (kelly)

* OODT-19 Metadata should not use a GPL-licensed XML parser (mattmann)

* OODT-7 Curator adds escaped sequenced spaces when reading extractorBinPath 
  tag from extractor config files (joshuaga via mattmann)

* OODT-21 Remove jersey dependency from curator and replace with Apache CXF (mattmann)

* OODT-18 Convert curator to use Apache commons rather than jTidy (mattmann)

* OODT-16 - Remove JPL look+feel and web references, as well as dependency on private JPL M2 
  repository; add relocation tags and disclaimer of Apache Incubation status (kelly)

* OODT-14 User guide pre-requisite to checkout and install oodt-core before attempting to 
   build cas-filemgr (Cameron Goodale via mattmann)

* OODT-4 - Merge cas-commons and edm-commons (mattmann)

* OODT-8 - grid-product/pom.xml references tika ver. 0.2-SNAPSHOT, which no longer exists (David Kale via mattmann)

* OODT-2 - Import CAS components into OODT SVN (mattmann, joes)


