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

$Id$

Apache Tomcat re-uses code from a number of other Apache projects. There are
several reasons why depending on the binary releases of those projects is not
ideal. These include:
- potential conflicts if a web application ships with the same JAR
- a large JAR where Tomcat only depends on a small fraction

There are various approaches taken to dealing with this. One of those approaches
is to svn copy the classes to the Tomcat source tree, modify them (always with a
package rename, sometimes with additional changes) and then keep them in sync
with the original via regular svn merges. This file keeps track of these copies
to assist committers in keeping them up to date.

BCEL
org.apache.tomcat.util.bcel is copied from:
/commons/proper/bcel/trunk/src/main/java/org/apache/bcel

DBCP
org.apache.tomcat.dbcp is generated by the build process from Commons DBCP and
Commons Pool.

FileUpload
org.apache.tomcat.util.http.fileupload is copied from:
/commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload
Note: Tomcat's copy of fileupload also includes classes copied manually (rather
      than svn copied) from Commons IO.
Note: There is a Javadoc comment at the top of the following file that mentions
      what svn revision of Commons FileUpload trunk was used by Tomcat:
      org/apache/tomcat/util/http/fileupload/package-info.java

Codec
org.apache.tomcat.util.codec is copied from:
/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/
Note: Only classes required for Base64 encoding/decoding. The rest are removed.


