All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.facets.object.parseable.ParseableFacetAnnotation Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.object.parseable;

import org.nakedobjects.applib.annotation.Parseable;
import org.nakedobjects.metamodel.commons.lang.StringUtils;
import org.nakedobjects.metamodel.config.NakedObjectConfiguration;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.runtimecontext.RuntimeContext;


public class ParseableFacetAnnotation extends ParseableFacetAbstract {

    private static String parserName(final Class annotatedClass, final NakedObjectConfiguration configuration) {
        final Parseable annotation = (Parseable) annotatedClass.getAnnotation(Parseable.class);
        final String parserName = annotation.parserName();
        if (!StringUtils.isEmpty(parserName)) {
            return parserName;
        }
        return ParserUtil.parserNameFromConfiguration(annotatedClass, configuration);
    }

    private static Class parserClass(final Class annotatedClass) {
        final Parseable annotation = (Parseable) annotatedClass.getAnnotation(Parseable.class);
        return annotation.parserClass();
    }

    public ParseableFacetAnnotation(
            final Class annotatedClass,
            final NakedObjectConfiguration configuration,
            final FacetHolder holder, 
            final RuntimeContext runtimeContext) {
        this(parserName(annotatedClass, configuration), parserClass(annotatedClass), holder, runtimeContext);
    }

    private ParseableFacetAnnotation(
    		final String candidateParserName, 
    		final Class candidateParserClass, 
    		final FacetHolder holder, 
    		final RuntimeContext runtimeContext) {
        super(candidateParserName, candidateParserClass, holder, runtimeContext);
    }

}

// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy