==============================================================
 Apache Solr
 Copyright 2006-2008 The Apache Software Foundation
==============================================================

This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).

Includes software from other Apache Software Foundation projects,
including, but not limited to:
  - Apache Lucene Java
  - Apache Tomcat (lib/servlet-api-2.4.jar)
  - Apache Commons
  - Apache Geronimo (stax API jar)

This product includes tests written with EasyMock Copyright 2001-2007
Tammo Freese (http://www.easymock.org/)

This product includes the JQuery JavaScript library created by John Resig.
Copyright (c) 2008 John Resig, http://jquery.com/

This product includes the stax-utils jar: https://stax-utils.dev.java.net/
Copyright (c) 2004, Christian Niles, unit12.net
Copyright (c) 2004, Sun Microsystems, Inc.
Copyright (c) 2006, John Kristian 
License: The BSD License (http://www.opensource.org/licenses/bsd-license.php)

This product includes a JUnit jar: http://junit.sourceforge.net/
License: Common Public License - v 1.0 (http://junit.sourceforge.net/cpl-v10.html)

=========================================================================
==  Apache Lucene Notice                                               ==
=========================================================================
The snowball stemmers in
  contrib/snowball/src/java/net/sf/snowball
were developed by Martin Porter and Richard Boulton.
The full snowball package is available from
  http://snowball.tartarus.org/
---

This product includes/uses software, Woodstox (http://woodstox.codehaus.org),
developed by Codehaus  (http://www.codehaus.org/)
License: The Apache Software License, Version 2.0  (http://www.apache.org/licenses/LICENSE-2.0.txt)
=========================================================================
==  Woodstox Notice                                                    ==
=========================================================================
This product currently only contains code developed by authors
of specific components, as identified by the source code files.

Since product implements StAX API, it has dependencies to StAX API
classes.

For additional credits (generally to people who reported problems)
see CREDITS file.
---

This product includes software developed by Mort Bay Consulting
(specifically, Jetty 6.1.3, the bundled servlet container in example)
The jboss integration module is not included.
=========================================================================
==     Jetty Notice                                                    ==
=========================================================================
==============================================================
 Jetty Web Container 
 Copyright 1995-2006 Mort Bay Consulting Pty Ltd
==============================================================

This product includes some software developed at The Apache Software 
Foundation (http://www.apache.org/).

The javax.servlet package used by Jetty is copyright 
Sun Microsystems, Inc and Apache Software Foundation. It is 
distributed under the Common Development and Distribution License.
You can obtain a copy of the license at 
https://glassfish.dev.java.net/public/CDDLv1.0.html.

The UnixCrypt.java code ~Implements the one way cryptography used by
Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
modified April 2001  by Iris Van den Broeke, Daniel Deville.

The default JSP implementation is provided by the Glassfish JSP engine
from project Glassfish http://glassfish.dev.java.net.  Copyright 2005
Sun Microsystems, Inc. and portions Copyright Apache Software Foundation.

Some portions of the code are Copyright:
  2006 Tim Vernum 
  1999 Jason Gilbert.

The jboss integration module contains some LGPL code.
---
