I think you're right.

On 26 May 2014 18:45, Remko Popma <[email protected]> wrote:

> Is PluginVisitorRegistry not a better name than PluginVisitors?
> The convention to append "s" after another class name has many meanings,
> like providing static util methods.
> I think calling it a ..Registry is clearer.
>
> Sent from my iPhone
>
> > On 2014/05/26, at 12:59, [email protected] wrote:
> >
> > Author: mattsicker
> > Date: Mon May 26 03:59:52 2014
> > New Revision: 1597509
> >
> > URL: http://svn.apache.org/r1597509
> > Log:
> > Add PluginVisitors registry class.
> >
> >  - Registers the PluginAttribute visitor by default.
> >  - Will be adding other visitor implementations over time.
> >
> > Added:
> >
>  
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
>   (with props)
> >
> > Added:
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.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?rev=1597509&view=auto
> >
> ==============================================================================
> > ---
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
> (added)
> > +++
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
> Mon May 26 03:59:52 2014
> > @@ -0,0 +1,81 @@
> > +/*
> > + * 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.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.status.StatusLogger;
> > +
> > +/**
> > + * Registry for associating Plugin annotations with PluginVisitor
> implementations.
> > + */
> > +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
> > +        REGISTRY = new ConcurrentHashMap<Class<? extends Annotation>,
> Class<? extends PluginVisitor<? extends Annotation>>>();
> > +        registerVisitor(PluginAttribute.class,
> PluginAttributeVisitor.class);
> > +    }
> > +
> > +    private PluginVisitors() {
> > +    }
> > +
> > +    /**
> > +     * Registers a PluginVisitor class associated to a specific
> annotation.
> > +     *
> > +     * @param annotation the Plugin annotation to associate with.
> > +     * @param helper     the PluginVisitor class to use for the
> annotation.
> > +     * @param <A>        the Plugin annotation type.
> > +     */
> > +    public static <A extends Annotation> void registerVisitor(final
> Class<A> annotation,
> > +                                                              final
> Class<? extends PluginVisitor<A>> helper) {
> > +        REGISTRY.put(annotation, helper);
> > +    }
> > +
> > +    /**
> > +     * Creates a PluginVisitor instance for the given annotation class.
> This instance must be further populated with
> > +     * data to be useful. Such data is passed through both the setters
> and the visit method.
> > +     *
> > +     * @param annotation the Plugin annotation class to find a
> PluginVisitor for.
> > +     * @param <A>        the Plugin annotation type.
> > +     * @return a PluginVisitor instance if one could be created, or
> {@code null} otherwise.
> > +     */
> > +    @SuppressWarnings("unchecked") // we're keeping track of types,
> thanks
> > +    public static <A extends Annotation> PluginVisitor<A>
> findVisitor(final Class<A> annotation) {
> > +        try {
> > +            final Class<PluginVisitor<A>> clazz =
> (Class<PluginVisitor<A>>) REGISTRY.get(annotation);
> > +            if (clazz == null) {
> > +                return null;
> > +            }
> > +            return clazz.newInstance();
> > +        } catch (final Exception e) {
> > +            LOGGER.debug("No PluginVisitor found for annotation: {}.",
> annotation);
> > +            return null;
> > +        }
> > +    }
> > +}
> >
> > Propchange:
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java
> >
> ------------------------------------------------------------------------------
> >    svn:eol-style = native
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to