Skip to content

Commit

Permalink
Generators: use LoggerFactory and reduce CI log spam
Browse files Browse the repository at this point in the history
  • Loading branch information
nbauernfeind committed Feb 15, 2024
1 parent 02dc828 commit 547b1ea
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 69 deletions.
1 change: 1 addition & 0 deletions Generators/Generators.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ configurations {

dependencies {
implementation project(':engine-table')
implementation project(':log-factory')
implementation project(':Plot')
implementation project(':extensions-csv')
implementation project(':extensions-kafka')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
*/
package io.deephaven.gen;

import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;

import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
Expand All @@ -13,16 +16,14 @@
import java.util.Set;
import java.util.TreeMap;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Abstract class for generating Java code from methods of one or more classes.
*
* {@link #generateCode()} must be called to generate the code.
*/
public abstract class AbstractBasicJavaGenerator {
private static final Logger log = Logger.getLogger(AbstractBasicJavaGenerator.class.toString());
private static final Logger log = LoggerFactory.getLogger(AbstractBasicJavaGenerator.class);

private final String gradleTask;
private final String packageName;
Expand Down Expand Up @@ -51,10 +52,11 @@ public AbstractBasicJavaGenerator(final String gradleTask, final String packageN

for (String imp : imports) {
Class<?> c = Class.forName(imp, false, Thread.currentThread().getContextClassLoader());
log.info("Processing class: " + c);
log.debug().append("Processing class: ").append(c.toString()).endl();

for (Method m : c.getMethods()) {
log.info("Processing method (" + c + "): " + m);
log.debug().append("Processing method (").append(c.toString()).append("): ").append(m.toString())
.endl();
if (includeMethod.test(m)) {
addMethod(m);
}
Expand All @@ -63,18 +65,18 @@ public AbstractBasicJavaGenerator(final String gradleTask, final String packageN
}

private void addMethod(Method m) {
log.info("Processing public static method: " + m);
log.debug().append("Processing public static method: ").append(m.toString()).endl();

JavaFunction f = new JavaFunction(m);
// System.out.println(f);

if (functions.containsKey(f)) {
JavaFunction fAlready = functions.get(f);
final String message = "Signature Already Present: " + fAlready + "\t" + f;
log.severe(message);
log.error().append(message).endl();
throw new RuntimeException(message);
} else {
log.info("Added method: " + f);
log.debug().append("Added method: ").append(f.toString()).end();
functions.put(f, f);
}
}
Expand Down Expand Up @@ -122,7 +124,7 @@ public String generateCode() {
}

if (skip) {
log.warning("*** Skipping function: " + f);
log.error().append("*** Skipping function: ").append(f.toString()).endl();
continue;
}

Expand Down Expand Up @@ -158,12 +160,12 @@ public static void runCommandLine(final AbstractBasicJavaGenerator gen, final St
System.exit(-1);
}

log.setLevel(Level.WARNING);
log.warning("Running " + gen.getClass().getSimpleName() + " assertNoChange=" + assertNoChange);
log.warn().append("Running ").append(gen.getClass().getSimpleName()).append(" assertNoChange=")
.append(assertNoChange).endl();

final String code = gen.generateCode();
log.info("\n\n**************************************\n\n");
log.info(code);
log.debug().nl().nl().append("**************************************").nl().nl().endl();
log.debug().append(code).endl();

String file = devroot + relativeFilePath;

Expand All @@ -176,7 +178,7 @@ public static void runCommandLine(final AbstractBasicJavaGenerator gen, final St
out.print(code);
out.close();

log.warning("Class file written to: " + file);
log.warn().append("Class file written to: ").append(file).endl();
}
}

Expand Down
7 changes: 4 additions & 3 deletions Generators/src/main/java/io/deephaven/gen/GenUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@

import gnu.trove.map.TIntObjectMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;
import org.jetbrains.annotations.NotNull;

import java.lang.reflect.*;
import java.util.*;
import java.util.logging.Logger;

@SuppressWarnings("StringConcatenationInLoop")
public class GenUtils {
private GenUtils() {}

private static final Logger log = Logger.getLogger(GenUtils.class.toString());
private static final Logger log = LoggerFactory.getLogger(GenUtils.class);

private static final TIntObjectMap<String> cachedIndents = new TIntObjectHashMap<>();

Expand Down Expand Up @@ -205,7 +206,7 @@ public static String javaFunctionSignature(final JavaFunction f, final String si
}

TypeVariable<Method> t = f.getTypeParameters()[i];
log.fine("BOUNDS: " + Arrays.toString(t.getBounds()));
log.debug().append("BOUNDS: ").append(Arrays.toString(t.getBounds())).endl();
s += t;

Type[] bounds = t.getBounds();
Expand Down
7 changes: 4 additions & 3 deletions Generators/src/main/java/io/deephaven/gen/JavaFunction.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.deephaven.gen;

import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;
import io.deephaven.util.type.TypeUtils;
import org.jetbrains.annotations.NotNull;

Expand All @@ -9,15 +11,14 @@
import java.lang.reflect.TypeVariable;
import java.util.Arrays;
import java.util.Objects;
import java.util.logging.Logger;

/**
* A Java function description for use in code generation.
*
* JavaFunctions are equal if they have the same method names and parameter types.
*/
public class JavaFunction implements Comparable<JavaFunction> {
private static final Logger log = Logger.getLogger(JavaFunction.class.toString());
private static final Logger log = LoggerFactory.getLogger(JavaFunction.class);

private final String className;
private final String classNameShort;
Expand Down Expand Up @@ -146,7 +147,7 @@ public Class<?> getReturnClass() {
try {
return TypeUtils.getErasedType(returnType);
} catch (UnsupportedOperationException e) {
log.warning("Unable to determine Class from returnType=" + returnType.getTypeName());
log.warn().append("Unable to determine Class from returnType=").append(returnType.getTypeName()).endl();
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

import io.deephaven.base.verify.Require;
import io.deephaven.gen.GenUtils;
import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;

import java.io.IOException;
import java.io.PrintWriter;
Expand All @@ -14,13 +16,11 @@
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.IntStream;

public class GenerateAxesPlotMethods {

private static final Logger log = Logger.getLogger(GenerateAxesPlotMethods.class.toString());
private static final Logger log = LoggerFactory.getLogger(GenerateAxesPlotMethods.class);
private static final String GRADLE_TASK = ":Generators:generateAxesPlotMethods";

private static final String PLOT_INFO_ID = "new PlotInfo(this, seriesName)";
Expand Down Expand Up @@ -872,7 +872,7 @@ private static void generate(final boolean assertNoChange, final String file, fi
out.print(newcode);
out.close();

log.info(file + " written");
log.info().append(file).append(" written").end();
}
}

Expand All @@ -890,8 +890,7 @@ public static void main(String[] args) throws IOException {
System.exit(-1);
}

log.setLevel(Level.WARNING);
log.info("Running GenerateAxesPlotMethods assertNoChange=" + assertNoChange);
log.info().append("Running GenerateAxesPlotMethods assertNoChange=").append(assertNoChange).endl();

final String fileIface = devroot + "/Plot/src/main/java/io/deephaven/plot/Axes.java";
final String fileImpl = devroot + "/Plot/src/main/java/io/deephaven/plot/AxesImpl.java";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
package io.deephaven.plot.util;

import io.deephaven.gen.GenUtils;
import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;
import io.deephaven.plot.*;
import io.deephaven.plot.datasets.DataSeries;
import io.deephaven.plot.datasets.multiseries.MultiSeries;
Expand All @@ -18,8 +20,6 @@
import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand All @@ -33,7 +33,7 @@
public class GenerateFigureImmutable {
// See also GroovyStaticImportGenerator

private static final Logger log = Logger.getLogger(GenerateFigureImmutable.class.toString());
private static final Logger log = LoggerFactory.getLogger(GenerateFigureImmutable.class);
private static final String GRADLE_TASK = ":Generators:generateFigureImmutable";

private static final String CLASS_NAME_INTERFACE = "io.deephaven.plot.Figure";
Expand Down Expand Up @@ -66,10 +66,11 @@ private GenerateFigureImmutable(final boolean isInterface, final String[] import

for (final String imp : interfaces) {
final Class<?> c = Class.forName(imp, false, Thread.currentThread().getContextClassLoader());
log.info("Processing class: " + c);
log.debug().append("Processing class: ").append(c.toString()).endl();

for (final Method m : c.getMethods()) {
log.info("Processing method (" + c + "): " + m);
log.debug().append("Processing method (").append(c.toString()).append("): ").append(m.toString())
.endl();
boolean isStatic = Modifier.isStatic(m.getModifiers());
boolean isPublic = Modifier.isPublic(m.getModifiers());
boolean isObject = m.getDeclaringClass().equals(Object.class);
Expand Down Expand Up @@ -104,25 +105,25 @@ public String getTypeName() {
}

private void addPublicNonStatic(Method m) {
log.info("Processing public non-static method: " + m);
log.debug().append("Processing public non-static method: ").append(m.toString()).endl();

final JavaFunction f = new JavaFunction(m);
final JavaFunction signature = signature(f);

boolean skip = skip(f);

if (skip) {
log.info("*** Skipping function: " + f);
log.debug().append("*** Skipping function: ").append(f.toString()).endl();
return;
}

if (nonstaticFunctions.containsKey(signature)) {
JavaFunction fAlready = nonstaticFunctions.get(signature);
final String message = "Signature Already Present: " + fAlready + "\t" + signature;
log.severe(message);
log.error().append(message).endl();
throw new RuntimeException(message);
} else {
log.info("Added public method: " + f);
log.debug().append("Added public method: ").append(f.toString()).endl();
nonstaticFunctions.put(signature, f);
}
}
Expand Down Expand Up @@ -201,7 +202,7 @@ private String generateCode() {
final boolean skip = skip(f);

if (skip) {
log.info("*** Skipping function: " + f);
log.debug().append("*** Skipping function: ").append(f.toString()).endl();
continue;
}

Expand All @@ -216,7 +217,7 @@ private String generateCode() {
final boolean skip = skip(f);

if (skip) {
log.info("*** Skipping function: " + f);
log.debug().append("*** Skipping function: ").append(f.toString()).endl();
continue;
}

Expand Down Expand Up @@ -797,10 +798,11 @@ private Map<String, TreeSet<JavaFunction>> commonSignatureGroups(
final Set<JavaFunction> functionSet = new HashSet<>();
for (String iface : interfaces) {
final Class<?> c = Class.forName(iface, false, Thread.currentThread().getContextClassLoader());
log.info("Processing class: " + c);
log.debug().append("Processing class: ").append(c.toString()).endl();

for (final java.lang.reflect.Method m : c.getMethods()) {
log.info("Processing method (" + c + "): " + m);
log.debug().append("Processing method (").append(c.toString()).append("): ").append(m.toString())
.endl();
boolean isStatic = Modifier.isStatic(m.getModifiers());
boolean isPublic = Modifier.isPublic(m.getModifiers());
boolean isObject = m.getDeclaringClass().equals(Object.class);
Expand Down Expand Up @@ -843,8 +845,7 @@ private static String createMultiSeriesArgs(JavaFunction f) {
private static void generateFile(final String devroot, final boolean assertNoChange, final boolean isInterface)
throws ClassNotFoundException, IOException {

log.setLevel(Level.WARNING);
log.info("Running GenerateFigureImmutable assertNoChange=" + assertNoChange);
log.info().append("Running GenerateFigureImmutable assertNoChange=").append(assertNoChange).endl();

final String[] imports = {
"io.deephaven.plot.datasets.DataSeriesInternal",
Expand Down Expand Up @@ -904,8 +905,8 @@ private static void generateFile(final String devroot, final boolean assertNoCha
seriesInterfaces, skips, JavaFunction::getMethodName);

final String code = gen.generateCode();
log.info("\n\n**************************************\n\n");
log.info(code);
log.debug().nl().nl().append("**************************************").nl().nl().endl();
log.debug().append(code).endl();

String file = devroot + "/Plot/src/main/java/" + gen.outputClass.replace(".", "/") + ".java";

Expand All @@ -918,7 +919,7 @@ private static void generateFile(final String devroot, final boolean assertNoCha
out.print(code);
out.close();

log.info(gen.outputClass + " written to: " + file);
log.info().append(gen.outputClass).append(" written to: ").append(file).endl();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import io.deephaven.base.Pair;
import io.deephaven.gen.GenUtils;
import io.deephaven.gen.JavaFunction;
import io.deephaven.internal.log.LoggerFactory;
import io.deephaven.io.logger.Logger;
import io.deephaven.plot.util.functions.ClosureFunction;
import io.deephaven.engine.table.Table;
import io.deephaven.util.type.TypeUtils;
Expand All @@ -22,7 +24,6 @@
import java.nio.file.Paths;
import java.util.*;
import java.util.function.Function;
import java.util.logging.Logger;

import static io.deephaven.gen.GenUtils.indent;

Expand All @@ -31,7 +32,7 @@
* Generates methods for the MultiSeries datasets.
*/
public class GenerateMultiSeries {
private static final Logger log = Logger.getLogger(GenerateMultiSeries.class.toString());
private static final Logger log = LoggerFactory.getLogger(GenerateMultiSeries.class);
private static final String GRADLE_TASK = ":Generators:generateMultiSeries";

public static void main(String[] args) throws ClassNotFoundException, IOException, NoSuchMethodException {
Expand Down Expand Up @@ -581,7 +582,7 @@ private String getFigureFunctionInput(final String returnClass,
code.append("getX(), newColumn");
break;
default:
log.warning(tableMethod.toString());
log.warn().append(tableMethod.toString()).endl();
throw new IllegalStateException("Can not calculate function input for function "
+ tableMethodName + " in class " + function.getClassNameShort());
}
Expand All @@ -602,9 +603,9 @@ private String getFigureFunctionInput(final String returnClass,
}

if (methods.length != 1) {
log.warning("More than 1 possible table method for function input for function " + tableMethodName
+ " in class " + function.getClassNameShort());
log.warning(Arrays.toString(methods));
log.warn().append("More than 1 possible table method for function input for function ")
.append(tableMethodName).append(" in class ").append(function.getClassNameShort()).endl();
log.warn().append(Arrays.toString(methods)).endl();
throw new IllegalStateException("Can not calculate function input for function " + tableMethodName
+ " in class " + function.getClassNameShort());
}
Expand Down
Loading

0 comments on commit 547b1ea

Please sign in to comment.