You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by pa...@apache.org on 2018/12/11 14:53:48 UTC
svn commit: r1848689 [1/2] - in /turbine/fulcrum/trunk/yaafi: ./
src/java/org/apache/fulcrum/yaafi/cli/
src/java/org/apache/fulcrum/yaafi/framework/role/
src/java/org/apache/fulcrum/yaafi/framework/util/
src/java/org/apache/fulcrum/yaafi/interceptor/ja...
Author: painter
Date: Tue Dec 11 14:53:48 2018
New Revision: 1848689
URL: http://svn.apache.org/viewvc?rev=1848689&view=rev
Log:
Code cleanup, preparing for release, see changes.xml for more
Modified:
turbine/fulcrum/trunk/yaafi/pom.xml
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/cli/Getopt.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java
turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponent.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/framework/container/ServiceLifecycleManagerTest.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerFactoryTest.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/service/AdviceServiceTest.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/service/ReconfigurationTest.java
turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/service/ServiceManagerServiceTest.java
turbine/fulcrum/trunk/yaafi/xdocs/changes.xml
Modified: turbine/fulcrum/trunk/yaafi/pom.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/pom.xml?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/pom.xml (original)
+++ turbine/fulcrum/trunk/yaafi/pom.xml Tue Dec 11 14:53:48 2018
@@ -1,115 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- 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.
+ 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.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <artifactId>turbine-parent</artifactId>
- <groupId>org.apache.turbine</groupId>
- <version>5</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.fulcrum</groupId>
- <artifactId>fulcrum-yaafi</artifactId>
- <version>1.0.8-SNAPSHOT</version>
- <name>Fulcrum YAAFI</name>
- <inceptionYear>2004</inceptionYear>
- <description>A light-weight Avalon container</description>
- <url>http://turbine.apache.org/fulcrum/fulcrum-yaafi</url>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>turbine-parent</artifactId>
+ <groupId>org.apache.turbine</groupId>
+ <version>5</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.fulcrum</groupId>
+ <artifactId>fulcrum-yaafi</artifactId>
+ <version>1.0.8-SNAPSHOT</version>
+ <name>Fulcrum YAAFI</name>
+ <inceptionYear>2004</inceptionYear>
+ <description>A light-weight Avalon container</description>
+ <url>http://turbine.apache.org/fulcrum/fulcrum-yaafi</url>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/trunk/yaafi/</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/trunk/yaafi/</developerConnection>
+ <url>http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/</url>
+ </scm>
+
+ <developers>
+ <developer>
+ <name>Jeffery Painter</name>
+ <id>painter</id>
+ <email>painter@apache.org</email>
+ <organization>Apache</organization>
+ <roles>
+ <role>Java Developer</role>
+ </roles>
+ </developer>
+ <developer>
+ <name>Siegfried Goeschl</name>
+ <id>sgoeschl</id>
+ <email>sgoeschl@apache.org</email>
+ <organization>Apache</organization>
+ <roles>
+ <role>Java Developer</role>
+ </roles>
+ </developer>
+ </developers>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.8.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.6</version>
+ </dependency>
- <scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/trunk/yaafi/</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/trunk/yaafi/</developerConnection>
- <url>http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/</url>
- </scm>
-
- <developers>
- <developer>
- <name>Siegfried Goeschl</name>
- <id>sgoeschl</id>
- <email>sgoeschl@apache.org</email>
- <organization>Apache</organization>
- <roles>
- <role>Java Developer</role>
- </roles>
- </developer>
- </developers>
-
- <dependencies>
-
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>3.8.1</version>
- </dependency>
-
- <!-- Avalon depedencies -->
- <dependency>
- <groupId>org.apache.avalon.framework</groupId>
- <artifactId>avalon-framework-api</artifactId>
- <version>4.3.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.avalon.framework</groupId>
- <artifactId>avalon-framework-impl</artifactId>
- <version>4.3.1</version>
- </dependency>
- <!-- Optional decrytpion of configuration files -->
- <dependency>
- <groupId>org.apache.fulcrum</groupId>
- <artifactId>fulcrum-yaafi-crypto</artifactId>
- <version>1.0.7</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.jamonapi</groupId>
- <artifactId>jamon</artifactId>
- <version>2.81</version>
- <optional>true</optional>
- <exclusions>
- <exclusion>
- <groupId>com.hazelcast</groupId>
- <artifactId>hazelcast-all</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.javasimon</groupId>
- <artifactId>javasimon-core</artifactId>
- <version>4.1.4</version>
- <optional>true</optional>
- </dependency>
- <!-- Testing dependencies -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <sourceDirectory>${basedir}/src/java</sourceDirectory>
- <testSourceDirectory>${basedir}/src/test</testSourceDirectory>
- </build>
-
- <properties>
- <turbine.site.path>fulcrum/fulcrum-yaafi</turbine.site.path>
- </properties>
+ <!-- Avalon depedencies -->
+ <dependency>
+ <groupId>org.apache.avalon.framework</groupId>
+ <artifactId>avalon-framework-api</artifactId>
+ <version>4.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.avalon.framework</groupId>
+ <artifactId>avalon-framework-impl</artifactId>
+ <version>4.3.1</version>
+ </dependency>
+ <!-- Optional decrytpion of configuration files -->
+ <dependency>
+ <groupId>org.apache.fulcrum</groupId>
+ <artifactId>fulcrum-yaafi-crypto</artifactId>
+ <version>1.0.7</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>com.jamonapi</groupId>
+ <artifactId>jamon</artifactId>
+ <version>2.81</version>
+ <optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>com.hazelcast</groupId>
+ <artifactId>hazelcast-all</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.javasimon</groupId>
+ <artifactId>javasimon-core</artifactId>
+ <version>4.1.4</version>
+ <optional>true</optional>
+ </dependency>
+ <!-- Testing dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <sourceDirectory>${basedir}/src/java</sourceDirectory>
+ <testSourceDirectory>${basedir}/src/test</testSourceDirectory>
+ </build>
+
+ <properties>
+ <turbine.site.path>fulcrum/fulcrum-yaafi</turbine.site.path>
+ </properties>
</project>
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/cli/Getopt.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/cli/Getopt.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/cli/Getopt.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/cli/Getopt.java Tue Dec 11 14:53:48 2018
@@ -20,7 +20,7 @@ package org.apache.fulcrum.yaafi.cli;
*/
/**
-* Extremely simply command line parsing class.
+* Extremely simple command line parsing class.
*/
public class Getopt
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/role/RoleEntryImpl.java Tue Dec 11 14:53:48 2018
@@ -26,242 +26,216 @@ import org.apache.fulcrum.yaafi.framewor
* under the License.
*/
-
/**
* Interface exposed by the ServiceContainerImpl
*
* @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
*/
-public class RoleEntryImpl implements RoleEntry
-{
- /** the name of the service component to be used for the service lookup */
- private String name;
-
- /** the name of the implementation class of the service component */
- private String implementationClazzName;
-
- /** the short name of the service component to lookup the configuration */
- private String shorthand;
-
- /** do we incarnate the instance of the service component during start-up? */
- private boolean isEarlyInit;
-
- /** a description for the service component if any */
- private String description;
-
- /** the type of service component, e.g. "avalon" */
- private String componentType;
-
- /** the type of service component if any, e.g. "merlin", "phoenix" or "fortress*/
- private String componentFlavour;
-
- /** do we use a dynamic proxy when invoking the service */
- private boolean hasDynamicProxy;
-
- /** the list of interceptors to be invoked when using a dynamic proxy */
- private ArrayList interceptorList;
-
- /** the optional category for creating a logger */
- private String logCategory;
-
- /**
- * YAAFI role entry
- *
- * @param name the name of the service component to be used for the service lookup
- * @param defaultClass the name of the implementation class of the service component
- * @param shorthand the short name of the service component
- * @param earlyInit do we incarnate the instance of the service component during start-up?
- * @param description a description for the service component if any
- * @param componentType the type of service component
- * @param componentFlavour the flavour of the gicen component type
- * @param hasProxy create a dynamic proxy
- * @param interceptorList the list of service interceptor to be invoked
- * @param logCategory the category for creating the logger
- */
- public RoleEntryImpl( String name,
- String defaultClass,
- String shorthand,
- boolean earlyInit,
- String description,
- String componentType,
- String componentFlavour,
- boolean hasProxy,
- ArrayList interceptorList,
- String logCategory
- )
- {
- Validate.notEmpty(name,"name");
- Validate.notEmpty(defaultClass,"defaultClass");
- Validate.notEmpty(shorthand,"shorthand");
- Validate.notEmpty(componentType,"componentType");
- Validate.notEmpty(componentFlavour,"componentFlavour");
- Validate.notNull(interceptorList,"interceptorList");
- Validate.notEmpty(logCategory,"logCategory");
-
- this.name = name;
- this.implementationClazzName = defaultClass;
- this.shorthand = shorthand;
- this.isEarlyInit = earlyInit;
- this.description = description;
- this.componentType = componentType;
- this.componentFlavour = componentFlavour;
- this.hasDynamicProxy = hasProxy;
- this.interceptorList = interceptorList;
- this.logCategory = logCategory;
- }
-
- /**
- * @return Returns the componentType.
- */
- public String getComponentType()
- {
- return componentType;
- }
-
- /**
- * @return Returns the description.
- */
- public String getDescription()
- {
- return description;
- }
-
- /**
- * @return Returns the implementationClazzName.
- */
- public String getImplementationClazzName()
- {
- return implementationClazzName;
- }
-
- /**
- * @return Returns the isEarlyInit.
- */
- public boolean isEarlyInit()
- {
- return isEarlyInit;
- }
-
- /**
- * @return Returns the name.
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * @return Returns the shorthand.
- */
- public String getShorthand()
- {
- return shorthand;
- }
-
- /**
- * @return Returns the componentFlavour.
- */
- public String getComponentFlavour()
- {
- return componentFlavour;
- }
-
- /**
- * @return Returns the hasDynamicProxy.
- */
- public boolean hasDynamicProxy()
- {
- return hasDynamicProxy;
- }
-
- /**
- * @param hasProxy The hasDynamicProxy to set.
- */
- public void setHasDynamicProxy(boolean hasProxy)
- {
- this.hasDynamicProxy = hasProxy;
- }
-
- /**
- * Determines if the given name of the interceptor is already defined.
- *
- * @param interceptorName the name of the interceptor
- * @return true if it is already defined
- */
- public boolean hasInterceptor( String interceptorName )
- {
- String currInterceptorName = null;
- Iterator iterator = this.interceptorList.iterator();
-
- while( iterator.hasNext() )
- {
- currInterceptorName = (String) iterator.next();
-
- if( currInterceptorName.equals(interceptorName) )
- {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Adds all given interceptors but avoiding duplicates.
- *
- * @param collection the interceptors to be added
- */
- public void addInterceptors( Collection collection )
- {
- String currInterceptorName = null;
- Iterator iterator = collection.iterator();
-
- while( iterator.hasNext() )
- {
- currInterceptorName = (String) iterator.next();
-
- if( this.hasInterceptor(currInterceptorName) == false )
- {
- this.interceptorList.add(currInterceptorName);
- }
- }
- }
-
- /**
- * @return Returns the interceptorList.
- */
- public String[] getInterceptorList()
- {
- return (String[]) interceptorList.toArray(
- new String[interceptorList.size()]
- );
- }
-
- /**
- * @return Returns the logCategory.
- */
- public String getLogCategory()
- {
- return logCategory;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString()
- {
- ToStringBuilder toStringBuilder = new ToStringBuilder(this);
- toStringBuilder.append("name",this.name);
- toStringBuilder.append("shorthand",this.shorthand);
- toStringBuilder.append("implementationClazzName",this.implementationClazzName);
- toStringBuilder.append("isEarlyInit",this.isEarlyInit);
- toStringBuilder.append("hasDynamicProxy",this.hasDynamicProxy);
- toStringBuilder.append("componentType",this.componentType);
- toStringBuilder.append("componentFlavour",this.componentFlavour);
- toStringBuilder.append("interceptorList",this.interceptorList);
- toStringBuilder.append("logCategory",this.logCategory);
- toStringBuilder.append("description",this.description);
- return toStringBuilder.toString();
- }
+public class RoleEntryImpl implements RoleEntry {
+ /** the name of the service component to be used for the service lookup */
+ private String name;
+
+ /** the name of the implementation class of the service component */
+ private String implementationClazzName;
+
+ /** the short name of the service component to lookup the configuration */
+ private String shorthand;
+
+ /** do we incarnate the instance of the service component during start-up? */
+ private boolean isEarlyInit;
+
+ /** a description for the service component if any */
+ private String description;
+
+ /** the type of service component, e.g. "avalon" */
+ private String componentType;
+
+ /**
+ * the type of service component if any, e.g. "merlin", "phoenix" or "fortress
+ */
+ private String componentFlavour;
+
+ /** do we use a dynamic proxy when invoking the service */
+ private boolean hasDynamicProxy;
+
+ /** the list of interceptors to be invoked when using a dynamic proxy */
+ private ArrayList<String> interceptorList;
+
+ /** the optional category for creating a logger */
+ private String logCategory;
+
+ /**
+ * YAAFI role entry
+ *
+ * @param name the name of the service component to be used for the
+ * service lookup
+ * @param defaultClass the name of the implementation class of the service
+ * component
+ * @param shorthand the short name of the service component
+ * @param earlyInit do we incarnate the instance of the service component
+ * during start-up?
+ * @param description a description for the service component if any
+ * @param componentType the type of service component
+ * @param componentFlavour the flavour of the gicen component type
+ * @param hasProxy create a dynamic proxy
+ * @param interceptorList the list of service interceptor to be invoked
+ * @param logCategory the category for creating the logger
+ */
+ public RoleEntryImpl(String name, String defaultClass, String shorthand, boolean earlyInit, String description,
+ String componentType, String componentFlavour, boolean hasProxy, ArrayList<String> interceptorList,
+ String logCategory) {
+ Validate.notEmpty(name, "name");
+ Validate.notEmpty(defaultClass, "defaultClass");
+ Validate.notEmpty(shorthand, "shorthand");
+ Validate.notEmpty(componentType, "componentType");
+ Validate.notEmpty(componentFlavour, "componentFlavour");
+ Validate.notNull(interceptorList, "interceptorList");
+ Validate.notEmpty(logCategory, "logCategory");
+
+ this.name = name;
+ this.implementationClazzName = defaultClass;
+ this.shorthand = shorthand;
+ this.isEarlyInit = earlyInit;
+ this.description = description;
+ this.componentType = componentType;
+ this.componentFlavour = componentFlavour;
+ this.hasDynamicProxy = hasProxy;
+ this.interceptorList = interceptorList;
+ this.logCategory = logCategory;
+ }
+
+ /**
+ * @return Returns the componentType.
+ */
+ public String getComponentType() {
+ return componentType;
+ }
+
+ /**
+ * @return Returns the description.
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * @return Returns the implementationClazzName.
+ */
+ public String getImplementationClazzName() {
+ return implementationClazzName;
+ }
+
+ /**
+ * @return Returns the isEarlyInit.
+ */
+ public boolean isEarlyInit() {
+ return isEarlyInit;
+ }
+
+ /**
+ * @return Returns the name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return Returns the shorthand.
+ */
+ public String getShorthand() {
+ return shorthand;
+ }
+
+ /**
+ * @return Returns the componentFlavour.
+ */
+ public String getComponentFlavour() {
+ return componentFlavour;
+ }
+
+ /**
+ * @return Returns the hasDynamicProxy.
+ */
+ public boolean hasDynamicProxy() {
+ return hasDynamicProxy;
+ }
+
+ /**
+ * @param hasProxy The hasDynamicProxy to set.
+ */
+ public void setHasDynamicProxy(boolean hasProxy) {
+ this.hasDynamicProxy = hasProxy;
+ }
+
+ /**
+ * Determines if the given name of the interceptor is already defined.
+ *
+ * @param interceptorName the name of the interceptor
+ * @return true if it is already defined
+ */
+ public boolean hasInterceptor(String interceptorName) {
+ String currInterceptorName = null;
+ Iterator<String> iterator = this.interceptorList.iterator();
+
+ while (iterator.hasNext()) {
+ currInterceptorName = iterator.next();
+
+ if (currInterceptorName.equals(interceptorName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Adds all given interceptors but avoiding duplicates.
+ *
+ * @param collection the interceptors to be added
+ */
+ public void addInterceptors(Collection collection) {
+ String currInterceptorName = null;
+ Iterator iterator = collection.iterator();
+
+ while (iterator.hasNext()) {
+ currInterceptorName = (String) iterator.next();
+
+ if (this.hasInterceptor(currInterceptorName) == false) {
+ this.interceptorList.add(currInterceptorName);
+ }
+ }
+ }
+
+ /**
+ * @return Returns the interceptorList.
+ */
+ public String[] getInterceptorList() {
+ return interceptorList.toArray(new String[interceptorList.size()]);
+ }
+
+ /**
+ * @return Returns the logCategory.
+ */
+ public String getLogCategory() {
+ return logCategory;
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ ToStringBuilder toStringBuilder = new ToStringBuilder(this);
+ toStringBuilder.append("name", this.name);
+ toStringBuilder.append("shorthand", this.shorthand);
+ toStringBuilder.append("implementationClazzName", this.implementationClazzName);
+ toStringBuilder.append("isEarlyInit", this.isEarlyInit);
+ toStringBuilder.append("hasDynamicProxy", this.hasDynamicProxy);
+ toStringBuilder.append("componentType", this.componentType);
+ toStringBuilder.append("componentFlavour", this.componentFlavour);
+ toStringBuilder.append("interceptorList", this.interceptorList);
+ toStringBuilder.append("logCategory", this.logCategory);
+ toStringBuilder.append("description", this.description);
+ return toStringBuilder.toString();
+ }
}
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/framework/util/Validate.java Tue Dec 11 14:53:48 2018
@@ -22,6 +22,8 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+
/**
* <p>Assists in validating arguments.</p>
*
@@ -42,14 +44,11 @@ import java.util.Map;
*/
public class Validate
{
- // Validate has no dependencies on other classes in Commons Lang at present
-
/**
* Constructor. This class should not normally be instantiated.
*/
public Validate()
{
- // nothing to do
}
// isTrue
@@ -392,10 +391,8 @@ public class Validate
*/
public static void notEmpty(String string, String message)
{
- if (string == null || string.length() == 0)
- {
+ if ( StringUtils.isEmpty(string) )
throw new IllegalArgumentException( message );
- }
}
/**
@@ -413,10 +410,8 @@ public class Validate
*/
public static void notEmpty(String string)
{
- if (string == null || string.length() == 0)
- {
+ if ( StringUtils.isEmpty(string) )
throw new IllegalArgumentException( "The validated string is empty" );
- }
}
// notNullElements array
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/jamon/JamonInterceptorServiceImpl.java Tue Dec 11 14:53:48 2018
@@ -21,7 +21,9 @@ package org.apache.fulcrum.yaafi.interce
import java.io.File;
import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.io.Writer;
import java.lang.reflect.Method;
import org.apache.avalon.framework.activity.Disposable;
@@ -35,290 +37,263 @@ import org.apache.fulcrum.yaafi.framewor
import org.apache.fulcrum.yaafi.interceptor.baseservice.BaseInterceptorServiceImpl;
/**
- * A service using JAMon for performance monitoring. The implementation
- * relies on reflection to invoke JAMON to avoid compile-time coupling.
+ * A service using JAMon for performance monitoring. The implementation relies
+ * on reflection to invoke JAMON to avoid compile-time coupling.
*
* @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
*/
-public class JamonInterceptorServiceImpl
- extends BaseInterceptorServiceImpl
- implements JamonInterceptorService, Reconfigurable, ThreadSafe, Disposable, Initializable
-{
+public class JamonInterceptorServiceImpl extends BaseInterceptorServiceImpl
+ implements JamonInterceptorService, Reconfigurable, ThreadSafe, Disposable, Initializable {
/** are the JAMon classes in the classpath */
private boolean isJamonAvailable;
- /** the file to hold the report */
- private File reportFile;
+ /** the file to hold the report */
+ private File reportFile;
- /** the time in ms between two reports */
- private long reportTimeout;
+ /** the time in ms between two reports */
+ private long reportTimeout;
- /** do we create a report during disposal of the service */
- private boolean reportOnExit;
+ /** do we create a report during disposal of the service */
+ private boolean reportOnExit;
- /** the time when the next report is due */
- private long nextReportTimestamp;
-
- /** the implementation class name for the performance monitor */
- private String performanceMonitorClassName;
-
- /** the implementation class name for the performance monitor */
- private Class performanceMonitorClass;
-
- /** the class name of the JAMon MonitorFactory */
- private static final String MONITORFACTORY_CLASSNAME = "com.jamonapi.MonitorFactory";
-
- /** the class name of the JAMon MonitorFactory */
- private static final String DEFAULT_PERFORMANCEMONITOR_CLASSNAME = "org.apache.fulcrum.yaafi.interceptor.jamon.Jamon2PerformanceMonitorImpl";
-
- /////////////////////////////////////////////////////////////////////////
- // Avalon Service Lifecycle Implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * Constructor
- */
- public JamonInterceptorServiceImpl()
- {
- super();
- }
-
- /**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void configure(Configuration configuration) throws ConfigurationException
- {
- super.configure(configuration);
- this.reportTimeout = configuration.getChild("reportTimeout").getValueAsLong(0);
-
- // parse the performance monitor class name
- this.performanceMonitorClassName = configuration.getChild("performanceMonitorClassName").getValue(DEFAULT_PERFORMANCEMONITOR_CLASSNAME);
-
- // parse the report file name
- String reportFileName = configuration.getChild("reportFile").getValue("./jamon.html");
- this.reportFile = this.makeAbsoluteFile( reportFileName );
-
- // determine when to create the next report
- this.nextReportTimestamp = System.currentTimeMillis() + this.reportTimeout;
-
- // do we create a report on disposal
- this.reportOnExit = configuration.getChild("reportOnExit").getValueAsBoolean(false);
- }
-
- /**
- * @see org.apache.avalon.framework.activity.Initializable#initialize()
- */
- public void initialize() throws Exception
- {
- ClassLoader classLoader = this.getClassLoader();
-
- if (!Clazz.hasClazz(classLoader, MONITORFACTORY_CLASSNAME))
- {
- String msg = "The JamonInterceptorService is disabled since the JAMON classes are not found in the classpath";
- this.getLogger().warn(msg);
- this.isJamonAvailable = false;
- return;
- }
-
- if (!Clazz.hasClazz(classLoader, this.performanceMonitorClassName))
- {
- String msg = "The JamonInterceptorService is disabled since the performance monitor class is not found in the classpath";
- this.getLogger().warn(msg);
- this.isJamonAvailable = false;
- return;
- }
-
- // load the performance monitor class
- this.performanceMonitorClass = Clazz.getClazz(this.getClassLoader(), this.performanceMonitorClassName);
-
- // check if we can create an instance of the performance monitor class
- JamonPerformanceMonitor testMonitor = this.createJamonPerformanceMonitor(null, null, true);
- if(testMonitor == null)
- {
- String msg = "The JamonInterceptorService is disabled since the performance monitor can't be instantiated";
- this.getLogger().warn(msg);
- this.isJamonAvailable = false;
- return;
- }
-
- this.getLogger().debug("The JamonInterceptorService is enabled");
- this.isJamonAvailable = true;
- }
-
- /**
- * @see org.apache.avalon.framework.configuration.Reconfigurable#reconfigure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void reconfigure(Configuration configuration) throws ConfigurationException
- {
- super.reconfigure(configuration);
- this.configure(configuration);
- }
-
- /**
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose()
- {
- if( this.reportOnExit )
- {
- this.run();
- }
-
- this.reportFile = null;
- }
-
- /////////////////////////////////////////////////////////////////////////
- // Service interface implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onEntry(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext)
- */
- public void onEntry(AvalonInterceptorContext interceptorContext)
- {
- if( this.isJamonAvailable() )
- {
- this.writeReport();
-
- String serviceShortHand = interceptorContext.getServiceShorthand();
- Method serviceMethod = interceptorContext.getMethod();
- boolean isEnabled = this.isServiceMonitored(interceptorContext );
- JamonPerformanceMonitor monitor = this.createJamonPerformanceMonitor(serviceShortHand, serviceMethod, isEnabled);
- monitor.start();
- interceptorContext.getRequestContext().put(this.getServiceName(), monitor);
- }
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onExit(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext, java.lang.Object)
- */
- public void onExit(AvalonInterceptorContext interceptorContext, Object result)
- {
- if( this.isJamonAvailable() )
- {
- JamonPerformanceMonitor monitor;
- monitor = (JamonPerformanceMonitor) interceptorContext.getRequestContext().remove(this.getServiceName());
- monitor.stop();
- }
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onError(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext, java.lang.Throwable)
- */
- public void onError(AvalonInterceptorContext interceptorContext,Throwable t)
- {
- if( this.isJamonAvailable() )
- {
- JamonPerformanceMonitor monitor;
- monitor = (JamonPerformanceMonitor) interceptorContext.getRequestContext().remove(this.getServiceName());
- monitor.stop(t);
- }
- }
-
- /**
- * Writes the JAMON report to the file system.
- *
- * @see java.lang.Runnable#run()
- */
- public void run()
- {
- this.writeReport(this.reportFile);
- }
-
- /////////////////////////////////////////////////////////////////////////
- // Service Implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * @return Returns true if JAMon is availble.
- */
- protected final boolean isJamonAvailable()
- {
- return this.isJamonAvailable;
- }
-
- /**
- * Factory method for creating an implementation of a JamonPerformanceMonitor.
- *
- * @param serviceName the service name
- * @param method the method
- * @param isEnabled is the monitor enabled
- * @return the instance or <b>null</b> if the creation failed
- */
- protected JamonPerformanceMonitor createJamonPerformanceMonitor(String serviceName, Method method, boolean isEnabled)
- {
- JamonPerformanceMonitor result = null;
-
- try
- {
- Class[] signature = { String.class, Method.class, Boolean.class };
- Object[] args = { serviceName, method, (isEnabled) ? Boolean.TRUE : Boolean.FALSE};
- result = (JamonPerformanceMonitor) Clazz.newInstance(this.performanceMonitorClass, signature, args);
- return result;
- }
- catch(Exception e)
- {
- String msg = "Failed to create a performance monitor instance : " + this.performanceMonitorClassName;
- this.getLogger().error(msg, e);
- return result;
- }
- }
-
- /**
- * Write a report file
- */
- protected void writeReport()
- {
- if( this.reportTimeout > 0 )
- {
- long currTimestamp = System.currentTimeMillis();
-
- if( currTimestamp > this.nextReportTimestamp )
- {
- this.nextReportTimestamp = currTimestamp + this.reportTimeout;
- this.writeReport(this.reportFile);
- }
- }
- }
-
- /**
- * Write the HTML report to the given destination.
- *
- * @param reportFile the report destination
- */
- protected void writeReport( File reportFile )
- {
- PrintWriter printWriter = null;
-
- if( this.isJamonAvailable() )
- {
- try
- {
- if( this.getLogger().isDebugEnabled() )
- {
- this.getLogger().debug( "Writing JAMOM report to " + reportFile.getAbsolutePath() );
- }
-
- FileOutputStream fos = new FileOutputStream( reportFile );
- printWriter = new PrintWriter( fos );
- JamonPerformanceMonitor monitor = this.createJamonPerformanceMonitor(null, null, true);
- String report = monitor.createReport();
- printWriter.write( report );
- printWriter.close();
- }
- catch( Throwable t )
- {
- String msg = "Generating the JAMON report failed for " + reportFile.getAbsolutePath();
- this.getLogger().error(msg,t);
- }
- finally
- {
- if( printWriter != null )
- {
- printWriter.close();
- }
- }
- }
- }
+ /** the time when the next report is due */
+ private long nextReportTimestamp;
+
+ /** the implementation class name for the performance monitor */
+ private String performanceMonitorClassName;
+
+ /** the implementation class name for the performance monitor */
+ private Class performanceMonitorClass;
+
+ /** the class name of the JAMon MonitorFactory */
+ private static final String MONITORFACTORY_CLASSNAME = "com.jamonapi.MonitorFactory";
+
+ /** the class name of the JAMon MonitorFactory */
+ private static final String DEFAULT_PERFORMANCEMONITOR_CLASSNAME = "org.apache.fulcrum.yaafi.interceptor.jamon.Jamon2PerformanceMonitorImpl";
+
+ /////////////////////////////////////////////////////////////////////////
+ // Avalon Service Lifecycle Implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Constructor
+ */
+ public JamonInterceptorServiceImpl() {
+ super();
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration configuration) throws ConfigurationException {
+ super.configure(configuration);
+ this.reportTimeout = configuration.getChild("reportTimeout").getValueAsLong(0);
+
+ // parse the performance monitor class name
+ this.performanceMonitorClassName = configuration.getChild("performanceMonitorClassName")
+ .getValue(DEFAULT_PERFORMANCEMONITOR_CLASSNAME);
+
+ // parse the report file name
+ String reportFileName = configuration.getChild("reportFile").getValue("./jamon.html");
+ this.reportFile = this.makeAbsoluteFile(reportFileName);
+
+ // determine when to create the next report
+ this.nextReportTimestamp = System.currentTimeMillis() + this.reportTimeout;
+
+ // do we create a report on disposal
+ this.reportOnExit = configuration.getChild("reportOnExit").getValueAsBoolean(false);
+ }
+
+ /**
+ * @see org.apache.avalon.framework.activity.Initializable#initialize()
+ */
+ public void initialize() throws Exception {
+ ClassLoader classLoader = this.getClassLoader();
+
+ if (!Clazz.hasClazz(classLoader, MONITORFACTORY_CLASSNAME)) {
+ String msg = "The JamonInterceptorService is disabled since the JAMON classes are not found in the classpath";
+ this.getLogger().warn(msg);
+ this.isJamonAvailable = false;
+ return;
+ }
+
+ if (!Clazz.hasClazz(classLoader, this.performanceMonitorClassName)) {
+ String msg = "The JamonInterceptorService is disabled since the performance monitor class is not found in the classpath";
+ this.getLogger().warn(msg);
+ this.isJamonAvailable = false;
+ return;
+ }
+
+ // load the performance monitor class
+ this.performanceMonitorClass = Clazz.getClazz(this.getClassLoader(), this.performanceMonitorClassName);
+
+ // check if we can create an instance of the performance monitor class
+ JamonPerformanceMonitor testMonitor = this.createJamonPerformanceMonitor(null, null, true);
+ if (testMonitor == null) {
+ String msg = "The JamonInterceptorService is disabled since the performance monitor can't be instantiated";
+ this.getLogger().warn(msg);
+ this.isJamonAvailable = false;
+ return;
+ }
+
+ this.getLogger().debug("The JamonInterceptorService is enabled");
+ this.isJamonAvailable = true;
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Reconfigurable#reconfigure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void reconfigure(Configuration configuration) throws ConfigurationException {
+ super.reconfigure(configuration);
+ this.configure(configuration);
+ }
+
+ /**
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ if (this.reportOnExit) {
+ this.run();
+ }
+
+ this.reportFile = null;
+ }
+
+ /////////////////////////////////////////////////////////////////////////
+ // Service interface implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onEntry(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext)
+ */
+ public void onEntry(AvalonInterceptorContext interceptorContext) {
+ if (this.isJamonAvailable()) {
+ this.writeReport();
+
+ String serviceShortHand = interceptorContext.getServiceShorthand();
+ Method serviceMethod = interceptorContext.getMethod();
+ boolean isEnabled = this.isServiceMonitored(interceptorContext);
+ JamonPerformanceMonitor monitor = this.createJamonPerformanceMonitor(serviceShortHand, serviceMethod,
+ isEnabled);
+ monitor.start();
+ interceptorContext.getRequestContext().put(this.getServiceName(), monitor);
+ }
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onExit(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext,
+ * java.lang.Object)
+ */
+ public void onExit(AvalonInterceptorContext interceptorContext, Object result) {
+ if (this.isJamonAvailable()) {
+ JamonPerformanceMonitor monitor;
+ monitor = (JamonPerformanceMonitor) interceptorContext.getRequestContext().remove(this.getServiceName());
+ monitor.stop();
+ }
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onError(org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext,
+ * java.lang.Throwable)
+ */
+ public void onError(AvalonInterceptorContext interceptorContext, Throwable t) {
+ if (this.isJamonAvailable()) {
+ JamonPerformanceMonitor monitor;
+ monitor = (JamonPerformanceMonitor) interceptorContext.getRequestContext().remove(this.getServiceName());
+ monitor.stop(t);
+ }
+ }
+
+ /**
+ * Writes the JAMON report to the file system.
+ *
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ this.writeReport(this.reportFile);
+ }
+
+ /////////////////////////////////////////////////////////////////////////
+ // Service Implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * @return Returns true if JAMon is availble.
+ */
+ protected final boolean isJamonAvailable() {
+ return this.isJamonAvailable;
+ }
+
+ /**
+ * Factory method for creating an implementation of a JamonPerformanceMonitor.
+ *
+ * @param serviceName the service name
+ * @param method the method
+ * @param isEnabled is the monitor enabled
+ * @return the instance or <b>null</b> if the creation failed
+ */
+ @SuppressWarnings("rawtypes")
+ protected JamonPerformanceMonitor createJamonPerformanceMonitor(String serviceName, Method method,
+ boolean isEnabled) {
+ JamonPerformanceMonitor result = null;
+
+ try {
+ Class[] signature = { String.class, Method.class, Boolean.class };
+ Object[] args = { serviceName, method, (isEnabled) ? Boolean.TRUE : Boolean.FALSE };
+ result = (JamonPerformanceMonitor) Clazz.newInstance(this.performanceMonitorClass, signature, args);
+ return result;
+ } catch (Exception e) {
+ String msg = "Failed to create a performance monitor instance : " + this.performanceMonitorClassName;
+ this.getLogger().error(msg, e);
+ return result;
+ }
+ }
+
+ /**
+ * Write a report file
+ */
+ protected void writeReport() {
+ if (this.reportTimeout > 0) {
+ long currTimestamp = System.currentTimeMillis();
+
+ if (currTimestamp > this.nextReportTimestamp) {
+ this.nextReportTimestamp = currTimestamp + this.reportTimeout;
+ this.writeReport(this.reportFile);
+ }
+ }
+ }
+
+ /**
+ * Write the HTML report to the given destination.
+ *
+ * @param reportFile the report destination
+ */
+ protected void writeReport(File reportFile) {
+ PrintWriter printWriter = null;
+
+ if (this.isJamonAvailable()) {
+ try {
+ if (this.getLogger().isDebugEnabled()) {
+ this.getLogger().debug("Writing JAMOM report to " + reportFile.getAbsolutePath());
+ }
+
+ // Update to eliminate reliance on default encoding (DM_DEFAULT_ENCODING)
+ Writer w = new OutputStreamWriter(new FileOutputStream(reportFile), "UTF-8");
+ printWriter = new PrintWriter(w);
+
+ JamonPerformanceMonitor monitor = this.createJamonPerformanceMonitor(null, null, true);
+ String report = monitor.createReport();
+ printWriter.write(report);
+ printWriter.close();
+ } catch (Throwable t) {
+ String msg = "Generating the JAMON report failed for " + reportFile.getAbsolutePath();
+ this.getLogger().error(msg, t);
+ } finally {
+ if (printWriter != null) {
+ printWriter.close();
+ }
+ }
+ }
+ }
}
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/javasimon/JavaSimonInterceptorServiceImpl.java Tue Dec 11 14:53:48 2018
@@ -21,7 +21,9 @@ package org.apache.fulcrum.yaafi.interce
import java.io.File;
import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.io.Writer;
import java.lang.reflect.Method;
import org.apache.avalon.framework.activity.Disposable;
@@ -65,7 +67,7 @@ public class JavaSimonInterceptorService
private String performanceMonitorClassName;
/** the implementation class name for the performance monitor */
- private Class performanceMonitorClass;
+ private Class<?> performanceMonitorClass;
/** the class name of the JavaSimon factory */
private static final String MONITORFACTORY_CLASSNAME = "org.javasimon.SimonManager";
@@ -176,7 +178,6 @@ public class JavaSimonInterceptorService
/**
* @see org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService#onEntry(AvalonInterceptorContext)
*/
- @SuppressWarnings("unchecked")
public void onEntry(AvalonInterceptorContext interceptorContext)
{
if( this.isJavaSimonAvailable() )
@@ -248,7 +249,8 @@ public class JavaSimonInterceptorService
* @param isEnabled is the monitor enabled
* @return the instance or <b>null</b> if the creation failed
*/
- protected JavaSimonPerformanceMonitor createJavaSimonPerformanceMonitor(String serviceName, Method method, boolean isEnabled)
+ @SuppressWarnings("rawtypes")
+ protected JavaSimonPerformanceMonitor createJavaSimonPerformanceMonitor(String serviceName, Method method, boolean isEnabled)
{
JavaSimonPerformanceMonitor result = null;
@@ -302,8 +304,10 @@ public class JavaSimonInterceptorService
this.getLogger().debug( "Writing JavaSimon report to " + reportFile.getAbsolutePath() );
}
- FileOutputStream fos = new FileOutputStream( reportFile );
- printWriter = new PrintWriter( fos );
+ // Update to eliminate reliance on default encoding (DM_DEFAULT_ENCODING)
+ Writer w = new OutputStreamWriter(new FileOutputStream(reportFile), "UTF-8");
+ printWriter = new PrintWriter( w );
+
// JavaSimonPerformanceMonitor monitor = this.createJavaSimonPerformanceMonitor(null, null, true);
String report = "Not implemented yet ...";
printWriter.write( report );
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/interceptor/logging/LoggingInterceptorServiceImpl.java Tue Dec 11 14:53:48 2018
@@ -28,10 +28,10 @@ import org.apache.avalon.framework.confi
import org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext;
import org.apache.fulcrum.yaafi.framework.reflection.Clazz;
import org.apache.fulcrum.yaafi.interceptor.baseservice.BaseInterceptorServiceImpl;
+import org.apache.fulcrum.yaafi.interceptor.util.ArgumentToStringBuilderImpl;
import org.apache.fulcrum.yaafi.interceptor.util.DefaultToStringBuilderImpl;
import org.apache.fulcrum.yaafi.interceptor.util.InterceptorToStringBuilder;
import org.apache.fulcrum.yaafi.interceptor.util.MethodToStringBuilderImpl;
-import org.apache.fulcrum.yaafi.interceptor.util.ArgumentToStringBuilderImpl;
import org.apache.fulcrum.yaafi.interceptor.util.StopWatch;
/**
@@ -61,7 +61,7 @@ public class LoggingInterceptorServiceIm
private boolean monitorAllExceptions;
/** the ReflectionToStringBuilder class */
- private Class toStringBuilderClass;
+ private Class<?> toStringBuilderClass;
/////////////////////////////////////////////////////////////////////////
// Avalon Service Lifecycle Implementation
@@ -236,7 +236,7 @@ public class LoggingInterceptorServiceIm
/**
* @return Returns the toStringBuilderClass.
*/
- protected Class getToStringBuilderClass()
+ protected Class<?> getToStringBuilderClass()
{
return toStringBuilderClass;
}
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/advice/AdviceServiceImpl.java Tue Dec 11 14:53:48 2018
@@ -38,203 +38,177 @@ import org.apache.fulcrum.yaafi.framewor
/**
* Simple service providing interceptor advices for ordinary POJOs. Since the
- * implementation uses Dynamic Proxies only methods invoked by an interface
- * can be advised.
+ * implementation uses Dynamic Proxies only methods invoked by an interface can
+ * be advised.
*
* @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
*/
-public class AdviceServiceImpl
- extends AbstractLogEnabled
- implements AdviceService, Serviceable, Contextualizable, Reconfigurable
-{
- /** the service manager supplied by the Avalon framework */
- private ServiceManager serviceManager;
-
- /** the list of default interceptors */
- private String[] defaultInterceptorList;
-
- /////////////////////////////////////////////////////////////////////////
- // Avalon Service Lifecycle Implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager serviceManager) throws ServiceException
- {
- this.serviceManager = serviceManager;
- }
-
- /**
- * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
- */
- public void contextualize(Context context) throws ContextException
- {
- // nothing to do
- }
-
- /**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void configure(Configuration configuration) throws ConfigurationException
- {
- Configuration[] interceptorConfigList = configuration.getChild("interceptors").getChildren("interceptor");
- this.defaultInterceptorList = new String[interceptorConfigList.length];
-
- for( int i=0; i<interceptorConfigList.length; i++ )
- {
- this.defaultInterceptorList[i] = interceptorConfigList[i].getValue();
- }
- }
-
- /**
- * @see org.apache.avalon.framework.configuration.Reconfigurable#reconfigure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void reconfigure(Configuration configuration) throws ConfigurationException
- {
- this.configure(configuration);
- }
-
- /////////////////////////////////////////////////////////////////////////
- // Service interface implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.Object)
- */
- public Object advice(Object object)
- {
- Validate.notNull(object,"object");
- return this.advice( this.getDefaultInterceptorList(), object );
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String, java.lang.Object)
- */
- public Object advice(String name, Object object)
- {
- Validate.notNull(object,"object");
- return this.doAdvice( name, this.getDefaultInterceptorList(), object );
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String[], java.lang.Object)
- */
- public Object advice(String [] interceptorList, Object object)
- {
- Validate.notNull(object,"object");
- String className = object.getClass().getName();
- return this.doAdvice(className, interceptorList, object);
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String, java.lang.String[], java.lang.Object)
- */
- public Object advice(String name, String [] interceptorList, Object object )
- {
- Validate.notNull(object,"object");
- return this.doAdvice(name, interceptorList, object);
- }
-
- /**
- * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#isAdviced(java.lang.Object)
- */
- public boolean isAdviced(Object object)
- {
- InvocationHandler invocationHandler = null;
-
- if ((object != null ) && Proxy.isProxyClass(object.getClass()))
- {
- invocationHandler = Proxy.getInvocationHandler(object);
- return invocationHandler instanceof AvalonInterceptorInvocationHandler;
- }
-
- return false;
- }
-
- /////////////////////////////////////////////////////////////////////////
- // Service implementation
- /////////////////////////////////////////////////////////////////////////
-
- /**
- * Does the actual work of advising the object.
- *
- * @param name the name of the object to be advised
- * @param interceptorList the list of interceptor services to advise the object
- * @param object the object to be advised
- * @return the advised object.
- */
- protected Object doAdvice(String name, String [] interceptorList, Object object )
- {
- Validate.notEmpty(name,"name");
- Validate.notNull(interceptorList,"interceptorList");
- Validate.notNull(object,"object");
-
- Object result = null;
- String clazzName = object.getClass().getName();
-
- // do nothing if no interceptor services are requested
-
- if( interceptorList.length == 0 )
- {
- if( this.getLogger().isInfoEnabled() )
- {
- String msg = "Skipping creation of dynamic proxy since no interceptors are requested : " + name;
- this.getLogger().info(msg);
- }
-
- return object;
- }
-
- // skip creating a dynamic proxy if it is already advised
-
- if( this.isAdviced(object) )
- {
- if( this.getLogger().isInfoEnabled() )
- {
- String msg = "Skipping creation of dynamic proxy since it is already advised : " + name;
- this.getLogger().info(msg);
- }
-
- return object;
- }
-
- // create the advised object
-
- try
- {
- result = AvalonInterceptorFactory.create(
- clazzName,
- name,
- this.getServiceManager(),
- interceptorList,
- object
- );
- }
- catch (ServiceException e)
- {
- String msg = "Unable to advice the object : " + name;
- this.getLogger().error(msg,e);
- throw new IllegalArgumentException(msg);
- }
-
- return result;
- }
-
- /**
- * @return Returns the serviceManager.
- */
- private ServiceManager getServiceManager()
- {
- return serviceManager;
- }
-
- /**
- * @return Returns the defaultInterceptorList.
- */
- private String[] getDefaultInterceptorList()
- {
- return defaultInterceptorList;
- }
+public class AdviceServiceImpl extends AbstractLogEnabled
+ implements AdviceService, Serviceable, Contextualizable, Reconfigurable {
+ /** the service manager supplied by the Avalon framework */
+ private ServiceManager serviceManager;
+
+ /** the list of default interceptors */
+ private String[] defaultInterceptorList;
+
+ /////////////////////////////////////////////////////////////////////////
+ // Avalon Service Lifecycle Implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
+ }
+
+ /**
+ * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+ */
+ public void contextualize(Context context) throws ContextException {
+ // nothing to do
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration configuration) throws ConfigurationException {
+ Configuration[] interceptorConfigList = configuration.getChild("interceptors").getChildren("interceptor");
+ this.defaultInterceptorList = new String[interceptorConfigList.length];
+ for (int i = 0; i < interceptorConfigList.length; i++) {
+ this.defaultInterceptorList[i] = interceptorConfigList[i].getValue();
+ }
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Reconfigurable#reconfigure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void reconfigure(Configuration configuration) throws ConfigurationException {
+ this.configure(configuration);
+ }
+
+ /////////////////////////////////////////////////////////////////////////
+ // Service interface implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.Object)
+ */
+ public Object advice(Object object) {
+ Validate.notNull(object, "object");
+ return this.advice(this.getDefaultInterceptorList(), object);
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String,
+ * java.lang.Object)
+ */
+ public Object advice(String name, Object object) {
+ Validate.notNull(object, "object");
+ return this.doAdvice(name, this.getDefaultInterceptorList(), object);
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String[],
+ * java.lang.Object)
+ */
+ public Object advice(String[] interceptorList, Object object) {
+ Validate.notNull(object, "object");
+ String className = object.getClass().getName();
+ return this.doAdvice(className, interceptorList, object);
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#advice(java.lang.String,
+ * java.lang.String[], java.lang.Object)
+ */
+ public Object advice(String name, String[] interceptorList, Object object) {
+ Validate.notNull(object, "object");
+ return this.doAdvice(name, interceptorList, object);
+ }
+
+ /**
+ * @see org.apache.fulcrum.yaafi.service.advice.AdviceService#isAdviced(java.lang.Object)
+ */
+ public boolean isAdviced(Object object) {
+ InvocationHandler invocationHandler = null;
+
+ if ((object != null) && Proxy.isProxyClass(object.getClass())) {
+ invocationHandler = Proxy.getInvocationHandler(object);
+ return invocationHandler instanceof AvalonInterceptorInvocationHandler;
+ }
+
+ return false;
+ }
+
+ /////////////////////////////////////////////////////////////////////////
+ // Service implementation
+ /////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Does the actual work of advising the object.
+ *
+ * @param name the name of the object to be advised
+ * @param interceptorList the list of interceptor services to advise the object
+ * @param object the object to be advised
+ * @return the advised object.
+ */
+ protected Object doAdvice(String name, String[] interceptorList, Object object) {
+ Validate.notEmpty(name, "name");
+ Validate.notNull(interceptorList, "interceptorList");
+ Validate.notNull(object, "object");
+
+ Object result = null;
+ String clazzName = object.getClass().getName();
+
+ // do nothing if no interceptor services are requested
+
+ if (interceptorList.length == 0) {
+ if (this.getLogger().isInfoEnabled()) {
+ String msg = "Skipping creation of dynamic proxy since no interceptors are requested : " + name;
+ this.getLogger().info(msg);
+ }
+
+ return object;
+ }
+
+ // skip creating a dynamic proxy if it is already advised
+
+ if (this.isAdviced(object)) {
+ if (this.getLogger().isInfoEnabled()) {
+ String msg = "Skipping creation of dynamic proxy since it is already advised : " + name;
+ this.getLogger().info(msg);
+ }
+
+ return object;
+ }
+
+ // create the advised object
+
+ try {
+ result = AvalonInterceptorFactory.create(clazzName, name, this.getServiceManager(), interceptorList,
+ object);
+ } catch (ServiceException e) {
+ String msg = "Unable to advice the object : " + name;
+ this.getLogger().error(msg, e);
+ throw new IllegalArgumentException(msg);
+ }
+
+ return result;
+ }
+
+ /**
+ * @return Returns the serviceManager.
+ */
+ private ServiceManager getServiceManager() {
+ return serviceManager;
+ }
+
+ /**
+ * @return Returns the defaultInterceptorList.
+ */
+ private String[] getDefaultInterceptorList() {
+ return defaultInterceptorList;
+ }
}
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationEntry.java Tue Dec 11 14:53:48 2018
@@ -25,8 +25,10 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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;
/**
@@ -35,254 +37,191 @@ import org.apache.fulcrum.yaafi.framewor
* @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
*/
-public class ReconfigurationEntry
-{
- /** buffer size for copy() */
- private static final int BUF_SIZE = 1024;
-
- /** 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 );
- this.logger = logger;
- this.serviceList = serviceList;
- }
-
- /**
- * @return has the monitored location changed
- */
- public boolean hasChanged()
- {
- boolean result = false;
- InputStream is = null;
- byte[] currDigest = null;
-
- try
- {
- // get a grip on our resource
-
- is = this.locate();
-
- if( is == null )
- {
- String msg = "Unable to find the following resource : " + this.getLocation();
- this.getLogger().warn(msg);
- }
- else
- {
- // calculate a SHA-1 digest
-
- currDigest = this.getDigest(is);
- is.close();
- is = null;
-
- if( this.isFirstInvocation() == true )
- {
- isFirstInvocation = false;
- this.getLogger().debug( "Storing SHA-1 digest of " + this.getLocation() );
- this.setDigest( currDigest );
- }
- else
- {
- if( equals( this.digest, currDigest ) == false )
- {
- this.getLogger().debug( "The following resource has changed : " + this.getLocation() );
- this.setDigest( currDigest );
- result = true;
- }
- }
- }
-
- return result;
- }
- catch(Exception e)
- {
- String msg = "The ShutdownService encountered an internal error";
- this.getLogger().error(msg,e);
- return false;
- }
- finally
- {
- if( is != null )
- {
- try
- {
- is.close();
- }
- catch (Exception e)
- {
- String msg = "Can't close the InputStream during error recovery";
- this.getLogger().error(msg,e);
- }
- }
- }
-
- }
-
- /**
- * @return Returns the serviceList.
- */
- public String [] getServiceList()
- {
- return serviceList;
- }
-
- /**
- * @return Returns the isFirstInvocation.
- */
- private boolean isFirstInvocation()
- {
- return isFirstInvocation;
- }
-
- /**
- * @return Returns the location.
- */
- private String getLocation()
- {
- return location;
- }
-
- /**
- * @return Returns the locator.
- */
- private InputStreamLocator getLocator()
- {
- return locator;
- }
-
- /**
- * Creates an InputStream.
- * @return the input stream
- * @throws IOException the creation failed
- */
- public InputStream locate() throws IOException
- {
- return this.getLocator().locate(this.getLocation());
- }
-
- /**
- * Creates a message digest.
- *
- * @param is the input stream as input for the message digest
- * @return the message digest
- * @throws Exception the creation failed
- */
- private byte[] getDigest( InputStream is )
- throws Exception
- {
- byte[] result = null;
- byte[] content = null;
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- copy( is, baos );
- content = baos.toByteArray();
- baos.close();
-
- MessageDigest sha1 = MessageDigest.getInstance( "SHA1" );
- sha1.update( content );
- result = sha1.digest();
-
- return result;
- }
-
- /**
- * @param digest The digest to set.
- */
- private void setDigest(byte [] digest)
- {
- this.digest = digest;
- }
-
- /**
- * Compares two byte[] for equality
- *
- * @param lhs the left-hand side
- * @param rhs the right-hand side
- * @return true if the byte[] are equal
- */
- private static boolean equals(byte[] lhs, byte[] rhs)
- {
- if( lhs == rhs )
- {
- return true;
- }
- else if( lhs.length != rhs.length )
- {
- return false;
- }
- else
- {
- for( int i=0; i<lhs.length; i++ )
- {
- if( lhs[i] != rhs[i] )
- {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Pumps the input stream to the output stream.
- *
- * @param is the source input stream
- * @param os the target output stream
- * @throws IOException the copying failed
- */
- private static void copy( InputStream is, OutputStream os )
- throws IOException
- {
- byte[] buf = new byte[BUF_SIZE];
- int n = 0;
- int total = 0;
-
- while ((n = is.read(buf)) > 0)
- {
- os.write(buf, 0, n);
- total += n;
- }
-
- is.close();
-
- os.flush();
- os.close();
- }
-
- /**
- * @return Returns the logger.
- */
- private Logger getLogger()
- {
- return logger;
- }
+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);
+ this.logger = logger;
+ this.serviceList = serviceList;
+ }
+
+ /**
+ * @return has the monitored location changed
+ */
+ public boolean hasChanged() {
+ boolean result = false;
+ InputStream is = null;
+ byte[] currDigest = null;
+
+ try {
+ // get a grip on our resource
+
+ is = this.locate();
+
+ if (is == null) {
+ String msg = "Unable to find the following resource : " + this.getLocation();
+ this.getLogger().warn(msg);
+ } else {
+ // calculate a SHA-1 digest
+ currDigest = this.getDigest(is);
+ is.close();
+ is = null;
+
+ if (this.isFirstInvocation() == true) {
+ isFirstInvocation = false;
+ this.getLogger().debug("Storing SHA-1 digest of " + this.getLocation());
+ this.setDigest(currDigest);
+ } else {
+ if (equals(this.digest, currDigest) == false) {
+ this.getLogger().debug("The following resource has changed : " + this.getLocation());
+ this.setDigest(currDigest);
+ result = true;
+ }
+ }
+ }
+
+ return result;
+ } catch (Exception e) {
+ String msg = "The ShutdownService encountered an internal error";
+ this.getLogger().error(msg, e);
+ return false;
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (Exception e) {
+ String msg = "Can't close the InputStream during error recovery";
+ this.getLogger().error(msg, e);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * @return Returns the serviceList.
+ */
+ public String[] getServiceList() {
+ return serviceList;
+ }
+
+ /**
+ * @return Returns the isFirstInvocation.
+ */
+ private boolean isFirstInvocation() {
+ return isFirstInvocation;
+ }
+
+ /**
+ * @return Returns the location.
+ */
+ private String getLocation() {
+ return location;
+ }
+
+ /**
+ * @return Returns the locator.
+ */
+ private InputStreamLocator getLocator() {
+ return locator;
+ }
+
+ /**
+ * Creates an InputStream.
+ *
+ * @return the input stream
+ * @throws IOException the creation failed
+ */
+ public InputStream locate() throws IOException {
+ return this.getLocator().locate(this.getLocation());
+ }
+
+ /**
+ * Creates a message digest.
+ *
+ * @param is the input stream as input for the message digest
+ * @return the message digest
+ * @throws Exception the creation failed
+ */
+ private byte[] getDigest(InputStream is) throws Exception {
+ byte[] result = null;
+ byte[] content = null;
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ copy(is, baos);
+ content = baos.toByteArray();
+ baos.close();
+
+ MessageDigest sha1 = MessageDigest.getInstance("SHA1");
+ sha1.update(content);
+ result = sha1.digest();
+
+ return result;
+ }
+
+ /**
+ * @param digest The digest to set.
+ */
+ private void setDigest(byte[] digest) {
+ this.digest = digest;
+ }
+
+ /**
+ * Compares two byte[] for equality
+ *
+ * @param lhs the left-hand side
+ * @param rhs the right-hand side
+ * @return true if the byte[] are equal
+ */
+ private static boolean equals(byte[] lhs, byte[] rhs) {
+ // JDK provided method
+ return Arrays.equals(lhs, rhs);
+ }
+
+ /**
+ * Pumps the input stream to the output stream.
+ *
+ * @param is the source input stream
+ * @param os the target output stream
+ * @throws IOException the copying failed
+ */
+ private static void copy(InputStream is, OutputStream os) throws IOException {
+ // Use commons managed code
+ IOUtils.copy(is, os);
+ }
+
+ /**
+ * @return Returns the logger.
+ */
+ private Logger getLogger() {
+ return logger;
+ }
}
Modified: turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/java/org/apache/fulcrum/yaafi/service/reconfiguration/ReconfigurationServiceImpl.java Tue Dec 11 14:53:48 2018
@@ -116,7 +116,7 @@ public class ReconfigurationServiceImpl
// parse the resources to monitor
- Configuration entry = null;
+ // Configuration entry = null;
Configuration services = null;
Configuration[] serviceEntries = null;
Configuration[] entryList = configuration.getChildren("entry");
@@ -126,10 +126,9 @@ public class ReconfigurationServiceImpl
String[] serviceNameList = null;
ReconfigurationEntry reconfigurationEntry = null;
ReconfigurationEntry[] list = new ReconfigurationEntry[entryList.length];
-
- for( int i=0; i<entryList.length; i++ )
+ int listIndex = 0;
+ for ( Configuration entry : entryList )
{
- entry = entryList[i];
location = entry.getChild("location").getValue();
services = entry.getChild("services",false);
@@ -154,7 +153,7 @@ public class ReconfigurationServiceImpl
serviceNameList
);
- list[i] = reconfigurationEntry;
+ list[listIndex++] = reconfigurationEntry;
}
this.getLogger().debug( "Monitoring " + list.length + " resources" );
@@ -167,20 +166,14 @@ public class ReconfigurationServiceImpl
*/
public void initialize() throws Exception
{
- // request a SHA-1 to make sure that it is supported
-
+ // request a SHA-1 to make sure that it is supported
MessageDigest.getInstance( "SHA1" );
- // check that the ServiceManager inplements Reconfigurable
-
+ // check that the ServiceManager implements Reconfigurable
if( (this.serviceManager instanceof ServiceLifecycleManager) == false )
- {
- String msg = "The ServiceManager instance does not implement ServiceLifecycleManager?!";
- throw new IllegalArgumentException( msg );
- }
-
+ throw new IllegalArgumentException( "The ServiceManager instance does not implement ServiceLifecycleManager!" );
+
// create the worker thread polling the target
-
this.workerThread = new Thread( this, "ReconfigurationService" );
}
@@ -237,23 +230,16 @@ public class ReconfigurationServiceImpl
*/
public void run()
{
- ReconfigurationEntry reconfigurationEntry = null;
ReconfigurationEntry[] list = null;
-
while( this.terminateNow == false )
{
list = this.getReconfigurationEntryList();
-
try
{
- for( int i=0; i<list.length; i++ )
+ for ( ReconfigurationEntry reconfigurationEntry : list )
{
- reconfigurationEntry = list[i];
-
if( reconfigurationEntry.hasChanged() )
- {
this.onReconfigure( reconfigurationEntry );
- }
}
Thread.sleep( this.interval );
@@ -288,7 +274,6 @@ public class ReconfigurationServiceImpl
if( reconfigurationEntry.getServiceList() == null )
{
// reconfigure the whole container using Avalon Lifecycle Spec
-
InputStream is = reconfigurationEntry.locate();
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
Configuration configuration = builder.build(is);
Modified: turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentImpl.java Tue Dec 11 14:53:48 2018
@@ -38,7 +38,7 @@ public class DependentTestComponentImpl
/** out test component */
private TestComponent testComponent;
- /**
+ /* (non-Javadoc)
* @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
*/
public void service(ServiceManager serviceManager) throws ServiceException
@@ -46,6 +46,9 @@ public class DependentTestComponentImpl
this.testComponent = (TestComponent) serviceManager.lookup(TestComponent.ROLE);
}
+ /* (non-Javadoc)
+ * @see org.apache.fulcrum.yaafi.DependentTestComponent#test()
+ */
public void test()
{
this.testComponent.test();
Modified: turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/DependentTestComponentTest.java Tue Dec 11 14:53:48 2018
@@ -45,7 +45,7 @@ public class DependentTestComponentTest
* DependentTestComponentImpl uses a TestComponent which. Make
* sure that the container resolves this cyclic dependency.
*
- * @throws Exception
+ * @throws Exception generic exception
*/
public void testDependentTestComponent() throws Exception
{
Modified: turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponent.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponent.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponent.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponent.java Tue Dec 11 14:53:48 2018
@@ -82,15 +82,17 @@ public interface TestComponent
String getUrnAvalonPartition();
/**
- * Alwayas throws an exception
+ * Always throws an exception
+ * @param reason reason for exception
+ * @param caller the method or class calling the exception
*/
void createException(String reason, Object caller);
/**
* Do something for the given time
*
- * @param millis
- * @param arg
+ * @param millis time in miliseconds
+ * @param arg arguments
*/
public void doSomething(long millis, Object arg);
}
Modified: turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java?rev=1848689&r1=1848688&r2=1848689&view=diff
==============================================================================
--- turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java (original)
+++ turbine/fulcrum/trunk/yaafi/src/test/org/apache/fulcrum/yaafi/TestComponentImpl.java Tue Dec 11 14:53:48 2018
@@ -56,12 +56,18 @@ public class TestComponentImpl
public boolean decomissioned;
public String componentName;
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Initializable#initialize()
+ */
public void initialize() throws Exception
{
getLogger().debug("initialize() was called");
decomissioned = false;
}
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+ */
public void contextualize(Context context) throws ContextException
{
this.urnAvaloneHome = (File) context.get( "urn:avalon:home" );
@@ -71,28 +77,43 @@ public class TestComponentImpl
this.urnAvalonClassLoader = (ClassLoader) context.get( "urn:avalon:classloader" );
}
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
public void configure(Configuration configuration) throws ConfigurationException
{
this.foo = configuration.getChild("FOO").getValue("FOO Not Found?!");
}
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.configuration.Reconfigurable#reconfigure(org.apache.avalon.framework.configuration.Configuration)
+ */
public void reconfigure(Configuration configuration)
throws ConfigurationException
{
this.configure(configuration);
}
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+ */
public void parameterize(Parameters parameters) throws ParameterException
{
this.bar = parameters.getParameter("BAR", "BAR Not Found?!");
}
+ /* (non-Javadoc)
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
public void dispose()
{
getLogger().debug("dispose() was called");
this.decomissioned=true;
}
+ /* (non-Javadoc)
+ * @see org.apache.fulcrum.yaafi.TestComponent#test()
+ */
public void test()
{
setupLogger(this, "TestComponent");
@@ -168,14 +189,17 @@ public class TestComponentImpl
return urnAvalonPartition;
}
- /**
- * @see org.apache.fulcrum.yaafi.TestComponent#createException(String,Object)
+ /* (non-Javadoc)
+ * @see org.apache.fulcrum.yaafi.TestComponent#createException(java.lang.String, java.lang.Object)
*/
public void createException(String reason, Object caller)
{
throw new RuntimeException(reason);
}
+ /* (non-Javadoc)
+ * @see org.apache.fulcrum.yaafi.TestComponent#doSomething(long, java.lang.Object)
+ */
public void doSomething(long millis, Object arg)
{
try