I see. Thanks for the explanation. 

Sent from my iPhone

> On 2014/05/28, at 8:59, Matt Sicker <[email protected]> wrote:
> 
> That was if we were loading a class via a FQCN. When you have the class 
> object itself, there's nothing to worry about as the class is already loaded!
> 
> 
>> On 27 May 2014 18:33, Remko Popma <[email protected]> wrote:
>> Really? What about the OSGi classloader issue you mentioned?
>> 
>> Sent from my iPhone
>> 
>>> On 2014/05/28, at 7:34, Matt Sicker <[email protected]> wrote:
>>> 
>>> Will do :)
>>> 
>>> 
>>>> On 27 May 2014 15:27, Gary Gregory <[email protected]> wrote:
>>>> I'll leave it to you to fix that up then ;-)
>>>> 
>>>> Gary
>>>> 
>>>> 
>>>>> On Tue, May 27, 2014 at 4:19 PM, Matt Sicker <[email protected]> wrote:
>>>>> Oh wow, I can't believe I missed that. It would work better to just use 
>>>>> the class instead anyhow!
>>>>> 
>>>>> 
>>>>>> On 27 May 2014 13:15, Gary Gregory <[email protected]> wrote:
>>>>>> Sure, @Test (expected=SomeException.class)
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>> 
>>>>>> -------- Original message --------
>>>>>> From: Matt Sicker
>>>>>> Date:05/27/2014 13:03 (GMT-05:00)
>>>>>> To: Log4J Developers List
>>>>>> Subject: Re: svn commit: r1597790 - in 
>>>>>> /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins:
>>>>>>  ./ util/ visitors/
>>>>>> 
>>>>>> You can put a class in an annotation?
>>>>>> 
>>>>>> 
>>>>>>> On 27 May 2014 10:49, Remko Popma <[email protected]> wrote:
>>>>>>> You may want to document that you use String FQCNs on purpose even 
>>>>>>> though annotations let you use Classes, to make it OSGi-friendly. 
>>>>>>> Otherwise the next person may refactor this...
>>>>>>> 
>>>>>>> 
>>>>>>>> On Tue, May 27, 2014 at 10:57 PM, <[email protected]> wrote:
>>>>>>>> Author: mattsicker
>>>>>>>> Date: Tue May 27 13:57:31 2014
>>>>>>>> New Revision: 1597790
>>>>>>>> 
>>>>>>>> URL: http://svn.apache.org/r1597790
>>>>>>>> Log:
>>>>>>>> Switch from a registry-based strategy to a meta-annotation-based 
>>>>>>>> strategy for associating visitors to annotations.
>>>>>>>> 
>>>>>>>>   - More easily extensible as there is no registry or special file to 
>>>>>>>> maintain.
>>>>>>>>   - Still maintains OSGi compatibility with correct ClassLoader usage.
>>>>>>>>   - Updated PluginVisitor(Builder|s) accordingly to use new algorithm.
>>>>>>>> 
>>>>>>>> Added:
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java
>>>>>>>>    (with props)
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
>>>>>>>>       - copied, changed from r1597667, 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitorRegistry.java
>>>>>>>> Removed:
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitorRegistry.java
>>>>>>>> Modified:
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
>>>>>>>>     
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/package-info.java
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -32,6 +32,7 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target({ElementType.PARAMETER, ElementType.FIELD})
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor")
>>>>>>>>  public @interface PluginAttribute {
>>>>>>>> 
>>>>>>>>      // TODO: could we allow a blank value and infer the attribute 
>>>>>>>> name through reflection?
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -29,5 +29,6 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target({ElementType.PARAMETER, ElementType.FIELD})
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor")
>>>>>>>>  public @interface PluginConfiguration {
>>>>>>>>  }
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -28,6 +28,7 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target({ElementType.PARAMETER, ElementType.FIELD})
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor")
>>>>>>>>  public @interface PluginElement {
>>>>>>>> 
>>>>>>>>      /**
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -28,5 +28,6 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target({ElementType.PARAMETER, ElementType.FIELD})
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.PluginNodeVisitor")
>>>>>>>>  public @interface PluginNode {
>>>>>>>>  }
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -31,6 +31,7 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target(ElementType.PARAMETER)
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.PluginValueVisitor")
>>>>>>>>  public @interface PluginValue {
>>>>>>>> 
>>>>>>>>      String value();
>>>>>>>> 
>>>>>>>> Added: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java?rev=1597790&view=auto
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java
>>>>>>>>  (added)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -0,0 +1,40 @@
>>>>>>>> +/*
>>>>>>>> + * 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.
>>>>>>>> + */
>>>>>>>> +
>>>>>>>> +package org.apache.logging.log4j.core.config.plugins;
>>>>>>>> +
>>>>>>>> +import java.lang.annotation.Documented;
>>>>>>>> +import java.lang.annotation.ElementType;
>>>>>>>> +import java.lang.annotation.Retention;
>>>>>>>> +import java.lang.annotation.RetentionPolicy;
>>>>>>>> +import java.lang.annotation.Target;
>>>>>>>> +
>>>>>>>> +/**
>>>>>>>> + * Meta-annotation to denote the class name to use that implements
>>>>>>>> + * {@link 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitor} 
>>>>>>>> for the annotated annotation.
>>>>>>>> + */
>>>>>>>> +@Documented
>>>>>>>> +@Retention(RetentionPolicy.RUNTIME)
>>>>>>>> +@Target(ElementType.ANNOTATION_TYPE)
>>>>>>>> +public @interface PluginVisitorStrategy {
>>>>>>>> +
>>>>>>>> +    /**
>>>>>>>> +     * The class name to use that implements {@link 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitor}
>>>>>>>> +     * for the given annotation.
>>>>>>>> +     */
>>>>>>>> +    String value();
>>>>>>>> +}
>>>>>>>> 
>>>>>>>> Propchange: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java
>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>     svn:eol-style = native
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -34,6 +34,7 @@ import java.lang.annotation.Target;
>>>>>>>>  @Documented
>>>>>>>>  @Retention(RetentionPolicy.RUNTIME)
>>>>>>>>  @Target(ElementType.PARAMETER)
>>>>>>>> +@PluginVisitorStrategy("org.apache.logging.log4j.core.config.plugins.visitors.SensitivePluginAttributeVisitor")
>>>>>>>>  public @interface SensitivePluginAttribute {
>>>>>>>>      String value();
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Modified: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java?rev=1597790&r1=1597789&r2=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -34,7 +34,7 @@ import org.apache.logging.log4j.core.con
>>>>>>>>  import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
>>>>>>>>  import org.apache.logging.log4j.core.config.plugins.PluginFactory;
>>>>>>>>  import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitor;
>>>>>>>> -import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitorRegistry;
>>>>>>>> +import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitors;
>>>>>>>>  import org.apache.logging.log4j.core.util.Assert;
>>>>>>>>  import org.apache.logging.log4j.core.util.Builder;
>>>>>>>>  import org.apache.logging.log4j.status.StatusLogger;
>>>>>>>> @@ -164,7 +164,7 @@ public class PluginBuilder<T> implements
>>>>>>>>                      continue; // already processed
>>>>>>>>                  }
>>>>>>>>                  final PluginVisitor<? extends Annotation> visitor =
>>>>>>>> -                    
>>>>>>>> PluginVisitorRegistry.findVisitor(a.annotationType());
>>>>>>>> +                    PluginVisitors.findVisitor(a.annotationType());
>>>>>>>>                  if (visitor != null) {
>>>>>>>>                      final Object value = visitor.setAliases(aliases)
>>>>>>>>                          .setAnnotation(a)
>>>>>>>> @@ -200,7 +200,7 @@ public class PluginBuilder<T> implements
>>>>>>>>                  if (a instanceof PluginAliases) {
>>>>>>>>                      continue; // already processed
>>>>>>>>                  }
>>>>>>>> -                final PluginVisitor<? extends Annotation> visitor = 
>>>>>>>> PluginVisitorRegistry.findVisitor(
>>>>>>>> +                final PluginVisitor<? extends Annotation> visitor = 
>>>>>>>> PluginVisitors.findVisitor(
>>>>>>>>                      a.annotationType());
>>>>>>>>                  if (visitor != null) {
>>>>>>>>                      args[i] = visitor.setAliases(aliases)
>>>>>>>> 
>>>>>>>> Copied: 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
>>>>>>>>  (from r1597667, 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitorRegistry.java)
>>>>>>>> URL: 
>>>>>>>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java?p2=logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java&p1=logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitorRegistry.java&r1=1597667&r2=1597790&rev=1597790&view=diff
>>>>>>>> ==============================================================================
>>>>>>>> --- 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitorRegistry.java
>>>>>>>>  (original)
>>>>>>>> +++ 
>>>>>>>> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
>>>>>>>>  Tue May 27 13:57:31 2014
>>>>>>>> @@ -18,58 +18,24 @@
>>>>>>>>  package org.apache.logging.log4j.core.config.plugins.visitors;
>>>>>>>> 
>>>>>>>>  import java.lang.annotation.Annotation;
>>>>>>>> -import java.util.Map;
>>>>>>>> -import java.util.concurrent.ConcurrentHashMap;
>>>>>>>> 
>>>>>>>>  import org.apache.logging.log4j.Logger;
>>>>>>>> -import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
>>>>>>>> -import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
>>>>>>>> -import org.apache.logging.log4j.core.config.plugins.PluginElement;
>>>>>>>> -import org.apache.logging.log4j.core.config.plugins.PluginNode;
>>>>>>>> -import org.apache.logging.log4j.core.config.plugins.PluginValue;
>>>>>>>> -import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.SensitivePluginAttribute;
>>>>>>>> +import 
>>>>>>>> org.apache.logging.log4j.core.config.plugins.PluginVisitorStrategy;
>>>>>>>>  import org.apache.logging.log4j.status.StatusLogger;
>>>>>>>> 
>>>>>>>>  /**
>>>>>>>> - * Registry for associating Plugin annotations with PluginVisitor 
>>>>>>>> implementations.
>>>>>>>> + * Utility class to locate an appropriate PluginVisitor 
>>>>>>>> implementation for an annotation.
>>>>>>>>   */
>>>>>>>> -public final class PluginVisitorRegistry {
>>>>>>>> +public final class PluginVisitors {
>>>>>>>> 
>>>>>>>>      private static final Logger LOGGER = StatusLogger.getLogger();
>>>>>>>> 
>>>>>>>> -    // map of annotation classes to their corresponding PluginVisitor 
>>>>>>>> classes
>>>>>>>> -    // generics are fun!
>>>>>>>> -    private static final Map<Class<? extends Annotation>, Class<? 
>>>>>>>> extends PluginVisitor<? extends Annotation>>> REGISTRY;
>>>>>>>> -
>>>>>>>> -    static {
>>>>>>>> -        // register the default PluginVisitor classes
>>>>>>>> -        // TODO: this could probably be combined with the usual 
>>>>>>>> plugin architecture instead
>>>>>>>> -        REGISTRY = new ConcurrentHashMap<Class<? extends Annotation>, 
>>>>>>>> Class<? extends PluginVisitor<? extends Annotation>>>();
>>>>>>>> -        registerVisitor(PluginAttribute.class, 
>>>>>>>> PluginAttributeVisitor.class);
>>>>>>>> -        registerVisitor(SensitivePluginAttribute.class, 
>>>>>>>> SensitivePluginAttributeVisitor.class);
>>>>>>>> -        registerVisitor(PluginConfiguration.class, 
>>>>>>>> PluginConfigurationVisitor.class);
>>>>>>>> -        registerVisitor(PluginNode.class, PluginNodeVisitor.class);
>>>>>>>> -   �
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Matt Sicker <[email protected]>
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> E-Mail: [email protected] | [email protected] 
>>>> Java Persistence with Hibernate, Second Edition
>>>> JUnit in Action, Second Edition
>>>> Spring Batch in Action
>>>> Blog: http://garygregory.wordpress.com 
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>> 
>>> 
>>> 
>>> -- 
>>> Matt Sicker <[email protected]>
> 
> 
> 
> -- 
> Matt Sicker <[email protected]>

Reply via email to