Rat (Release Audit Tool) results

The following document contains the results of Rat (Release Audit Tool).

*****************************************************
Summary
-------
Generated at: 2019-05-20T23:49:57-04:00

Notes: 4
Binaries: 0
Archives: 0
Standards: 172

Apache Licensed: 159
Generated Documents: 0

JavaDocs are generated, thus a license header is optional.
Generated files do not require license headers.

13 Unknown Licenses

*****************************************************

Files with unapproved licenses:

  src/test/shutdown.txt
  src/site/resources/announcements/announcement-1.0.0.txt
  src/site/resources/announcements/announcement-1.0.1.txt
  src/site/resources/announcements/announcement-1.0.6.txt
  src/site/resources/announcements/announcement-1.0.7.txt
  src/site/resources/announcements/announcement-1.0.5.txt
  src/site/resources/announcements/announcement-1.0.2.txt
  src/site/resources/announcements/announcement-1.0.4.txt
  src/site/resources/announcements/announcement-1.0.3.txt
  src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java
  src/java/org/apache/fulcrum/yaafi/service/shutdown/ShutdownEntry.java
  xdocs/interceptors/performance.csv
  xdocs/interceptors/tracing.csv

*****************************************************

*****************************************************
  Files with Apache License headers will be marked AL
  Binary files (which do not require any license headers) will be marked B
  Compressed archives will be marked A
  Notices, licenses etc. will be marked N
  N     README.txt
  AL    src/test/TestYaafiContainerConfig.xml
  AL    src/test/TestFortressContainerConfig.xml
 !????? src/test/shutdown.txt
  AL    src/test/TestMerlinContainerConfig.xml
  AL    src/test/TestComponentConfig.properties
  AL    src/test/TestPhoenixContainerConfig.xml
  AL    src/test/TestReconfigurationConfig.xml
  AL    src/test/TestRoleConfig.xml
  AL    src/test/TestComponentConfig.xml
  AL    src/test/org/apache/fulcrum/yaafi/baseservice/DerivedServiceImpl.java
  AL    src/test/org/apache/fulcrum/yaafi/baseservice/DerivedServiceTest.java
  AL    src/test/org/apache/fulcrum/yaafi/baseservice/DerivedService.java
  AL    src/test/org/apache/fulcrum/yaafi/service/AdviceServiceTest.java
  AL    src/test/org/apache/fulcrum/yaafi/service/ReconfigurationTest.java
  AL    src/test/org/apache/fulcrum/yaafi/service/ServiceManagerServiceTest.java
  AL    src/test/org/apache/fulcrum/yaafi/cli/MainTest.java
  AL    src/test/org/apache/fulcrum/yaafi/TestComponent.java
  AL    src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java
  AL    src/test/org/apache/fulcrum/yaafi/interceptor/util/ArgumentToStringBuilderTest.java
  AL    src/test/org/apache/fulcrum/yaafi/TestComponentTest.java
  AL    src/test/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerFactoryTest.java
  AL    src/test/org/apache/fulcrum/yaafi/framework/container/ServiceLifecycleManagerTest.java
  AL    src/test/org/apache/fulcrum/yaafi/DependentTestComponent.java
  AL    src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java
  AL    src/test/org/apache/fulcrum/yaafi/testcontainer/BaseUnitTest.java
  AL    src/test/org/apache/fulcrum/yaafi/testcontainer/Container.java
  AL    src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java
  AL    src/test/TestParameters.properties
  AL    src/site/xdoc/downloads.xml
 !????? src/site/resources/announcements/announcement-1.0.0.txt
 !????? src/site/resources/announcements/announcement-1.0.1.txt
 !????? src/site/resources/announcements/announcement-1.0.6.txt
 !????? src/site/resources/announcements/announcement-1.0.7.txt
 !????? src/site/resources/announcements/announcement-1.0.5.txt
 !????? src/site/resources/announcements/announcement-1.0.2.txt
 !????? src/site/resources/announcements/announcement-1.0.4.txt
 !????? src/site/resources/announcements/announcement-1.0.3.txt
  AL    src/site/site.xml
  AL    src/java/log4j.properties
  AL    src/java/org/apache/fulcrum/yaafi/service/baseservice/BaseService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/baseservice/BaseServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/service/servicemanager/ServiceManagerService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/servicemanager/ServiceManagerServiceImpl.java
 !????? src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java
  AL    src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/systemproperty/SystemPropertyServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/service/systemproperty/SystemPropertyService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/advice/AdviceService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/service/shutdown/ShutdownService.java
  AL    src/java/org/apache/fulcrum/yaafi/service/shutdown/ShutdownServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/service/shutdown/Shutdown.java
 !????? src/java/org/apache/fulcrum/yaafi/service/shutdown/ShutdownEntry.java
  AL    src/java/org/apache/fulcrum/yaafi/cli/Main.java
  AL    src/java/org/apache/fulcrum/yaafi/cli/Getopt.java
  AL    src/java/org/apache/fulcrum/yaafi/cli/Shutdown.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/baseservice/BaseInterceptorServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimon4PerformanceMonitorImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorService.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonPerformanceMonitor.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/jamon/Jamon1PerformanceMonitorImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/jamon/Jamon2PerformanceMonitorImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonPerformanceMonitor.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorService.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/util/MethodToStringBuilderImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/util/StopWatch.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/util/DefaultToStringBuilderImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/util/ArgumentToStringBuilderImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/util/InterceptorToStringBuilder.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorService.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/performance/PerformanceInterceptorServiceImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/interceptor/performance/PerformanceInterceptorService.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/reflection/Clazz.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/constant/AvalonPhoenixConstants.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/constant/AvalonMerlinConstants.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/constant/AvalonFortressConstants.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/constant/AvalonYaafiConstants.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/configuration/ComponentConfigurationPropertiesResolverBaseImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/configuration/ComponentConfigurationPropertiesResolver.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/configuration/ComponentConfigurationPropertiesResolverImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/tls/ThreadLocalStorage.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/tls/ThreadLocalStorageImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerConfiguration.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerFactory.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/interceptor/AvalonInterceptorContextImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/interceptor/AvalonInterceptorContext.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/interceptor/AvalonInterceptorService.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/interceptor/AvalonInterceptorFactory.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/interceptor/AvalonInterceptorInvocationHandler.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainerImpl.xinfo
  AL    src/java/org/apache/fulcrum/yaafi/framework/container/ServiceConstants.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/container/ServiceLifecycleManager.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainerImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainer.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/role/RoleConfigurationParserImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/role/RoleConfigurationParser.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntry.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/util/ToStringBuilder.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/util/ExceptionUtils.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/util/ConfigurationUtil.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/util/InputStreamLocator.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/component/ServiceComponentImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/component/AvalonServiceComponentImpl.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/component/ServiceComponent.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/component/ServiceComponentLifecycle.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/context/AvalonToYaafiContextMapper.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/context/YaafiToAvalonContextMapper.java
  AL    src/java/org/apache/fulcrum/yaafi/framework/crypto/CryptoStreamFactory.java
  N     LICENSE.txt
  N     NOTICE.txt
  N     contrib/readme.txt
  AL    contrib/test/test.properties
  AL    contrib/test/TestYaafiContainerConfig.xml
  AL    contrib/test/test.xml
  AL    contrib/test/TestRoleConfig.xml
  AL    contrib/test/TestComponentConfig.xml
  AL    contrib/test/org/apache/fulcrum/yaafi/framework/configuration/TestComponent.java
  AL    contrib/test/org/apache/fulcrum/yaafi/framework/configuration/TestComponentImpl.java
  AL    contrib/test/org/apache/fulcrum/yaafi/framework/configuration/C4PResolverTest.java
  AL    contrib/test/TestParameters.properties
  AL    contrib/YaafiComponentService.java
  AL    contrib/log4j.properties
  AL    contrib/project.xml
  AL    contrib/java/org/apache/fulcrum/yaafi/framework/configuration/CommonsConfigurationCCPResolver.java
  AL    contrib/TurbineYaafiComponentService.java
  AL    xdocs/design.xml
  AL    xdocs/howto.xml
  AL    xdocs/lifecycle/decommission.xml
  AL    xdocs/lifecycle/index.xml
  AL    xdocs/lifecycle/incarnation.xml
  AL    xdocs/lifecycle/reconfiguration.xml
  AL    xdocs/index.xml
  AL    xdocs/cryptography.xml
  AL    xdocs/todo.xml
  AL    xdocs/services/systempropertyservice.xml
  AL    xdocs/services/index.xml
  AL    xdocs/services/adviceservice.xml
  AL    xdocs/services/reconfigurationservice.xml
  AL    xdocs/services/shutdownservice.xml
  AL    xdocs/services/servicemanagerservice.xml
  AL    xdocs/configuration.xml
 !????? xdocs/interceptors/performance.csv
  AL    xdocs/interceptors/performanceinterceptor.xml
  AL    xdocs/interceptors/index.xml
 !????? xdocs/interceptors/tracing.csv
  AL    xdocs/interceptors/logginginterceptor.xml
  AL    xdocs/interceptors/jamoninterceptor.xml
  AL    xdocs/changes.xml
  AL    xdocs/tutorial/step3.xml
  AL    xdocs/tutorial/step5.xml
  AL    xdocs/tutorial/index.xml
  AL    xdocs/tutorial/step4.xml
  AL    xdocs/tutorial/step1.xml
  AL    xdocs/tutorial/step2.xml
  AL    xdocs/specification/index.xml
  AL    xdocs/specification/component.xml
  AL    xdocs/specification/context.xml
  AL    xdocs/specification/container.xml
  AL    xdocs/specification/lifecycle.xml
  AL    xdocs/specification/role.xml
  AL    tutorial/conf/containerConfiguration.xml
  AL    tutorial/conf/componentConfig.xml
  AL    tutorial/conf/parameters.properties
  AL    tutorial/conf/componentRoles.xml
  AL    tutorial/src/java/tutorial/service/SystemPropertyServiceImpl.java
  AL    tutorial/src/java/tutorial/service/SystemPropertyService.java
  AL    tutorial/src/java/tutorial/running/Application.java
  AL    tutorial/src/java/tutorial/running/Factory.java
  AL    pom.xml
 
