/** * This file is part of the source code and related artifacts for eGym Application. * * Copyright © 2013 eGym GmbH */ package de.egym.logqueue.config; import net.jcip.annotations.Immutable; import de.egym.logqueue.EgymLogRequestRecord; import de.egym.logqueue.decorator.EgymLogDecorator; import de.egym.logqueue.formatter.EgymLogFormatter; import de.egym.logqueue.writer.EgymLogWriter; /** * Specifies a log pipeline consisting of a decorator, a formatter and a writer. * * @param <D> * the decorated log request record type. * @param <F> * the formatted log record type. */ @Immutable public class EgymLogPipelineConfig<D extends EgymLogRequestRecord, F> { private final Class<? extends EgymLogDecorator<D>> logDecoratorClazz; private final Class<? extends EgymLogFormatter<D, F>> logFormatterClazz; private final Class<? extends EgymLogWriter<F>> logWriterClazz; public EgymLogPipelineConfig(Class<? extends EgymLogDecorator<D>> logDecoratorClazz, Class<? extends EgymLogFormatter<D, F>> logFormatterClazz, Class<? extends EgymLogWriter<F>> logWriterClazz) { if (logDecoratorClazz == null) { throw new IllegalArgumentException("logDecoratorClazz must not be null"); } if (logFormatterClazz == null) { throw new IllegalArgumentException("logFormatterClazz must not be null"); } if (logWriterClazz == null) { throw new IllegalArgumentException("logWriterClazz must not be null"); } this.logDecoratorClazz = logDecoratorClazz; this.logWriterClazz = logWriterClazz; this.logFormatterClazz = logFormatterClazz; } public Class<? extends EgymLogDecorator<D>> getLogDecoratorClazz() { return logDecoratorClazz; } public Class<? extends EgymLogFormatter<D, F>> getLogFormatterClazz() { return logFormatterClazz; } public Class<? extends EgymLogWriter<F>> getLogWriterClazz() { return logWriterClazz; } @Override public String toString() { return "EgymLogWiringConfig(" + "logDecoratorClazz=" + logDecoratorClazz.getName() + ", logFormatterClazz=" + logFormatterClazz.getName() + ", logWriterClazz=" + logWriterClazz.getName() + ')'; } }