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

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)