*****************************************************

 Printing headers for text files without a valid license header...
 
=====================================================
== File: src/test/shutdown.txt
=====================================================

=====================================================
== File: src/site/resources/announcements/announcement-1.0.0.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.0 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  Fixed bugs:

o Cleaned up the implementation 

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

http://issues.apache.org/jira/browse/TRB


Have fun!
-The Fulcrum's YAAFI development team

=====================================================
== File: src/site/resources/announcements/announcement-1.0.1.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.1 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  New Features:

o Added a ServiceManager service to keep track of the service manager 
  singleton 
o Added a ServiceManagerFactory to encapsulate the details of initializing 
  YAAFI 
o Added a simple SystemPropertyService since it is useful and does not 
  introduce any new dependencies 

  Changes:

o Refactored the source code to extract ServiceComponent and ServiceContainer 
  interface 
o Renamed the classes to org.apache.fulcrum.yaafi 

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

http://issues.apache.org/jira/browse/TRB


Have fun!
-The Fulcrum's YAAFI development team

=====================================================
== File: src/site/resources/announcements/announcement-1.0.6.txt
=====================================================
The fulcrum-yaafi-team is pleased to announce the fulcrum-yaafi-1.0.6-SNAPSHOT.jar release!

A light-weight Avalon container

Changes in this version include:

