Apache OODT Change Log
======================

=======
Release 1.9.1 - In Progress

* OODT-1031 OODT 1.9 should default to XMLRpc versions of FM/RESMGR/WMGR instead of Avro versions

=======
Release 1.9 - 30/09/2019

* OODT-973 Update mvn/archetypes/radix module script templates to remove ghost PID files (ThejanW via mattmann)

* OODT-969 Tests for Avro File Manager client and server (imesha via mattmann)

* OODT-970 Netty Transceiver throws an NPE (imesha via mattmann)

* OODT-951 Wrong null checker (JC via mattmann)

* OODT-972 Add filemgr.server and filemgr.client configuration keys to Radix filemgr.properties (lewismc via mattmann)

* 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
* OODT-968 Add metadata removes product

* OODT-991 Change logging.properties levels from ALL to DEBUG

* OODT-998 Updated cas-filemgr shell scripts to work when distribution is located in a path with spaces

=======
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.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)


