Author: jncharpin
Date: Fri Jul 20 17:53:32 2007
New Revision: 857
Added:
slf4j/trunk/slf4j-converter/src/test/java/org/slf4j/converter/JCLMatcherTest.java
Modified:
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/AbstractMatcher.java
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/JCLMatcher.java
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/Writer.java
Log:
adding test for JCLConversion
new parameter to convert or not commented code
on going work to allow conversion of multiple instructions on the same line
Modified:
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/AbstractMatcher.java
==============================================================================
---
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/AbstractMatcher.java
(original)
+++
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/AbstractMatcher.java
Fri Jul 20 17:53:32 2007
@@ -15,63 +15,108 @@
protected Writer writer;
+ protected boolean commentConversion = true;
+
+ protected boolean blockComment = false;
+
+ private final static String LINE_COMMENT = "//";
+
+ private final static String BLOCK_COMMENT_START = "/*";
+
+ private final static String BLOCK_COMMENT_END = "*/";
+
public AbstractMatcher() {
}
public static AbstractMatcher getMatcherImpl() {
- // TODO criterias
+ // TODO criterias to select concrete matcher impl. and
comentConversion mode
return new JCLMatcher();
}
public void setWriter(Writer writer) {
this.writer = writer;
}
+
+ public Writer getWriter(){
+ return writer;
+ }
+
+ public void setCommentConversion(boolean commentConversion){
+ this.commentConversion = commentConversion;
+ }
+ /**
+ *
+ * @param text
+ */
public void matches(String text) {
- PatternWrapper patternWrapper;
- Pattern pattern;
- Matcher matcher;
- String replacementText;
- ReplacementWrapper replacementWrapper;
- Iterator rulesIter = rulesMap.keySet().iterator();
- boolean found = false;
- while (rulesIter.hasNext()) {
- patternWrapper = (PatternWrapper) rulesIter.next();
- pattern = patternWrapper.getPattern();
- matcher = pattern.matcher(text);
- if (matcher.matches()) {
- logger.info("match " + text);
- replacementWrapper =
rulesMap.get(patternWrapper);
- StringBuffer replacementBuffer = new
StringBuffer();
- for (int group = 0; group <=
matcher.groupCount(); group++) {
- replacementText =
replacementWrapper.getReplacement(group);
- if (replacementText != null) {
- logger.info("replacing group "
+ group + " : "
- +
matcher.group(group) + " with "
- +
replacementText);
-
replacementBuffer.append(replacementText);
- } else if (group > 0) {
- logger.info("conserving group "
+ group + " : "
- +
matcher.group(group));
-
replacementBuffer.append(matcher.group(group));
+ if (isTextConvertible(text)) {
+ PatternWrapper patternWrapper;
+ Pattern pattern;
+ Matcher matcher;
+ String replacementText;
+ ReplacementWrapper replacementWrapper;
+ Iterator rulesIter = rulesMap.keySet().iterator();
+ boolean found = false;
+ while (rulesIter.hasNext()) {
+ patternWrapper = (PatternWrapper)
rulesIter.next();
+ pattern = patternWrapper.getPattern();
+ matcher = pattern.matcher(text);
+ if (matcher.matches()) {
+ logger.info("matching " + text);
+ replacementWrapper =
rulesMap.get(patternWrapper);
+ StringBuffer replacementBuffer = new
StringBuffer();
+ for (int group = 0; group <=
matcher.groupCount(); group++) {
+ replacementText =
replacementWrapper.getReplacement(group);
+ if (replacementText != null) {
+ logger.info("replacing
group " + group + " : "
+ +
matcher.group(group) + " with "
+ +
replacementText);
+
replacementBuffer.append(replacementText);
+ } else if (group > 0) {
+
logger.info("conserving group " + group + " : "
+ +
matcher.group(group));
+
replacementBuffer.append(matcher.group(group));
+ }
}
+ writer.rewrite(matcher,
replacementBuffer.toString());
+ found = true;
+ break;
}
- writer.rewrite(matcher,
replacementBuffer.toString());
- found = true;
- break;
}
- // else if (matcher.find()) {
- // logger.info("found " + text + " pattern " +
pattern.toString());
- // replacement = (String) rulesMap.get(patternWrapper);
- // writer.rewrite(matcher, replacement);
- // found = true;
- // break;
- // }
- }
- if (!found) {
+ if (!found) {
+ writer.write(text);
+ }
+ } else {
writer.write(text);
}
}
+
+
+ /**
+ *
+ * @param text
+ * @return
+ */
+ private boolean isTextConvertible(String text) {
+ boolean isConvertible = true;
+ if (text.trim().length() == 0) {
+ isConvertible = false;
+ } else if (commentConversion) {
+ isConvertible = true;
+ } else if (blockComment || text.startsWith(LINE_COMMENT)) {
+ isConvertible = false;
+ }
+ else if (text.startsWith(BLOCK_COMMENT_START)) {
+ blockComment = true;
+ isConvertible = false;
+ }
+ if (text.endsWith(BLOCK_COMMENT_END)) {
+ blockComment = false;
+ }
+ return isConvertible;
+ }
+
protected abstract void initRules();
}
Modified:
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/JCLMatcher.java
==============================================================================
---
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/JCLMatcher.java
(original)
+++
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/JCLMatcher.java
Fri Jul 20 17:53:32 2007
@@ -7,40 +7,38 @@
public class JCLMatcher extends AbstractMatcher {
- private static PatternWrapper p0 = new
PatternWrapper("0",Pattern.compile("import\\s*+org.apache.commons.logging.LogFactory;"));
- private static PatternWrapper p1 = new
PatternWrapper("1",Pattern.compile("import\\s*+org.apache.commons.logging.Log;"));
- private static PatternWrapper p2 = new
PatternWrapper("2",Pattern.compile("(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)"));
- private static PatternWrapper p3 = new
PatternWrapper("3",Pattern.compile("(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)"));
- private static PatternWrapper p4 = new
PatternWrapper("4",Pattern.compile("(\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)"));
- private static PatternWrapper p5 = new
PatternWrapper("5",Pattern.compile("(\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)"));
- private static PatternWrapper p6 = new
PatternWrapper("6",Pattern.compile("(Log)(\\s+(\\w+)\\s*;)"));
-// private static PatternWrapper p8 = new
PatternWrapper("8",Pattern.compile("fatal\\("));
-// private static PatternWrapper p9 = new
PatternWrapper("9",Pattern.compile("isFatalEnabled\\("));
-
- private static ReplacementWrapper r0 = new ReplacementWrapper("0","import
org.slf4j.LoggerFactory;");
- private static ReplacementWrapper r1 = new ReplacementWrapper("0","import
org.slf4j.Logger;");
- private static ReplacementWrapper r2 = new ReplacementWrapper("1","Logger");
- static{
- r2.addReplacement("3", "LoggerFactory.getLogger(");
- }
- private static ReplacementWrapper r3 = new
ReplacementWrapper("2","LoggerFactory.getLogger(");
- private static ReplacementWrapper r4 = new ReplacementWrapper("1",
"Logger");
-
-
- public JCLMatcher() {
- super();
- logger = LoggerFactory.getLogger(JCLMatcher.class);
- initRules();
- }
+ public JCLMatcher() {
+ super();
+ logger = LoggerFactory.getLogger(JCLMatcher.class);
+ initRules();
+ }
- protected void initRules() {
- rulesMap = new TreeMap<PatternWrapper, ReplacementWrapper>();
- rulesMap.put(p0,r0);
- rulesMap.put(p1,r1);
- rulesMap.put(p2,r2);
- rulesMap.put(p3,r2);
- rulesMap.put(p4,r3);
- rulesMap.put(p5,r3);
- rulesMap.put(p6,r4);
- }
+ protected void initRules() {
+ PatternWrapper p0 = new PatternWrapper("0",
Pattern.compile("import\\s*+org.apache.commons.logging.LogFactory;"));
+ PatternWrapper p1 = new PatternWrapper("1",
Pattern.compile("import\\s*+org.apache.commons.logging.Log;"));
+ PatternWrapper p2 = new
PatternWrapper("2",Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
+ PatternWrapper p3 = new
PatternWrapper("3",Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s+\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
+ PatternWrapper p4 = new
PatternWrapper("4",Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(\\w+\\s*+=\\s*+)(LogFactory.getFactory\\(\\).getInstance\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
+ PatternWrapper p5 = new
PatternWrapper("5",Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(\\w+\\s*+=\\s*+)(LogFactory.getLog\\()(\\w+)(.class\\);)((\\w*+\\W*+\\.*)*;*+)"));
+ PatternWrapper p6 = new
PatternWrapper("6",Pattern.compile("((\\w*+\\W*+\\.*)*;*+)(Log)(\\s*+\\w+\\s*+;)((\\w*+\\W*+\\.*)*;*+)"));
+
+ ReplacementWrapper r0 = new ReplacementWrapper("0","import
org.slf4j.LoggerFactory;");
+ ReplacementWrapper r1 = new ReplacementWrapper("0","import
org.slf4j.Logger;");
+ ReplacementWrapper r2 = new ReplacementWrapper("3", "Logger");
+ r2.addReplacement("2", "");
+ r2.addReplacement("5", "LoggerFactory.getLogger(");
+ ReplacementWrapper r3 = new
ReplacementWrapper("4","LoggerFactory.getLogger(");
+ r3.addReplacement("2", "");
+ ReplacementWrapper r4 = new ReplacementWrapper("3", "Logger");
+ r4.addReplacement("2", "");
+
+ rulesMap = new TreeMap<PatternWrapper, ReplacementWrapper>();
+ rulesMap.put(p0, r0);
+ rulesMap.put(p1, r1);
+ rulesMap.put(p2, r2);
+ rulesMap.put(p3, r2);
+ rulesMap.put(p4, r3);
+ rulesMap.put(p5, r3);
+ rulesMap.put(p6, r4);
+ }
}
Modified:
slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/Writer.java
==============================================================================
--- slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/Writer.java
(original)
+++ slf4j/trunk/slf4j-converter/src/main/java/org/slf4j/converter/Writer.java
Fri Jul 20 17:53:32 2007
@@ -11,56 +11,67 @@
public class Writer {
- Logger logger;
+ Logger logger;
- BufferedWriter bwriter;
+ BufferedWriter bwriter;
- public Writer() {
- logger = LoggerFactory.getLogger(Writer.class);
- }
-
- public void initFileWriter(File file) {
- try {
- FileWriter fileWriter = new FileWriter(file);
- bwriter = new BufferedWriter(fileWriter);
- } catch (IOException exc) {
- logger.error("error creating filewriter " + file.getAbsolutePath());
- }
- }
-
- public void closeFileWriter() {
- if (bwriter != null) {
- try {
- bwriter.flush();
- bwriter.close();
- } catch (IOException e) {
- logger.error("error closing filewriter " + bwriter.toString());
- }
- }
- }
-
- public void rewrite(Matcher matcher, String replacement) {
- String text = matcher.replaceAll(replacement);
- if (bwriter != null) {
- try {
- bwriter.newLine();
- bwriter.write(text);
- logger.info("new entry "+text);
- } catch (IOException exc) {
- logger.error("error writing file " + bwriter.toString());
- }
- }
- }
-
- public void write(String text) {
- if (bwriter != null) {
- try {
- bwriter.newLine();
- bwriter.write(text);
- } catch (IOException exc) {
- logger.error("error writing file " + bwriter.toString());
- }
- }
- }
+ boolean isFirstLine;
+
+ public Writer() {
+ logger = LoggerFactory.getLogger(Writer.class);
+ }
+
+ public void initFileWriter(File file) {
+ try {
+ FileWriter fileWriter = new FileWriter(file);
+ bwriter = new BufferedWriter(fileWriter);
+ isFirstLine = true;
+ } catch (IOException exc) {
+ logger.error("error creating filewriter " +
file.getAbsolutePath());
+ }
+ }
+
+ public void closeFileWriter() {
+ if (bwriter != null) {
+ try {
+ bwriter.flush();
+ bwriter.close();
+ } catch (IOException e) {
+ logger.error("error closing filewriter " +
bwriter.toString());
+ }
+ }
+ }
+
+ public void rewrite(Matcher matcher, String replacement) {
+ String text = matcher.replaceAll(replacement);
+ if (bwriter != null) {
+ try {
+ if (!isFirstLine) {
+ bwriter.newLine();
+ } else {
+ isFirstLine = false;
+ }
+ bwriter.write(text);
+ logger.info("new entry " + text);
+ } catch (IOException exc) {
+ logger.error("error writing file " +
bwriter.toString());
+ }
+ }
+ }
+
+ public void write(String text) {
+ if (bwriter != null) {
+ try {
+ if (!isFirstLine) {
+ bwriter.newLine();
+ } else {
+ isFirstLine = false;
+ }
+ bwriter.write(text);
+ } catch (IOException exc) {
+ logger.error("error writing file " +
bwriter.toString());
+ }
+ }
+ }
}
Added:
slf4j/trunk/slf4j-converter/src/test/java/org/slf4j/converter/JCLMatcherTest.java
==============================================================================
--- (empty file)
+++
slf4j/trunk/slf4j-converter/src/test/java/org/slf4j/converter/JCLMatcherTest.java
Fri Jul 20 17:53:32 2007
@@ -0,0 +1,70 @@
+package org.slf4j.converter;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+public class JCLMatcherTest extends TestCase {
+
+
+
+ public void testConversion() throws IOException {
+ AbstractMatcher jclMatcher = AbstractMatcher.getMatcherImpl();
+ Writer writer = new Writer();
+ File jclFile = new File("jclConversionTest");
+ writer.initFileWriter(jclFile);
+ jclMatcher.setWriter(writer);
+ jclMatcher.setCommentConversion(true);
+
+ jclMatcher.matches("import
org.apache.commons.logging.LogFactory;");
+ jclMatcher.matches("import org.apache.commons.logging.Log;");
+ jclMatcher.matches("Log l = LogFactory.getLog(MyClass.class);");
+ jclMatcher.matches("public Log
mylog=LogFactory.getLog(MyClass.class);");
+ jclMatcher.matches("public static Log mylog1 =
LogFactory.getLog(MyClass.class);");
+ jclMatcher.matches("Log
log3=LogFactory.getFactory().getInstance(MyClass.class);");
+ jclMatcher.matches("Log mylog4 =
LogFactory.getFactory().getInstance(MyClass.class);//logger instanciation");
+ jclMatcher.matches("Log myLog6;//logger declaration");
+
jclMatcher.matches("//log7=LogFactory.getFactory().getInstance(MyClass.class);");
+ jclMatcher.matches("log8
=LogFactory.getFactory().getInstance(MyClass.class);");
+ jclMatcher.matches("myLog9 =
LogFactory.getLog(MyClass.class);");
+ jclMatcher.matches("private Log mylog10;");
+ jclMatcher.matches("protected final Log myLog11;");
+ jclMatcher.matches("public static final Log myLog12;");
+ jclMatcher.matches("System.out.println(\"Log\")
;System.out.println(\"Log2\"); public static final Log myLog13;");
+ jclMatcher.matches("public static final Log
myLog14;System.out.println(\"Log\");");
+ jclMatcher.matches("System.out.println(\"\");public static
final Log myLog15;System.out.println(\"Log\") ;System.out.println(\"Log2\");");
+
jclMatcher.matches("((Pojo)pojo.getPojo()).get(\"pojo\",pojo);public static
final Log myLog16;");
+
+ jclMatcher.getWriter().closeFileWriter();
+ BufferedReader breader = new BufferedReader(new
FileReader(jclFile));
+
+
+ assertEquals(breader.readLine(),"import
org.slf4j.LoggerFactory;");
+ assertEquals(breader.readLine(),"import org.slf4j.Logger;");
+ assertEquals(breader.readLine(),"Logger l =
LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"public Logger
mylog=LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"public static Logger mylog1 =
LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"Logger
log3=LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"Logger mylog4 =
LoggerFactory.getLogger(MyClass.class);//logger instanciation");
+ assertEquals(breader.readLine(),"Logger myLog6;//logger
declaration");
+
assertEquals(breader.readLine(),"//log7=LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"log8
=LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"myLog9 =
LoggerFactory.getLogger(MyClass.class);");
+ assertEquals(breader.readLine(),"private Logger mylog10;");
+ assertEquals(breader.readLine(),"protected final Logger
myLog11;");
+ assertEquals(breader.readLine(),"public static final Logger
myLog12;");
+ assertEquals(breader.readLine(),"System.out.println(\"Log\")
;System.out.println(\"Log2\"); public static final Logger myLog13;");
+ assertEquals(breader.readLine(),"public static final Logger
myLog14;System.out.println(\"Log\");");
+
assertEquals(breader.readLine(),"System.out.println(\"\");public static final
Logger myLog15;System.out.println(\"Log\") ;System.out.println(\"Log2\");");
+
assertEquals(breader.readLine(),"((Pojo)pojo.getPojo()).get(\"pojo\",pojo);public
static final Logger myLog16;");
+ }
+
+
+
+
+
+
+}
_______________________________________________
dev mailing list
[email protected]
http://www.slf4j.org/mailman/listinfo/dev