New features:
o Added support of "fallback service mamagers" to transparently lookup
service not managed by the Avalon container instance. A good example
is the integration of Spring services or remote services hidden behind
some SOAP proxies. 
o Addded M2 build 

Fixed Bugs:
o Setting custom JAMon ranges for every invocation because those ranges
are discarded when resetting JAMon through the GUI. 

Changes:
o Moved the code regarding transparent decryption of configuration files
into 'fuclrum-yaafi-crypto' project and decouple the code using
dynamic class loading and reflection. 


Have fun!
-fulcrum-yaafi-team


=====================================================
== File: src/site/resources/announcements/announcement-1.0.7.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.7 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  New Features:

o Integrate JavaSimon for performance monitoring. 
o Provide a more graceful shutdown of Fulcrum services

  Changes:

o Upgraded to jamon-2.81

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

http://issues.apache.org/jira/browse/TRB


Have fun!
-The Fulcrum's YAAFI development team

=====================================================
== File: src/site/resources/announcements/announcement-1.0.5.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.5 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  New Features:

o Addded README.txt and NOTICE.txt to create a proper release. 
o Added componentConfiguration.properties to resolve custom properties used 
  for expanding the componentConfiguration.xml. Furthermore added a resolver 
  functionality to allow to use commons-configuration. 
o Added JamonInterceptorService to capture statistical performance data 
o Added AdviceService to provide interceptors for any arbitrary object. 
o Added SmartToStringBuilder to get more information out of the 
  LoggingInterceptorService. 
o Using the parent ServiceManager (if available) during lookup() and 
  hasService() 
o Adding interceptor services to YAAFI. This allows to add interceptors for 
  the whole container or individual services. 
o Using ReadWriteLocks for reconfiguring YAAFI on the fly 
o Added a "logger" attribute to the role configuration file to simplify 
  setting up Log4j loggers. 

  Fixed bugs:

o Fixing broken JAMon 2.x integration. To decouple the service framework from 
  the JAMon library reflection was used but broke with JAMon 2.x. 
o Fixed a few JavaDoc warnings 

  Changes:

o The SmartToStringBuilder was renamed to ArgumentStringBuilder 
o Adding Fortress context variables to enable a smooth transition when making 
  all Fulcrum service compatible to a Fortress container 
o Incarnating service is done in two steps now. This allows to declare the 
  services in any order in the roleConfiguration.xml 
o Updating to avalon-framework-api/impl-4.3.0.jar 
o For logging during initializing of a service we use the parent logger 
  (=container's logger) instead of the service logger. This is an issue when 
  writing CSV files otherwise the layout is messed up. 

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

=====================================================
== File: src/site/resources/announcements/announcement-1.0.2.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.2 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  Fixed bugs:

o Locating an absolute file should now also work with Windows 
o Removed log4j dpendency 

  Changes:

o Using LogEnabled.enableLogging() and Configurable.configure() to create a 
  service container 

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

http://issues.apache.org/jira/browse/TRB


Have fun!
-The Fulcrum's YAAFI development team

=====================================================
== File: src/site/resources/announcements/announcement-1.0.4.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.4 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  New Features:

o Added a simple tutorial 
o The CLI can be now configured using SystemProperties and the command line. 
o Added a getParameters() to the ServiceContainer interface. This allows to 
  retrieve the Avalon parameters easily. 
o The YAAFI service container implements Parameterizable 
o Added a Shutdown service to dispose the YAAFI container 
o Transparent decryption of configuration files 
o Added reconfiuration service ro reconfigure YAAFI if the component 
  configuration file has changed 
o Provide context mapping in the case that YAAFI is embedded in another 
  Avalon container (experimental) 
o Improved bootstrapping of YAAFI using containerConfiguration.xml 
o Decryption of configuration files 
o Added cryptography support based on JCE/JCA 
o Using ServiceManagerConfig to capture the configuration data for YAAFI 
o Refactored some code into AvalonContextHelper and InputStreamLocator 
o Parsing a "component-type" element for the future 
o Parsing a "description" element of the role configuration file 
o Extending ServiceManagerService to store Parameters and Context 
o Setting proper context to achive compatibility with Phoenix container. 
  YAAFI now works embedded into JAMES. 

  Fixed bugs:

o Fixed bug in ShutdownService resulting in excessive CPU usage. 
o Updated Turbine integration found in the 'contrib' directory 
o Updated CLI to make it fit for one of our products 
o Removed CVS tags since it makes maintainance difficult 
o Removed obsolete email address 
o Fixed wrong default values for parameters file if no value was defined. 
o Fixed bug in ServiceManagerService - the static field was not reset during 
  a dispose() leading to a NPE in the second invocation. 

  Changes:

o Improved the implementation of BaseServiceImpl 
o Improved creation of child logger to avoid overly long names by using the 
  shorthand instead of the class name 

=====================================================
== File: src/site/resources/announcements/announcement-1.0.3.txt
=====================================================
We are pleased to announce the Fulcrum's YAAFI 1.0.3 release! 

http://turbine.apache.org/fulcrum/fulcrum-yaafi/

Fulcrum is a component repository for Turbine. 

===============================================================================

Changes in this version include:

  New Features:

o Added a little bit of documentation 

  Fixed bugs:

o Fixed most of the Eclipse complaints about coding conventions 
o Container was missing call to decomission objects, therefore Disposeable 
  interface never working. Thanks to Siegfried Goeschl. 

  Changes:

o Initial import to Fulcrum project. 

===============================================================================

Issues, bugs, and feature requests for Fulcrum's YAAFI
should be submitted to the following issue tracking system:

http://issues.apache.org/jira/browse/TRB


Have fun!
-The Fulcrum's YAAFI development team

=====================================================
== File: src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java
=====================================================
package org.apache.fulcrum.yaafi.service.reconfiguration;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.util.Arrays;

import org.apache.avalon.framework.logger.Logger;
import org.apache.commons.io.IOUtils;
import org.apache.fulcrum.yaafi.framework.util.InputStreamLocator;

/**
 * Monitors a resource and checks if it has changed
 *
 * @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
 */

public class ReconfigurationEntry {

	/** the location to monitor for changes */
	private String location;

	/** the list of services to be reconfigured */
	private String[] serviceList;

	/** the last message digest of the location */
	private byte[] digest;

	/** the locator to load the monitored resource */
	private InputStreamLocator locator;

	/** keep a notice for the very first invocation */
	private boolean isFirstInvocation;

	/** the logger to be used */
	private Logger logger;

	/**
	 * Constructor
	 *
	 * @param logger         the logger to use
	 * @param applicationDir the home directory of the application
	 * @param location       the location to monitor for changes
	 * @param serviceList    the list of services to be reconfigured
	 */
	public ReconfigurationEntry(Logger logger, File applicationDir, String location, String[] serviceList) {
		this.isFirstInvocation = true;
		this.location = location;
		this.locator = new InputStreamLocator(applicationDir);

=====================================================
== File: src/java/org/apache/fulcrum/yaafi/service/shutdown/ShutdownEntry.java
=====================================================
package org.apache.fulcrum.yaafi.service.shutdown;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.util.Arrays;

import org.apache.avalon.framework.logger.Logger;
import org.apache.commons.io.IOUtils;
import org.apache.fulcrum.yaafi.framework.util.InputStreamLocator;

/**
 * Monitors a resource and checks if it has changed
 *
 * @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
 */

public class ShutdownEntry {

	/** the location to monitor for changes */
	private String location;

	/** the last message digest of the location */
	private byte[] digest;

	/** the locator to load the monitored resource */
	private InputStreamLocator locator;

	/** keep a notice for the very first invocation */
	private boolean isFirstInvocation;

	/** the logger to be used */
	private Logger logger;

	/** use System.exit() to shutdown the JVM */
	private boolean useSystemExit;

	/**
	 * Constructor
	 *
	 * @param logger         the logger to use
	 * @param applicationDir the home directory of the application
	 * @param location       the location to monitor for changes
	 * @param useSystemExit  use System.exit() on shutdown
	 */
	public ShutdownEntry(Logger logger, File applicationDir, String location, boolean useSystemExit) {
		this.isFirstInvocation = true;
		this.useSystemExit = useSystemExit;
		this.location = location;

=====================================================
== File: xdocs/interceptors/performance.csv
=====================================================
22.09.2005 21:51:40;main;1;1;0;1;ResourceManagerService;read;30;[B org.apache.fulcrum.resourcemanager.ResourceManagerService.read(String,String)
22.09.2005 21:51:40;main;2;2;0;1;CommandDispatcher;register;50;void at.it20one.common.command.CommandDispatcher.register(at.it20one.common.command.CommandAcceptor,at.it20one.common.command.CommandExecutor)
22.09.2005 21:51:41;main;3;3;0;1;CommandDispatcher;register;0;void at.it20one.common.command.CommandDispatcher.register(at.it20one.common.command.CommandAcceptor,at.it20one.common.command.CommandExecutor)
22.09.2005 21:51:41;main;4;4;0;1;EventDispatcher;register;10;void at.it20one.common.event.EventDispatcher.register(at.it20one.common.event.EventAcceptor,at.it20one.common.event.EventExecutor)
22.09.2005 21:51:42;main;5;5;0;1;SignatureService;equals;0;boolean Object.equals(Object)
22.09.2005 21:51:42;main;6;6;0;1;SignatureService;register;0;void at.it20one.eprocurement.service.signature.SignatureServiceEx.register(String)
22.09.2005 21:51:42;main;7;7;0;1;PKCS12KeyStore;containsCertificateEntry;0;boolean at.it20one.eprocurement.service.keystore.PKCS12KeyStore.containsCertificateEntry(String)
22.09.2005 21:51:42;main;8;8;0;1;PKCS12KeyStore;containsCertificateEntry;0;boolean at.it20one.eprocurement.service.keystore.PKCS12KeyStore.containsCertificateEntry(String)
22.09.2005 21:51:42;main;9;9;0;1;SignatureService;equals;0;boolean Object.equals(Object)
22.09.2005 21:51:42;main;10;10;0;1;SignatureService;register;0;void at.it20one.eprocurement.service.signature.SignatureServiceEx.register(String)
22.09.2005 21:51:42;main;11;11;0;1;PKCS12KeyStore;containsCertificateEntry;0;boolean at.it20one.eprocurement.service.keystore.PKCS12KeyStore.containsCertificateEntry(String)
22.09.2005 21:51:42;main;12;12;0;1;SignatureService;equals;0;boolean Object.equals(Object)
22.09.2005 21:51:42;main;13;13;0;1;SignatureService;register;0;void at.it20one.eprocurement.service.signature.SignatureServiceEx.register(String)
22.09.2005 21:51:42;main;14;14;0;1;SignatureService;equals;0;boolean Object.equals(Object)
22.09.2005 21:51:42;main;15;15;0;1;SignatureService;register;0;void at.it20one.eprocurement.service.signature.SignatureServiceEx.register(String)
22.09.2005 21:51:42;main;16;16;0;1;SignatureService;equals;0;boolean Object.equals(Object)
22.09.2005 21:51:42;main;17;17;0;1;SignatureService;register;0;void at.it20one.eprocurement.service.signature.SignatureServiceEx.register(String)
22.09.2005 21:51:43;main;18;18;0;1;SignatureService;sign;962;Object at.it20one.eprocurement.service.signature.SignatureService.sign(String,String,String,Object,String,String,java.util.Hashtable)
22.09.2005 21:51:42;main;18;19;1;1;PdfSignatureService;isSupported;10;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:42;main;18;20;1;1;SMIMESignatureService;isSupported;0;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:42;main;18;21;1;1;XmlSignatureService;isSupported;0;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:43;main;18;22;1;1;XmlSignatureService;sign;952;Object at.it20one.eprocurement.service.signature.SignatureService.sign(String,String,String,Object,String,String,java.util.Hashtable)
22.09.2005 21:51:43;main;18;23;2;1;PKCS12KeyStore;getCertificateEntry;40;at.it20one.eprocurement.service.keystore.PKCS12KeyStoreEntry at.it20one.eprocurement.service.keystore.PKCS12KeyStore.getCertificateEntry(String)
22.09.2005 21:51:43;main;18;24;2;1;EventDispatcher;dispatch;20;void at.it20one.common.event.EventDispatcher.dispatch(at.it20one.common.event.Event)
22.09.2005 21:51:43;main;18;25;3;1;GroovyService;exists;0;boolean org.apache.fulcrum.groovy.GroovyService.exists(String)
22.09.2005 21:51:43;main;18;26;4;1;ResourceManagerService;exists;0;boolean org.apache.fulcrum.resourcemanager.ResourceManagerService.exists(String)
22.09.2005 21:51:43;main;18;27;4;1;ResourceManagerService;exists;0;boolean org.apache.fulcrum.resourcemanager.ResourceManagerService.exists(String,String)
22.09.2005 21:51:43;main;19;28;0;1;SignatureService;validate;120;at.it20one.eprocurement.service.signature.SignatureValidation at.it20one.eprocurement.service.signature.SignatureService.validate(Object,String)
22.09.2005 21:51:43;main;19;29;1;1;PdfSignatureService;isSupported;0;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:43;main;19;30;1;1;SMIMESignatureService;isSupported;0;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:43;main;19;31;1;1;XmlSignatureService;isSupported;0;boolean at.it20one.eprocurement.service.signature.SignatureService.isSupported(Object,String)
22.09.2005 21:51:43;main;19;32;1;1;XmlSignatureService;validate;110;at.it20one.eprocurement.service.signature.SignatureValidation at.it20one.eprocurement.service.signature.SignatureService.validate(Object,String)

=====================================================
== File: xdocs/interceptors/tracing.csv
=====================================================
22.09.2005 22:13:09;main;54;402;1;2;PdfSignatureService;sign;0;Object at.it20one.eprocurement.service.signature.SignatureService.sign(String,String,String,Object,String,String,java.util.Hashtable);arg[0]:={SUPPLIER};arg[1]:={SUPPLIER};arg[2]:={de};arg[3]:={[B@36d047};arg[4]:={broken.pdf};arg[5]:={application/pdf};arg[6]:={{isPdfAttached=false}};at.it20one.eprocurement.service.signature.SignatureServiceException;[at.it20one.eprocurement.service.signature.SignatureServiceException: Parsing the PDF document failed : Rebuild failed: trailer not found.| Original message: PDF startxref not found. at at.it20one.eprocurement.service.signature.impl.pdf.PdfSignatureServiceImpl.sign(PdfSignatureServiceImpl.java:290) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorInvocationHandler.invoke(AvalonInterceptorInvocationHandler.java:154) at $Proxy10.sign(Unknown Source) at at.it20one.eprocurement.service.signature.impl.SignatureServiceImpl.sign(SignatureServiceImpl.java:154) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorInvocationHandler.invoke(AvalonInterceptorInvocationHandler.java:154) at $Proxy9.sign(Unknown Source) at at.it20one.eprocurement.service.signature.PdfSignatureServiceTest.testBrokenPdf(PdfSignatureServiceTest.java:439) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208)  ...]
22.09.2005 22:13:09;main;54;400;0;2;SignatureService;sign;0;Object at.it20one.eprocurement.service.signature.SignatureService.sign(String,String,String,Object,String,String,java.util.Hashtable);arg[0]:={SUPPLIER};arg[1]:={SUPPLIER};arg[2]:={de};arg[3]:={[B@36d047};arg[4]:={broken.pdf};arg[5]:={application/pdf};arg[6]:={{isPdfAttached=false}};at.it20one.eprocurement.service.signature.SignatureServiceException;[at.it20one.eprocurement.service.signature.SignatureServiceException: Parsing the PDF document failed : Rebuild failed: trailer not found.| Original message: PDF startxref not found. at at.it20one.eprocurement.service.signature.impl.pdf.PdfSignatureServiceImpl.sign(PdfSignatureServiceImpl.java:290) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorInvocationHandler.invoke(AvalonInterceptorInvocationHandler.java:154) at $Proxy10.sign(Unknown Source) at at.it20one.eprocurement.service.signature.impl.SignatureServiceImpl.sign(SignatureServiceImpl.java:154) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorInvocationHandler.invoke(AvalonInterceptorInvocationHandler.java:154) at $Proxy9.sign(Unknown Source) at at.it20one.eprocurement.service.signature.PdfSignatureServiceTest.testBrokenPdf(PdfSignatureServiceTest.java:439) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208)  ...]