[jboss-cvs] JBossAS SVN: r90971 - in projects/logging-service-metadata/trunk/src/main: resources/META-INF/schema and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 8 21:26:22 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-07-08 21:26:22 -0400 (Wed, 08 Jul 2009)
New Revision: 90971
Added:
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/HandlerInstallerHelper.java
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaDataHelper.java
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingObjectRef.java
Modified:
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/InstallHandlerMetaData.java
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaData.java
projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/PatternFormatterMetaData.java
projects/logging-service-metadata/trunk/src/main/resources/META-INF/schema/jboss-logging_6_0.xsd
Log:
More metadata, and add bean metadata converter
Added: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/HandlerInstallerHelper.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/HandlerInstallerHelper.java (rev 0)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/HandlerInstallerHelper.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logging.metadata;
+
+import java.util.List;
+
+import java.util.logging.Handler;
+import java.util.logging.Logger;
+
+/**
+ * A simple helper POJO which installs one or more handlers into a logger.
+ */
+public final class HandlerInstallerHelper {
+ private List<Handler> handlerList;
+ private List<Logger> targetList;
+
+ public List<Handler> getHandlerList() {
+ return handlerList;
+ }
+
+ public void setHandlerList(final List<Handler> handlerList) {
+ this.handlerList = handlerList;
+ }
+
+ public List<Logger> getTargetList() {
+ return targetList;
+ }
+
+ public void setTargetList(final List<Logger> targetList) {
+ this.targetList = targetList;
+ }
+
+ public void start() {
+ for (Handler handler : handlerList) {
+ for (Logger target : targetList) {
+ target.addHandler(handler);
+ }
+ }
+ }
+
+ public void stop() {
+ for (Handler handler : handlerList) {
+ for (Logger target : targetList) {
+ target.removeHandler(handler);
+ }
+ }
+ }
+
+ public void destroy() {
+ targetList = null;
+ handlerList = null;
+ }
+}
Modified: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/InstallHandlerMetaData.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/InstallHandlerMetaData.java 2009-07-09 00:50:18 UTC (rev 90970)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/InstallHandlerMetaData.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -22,9 +22,37 @@
package org.jboss.logging.metadata;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlElements;
@XmlType(name = "installHandlerType", propOrder = {})
public class InstallHandlerMetaData {
+ private RefMetaData handlerRef;
+ private List<AbstractLoggerRefMetaData> loggerRefList;
+ public RefMetaData getHandlerRef() {
+ return handlerRef;
+ }
+
+ @XmlElement(name = "handler-ref")
+ public void setHandlerRef(final RefMetaData handlerRef) {
+ this.handlerRef = handlerRef;
+ }
+
+ public List<AbstractLoggerRefMetaData> getLoggerRefList() {
+ return loggerRefList;
+ }
+
+ @XmlElementWrapper(name = "loggers")
+ @XmlElements({
+ @XmlElement(name = "root-logger", type = RootLoggerRefMetaData.class),
+ @XmlElement(name = "logger", type = LoggerRefMetaData.class)
+ })
+ public void setLoggerRefList(final List<AbstractLoggerRefMetaData> loggerRefList) {
+ this.loggerRefList = loggerRefList;
+ }
}
Modified: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaData.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaData.java 2009-07-09 00:50:18 UTC (rev 90970)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaData.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -41,7 +41,6 @@
public class LoggingMetaData {
private List<AbstractLoggerMetaData> loggerMetaDataList;
private List<AbstractHandlerMetaData> handlerMetaDataList;
- private List<FormatterMetaData> formatterMetaDataList;
private List<InstallHandlerMetaData> installHandlerMetaDataList;
private String context;
@@ -75,15 +74,6 @@
this.handlerMetaDataList = handlerMetaDataList;
}
- public List<FormatterMetaData> getFormatterMetaDataList() {
- return formatterMetaDataList;
- }
-
- @XmlElement(name = "formatter")
- public void setFormatterMetaDataList(final List<FormatterMetaData> formatterMetaDataList) {
- this.formatterMetaDataList = formatterMetaDataList;
- }
-
public List<InstallHandlerMetaData> getInstallHandlerMetaDataList() {
return installHandlerMetaDataList;
}
Added: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaDataHelper.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaDataHelper.java (rev 0)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingMetaDataHelper.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -0,0 +1,384 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logging.metadata;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.logmanager.Logger;
+import org.jboss.logmanager.formatters.PatternFormatter;
+import org.jboss.logmanager.filters.AllFilter;
+import org.jboss.logmanager.filters.AnyFilter;
+import org.jboss.logmanager.filters.AcceptAllFilter;
+import org.jboss.logmanager.filters.DenyAllFilter;
+import org.jboss.logmanager.filters.InvertFilter;
+import org.jboss.logmanager.filters.RegexFilter;
+import org.jboss.logmanager.filters.SubstituteFilter;
+import org.jboss.logmanager.filters.LevelFilter;
+import org.jboss.logmanager.filters.LevelRangeFilter;
+import org.jboss.logmanager.filters.LevelChangingFilter;
+import org.jboss.logmanager.errormanager.OnlyOnceErrorManager;
+import org.jboss.logmanager.log4j.handlers.Log4jAppenderHandler;
+import org.jboss.logmanager.handlers.AsyncHandler;
+import org.jboss.logmanager.handlers.ConsoleHandler;
+import org.jboss.logmanager.handlers.FileHandler;
+import org.jboss.logmanager.handlers.NullHandler;
+import org.jboss.logmanager.handlers.PeriodicRotatingFileHandler;
+import org.jboss.logmanager.handlers.SizeRotatingFileHandler;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import java.util.logging.Handler;
+import java.util.logging.Filter;
+import java.util.logging.Level;
+
+public final class LoggingMetaDataHelper {
+
+ private LoggingMetaDataHelper() {
+ }
+
+ private static final AtomicInteger sequence = new AtomicInteger();
+
+ public static void createBeanMetaData(final List<BeanMetaData> beanMetaDataList, final LoggingMetaData loggingMetaData) {
+ final String context = loggingMetaData.getContext();
+ if (context == null) {
+ // context should be "system" by default
+ throw new NullPointerException("context is null");
+ }
+ for (AbstractLoggerMetaData abstractLoggerMetaData : loggingMetaData.getLoggerMetaDataList()) {
+ createLoggerBeanMetaData(beanMetaDataList, abstractLoggerMetaData, context);
+ }
+ for (AbstractHandlerMetaData abstractHandlerMetaData : loggingMetaData.getHandlerMetaDataList()) {
+ getValue(beanMetaDataList, abstractHandlerMetaData, context);
+ }
+ for (InstallHandlerMetaData installMetaData : loggingMetaData.getInstallHandlerMetaDataList()) {
+ final String installerName = getInstallerName(context, "*");
+ final RefMetaData handlerRef = installMetaData.getHandlerRef();
+ final List<AbstractLoggerRefMetaData> loggerRefs = installMetaData.getLoggerRefList();
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(HandlerInstallerHelper.class.getName(), installerName);
+ final List<ValueMetaData> handlerList = builder.createList();
+ final List<ValueMetaData> targetList = builder.createList();
+ handlerList.add(builder.createInject(getName(context, Kind.HANDLER, handlerRef.getName())));
+ for (AbstractLoggerRefMetaData loggerRef : loggerRefs) {
+ final String refContext = loggerRef.getContext();
+ final String refName;
+ if (loggerRef instanceof LoggerRefMetaData) {
+ refName = ((LoggerRefMetaData)loggerRef).getCategory();
+ } else {
+ refName = "";
+ }
+ targetList.add(getLoggerInjectValue(refContext == null ? context : refContext, refName));
+ }
+ builder.addPropertyMetaData("handlerList", (ValueMetaData) handlerList);
+ builder.addPropertyMetaData("targetList", (ValueMetaData) targetList);
+ beanMetaDataList.add(builder.getBeanMetaData());
+ }
+ }
+
+ private static void createLoggerBeanMetaData(final List<BeanMetaData> beanMetaDataList, final AbstractLoggerMetaData abstractLoggerMetaData, final String context) {
+ final String name;
+ final String humanName;
+ if (abstractLoggerMetaData instanceof LoggerMetaData) {
+ name = humanName = ((LoggerMetaData) abstractLoggerMetaData).getCategory();
+ } else {
+ name = "";
+ humanName = "<root>";
+ }
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(Logger.class.getName(), getName(context, Kind.LOGGER, humanName));
+ builder.setFactory(builder.createInject(getContextName(context)));
+ builder.setFactoryMethod("getLogger");
+ builder.addConstructorParameter(String.class.getName(), name);
+ if (abstractLoggerMetaData instanceof LoggerMetaData) {
+ builder.addPropertyMetaData("useParentHandlers", Boolean.valueOf(((LoggerMetaData) abstractLoggerMetaData).isUseParentHandlers()));
+ }
+ final RefMetaData levelRef = abstractLoggerMetaData.getLevelMetaData();
+ if (levelRef != null) {
+ builder.addPropertyMetaData("level", getLevelInjectValue(context, levelRef.getName()));
+ }
+ final FilterMetaData filterMetaData = abstractLoggerMetaData.getFilterMetaData();
+ if (filterMetaData != null) {
+ builder.addPropertyMetaData("filter", getValue(context, filterMetaData));
+ }
+ final BeanMetaData loggerBeanMetaData = builder.getBeanMetaData();
+ // now install handlers
+ final BeanMetaDataBuilder installerBuilder = BeanMetaDataBuilder.createBuilder(HandlerInstallerHelper.class.getName(), getInstallerName(context, name));
+ final List<AbstractHandlerMetaData> handlerMetaDataList = abstractLoggerMetaData.getHandlerMetaDataList();
+ final List<ValueMetaData> handlerList = builder.createList();
+ for (AbstractHandlerMetaData handlerMetaData : handlerMetaDataList) {
+ handlerList.add(getValue(beanMetaDataList, handlerMetaData, context));
+ }
+ final List<ValueMetaData> targetList = builder.createList();
+ targetList.add(loggerBeanMetaData);
+ installerBuilder.addPropertyMetaData("handlerList", (ValueMetaData) handlerList);
+ installerBuilder.addPropertyMetaData("targetList", (ValueMetaData) targetList);
+ beanMetaDataList.add(loggerBeanMetaData);
+ beanMetaDataList.add(installerBuilder.getBeanMetaData());
+ }
+
+ private static ValueMetaData getValue(final List<BeanMetaData> beanMetaDataList, final AbstractHandlerMetaData handlerMetaData, final String context) {
+ final String name = handlerMetaData.getName();
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name == null ? getAnonymousName(context, Kind.HANDLER) : getName(context, Kind.HANDLER, name));
+ if (handlerMetaData instanceof HandlerMetaData) {
+ builder.setBean(((HandlerMetaData)handlerMetaData).getClassName());
+ } else if (handlerMetaData instanceof AsyncHandlerMetaData) {
+ builder.setBean(AsyncHandler.class.getName());
+ } else if (handlerMetaData instanceof ConsoleHandlerMetaData) {
+ builder.setBean(ConsoleHandler.class.getName());
+ } else if (handlerMetaData instanceof FileHandlerMetaData) {
+ builder.setBean(FileHandler.class.getName());
+ } else if (handlerMetaData instanceof Log4jAppenderMetaData) {
+ builder.setBean(Log4jAppenderHandler.class.getName());
+ } else if (handlerMetaData instanceof NullHandlerMetaData) {
+ builder.setBean(NullHandler.class.getName());
+ } else if (handlerMetaData instanceof PeriodicRotatingFileHandlerMetaData) {
+ builder.setBean(PeriodicRotatingFileHandler.class.getName());
+ } else if (handlerMetaData instanceof SizeRotatingFileHandlerMetaData) {
+ builder.setBean(SizeRotatingFileHandler.class.getName());
+ }
+ builder.setStop("close");
+ // encoding
+ final String encoding = handlerMetaData.getEncoding();
+ if (encoding != null) {
+ builder.addPropertyMetaData("encoding", builder.createValue(encoding));
+ }
+ // properties
+ final List<PropertyMetaData> properties = handlerMetaData.getPropertyMetaDataList();
+ for (PropertyMetaData property : properties) {
+ builder.addPropertyMetaData(property.getName(), property.getValue());
+ }
+ // error-manager
+ final ErrorManagerMetaData errorManager = handlerMetaData.getErrorManagerMetaData();
+ if (errorManager != null) {
+ if (errorManager.isOnlyOnce()) {
+ builder.addPropertyMetaData("errorManager", builder.createValue(new OnlyOnceErrorManager()));
+ } else {
+ builder.addPropertyMetaData("errorManager", errorManager.getValueMetaData());
+ }
+ }
+ // level
+ final RefMetaData levelRef = handlerMetaData.getLevelMetaData();
+ if (levelRef != null) {
+ builder.addPropertyMetaData("level", getLevelInjectValue(context, levelRef.getName()));
+ }
+ // filter
+ final FilterMetaData filter = handlerMetaData.getFilterMetaData();
+ if (filter != null) {
+ builder.addPropertyMetaData("filter", getValue(context, filter));
+ }
+ // formatter
+ final FormatterMetaData formatter = handlerMetaData.getFormatterMetaData();
+ if (formatter != null) {
+ builder.addPropertyMetaData("formatter", getValue(formatter, context));
+ }
+ // sub-handlers
+ final List<AbstractHandlerMetaData> subHandlers = handlerMetaData.getSubHandlerMetaDataList();
+ if (subHandlers != null) {
+ final List<ValueMetaData> subHandlerValueList = builder.createArray(Handler[].class.getName(), Handler.class.getName());
+ for (AbstractHandlerMetaData subHandler : subHandlers) {
+ subHandlerValueList.add(getValue(beanMetaDataList, subHandler, context));
+ }
+ builder.addPropertyMetaData("handlers", (ValueMetaData) subHandlerValueList);
+ }
+ final BeanMetaData handlerBeanMetaData = builder.getBeanMetaData();
+ // loggers
+ final List<AbstractLoggerRefMetaData> loggers = handlerMetaData.getLoggerMetaDataList();
+ if (loggers != null) {
+ final String installerName = getInstallerName(context, "*");
+ final BeanMetaDataBuilder installerBuilder = BeanMetaDataBuilder.createBuilder(HandlerInstallerHelper.class.getName(), installerName);
+ final List<ValueMetaData> targetList = installerBuilder.createList();
+ for (AbstractLoggerRefMetaData loggerRef : loggers) {
+ final String refContext = loggerRef.getContext();
+ final String refName;
+ if (loggerRef instanceof LoggerRefMetaData) {
+ refName = ((LoggerRefMetaData)loggerRef).getCategory();
+ } else {
+ refName = "";
+ }
+ targetList.add(getLoggerInjectValue(refContext == null ? context : refContext, refName));
+ }
+ final List<ValueMetaData> handlerList = installerBuilder.createList();
+ handlerList.add(handlerBeanMetaData);
+ installerBuilder.addPropertyMetaData("handlerList", (ValueMetaData) handlerList);
+ installerBuilder.addPropertyMetaData("targetList", (ValueMetaData) targetList);
+ beanMetaDataList.add(installerBuilder.getBeanMetaData());
+ }
+ return handlerBeanMetaData;
+ }
+
+ private static ValueMetaData getLevelInjectValue(final String context, final String name) {
+ final AbstractValueFactoryMetaData avfmd = new AbstractValueFactoryMetaData(null, "getLevelByName");
+ avfmd.setBean(getContextName(context));
+ final List<ParameterMetaData> parameterList = avfmd.getParameters();
+ parameterList.add(new AbstractParameterMetaData(String.class.getName(), name));
+ return avfmd;
+ }
+
+ private static ValueMetaData getLoggerInjectValue(final String context, final String category) {
+ final AbstractValueFactoryMetaData avfmd = new AbstractValueFactoryMetaData(null, "getLogger");
+ avfmd.setBean(getContextName(context));
+ final List<ParameterMetaData> parameterList = avfmd.getParameters();
+ parameterList.add(new AbstractParameterMetaData(String.class.getName(), category));
+ return avfmd;
+ }
+
+ private static ValueMetaData getValue(final String context, final FilterMetaData filterMetaData) {
+ final String name = filterMetaData.getName();
+ final String beanName = name == null ? getAnonymousName(context, Kind.FILTER) : getName(context, Kind.FILTER, name);
+ final Object value = filterMetaData.getValue();
+ return getFilterValue(beanName, null, value);
+ }
+
+ private static ValueMetaData getFilterValue(final String beanName, final String context, final Object value) {
+ if (value instanceof ValueMetaData) {
+ return (ValueMetaData) value;
+ } else if (value instanceof RefMetaData) {
+ return new AbstractInjectionValueMetaData(((RefMetaData)value).getName());
+ } else if (value instanceof AbstractMultiFilterMetaData) {
+ final AbstractMultiFilterMetaData metaData = (AbstractMultiFilterMetaData) value;
+ final BeanMetaDataBuilder builder;
+ if (metaData instanceof AllFilterMetaData) {
+ builder = BeanMetaDataBuilder.createBuilder(beanName, AllFilter.class.getName());
+ } else {
+ builder = BeanMetaDataBuilder.createBuilder(beanName, AnyFilter.class.getName());
+ }
+ final List<ValueMetaData> filterList = builder.createArray();
+ for (Object filterValue : metaData.getFilterMetaDataList()) {
+ filterList.add(getFilterValue(getAnonymousName(context, Kind.FILTER), null, filterValue));
+ }
+ builder.addConstructorParameter(Filter[].class.getName(), (ValueMetaData) filterList);
+ return builder.getBeanMetaData();
+ } else if (value instanceof AcceptFilterMetaData) {
+ return new AbstractValueMetaData(AcceptAllFilter.getInstance());
+ } else if (value instanceof DenyFilterMetaData) {
+ return new AbstractValueMetaData(DenyAllFilter.getInstance());
+ } else if (value instanceof NotFilterMetaData) {
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, InvertFilter.class.getName());
+ builder.addPropertyMetaData("target", getFilterValue(getAnonymousName(context, Kind.FILTER), context, ((NotFilterMetaData)value).getValue()));
+ return builder.getBeanMetaData();
+ } else if (value instanceof PatternFormatterMetaData) {
+ final PatternFormatterMetaData metaData = (PatternFormatterMetaData) value;
+ final String pattern = metaData.getPattern();
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, RegexFilter.class.getName());
+ builder.addConstructorParameter(String.class.getName(), pattern);
+ return builder.getBeanMetaData();
+ } else if (value instanceof ReplaceFilterMetaData) {
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, SubstituteFilter.class.getName());
+ final ReplaceFilterMetaData metaData = (ReplaceFilterMetaData) value;
+ builder.addConstructorParameter(String.class.getName(), metaData.getPattern());
+ builder.addConstructorParameter(String.class.getName(), metaData.getReplacement());
+ builder.addConstructorParameter(boolean.class.getName(), Boolean.valueOf(metaData.isReplaceAll()));
+ return builder.getBeanMetaData();
+ } else if (value instanceof LevelFilterMetaData) {
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, LevelFilter.class.getName());
+ final LevelFilterMetaData metaData = (LevelFilterMetaData) value;
+ builder.addConstructorParameter(Level.class.getName(), getLevelInjectValue(context, metaData.getLevel()));
+ return builder.getBeanMetaData();
+ } else if (value instanceof LevelRangeFilterMetaData) {
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, LevelRangeFilter.class.getName());
+ final LevelRangeFilterMetaData metaData = (LevelRangeFilterMetaData) value;
+ builder.addConstructorParameter(Level.class.getName(), getLevelInjectValue(context, metaData.getMinLevel()));
+ builder.addConstructorParameter(boolean.class.getName(), Boolean.valueOf(metaData.isMinInclusive()));
+ builder.addConstructorParameter(Level.class.getName(), getLevelInjectValue(context, metaData.getMaxLevel()));
+ builder.addConstructorParameter(boolean.class.getName(), Boolean.valueOf(metaData.isMaxInclusive()));
+ return builder.getBeanMetaData();
+ } else if (value instanceof LevelChangeFilterMetaData) {
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(beanName, LevelChangingFilter.class.getName());
+ final LevelChangeFilterMetaData metaData = (LevelChangeFilterMetaData) value;
+ builder.addConstructorParameter(Level.class.getName(), getLevelInjectValue(context, metaData.getLevel()));
+ return builder.getBeanMetaData();
+ }
+ throw new IllegalStateException();
+ }
+
+ private static ValueMetaData getValue(final FormatterMetaData formatter, final String context) {
+ final RefMetaData refMetaData = formatter.getFormatterRefMetaData();
+ if (refMetaData != null) {
+ return new AbstractInjectionValueMetaData(refMetaData.getName());
+ }
+ final ValueMetaData valueMetaData = formatter.getValueMetaData();
+ if (valueMetaData != null) {
+ return valueMetaData;
+ }
+ final PatternFormatterMetaData metaData = formatter.getPatternFormatterMetaData();
+ if (metaData == null) {
+ return null;
+ }
+ final BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(getAnonymousName(context, Kind.FORMATTER), PatternFormatter.class.getName());
+ builder.addConstructorParameter(String.class.getName(), metaData.getPattern());
+ return builder.getBeanMetaData();
+ }
+
+ public static String getName(String context, Kind kind, String name) {
+ StringBuilder b = new StringBuilder(64);
+ b.append("Logging:");
+ b.append(kind);
+ b.append(':');
+ b.append(context);
+ b.append(':');
+ b.append(name);
+ return b.toString();
+ }
+
+ public static String getAnonymousName(String context, Kind kind) {
+ StringBuilder b = new StringBuilder(64);
+ b.append("Logging:");
+ b.append(kind);
+ b.append(':');
+ b.append(context);
+ b.append(':');
+ b.append("Anonymous-");
+ b.append(sequence.getAndIncrement());
+ return b.toString();
+ }
+
+ public static String getInstallerName(String context, String category) {
+ StringBuilder b = new StringBuilder(64);
+ b.append("Logging:HANDLER_INSTALLER:");
+ b.append(context);
+ b.append(':');
+ b.append(category);
+ b.append(':');
+ b.append(sequence.getAndIncrement());
+ return b.toString();
+ }
+
+ public static String getContextName(String name) {
+ StringBuilder b = new StringBuilder(64);
+ b.append("Logging:CONTEXT:");
+ b.append(name);
+ return b.toString();
+ }
+
+ public enum Kind {
+ FORMATTER,
+ HANDLER,
+ FILTER,
+ LOGGER,
+ }
+}
Added: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingObjectRef.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingObjectRef.java (rev 0)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/LoggingObjectRef.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logging.metadata;
+
+
+public final class LoggingObjectRef {
+ private final String name;
+ private final String context;
+ private final Kind kind;
+
+ public LoggingObjectRef(final String name, final String context, final Kind kind) {
+ this.name = name;
+ this.context = context;
+ this.kind = kind;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public Kind getKind() {
+ return kind;
+ }
+
+ public boolean equals(final Object o) {
+ if (this == o) return true;
+ if (! (o instanceof LoggingObjectRef)) return false;
+ final LoggingObjectRef ref = (LoggingObjectRef) o;
+ if (kind != ref.kind) return false;
+ if (!name.equals(ref.name)) return false;
+ if (!context.equals(ref.context)) return false;
+ return true;
+ }
+
+ public int hashCode() {
+ int result = name.hashCode();
+ result = 31 * result + context.hashCode();
+ result = 31 * result + kind.hashCode();
+ return result;
+ }
+
+ public String toString() {
+ StringBuilder b = new StringBuilder(64);
+ b.append("Logging:");
+ b.append(kind);
+ b.append(':');
+ b.append(context);
+ b.append(':');
+ b.append(name);
+ return b.toString();
+ }
+
+ public enum Kind {
+ FORMATTER,
+ HANDLER,
+ FILTER,
+ LOGGER,
+ }
+}
Modified: projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/PatternFormatterMetaData.java
===================================================================
--- projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/PatternFormatterMetaData.java 2009-07-09 00:50:18 UTC (rev 90970)
+++ projects/logging-service-metadata/trunk/src/main/java/org/jboss/logging/metadata/PatternFormatterMetaData.java 2009-07-09 01:26:22 UTC (rev 90971)
@@ -28,7 +28,6 @@
@XmlType(name = "patternFormatterType", propOrder = {})
public class PatternFormatterMetaData {
private String pattern;
- private String name;
public String getPattern() {
return pattern;
@@ -38,13 +37,4 @@
public void setPattern(final String pattern) {
this.pattern = pattern;
}
-
- public String getName() {
- return name;
- }
-
- @XmlAttribute
- public void setName(final String name) {
- this.name = name;
- }
}
Modified: projects/logging-service-metadata/trunk/src/main/resources/META-INF/schema/jboss-logging_6_0.xsd
===================================================================
--- projects/logging-service-metadata/trunk/src/main/resources/META-INF/schema/jboss-logging_6_0.xsd 2009-07-09 00:50:18 UTC (rev 90970)
+++ projects/logging-service-metadata/trunk/src/main/resources/META-INF/schema/jboss-logging_6_0.xsd 2009-07-09 01:26:22 UTC (rev 90971)
@@ -23,10 +23,7 @@
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:bd="urn:jboss:bean-deployer:2.0"
- xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
- jaxb:version="2.0"
targetNamespace="urn:jboss:logging:6.0"
xmlns="urn:jboss:logging:6.0"
elementFormDefault="qualified"
@@ -52,12 +49,10 @@
<!-- loggers -->
<xs:element name="logger" type="loggerType"/>
<xs:element name="root-logger" type="rootLoggerType"/>
- <!-- formatters -->
- <xs:element name="formatter" type="formatterType"/>
<!-- install-handlers -->
<xs:element name="install-handler" type="installHandlerType"/>
</xs:choice>
- <xs:attribute name="context" type="xs:string" use="optional"/>
+ <xs:attribute name="context" type="xs:string" use="optional" default="system"/>
</xs:complexType>
<xs:complexType name="refType">
More information about the jboss-cvs-commits
mailing list