[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