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

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)


