Return-Path: Delivered-To: apmail-jakarta-log4j-dev-archive@apache.org Received: (qmail 8775 invoked from network); 13 May 2003 22:32:52 -0000 Received: from exchange.sun.com (192.18.33.10) by daedalus.apache.org with SMTP; 13 May 2003 22:32:52 -0000 Received: (qmail 25984 invoked by uid 97); 13 May 2003 22:35:02 -0000 Delivered-To: qmlist-jakarta-archive-log4j-dev@nagoya.betaversion.org Received: (qmail 25977 invoked from network); 13 May 2003 22:35:02 -0000 Received: from daedalus.apache.org (HELO apache.org) (208.185.179.12) by nagoya.betaversion.org with SMTP; 13 May 2003 22:35:02 -0000 Received: (qmail 8595 invoked by uid 500); 13 May 2003 22:32:50 -0000 Mailing-List: contact log4j-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Log4J Developers List" Reply-To: "Log4J Developers List" Delivered-To: mailing list log4j-dev@jakarta.apache.org Received: (qmail 8584 invoked by uid 500); 13 May 2003 22:32:50 -0000 Received: (qmail 8581 invoked from network); 13 May 2003 22:32:50 -0000 Received: from icarus.apache.org (208.185.179.13) by daedalus.apache.org with SMTP; 13 May 2003 22:32:50 -0000 Received: (qmail 18672 invoked by uid 1208); 13 May 2003 22:32:49 -0000 Date: 13 May 2003 22:32:49 -0000 Message-ID: <20030513223249.18671.qmail@icarus.apache.org> From: ceki@apache.org To: jakarta-log4j-cvs@apache.org Subject: cvs commit: jakarta-log4j/tests/src/java/org/apache/log4j/rolling/helpers FileNamePatternParserTestCase.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ceki 2003/05/13 15:32:49 Modified: src/java/org/apache/log4j/rolling SlidingWindowRollingPolicy.java Added: src/java/org/apache/log4j/rolling/helpers IdentityTokenConverter.java TokenConverter.java FileNamePatternParser.java IntegerTokenConverter.java tests/src/java/org/apache/log4j/rolling/helpers FileNamePatternParserTestCase.java Log: Work in progress on rolling Revision Changes Path 1.1 jakarta-log4j/src/java/org/apache/log4j/rolling/helpers/IdentityTokenConverter.java Index: IdentityTokenConverter.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see . * */ package org.apache.log4j.rolling.helpers; /** * @author Ceki * */ public class IdentityTokenConverter extends TokenConverter { final String str; public IdentityTokenConverter(String str) { super(TokenConverter.IDENTITY); this.str = str; } public String convert() { return str; } } 1.1 jakarta-log4j/src/java/org/apache/log4j/rolling/helpers/TokenConverter.java Index: TokenConverter.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see . * */ package org.apache.log4j.rolling.helpers; /** * * The TokenConverter offer some basic functionality for more specific token converters. * It basically sets up the chained architecture. * * @author Ceki * */ public class TokenConverter { /** * @author Ceki * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ protected class IndentityTokenConverter { } static final int IDENTITY = 0; static final int INTEGER = 1; static final int DATE = 1; int type; TokenConverter next; TokenConverter(int t) { type = t; } public TokenConverter getNext() { return next; } public void setNext(TokenConverter next) { this.next = next; } public int getType() { return type; } public void setType(int i) { type = i; } } 1.1 jakarta-log4j/src/java/org/apache/log4j/rolling/helpers/FileNamePatternParser.java Index: FileNamePatternParser.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see . * */ package org.apache.log4j.rolling.helpers; import org.apache.log4j.Logger; /** * * This class helps parse file name patterns. Given a number or a date it returns * a file name according to the file name pattern. * * This class is not intended to be used directly but sub-classed or wrapped. * * @author Ceki Gülcü * */ class FileNamePatternParser { static Logger logger = Logger.getLogger(FileNamePatternParser.class); String pattern; TokenConverter headTokenConverter; protected FileNamePatternParser(String pattern) { if (pattern == null) { throw new IllegalArgumentException( "The argument to constrcutor cannot be null. "); } this.pattern = pattern; parse(); } void parse() { int lastIndex = 0; TokenConverter tc = null; int len = pattern.length(); while (true) { int i = pattern.indexOf('%', lastIndex); if (i == -1) { String remainingStr = pattern.substring(lastIndex); System.out.println("adding the identity token"); addTokenConverter(tc, new IdentityTokenConverter(remainingStr)); break; } else { // test for degenerate case where the '%' character is at the end. if (i == (len - 1)) { String remainingStr = pattern.substring(lastIndex); addTokenConverter(tc, new IdentityTokenConverter(remainingStr)); break; } System.out.println("2adding the identity token"); tc = addTokenConverter( tc, new IdentityTokenConverter(pattern.substring(lastIndex, i))); // At this stage, we can suppose that i < len -1 char nextChar = pattern.charAt(i + 1); switch (nextChar) { case 'i': tc = addTokenConverter(tc, new IntegerTokenConverter()); lastIndex = i + 2; break; // break from switch statement case '%': tc = addTokenConverter(tc, new IdentityTokenConverter("%")); lastIndex = i + 2; break; default: throw new IllegalArgumentException( "The pattern[" + pattern + "] does not contain a valid specifer at position " + (i + 1)); } } } } TokenConverter addTokenConverter( TokenConverter tc, TokenConverter newTokenConverter) { if (tc == null) { tc = headTokenConverter = newTokenConverter; } else { tc.next = newTokenConverter; tc = newTokenConverter; } return tc; } protected String convert(int i) { TokenConverter p = headTokenConverter; StringBuffer buf = new StringBuffer(); while (p != null) { switch (p.getType()) { case TokenConverter.IDENTITY: buf.append(((IdentityTokenConverter) p).convert()); break; case TokenConverter.INTEGER: buf.append(((IntegerTokenConverter) p).convert(i)); break; default: logger.error( "Encountered an unknown TokenConverter type for pattern [" + pattern + "]."); } p = p.getNext(); } return buf.toString(); } } 1.1 jakarta-log4j/src/java/org/apache/log4j/rolling/helpers/IntegerTokenConverter.java Index: IntegerTokenConverter.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see . * */ package org.apache.log4j.rolling.helpers; /** * @author Ceki * */ class IntegerTokenConverter extends TokenConverter { public IntegerTokenConverter() { super(TokenConverter.INTEGER); } public String convert(int i) { return Integer.toString(i); } } 1.3 +8 -0 jakarta-log4j/src/java/org/apache/log4j/rolling/SlidingWindowRollingPolicy.java Index: SlidingWindowRollingPolicy.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/rolling/SlidingWindowRollingPolicy.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SlidingWindowRollingPolicy.java 5 May 2003 20:42:57 -0000 1.2 +++ SlidingWindowRollingPolicy.java 13 May 2003 22:32:49 -0000 1.3 @@ -119,6 +119,10 @@ return activeFileName; } + public String getFileNamePattern() { + return fileNamePattern; + } + public int getMaxIndex() { return maxIndex; @@ -126,6 +130,10 @@ public int getMinIndex() { return minIndex; + } + + public void setFileNamePattern(String fnp) { + fileNamePattern = fnp; } public void setMaxIndex(int maxIndex) { 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/rolling/helpers/FileNamePatternParserTestCase.java Index: FileNamePatternParserTestCase.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see . * */ package org.apache.log4j.rolling.helpers; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * @author Ceki * */ public class FileNamePatternParserTestCase extends TestCase { /** * Constructor for FileNamePatternParserTestCase. * @param arg0 */ public FileNamePatternParserTestCase(String arg0) { super(arg0); } public void test1() { //System.out.println("Testing [t]"); FileNamePatternParser pp = new FileNamePatternParser("t"); assertEquals("t", pp.convert(3)); //System.out.println("Testing [foo]"); pp = new FileNamePatternParser("foo"); assertEquals("foo", pp.convert(3)); //System.out.println("Testing [foo%]"); pp = new FileNamePatternParser("foo%"); assertEquals("foo%", pp.convert(3)); pp = new FileNamePatternParser("%ifoo"); assertEquals("3foo", pp.convert(3)); pp = new FileNamePatternParser("foo%ixixo"); assertEquals("foo3xixo", pp.convert(3)); pp = new FileNamePatternParser("foo%i.log"); assertEquals("foo3.log", pp.convert(3)); pp = new FileNamePatternParser("foo.%i.log"); assertEquals("foo.3.log", pp.convert(3)); pp = new FileNamePatternParser("%ifoo%"); assertEquals("3foo%", pp.convert(3)); pp = new FileNamePatternParser("%ifoo%%"); assertEquals("3foo%", pp.convert(3)); pp = new FileNamePatternParser("%%foo"); assertEquals("%foo", pp.convert(3)); } public void test2() { System.out.println("Testing [foo%ibar%i]"); FileNamePatternParser pp = new FileNamePatternParser("foo%ibar%i"); assertEquals("foo3bar3", pp.convert(3)); ///pp = new FileNamePatternParser("%%foo"); //assertEquals("%foo", pp.convert(3)); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new FileNamePatternParserTestCase("test1")); suite.addTest(new FileNamePatternParserTestCase("test2")); return suite; } } --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: log4j-dev-help@jakarta.apache.org