I’d prefer the better name. The documentation should make it clear that it 
isn’t available in Android. Assuming that because it has JMX in the name 
everyone will understand that is probably not the best way to do it.

Ralph


On Aug 20, 2014, at 4:03 PM, Gary Gregory <[email protected]> wrote:

> The only reason I had "jmx" in there is as a heads up to Android developers 
> since JMX is not available on Android.
> 
> Our options:
> 
> - Take it out
> - Give it a better name: “jvmrun” or “jvmrunargs”
> 
> Thoughts?
> 
> Gary
> 
> 
> 
> On Wed, Aug 20, 2014 at 6:59 PM, Ralph Goers <[email protected]> 
> wrote:
> Why does the JMX part matter?  All the user probably cares about is that they 
> can get JVM input arguments”.
> 
> It specifically doesn’t get the application parameters and the -D arguments 
> can be obtained as system properties, so I’m not sure how much other useful 
> stuff will be there.
> 
> I would go with “jvmrun” or “jvmrunargs” as the name.
> 
> Ralph
> 
> On Aug 20, 2014, at 2:32 PM, Gary Gregory <[email protected]> wrote:
> 
> > I was looking for a name that says "I lookup JVM input arguments through 
> > JMX". I'd love to have a better name!
> >
> > Gary
> >
> >
> > -------- Original message --------
> > From: Ralph Goers
> > Date:08/20/2014 16:04 (GMT-05:00)
> > To: [email protected]
> > Subject: Re: svn commit: r1619026 - in /logging/log4j/log4j2/trunk: 
> > log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ 
> > log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/ src/changes/ 
> > src/site/xdoc/manual/
> >
> > Why is the lookup that returns JVM arguments named jmx-input?  That just 
> > seems strange.
> >
> > Ralph
> >
> > On Aug 19, 2014, at 8:19 PM, [email protected] wrote:
> >
> > > Author: ggregory
> > > Date: Wed Aug 20 03:19:09 2014
> > > New Revision: 1619026
> > >
> > > URL: http://svn.apache.org/r1619026
> > > Log:
> > > [LOG4J2-771] Add lookup for application main arguments.
> > > [LOG4J2-787] Add lookup for JVM arguments.
> > >
> > > Added:
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > >    (with props)
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > >    (with props)
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > >    (with props)
> > > Modified:
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
> > >    
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
> > >    logging/log4j/log4j2/trunk/src/changes/changes.xml
> > >    logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm
> > >    logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml
> > >
> > > Modified: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
> > >  (original)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -27,7 +27,7 @@ import org.apache.logging.log4j.core.uti
> > > import org.apache.logging.log4j.status.StatusLogger;
> > >
> > > /**
> > > - * Proxies all the other StrLookups.
> > > + * Proxies all the other {@link StrLookup}s.
> > >  */
> > > public class Interpolator implements StrLookup {
> > >
> > > @@ -72,6 +72,8 @@ public class Interpolator implements Str
> > >         // TODO: this ought to use the PluginManager
> > >         lookups.put("sys", new SystemPropertiesLookup());
> > >         lookups.put("env", new EnvironmentLookup());
> > > +        lookups.put("main", MapLookup.MAIN_SINGLETON);
> > > +        // JNDI
> > >         try {
> > >             // [LOG4J2-703] We might be on Android
> > >             lookups.put("jndi",
> > > @@ -82,6 +84,17 @@ public class Interpolator implements Str
> > >                     "JNDI lookup class is not available because this JRE 
> > > does not support JNDI. JNDI string lookups will not be available, 
> > > continuing configuration.",
> > >                     e);
> > >         }
> > > +        // JMX input args
> > > +        try {
> > > +            // We might be on Android
> > > +            lookups.put("jmx-input",
> > > +                
> > > Loader.newCheckedInstanceOf("org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup",
> > >  StrLookup.class));
> > > +        } catch (Throwable e) {
> > > +            // java.lang.VerifyError: 
> > > org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup
> > > +            LOGGER.warn(
> > > +                    "JMX runtime input lookup class is not available 
> > > because this JRE does not support JMX. JMX lookups will not be available, 
> > > continuing configuration.",
> > > +                    e);
> > > +        }
> > >         lookups.put("date", new DateLookup());
> > >         lookups.put("ctx", new ContextMapLookup());
> > >         if (Loader.isClassAvailable("javax.servlet.ServletContext")) {
> > >
> > > Added: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java?rev=1619026&view=auto
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > >  (added)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -0,0 +1,29 @@
> > > +package org.apache.logging.log4j.core.lookup;
> > > +
> > > +import java.lang.management.ManagementFactory;
> > > +import java.util.List;
> > > +import java.util.Map;
> > > +
> > > +import org.apache.logging.log4j.core.config.plugins.Plugin;
> > > +
> > > +/**
> > > + * Maps JVM input arguments (but not main arguments) using JMX to 
> > > acquire JVM arguments.
> > > + *
> > > + * @see java.lang.management.RuntimeMXBean#getInputArguments()
> > > + * @since 2.1
> > > + */
> > > +@Plugin(name = "jmx-input", category = "Lookup")
> > > +public class JmxRuntimeInputArgumentsLookup extends MapLookup {
> > > +
> > > +    static {
> > > +        List<String> argsList = 
> > > ManagementFactory.getRuntimeMXBean().getInputArguments();
> > > +        JMX_SINGLETON = new 
> > > JmxRuntimeInputArgumentsLookup(MapLookup.toMap(argsList));
> > > +    }
> > > +
> > > +    public static final JmxRuntimeInputArgumentsLookup JMX_SINGLETON;
> > > +
> > > +    public JmxRuntimeInputArgumentsLookup(Map<String, String> map) {
> > > +        super(map);
> > > +    }
> > > +
> > > +}
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > > ------------------------------------------------------------------------------
> > >    svn:eol-style = native
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JmxRuntimeInputArgumentsLookup.java
> > > ------------------------------------------------------------------------------
> > >    svn:keywords = Id
> > >
> > > Modified: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
> > >  (original)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -16,6 +16,8 @@
> > >  */
> > > package org.apache.logging.log4j.core.lookup;
> > >
> > > +import java.util.HashMap;
> > > +import java.util.List;
> > > import java.util.Map;
> > >
> > > import org.apache.logging.log4j.core.LogEvent;
> > > @@ -23,25 +25,82 @@ import org.apache.logging.log4j.core.con
> > > import org.apache.logging.log4j.message.MapMessage;
> > >
> > > /**
> > > - * The basis for a lookup based on a Map.
> > > + * A map-based lookup.
> > >  */
> > > @Plugin(name = "map", category = "Lookup")
> > > public class MapLookup implements StrLookup {
> > > -
> > > +
> > >     /**
> > > -     * Map keys are variable names and value.
> > > +     * A singleton used by a main method to save its arguments.
> > >      */
> > > -    private final Map<String, String> map;
> > > +    static final MapLookup MAIN_SINGLETON = new MapLookup(newMap(0));
> > > +
> > > +    static Map<String, String> initMap(final String[] srcArgs, final 
> > > Map<String, String> destMap) {
> > > +        for (int i = 0; i < srcArgs.length; i++) {
> > > +            final int next = i + 1;
> > > +            final String value = srcArgs[i];
> > > +            destMap.put(Integer.toString(i), value);
> > > +            destMap.put(value, next < srcArgs.length ? srcArgs[next] : 
> > > null);
> > > +        }
> > > +        return destMap;
> > > +    }
> > > +
> > > +    private static HashMap<String, String> newMap(final int 
> > > initialCapacity) {
> > > +        return new HashMap<String, String>(initialCapacity);
> > > +    }
> > >
> > >     /**
> > > -     * Creates a new instance backed by a Map. Used by the default 
> > > lookup.
> > > -     *
> > > -     * @param map the map of keys to values, may be null
> > > +     * An application's {@code public static main(String[])} method 
> > > calls this method to make its main arguments
> > > +     * available for lookup with the prefix {@code main}.
> > > +     * <p>
> > > +     * The map provides two kinds of access: First by index, starting at 
> > > {@code "0"}, {@code "1"} and so on. For
> > > +     * example, the command line {@code --file path/file.txt -x 2} can 
> > > be accessed from a configuration file with:
> > > +     * </p>
> > > +     * <ul>
> > > +     * <li>{@code "main:0"} = {@code "--file"}</li>
> > > +     * <li>{@code "main:1"} = {@code "path/file.txt"}</li>
> > > +     * <li>{@code "main:2"} = {@code "-x"}</li>
> > > +     * <li>{@code "main:3"} = {@code "2"}</li>
> > > +     * </ul>
> > > +     * <p>
> > > +     * Second using the argument at position n as the key to access the 
> > > value at n+1.
> > > +     * </p>
> > > +     * <ul>
> > > +     * <li>{@code "main:--file"} = {@code "path/file.txt"}</li>
> > > +     * <li>{@code "main:-x"} = {@code "2"}</li>
> > > +     * </ul>
> > > +     *
> > > +     * @param args
> > > +     *        An application's {@code public static main(String[])} 
> > > arguments.
> > > +     * @since 2.1
> > >      */
> > > -    public MapLookup(final Map<String, String> map) {
> > > -        this.map = map;
> > > +    public static void setMainArguments(final String[] args) {
> > > +        if (args == null) {
> > > +            return;
> > > +        }
> > > +        initMap(args, MAIN_SINGLETON.map);
> > > +    }
> > > +
> > > +    static Map<String, String> toMap(final List<String> args) {
> > > +        if (args == null) {
> > > +            return null;
> > > +        }
> > > +        final int size = args.size();
> > > +        return initMap(args.toArray(new String[size]), newMap(size));
> > >     }
> > >
> > > +    static Map<String, String> toMap(final String[] args) {
> > > +        if (args == null) {
> > > +            return null;
> > > +        }
> > > +        return initMap(args, newMap(args.length));
> > > +    }
> > > +
> > > +    /**
> > > +     * Map keys are variable names and value.
> > > +     */
> > > +    private final Map<String, String> map;
> > > +
> > >     /**
> > >      * Constructor when used directly as a plugin.
> > >      */
> > > @@ -50,21 +109,13 @@ public class MapLookup implements StrLoo
> > >     }
> > >
> > >     /**
> > > -     * Looks up a String key to a String value using the map.
> > > -     * <p>
> > > -     * If the map is null, then null is returned.
> > > -     * The map result object is converted to a string using toString().
> > > -     * </p>
> > > +     * Creates a new instance backed by a Map. Used by the default 
> > > lookup.
> > >      *
> > > -     * @param key the key to be looked up, may be null
> > > -     * @return the matching value, null if no match
> > > +     * @param map
> > > +     *        the map of keys to values, may be null
> > >      */
> > > -    @Override
> > > -    public String lookup(final String key) {
> > > -        if (map == null) {
> > > -            return null;
> > > -        }
> > > -        return map.get(key);
> > > +    public MapLookup(final Map<String, String> map) {
> > > +        this.map = map;
> > >     }
> > >
> > >     @Override
> > > @@ -83,4 +134,23 @@ public class MapLookup implements StrLoo
> > >         }
> > >         return null;
> > >     }
> > > +
> > > +    /**
> > > +     * Looks up a String key to a String value using the map.
> > > +     * <p>
> > > +     * If the map is null, then null is returned. The map result object 
> > > is converted to a string using toString().
> > > +     * </p>
> > > +     *
> > > +     * @param key
> > > +     *        the key to be looked up, may be null
> > > +     * @return the matching value, null if no match
> > > +     */
> > > +    @Override
> > > +    public String lookup(final String key) {
> > > +        if (map == null) {
> > > +            return null;
> > > +        }
> > > +        return map.get(key);
> > > +    }
> > > +
> > > }
> > >
> > > Added: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java?rev=1619026&view=auto
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > >  (added)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -0,0 +1,57 @@
> > > +/*
> > > + * 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.lookup;
> > > +
> > > +import static org.junit.Assert.assertEquals;
> > > +
> > > +import org.junit.Test;
> > > +
> > > +/**
> > > + * Tests {@link JmxRuntimeInputArgumentsLookup} from the command line, 
> > > not a JUnit test.
> > > + *
> > > + * From an IDE or CLI: --file foo.txt
> > > + *
> > > + * @since 2.1
> > > + */
> > > +public class MainInputArgumentsJmxLookupTest {
> > > +
> > > +    public static void main(String[] args) {
> > > +        new MainInputArgumentsJmxLookupTest().callFromMain();
> > > +    }
> > > +
> > > +    @Test
> > > +    public void testMap() {
> > > +        JmxRuntimeInputArgumentsLookup lookup = 
> > > JmxRuntimeInputArgumentsLookup.JMX_SINGLETON;
> > > +        assertEquals(null, lookup.lookup(null));
> > > +        assertEquals(null, lookup.lookup("X"));
> > > +        assertEquals(null, lookup.lookup("foo.txt"));
> > > +    }
> > > +
> > > +    public void callFromMain() {
> > > +        JmxRuntimeInputArgumentsLookup lookup = 
> > > JmxRuntimeInputArgumentsLookup.JMX_SINGLETON;
> > > +        assertEquals(null, lookup.lookup(null));
> > > +        assertEquals(null, lookup.lookup("X"));
> > > +        // Eclipse adds -Dfile.encoding=Cp1252
> > > +        // assertEquals("--file", lookup.lookup("0"));
> > > +        // assertEquals("foo.txt", lookup.lookup("1"));
> > > +        //
> > > +        // JMX does not include the main arguments.
> > > +        // assertEquals("foo.txt", lookup.lookup("--file"));
> > > +        // assertEquals(null, lookup.lookup("foo.txt"));
> > > +    }
> > > +
> > > +}
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > > ------------------------------------------------------------------------------
> > >    svn:eol-style = native
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsJmxLookupTest.java
> > > ------------------------------------------------------------------------------
> > >    svn:keywords = Id
> > >
> > > Added: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java?rev=1619026&view=auto
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > >  (added)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -0,0 +1,41 @@
> > > +package org.apache.logging.log4j.core.lookup;
> > > +
> > > +import java.util.Map;
> > > +
> > > +/**
> > > + * Work in progress, saved for future experimentation.
> > > + *
> > > + * TODO The goal is to use the Sun debugger API to find the main arg 
> > > values on the stack.
> > > + */
> > > +public class MainInputArgumentsMapLookup extends MapLookup {
> > > +
> > > +    public static final MainInputArgumentsMapLookup SINGLETON_STACK;
> > > +
> > > +    static {
> > > +        Map<Thread, StackTraceElement[]> allStackTraces = 
> > > Thread.getAllStackTraces();
> > > +        String[] args = null;
> > > +        for (Map.Entry<Thread, StackTraceElement[]> entry : 
> > > allStackTraces.entrySet()) {
> > > +            StackTraceElement[] stackTraceElements = entry.getValue();
> > > +            Thread thread = entry.getKey();
> > > +            // Can't use the thread name to look for "main" since anyone 
> > > can set it.
> > > +            // Can't use thread ID since it can be any positive value, 
> > > and is likely vender dependent. Oracle seems to
> > > +            // use 1.
> > > +            // We are left to look for "main" at the top of the stack
> > > +            if (stackTraceElements != null) {
> > > +                final int frame0 = stackTraceElements.length - 1;
> > > +                if 
> > > ("main".equals(stackTraceElements[frame0].getMethodName())) {
> > > +                    // We could further validate the main is a public 
> > > static void method that takes a String[], if not,
> > > +                    // look at the other threads.
> > > +                    //
> > > +                    // How do we get the main args from the stack with 
> > > the debug API?
> > > +                    // Must we be started in debug mode? Seems like it.
> > > +                }
> > > +            }
> > > +        }
> > > +        SINGLETON_STACK = new 
> > > MainInputArgumentsMapLookup(MapLookup.toMap(args));
> > > +    }
> > > +
> > > +    public MainInputArgumentsMapLookup(Map<String, String> map) {
> > > +        super(map);
> > > +    }
> > > +}
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > > ------------------------------------------------------------------------------
> > >    svn:eol-style = native
> > >
> > > Propchange: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MainInputArgumentsMapLookup.java
> > > ------------------------------------------------------------------------------
> > >    svn:keywords = Id
> > >
> > > Modified: 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
> > >  (original)
> > > +++ 
> > > logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
> > >  Wed Aug 20 03:19:09 2014
> > > @@ -49,4 +49,19 @@ public class MapLookupTest {
> > >         assertEquals(null, lookup.lookup(null));
> > >         assertEquals(null, lookup.lookup("X"));
> > >     }
> > > +
> > > +    @Test
> > > +    public void testMainMap() {
> > > +        MapLookup.setMainArguments(new String[] {
> > > +                "--file",
> > > +                "foo.txt" });
> > > +        MapLookup lookup = MapLookup.MAIN_SINGLETON;
> > > +        assertEquals(null, lookup.lookup(null));
> > > +        assertEquals(null, lookup.lookup("X"));
> > > +        assertEquals("--file", lookup.lookup("0"));
> > > +        assertEquals("foo.txt", lookup.lookup("1"));
> > > +        assertEquals("foo.txt", lookup.lookup("--file"));
> > > +        assertEquals(null, lookup.lookup("foo.txt"));
> > > +    }
> > > +
> > > }
> > >
> > > Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
> > > +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Aug 20 
> > > 03:19:09 2014
> > > @@ -21,10 +21,16 @@
> > >     <title>Changes</title>
> > >   </properties>
> > >   <body>
> > > -    <release version="2.?.?" date="2014-??-??" description="Bug fixes 
> > > and enhancements">
> > > +    <release version="2.?.?" date="2014-??-??" description="Bug fixes 
> > > and enhancements">
> > >       <action issue="LOG4J2-783" dev="rpopma" type="fix" due-to="Minglei 
> > > Lee">
> > >         PatternLayout should use platform character encoding by default, 
> > > not UTF-8.
> > >       </action>
> > > +      <action issue="LOG4J2-771" dev="ggregory" type="add">
> > > +        Add lookup for application main arguments.
> > > +      </action>
> > > +      <action issue="LOG4J2-787" dev="ggregory" type="add">
> > > +        Add lookup for JVM arguments.
> > > +      </action>
> > >     </release>
> > >     <release version="2.0.2" date="2014-08-16" description="Bug fixes and 
> > > enhancements">
> > >       <action issue="LOG4J2-775" dev="ggregory" type="update">
> > >
> > > Modified: 
> > > logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm 
> > > (original)
> > > +++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/configuration.xml.vm 
> > > Wed Aug 20 03:19:09 2014
> > > @@ -869,6 +869,14 @@ public class Bar {
> > >                 <td>System environment variables</td>
> > >               </tr>
> > >               <tr>
> > > +                <td>jmx-input</td>
> > > +                <td>A JVM input argument accessed through JMX, but not a 
> > > main argument; see <a 
> > > href="http://docs.oracle.com/javase/8/docs/api/java/lang/management/RuntimeMXBean.html#getInputArguments--";>RuntimeMXBean.html#getInputArguments()</a></td>
> > > +              </tr>
> > > +              <tr>
> > > +                <td>main</td>
> > > +                <td>A value set with <a 
> > > href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/MapLookup.html#setMainArguments%28java.lang.String[]%29">MapLookup.setMainArguments(String[])</a></td>
> > > +              </tr>
> > > +              <tr>
> > >                 <td>map</td>
> > >                 <td>A value from a MapMessage</td>
> > >               </tr>
> > >
> > > Modified: logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml
> > > URL: 
> > > http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml?rev=1619026&r1=1619025&r2=1619026&view=diff
> > > ==============================================================================
> > > --- logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml (original)
> > > +++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/lookups.xml Wed Aug 
> > > 20 03:19:09 2014
> > > @@ -98,11 +98,12 @@
> > >         <subsection name="MapLookup">
> > >           <a name="MapLookup"/>
> > >           <p>
> > > -            The MapLookup serves two purposes.
> > > +            The MapLookup serves several purposes.
> > >           </p>
> > >             <ol>
> > >               <li>Provide the base for Properties declared in the 
> > > configuration file.</li>
> > >               <li>Retrieve values from MapMessages in LogEvents.</li>
> > > +              <li>Retrieve values set with <a 
> > > href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/MapLookup.html#setMainArguments%28java.lang.String[]%29">MapLookup.setMainArguments(String[])</a></li>
> > >             </ol>
> > >           <p>
> > >             The first item simply means that the MapLookup is used to 
> > > substitute properties that are defined
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> 
> 
> -- 
> E-Mail: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

Reply via email to