 ------
 Understanding Consumers in Apache Archiva
 ------
 Maria Odea Ching
 ------
 21 Nov 2007
 ------

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html

Understanding Consumers in Apache Archiva

 Archiva makes use of the concept of consumers. Consumers are components which consumes or processes an artifact. There are 2 types
 of consumers in Archiva: repository content consumers and database consumers. 

* Repository Content Consumers
  
  The repository content consumers consume or process artifacts during repository scanning. For every artifact found in the repository,
  each consumer processes them. There are 8 available repository content consumers which can be configured in the Repository Scanning
  page. These are:
  
  * <auto-remove> - Removes files in the repository being scanned if the file type matches any of the configured file types to be removed.  
  
  * <auto-rename> - Automatically renames common artifact mistakes. 
  
  * <create-missing-checksums> - Creates the md5 and sha1 checksum files of the artifact if there are none available in the repository.  
  
  * <index-content> - Adds the content of the artifact (specifically the pom) to the index, allowing the artifact to be searched in Archiva.
  
  * <metadata-updater> - Updates artifact metadata files depending on the content of the repository.  
  
  * <repository-purge> - Removes old snapshots from the repository either by the number of days old or by the retention count.
  
  * <update-db-artifact> - Adds the artifact (in the form of ArchivaArtifact) to the database.
  
  * <validate-checksums> - Validates the checksum files of the artifact.  
  
* Database Consumers

  The database consumers, on the other hand, consume or process artifacts during database scanning. The database consumers are split up
  into two types: the unprocessed artifacts consumers and the artifact cleanup consumers.
  
  [[1]] Unprocessed Artifacts Consumers
  
  These are consumers for those artifacts already in the index that haven't been processed yet, meaning the details about the artifact 
  are not yet processed and stored in the database. There are 6 unprocessed artifact consumers which can be configured in the
  Database page:
     
  * <validate-repository-metadata> - Verifies repository metadata files against database.     
     
  * <index-archive-toc> - Indexes the archiva table of contents for full text search.     
 
  * <index-artifact> - Indexes the artifact for the 'Find Artifact' functionality.     
 
  * <update-db-project> - Gets the details of the artifact from the pom and saves it into the database (as a project model)     
 
  * <index-public-methods> - Indexes the java public methods for full text search.     
 
  * <update-db-bytecode-stats> - Updates database with java bytecode stats.     
  
  []
  []
  [[2]] Artifact Cleanup Consumers 
  
  These are the consumers for cleaning up the database. There are 3 which can be configured in the Database page, and these are:
     
  * <not-present-remove-db-artifact> - Removes the artifact from the database if the artifact no longer exists in the file system.     
     
  * <not-present-remove-indexed> - Removes the artifact from the index if the artifact no longer exists in the file system.     
     
  * <not-present-remove-db-project> - Removes the project model of the artifact from the database if the artifact itself no longer exists in the file system.
  
  