This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-fury.git
The following commit(s) were added to refs/heads/main by this push:
new af97e62b feat(java): implement fury logger and remove slf4j library
(#1485)
af97e62b is described below
commit af97e62b013a3418b4fc70c019486adbab5da2c9
Author: Shawn Yang <[email protected]>
AuthorDate: Tue Apr 9 21:34:17 2024 +0800
feat(java): implement fury logger and remove slf4j library (#1485)
This PR implemented fury logger and remove slf4j library
Closes #1484
Closes #1404
---
.../org/apache/fury/benchmark/CollectionSuite.java | 4 +-
.../java/org/apache/fury/benchmark/RowSuite.java | 4 +-
.../fury/benchmark/UserTypeSerializeSuite.java | 6 +-
.../org/apache/fury/benchmark/state/FuryState.java | 6 +-
.../apache/fury/benchmark/state/HessionState.java | 4 +-
.../apache/fury/benchmark/state/JsonbState.java | 6 +-
.../org/apache/fury/benchmark/state/KryoState.java | 4 +-
.../apache/fury/benchmark/state/ObjectType.java | 2 +-
java/fury-core/pom.xml | 1 +
.../src/main/java/org/apache/fury/Fury.java | 4 +-
.../org/apache/fury/builder/AccessorHelper.java | 4 +-
.../org/apache/fury/codegen/CodeGenerator.java | 7 +-
.../java/org/apache/fury/codegen/CompileUnit.java | 4 +-
.../java/org/apache/fury/codegen/JaninoUtils.java | 32 +++--
.../java/org/apache/fury/config/FuryBuilder.java | 4 +-
.../org/apache/fury/io/FuryReadableChannel.java | 16 ++-
.../java/org/apache/fury/logging/FuryLogger.java | 133 +++++++++++++++++++++
.../main/java/org/apache/fury/logging/Logger.java | 58 +++++++++
.../org/apache/fury/logging/LoggerFactory.java | 61 ++++++++++
.../java/org/apache/fury/logging/NilLogger.java | 65 ++++++++++
.../java/org/apache/fury/logging/Slf4jLogger.java | 124 +++++++++++++++++++
.../apache/fury/pool/ClassLoaderFuryPooled.java | 4 +-
.../apache/fury/pool/FuryPooledObjectFactory.java | 4 +-
.../org/apache/fury/resolver/AllowListChecker.java | 4 +-
.../org/apache/fury/resolver/ClassResolver.java | 7 +-
.../org/apache/fury/serializer/JavaSerializer.java | 4 +-
.../fury/serializer/ObjectStreamSerializer.java | 4 +-
.../fury/serializer/ReplaceResolveSerializer.java | 4 +-
.../apache/fury/serializer/StructSerializer.java | 4 +-
.../collection/SynchronizedSerializers.java | 4 +-
.../collection/UnmodifiableSerializers.java | 4 +-
.../fury/serializer/shim/ShimDispatcher.java | 4 +-
.../main/java/org/apache/fury/type/ClassDef.java | 4 +-
.../org/apache/fury/util/ClassLoaderUtils.java | 4 +-
.../java/org/apache/fury/util/LoggerFactory.java | 108 -----------------
.../fury-core/native-image.properties | 5 +-
.../java/org/apache/fury/CrossLanguageTest.java | 4 +-
.../test/java/org/apache/fury/FuryInitPerf.java | 4 +-
.../org/apache/fury/builder/JITContextTest.java | 4 +-
.../fury/collection/MultiKeyWeakMapTest.java | 4 +-
.../org/apache/fury/logging/Slf4jLoggerTest.java} | 37 +++---
.../apache/fury/resolver/ClassResolverTest.java | 4 +-
.../java/org/apache/fury/util/PlatformTest.java | 15 +--
.../fury/format/encoder/ArrayEncoderBuilder.java | 6 +-
.../org/apache/fury/format/encoder/Encoders.java | 14 +--
.../fury/format/encoder/MapEncoderBuilder.java | 6 +-
.../fury/format/encoder/RowEncoderBuilder.java | 6 +-
.../org/apache/fury/format/CrossLanguageTest.java | 4 +-
.../fury/format/row/binary/BinaryArrayTest.java | 12 +-
.../fury/format/row/binary/BinaryRowTest.java | 12 +-
.../fury/benchmark/DeserializationBenchmark.java | 120 +++++++++----------
.../fury/benchmark/SerializationBenchmark.java | 126 +++++++++----------
52 files changed, 695 insertions(+), 400 deletions(-)
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
index 597e5a83..16a469f3 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/CollectionSuite.java
@@ -22,10 +22,10 @@ package org.apache.fury.benchmark;
import java.util.ArrayList;
import java.util.List;
import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.openjdk.jmh.Main;
import org.openjdk.jmh.annotations.Benchmark;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Test suite for collection. */
public class CollectionSuite {
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
index 576383b6..77da175f 100644
--- a/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
+++ b/java/benchmark/src/main/java/org/apache/fury/benchmark/RowSuite.java
@@ -36,10 +36,10 @@ import org.apache.avro.reflect.ReflectDatumReader;
import org.apache.avro.reflect.ReflectDatumWriter;
import org.apache.fury.format.encoder.Encoder;
import org.apache.fury.format.encoder.Encoders;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.openjdk.jmh.Main;
import org.openjdk.jmh.annotations.Benchmark;
-import org.slf4j.Logger;
public class RowSuite {
private static final Logger LOG = LoggerFactory.getLogger(RowSuite.class);
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
index 71f45b3d..58788ac2 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/UserTypeSerializeSuite.java
@@ -59,7 +59,7 @@ public class UserTypeSerializeSuite {
return state.output;
}
- // @Benchmark
+ @Benchmark
public Object fury_serialize(FuryState.FuryUserTypeState state) {
state.buffer.writerIndex(0);
state.fury.writeRef(state.buffer, state.object);
@@ -117,7 +117,7 @@ public class UserTypeSerializeSuite {
return state.bos;
}
- // @Benchmark
+ @Benchmark
public byte[] jsonb_serialize(JsonbState.JsonbUserTypeState state, Blackhole
bh) {
return JsonbState.serialize(bh, state, state.object);
}
@@ -144,7 +144,7 @@ public class UserTypeSerializeSuite {
public static void main(String[] args) throws IOException {
if (args.length == 0) {
String commandLine =
- "org.apache.fury.*UserTypeSerializeSuite.fury_serialize -f 3 -wi 3
-i 3 -t 1 -w 2s -r 2s -rf csv";
+ "org.apache.fury.*UserTypeSerializeSuite.jsonb_serialize -f 3 -wi 3
-i 3 -t 1 -w 2s -r 2s -rf csv";
System.out.println(commandLine);
args = commandLine.split(" ");
}
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
index 125e1df5..7b0605d3 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/FuryState.java
@@ -36,10 +36,11 @@ import org.apache.fury.benchmark.data.Struct;
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.FuryBuilder;
import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.resolver.MetaContext;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.CompilerControl;
@@ -52,7 +53,6 @@ import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 3)
@@ -131,7 +131,7 @@ public class FuryState {
furyBuilder.withCompatibleMode(CompatibleMode.COMPATIBLE);
}
fury = furyBuilder.build();
- switch (objectType) {
+ switch (ObjectType.MEDIA_CONTENT) {
case SAMPLE:
case STRUCT:
case STRUCT2:
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
index b648c763..fa9322ed 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/HessionState.java
@@ -32,7 +32,8 @@ import org.apache.fury.benchmark.data.Data;
import org.apache.fury.benchmark.data.MediaContent;
import org.apache.fury.benchmark.data.Sample;
import org.apache.fury.benchmark.data.Struct;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.CompilerControl;
@@ -45,7 +46,6 @@ import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 3)
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
index 5565aa6a..55a3db63 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/JsonbState.java
@@ -39,7 +39,8 @@ import org.apache.fury.benchmark.data.CustomJDKSerialization;
import org.apache.fury.benchmark.data.MediaContent;
import org.apache.fury.benchmark.data.Sample;
import org.apache.fury.benchmark.data.Struct;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.openjdk.jmh.annotations.CompilerControl;
@@ -52,7 +53,6 @@ import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
import org.openjdk.jmh.infra.Blackhole;
-import org.slf4j.Logger;
@Warmup(iterations = 3)
@Measurement(iterations = 3)
@@ -85,7 +85,7 @@ public class JsonbState {
@Override
public void setup() {
super.setup();
- switch (objectType) {
+ switch (ObjectType.MEDIA_CONTENT) {
case SAMPLE:
object = new Sample().populate(references);
break;
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
index 9084cc44..a75d60d7 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/KryoState.java
@@ -34,6 +34,8 @@ import org.apache.fury.benchmark.data.Data;
import org.apache.fury.benchmark.data.Image;
import org.apache.fury.benchmark.data.Media;
import org.apache.fury.benchmark.data.MediaContent;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.openjdk.jmh.annotations.CompilerControl;
import org.openjdk.jmh.annotations.Fork;
@@ -44,8 +46,6 @@ import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Warmup(iterations = 3)
@Measurement(iterations = 3)
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
index c5765e19..aca39a75 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
+++
b/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
@@ -24,8 +24,8 @@ import org.apache.fury.benchmark.data.Sample;
import org.apache.fury.benchmark.data.Struct;
public enum ObjectType {
- SAMPLE,
MEDIA_CONTENT,
+ SAMPLE,
STRUCT,
STRUCT2;
diff --git a/java/fury-core/pom.xml b/java/fury-core/pom.xml
index 2b2a426c..8a164e74 100644
--- a/java/fury-core/pom.xml
+++ b/java/fury-core/pom.xml
@@ -56,6 +56,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
+ <optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
diff --git a/java/fury-core/src/main/java/org/apache/fury/Fury.java
b/java/fury-core/src/main/java/org/apache/fury/Fury.java
index b259cd64..63421ada 100644
--- a/java/fury-core/src/main/java/org/apache/fury/Fury.java
+++ b/java/fury-core/src/main/java/org/apache/fury/Fury.java
@@ -38,6 +38,8 @@ import org.apache.fury.config.Language;
import org.apache.fury.config.LongEncoding;
import org.apache.fury.exception.DeserializationException;
import org.apache.fury.io.FuryInputStream;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.resolver.ClassInfo;
@@ -59,11 +61,9 @@ import org.apache.fury.serializer.StringSerializer;
import org.apache.fury.type.Generics;
import org.apache.fury.type.Type;
import org.apache.fury.util.ExceptionUtils;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/**
* Cross-Lang Data layout: 1byte mask: 1-bit null: 0->null, 1->not null 1-bit
endianness: 0->le,
diff --git
a/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
b/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
index ad18c2ce..7cc2c862 100644
--- a/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
+++ b/java/fury-core/src/main/java/org/apache/fury/builder/AccessorHelper.java
@@ -31,14 +31,14 @@ import org.apache.fury.codegen.CodeGenerator;
import org.apache.fury.codegen.CodegenContext;
import org.apache.fury.codegen.CompileUnit;
import org.apache.fury.codegen.JaninoUtils;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.type.Descriptor;
import org.apache.fury.util.ClassLoaderUtils;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.StringUtils;
import org.apache.fury.util.record.RecordUtils;
-import org.slf4j.Logger;
/**
* Define accessor helper methods in beanClass's classloader and same package
to avoid reflective
diff --git
a/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
b/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
index 397ddca4..d91cb870 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/CodeGenerator.java
@@ -38,15 +38,15 @@ import org.apache.fury.builder.AccessorHelper;
import org.apache.fury.builder.Generated;
import org.apache.fury.collection.Collections;
import org.apache.fury.collection.MultiKeyWeakMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.ClassLoaderUtils;
import org.apache.fury.util.ClassLoaderUtils.ByteArrayClassLoader;
import org.apache.fury.util.DelayedRef;
import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/**
* Code generator will take a list of {@link CompileUnit} and compile it into
a list of classes.
@@ -151,9 +151,6 @@ public class CodeGenerator {
for (Map.Entry<String, byte[]> e : classes.entrySet()) {
String key = e.getKey();
byte[] value = e.getValue();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Code stats for class {} is {}", key,
JaninoUtils.getClassStats(value));
- }
}
}
return defineClasses(classes);
diff --git
a/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
b/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
index 22c3c6a1..08a7d200 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/CompileUnit.java
@@ -20,10 +20,10 @@
package org.apache.fury.codegen;
import java.util.function.Supplier;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/** A CompileUnit corresponds to java file, which have a package, main class
and code. */
public class CompileUnit {
diff --git
a/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
b/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
index dc02d85c..90b8cc3c 100644
--- a/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
+++ b/java/fury-core/src/main/java/org/apache/fury/codegen/JaninoUtils.java
@@ -35,7 +35,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.fury.collection.Tuple2;
-import org.apache.fury.util.LoggerFactory;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.StringUtils;
import org.codehaus.commons.compiler.util.reflect.ByteArrayClassLoader;
@@ -45,7 +46,6 @@ import org.codehaus.commons.compiler.util.resource.Resource;
import org.codehaus.janino.ClassLoaderIClassLoader;
import org.codehaus.janino.Compiler;
import org.codehaus.janino.util.ClassFile;
-import org.slf4j.Logger;
/** A util to compile code to bytecode and create classloader to load
generated class. */
public class JaninoUtils {
@@ -104,13 +104,11 @@ public class JaninoUtils {
try {
compiler.compile(sourceFinder.resources().toArray(new Resource[0]));
long durationMs = (System.nanoTime() - startTime) / 1000_000;
- if (LOG.isInfoEnabled()) {
- String classNames =
- Arrays.stream(compileUnits)
- .map(unit -> unit.mainClassName)
- .collect(Collectors.joining(", ", "[", "]"));
- LOG.info("Compile {} take {} ms", classNames, durationMs);
- }
+ String classNames =
+ Arrays.stream(compileUnits)
+ .map(unit -> unit.mainClassName)
+ .collect(Collectors.joining(", ", "[", "]"));
+ LOG.info("Compile {} take {} ms", classNames, durationMs);
} catch (Exception e) {
StringBuilder msgBuilder = new StringBuilder("Compile error: \n");
for (int i = 0; i < compileUnits.length; i++) {
@@ -185,14 +183,14 @@ public class JaninoUtils {
classFile.getThisClassName(),
m.getName(),
length);
- } else if (length >
CodeGenerator.DEFAULT_JVM_INLINE_METHOD_LIMIT
- && !"<init>".equals(m.getName())) {
- LOG.debug(
- "Generated method too long to be JIT
inlined:"
- + " class {} method {} size {}",
- classFile.getThisClassName(),
- m.getName(),
- length);
+ // } else if (length >
CodeGenerator.DEFAULT_JVM_INLINE_METHOD_LIMIT
+ // && !"<init>".equals(m.getName())) {
+ // LOG.info(
+ // "Generated method too long to be JIT
inlined:"
+ // + " class {} method {} size {}",
+ // classFile.getThisClassName(),
+ // m.getName(),
+ // length);
}
return Tuple2.of(m.getName(), length);
} catch (IllegalAccessException e) {
diff --git
a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
index f2084d9f..05e30d7b 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
@@ -24,6 +24,8 @@ import java.util.concurrent.TimeUnit;
import org.apache.fury.Fury;
import org.apache.fury.ThreadLocalFury;
import org.apache.fury.ThreadSafeFury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.pool.ThreadPoolFury;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.serializer.JavaSerializer;
@@ -32,9 +34,7 @@ import org.apache.fury.serializer.Serializer;
import org.apache.fury.serializer.TimeSerializers;
import org.apache.fury.serializer.collection.GuavaCollectionSerializers;
import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
/** Builder class to config and create {@link Fury}. */
// Method naming style for this builder:
diff --git
a/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
b/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
index 2d5716da..74cd6e03 100644
--- a/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
+++ b/java/fury-core/src/main/java/org/apache/fury/io/FuryReadableChannel.java
@@ -20,7 +20,6 @@
package org.apache.fury.io;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel;
import org.apache.fury.memory.MemoryBuffer;
@@ -43,7 +42,20 @@ public class FuryReadableChannel extends
AbstractStreamReader implements Readabl
@Override
public int read(ByteBuffer dst) throws IOException {
- throw new UnsupportedEncodingException();
+ MemoryBuffer buf = buffer;
+ int remaining = buf.remaining();
+ int len = dst.remaining();
+ if (remaining >= len) {
+ buf.read(dst, len);
+ return len;
+ } else {
+ try {
+ buf.read(dst, remaining);
+ return channel.read(dst) + remaining;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
@Override
diff --git
a/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java
b/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java
new file mode 100644
index 00000000..78301805
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/FuryLogger.java
@@ -0,0 +1,133 @@
+/*
+ * 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.fury.logging;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class FuryLogger implements Logger {
+ private static final DateTimeFormatter dateTimeFormatter =
+ DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
+ private final String name;
+
+ public FuryLogger(Class<?> targetClass) {
+ this.name = targetClass.getSimpleName();
+ }
+
+ // The implementation should not forward to other method, otherwise the
fileNumber won't be right.
+ @Override
+ public void info(String msg) {
+ log("INFO", msg, new Object[0], false);
+ }
+
+ @Override
+ public void info(String msg, Object arg) {
+ log("INFO", msg, new Object[] {arg}, false);
+ }
+
+ @Override
+ public void info(String msg, Object arg1, Object arg2) {
+ log("INFO", msg, new Object[] {arg1, arg2}, false);
+ }
+
+ @Override
+ public void info(String msg, Object... args) {
+ log("INFO", msg, args, false);
+ }
+
+ @Override
+ public void warn(String msg) {
+ log("WARN", msg, new Object[0], false);
+ }
+
+ @Override
+ public void warn(String msg, Object arg) {
+ log("WARN", msg, new Object[] {arg}, true);
+ }
+
+ @Override
+ public void warn(String msg, Object arg1, Object arg2) {
+ log("WARN", msg, new Object[] {arg1, arg2}, true);
+ }
+
+ @Override
+ public void warn(String msg, Object... args) {
+ log("WARN", msg, args, true);
+ }
+
+ @Override
+ public void warn(String msg, Throwable t) {
+ log("WARN", msg, new Object[] {t}, true);
+ }
+
+ @Override
+ public void error(String msg) {
+ log("ERROR", msg, new Object[0], false);
+ }
+
+ @Override
+ public void error(String msg, Object arg) {
+ log("ERROR", msg, new Object[] {arg}, true);
+ }
+
+ @Override
+ public void error(String msg, Object arg1, Object arg2) {
+ log("ERROR", msg, new Object[] {arg1, arg2}, true);
+ }
+
+ @Override
+ public void error(String msg, Object... args) {
+ log("ERROR", msg, args, true);
+ }
+
+ @Override
+ public void error(String msg, Throwable t) {
+ log("ERROR", msg, new Object[] {t}, true);
+ }
+
+ private void log(String level, String msg, Object[] args, boolean
mayPrintTrace) {
+ StringBuilder builder = new
StringBuilder(dateTimeFormatter.format(LocalDateTime.now()));
+ builder.append(" ").append(level);
+ builder.append(" ").append(name);
+ int lineNumber = Thread.currentThread().getStackTrace()[3].getLineNumber();
+ builder.append(":").append(lineNumber);
+ builder.append(" [").append(Thread.currentThread().getName()).append(']');
+ builder.append(" - ");
+ int len = msg.length();
+ int count = 0;
+ for (int i = 0; i < len; i++) {
+ char c = msg.charAt(i);
+ if (c == '{' && msg.charAt(i + 1) == '}') {
+ builder.append(args[count++]);
+ i++;
+ } else {
+ builder.append(c);
+ }
+ }
+ System.out.println(builder);
+ int length = args.length;
+ if (mayPrintTrace && length > 0) {
+ Object o = args[length - 1];
+ if (o instanceof Throwable) {
+ ((Throwable) o).printStackTrace(System.out);
+ }
+ }
+ }
+}
diff --git a/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java
b/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java
new file mode 100644
index 00000000..e3c891c3
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/Logger.java
@@ -0,0 +1,58 @@
+/*
+ * 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.fury.logging;
+
+/**
+ * Logger interface in fury. Note that this logger doesn't support configure
logging level, please
+ * don't big string using this interface. And the format template only support
`{}` placeholder. If
+ * more sophisticated logger are needed, please config fury to use slf4j by
{@link
+ * LoggerFactory#useSlf4jLogging} .
+ *
+ * <p>This logger is used to reduce dependency conflict and reduce jar size.
+ */
+public interface Logger {
+ void info(String msg);
+
+ void info(String msg, Object arg);
+
+ void info(String msg, Object arg1, Object arg2);
+
+ void info(String msg, Object... args);
+
+ void warn(String msg);
+
+ void warn(String msg, Object arg);
+
+ void warn(String msg, Object... args);
+
+ void warn(String msg, Object arg1, Object arg2);
+
+ void warn(String msg, Throwable t);
+
+ void error(String msg);
+
+ void error(String msg, Object arg);
+
+ void error(String msg, Object arg1, Object arg2);
+
+ void error(String msg, Object... args);
+
+ void error(String msg, Throwable t);
+}
diff --git
a/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java
b/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java
new file mode 100644
index 00000000..9b18d297
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/LoggerFactory.java
@@ -0,0 +1,61 @@
+/*
+ * 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.fury.logging;
+
+import org.apache.fury.util.GraalvmSupport;
+
+/**
+ * A logger factory which can be used to disable fury logging more easily than
configure logging.
+ */
+public class LoggerFactory {
+ private static volatile boolean disableLogging;
+ private static volatile boolean useSlf4jlogger;
+
+ public static void disableLogging() {
+ disableLogging = true;
+ }
+
+ public static void enableLogging() {
+ disableLogging = false;
+ }
+
+ public static void useSlf4jLogging(boolean useSlf4jLogging) {
+ LoggerFactory.useSlf4jlogger = useSlf4jLogging;
+ }
+
+ public static Logger getLogger(Class<?> clazz) {
+ if (disableLogging) {
+ return new NilLogger();
+ } else {
+ if (GraalvmSupport.IN_GRAALVM_NATIVE_IMAGE) {
+ return new FuryLogger(clazz);
+ }
+ if (useSlf4jlogger) {
+ return createSlf4jLogger(clazz);
+ } else {
+ return new FuryLogger(clazz);
+ }
+ }
+ }
+
+ private static Logger createSlf4jLogger(Class<?> clazz) {
+ return new Slf4jLogger(clazz);
+ }
+}
diff --git
a/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java
b/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java
new file mode 100644
index 00000000..44e26a8d
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/NilLogger.java
@@ -0,0 +1,65 @@
+/*
+ * 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.fury.logging;
+
+/** An empty logger which does nothing. */
+public class NilLogger implements Logger {
+ @Override
+ public void info(String msg) {}
+
+ @Override
+ public void info(String msg, Object arg) {}
+
+ @Override
+ public void info(String msg, Object arg1, Object arg2) {}
+
+ @Override
+ public void info(String msg, Object... args) {}
+
+ @Override
+ public void warn(String msg) {}
+
+ @Override
+ public void warn(String msg, Object arg) {}
+
+ @Override
+ public void warn(String msg, Object... args) {}
+
+ @Override
+ public void warn(String msg, Object arg1, Object arg2) {}
+
+ @Override
+ public void warn(String msg, Throwable t) {}
+
+ @Override
+ public void error(String msg) {}
+
+ @Override
+ public void error(String msg, Object arg) {}
+
+ @Override
+ public void error(String msg, Object arg1, Object arg2) {}
+
+ @Override
+ public void error(String msg, Object... args) {}
+
+ @Override
+ public void error(String msg, Throwable t) {}
+}
diff --git
a/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java
b/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java
new file mode 100644
index 00000000..2f621eb3
--- /dev/null
+++ b/java/fury-core/src/main/java/org/apache/fury/logging/Slf4jLogger.java
@@ -0,0 +1,124 @@
+/*
+ * 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.fury.logging;
+
+import org.slf4j.spi.LocationAwareLogger;
+
+/** A logger to forward logging to slf4j. */
+public class Slf4jLogger implements Logger {
+ private static final String FQCN = Slf4jLogger.class.getName();
+
+ private final org.slf4j.Logger logger;
+
+ public Slf4jLogger(Class<?> cls) {
+ this.logger = org.slf4j.LoggerFactory.getLogger(cls);
+ }
+
+ @Override
+ public void info(String msg) {
+ info(msg, (Object[]) null);
+ }
+
+ @Override
+ public void info(String msg, Object arg) {
+ info(msg, new Object[] {arg});
+ }
+
+ @Override
+ public void info(String msg, Object arg1, Object arg2) {
+ info(msg, new Object[] {arg1, arg2});
+ }
+
+ @Override
+ public void info(String msg, Object... args) {
+ if (logger instanceof LocationAwareLogger) {
+ ((LocationAwareLogger) logger).log(null, FQCN,
LocationAwareLogger.INFO_INT, msg, args, null);
+ } else {
+ logger.info(msg, args);
+ }
+ }
+
+ @Override
+ public void warn(String msg) {
+ warn(msg, (Object[]) null);
+ }
+
+ @Override
+ public void warn(String msg, Object arg) {
+ warn(msg, new Object[] {arg});
+ }
+
+ @Override
+ public void warn(String msg, Object arg1, Object arg2) {
+ warn(msg, new Object[] {arg1, arg2});
+ }
+
+ @Override
+ public void warn(String msg, Object... args) {
+ if (logger instanceof LocationAwareLogger) {
+ ((LocationAwareLogger) logger).log(null, FQCN,
LocationAwareLogger.WARN_INT, msg, args, null);
+ } else {
+ logger.warn(msg, args);
+ }
+ }
+
+ @Override
+ public void warn(String msg, Throwable t) {
+ if (logger instanceof LocationAwareLogger) {
+ ((LocationAwareLogger) logger).log(null, FQCN,
LocationAwareLogger.WARN_INT, msg, null, t);
+ } else {
+ logger.warn(msg, t);
+ }
+ }
+
+ @Override
+ public void error(String msg) {
+ error(msg, (Object[]) null);
+ }
+
+ @Override
+ public void error(String msg, Object arg) {
+ error(msg, new Object[] {arg});
+ }
+
+ @Override
+ public void error(String msg, Object arg1, Object arg2) {
+ error(msg, new Object[] {arg1, arg2});
+ }
+
+ @Override
+ public void error(String msg, Object... args) {
+ if (logger instanceof LocationAwareLogger) {
+ ((LocationAwareLogger) logger)
+ .log(null, FQCN, LocationAwareLogger.ERROR_INT, msg, args, null);
+ } else {
+ logger.error(msg, args);
+ }
+ }
+
+ @Override
+ public void error(String msg, Throwable t) {
+ if (logger instanceof LocationAwareLogger) {
+ ((LocationAwareLogger) logger).log(null, FQCN,
LocationAwareLogger.ERROR_INT, msg, null, t);
+ } else {
+ logger.error(msg, t);
+ }
+ }
+}
diff --git
a/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
b/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
index 66430974..7f02fe02 100644
---
a/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
+++
b/java/fury-core/src/main/java/org/apache/fury/pool/ClassLoaderFuryPooled.java
@@ -30,8 +30,8 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import java.util.function.Function;
import org.apache.fury.Fury;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
/** A thread-safe object pool of {@link Fury}. */
public class ClassLoaderFuryPooled {
diff --git
a/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
b/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
index bf5972f6..9efc584a 100644
---
a/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
+++
b/java/fury-core/src/main/java/org/apache/fury/pool/FuryPooledObjectFactory.java
@@ -24,9 +24,9 @@ import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.LoaderBinding;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
/**
* fury pool factory The pool is used to initialize instances of fury related
objects for soft.
diff --git
a/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
b/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
index e81a0098..f8300eb6 100644
---
a/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
+++
b/java/fury-core/src/main/java/org/apache/fury/resolver/AllowListChecker.java
@@ -28,10 +28,10 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.annotation.concurrent.ThreadSafe;
import org.apache.fury.Fury;
import org.apache.fury.exception.InsecureException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
/** White/black list based class checker. */
@ThreadSafe
diff --git
a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
index f3803c19..6c3a55e0 100644
--- a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
+++ b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
@@ -94,6 +94,8 @@ import org.apache.fury.collection.Tuple2;
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.Language;
import org.apache.fury.exception.InsecureException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.serializer.ArraySerializers;
import org.apache.fury.serializer.BufferSerializers;
@@ -137,13 +139,11 @@ import org.apache.fury.type.GenericType;
import org.apache.fury.type.ScalaTypes;
import org.apache.fury.type.TypeUtils;
import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.StringUtils;
import org.apache.fury.util.function.Functions;
-import org.slf4j.Logger;
/**
* Class registry for types of serializing objects, responsible for
reading/writing types, setting
@@ -640,7 +640,6 @@ public class ClassResolver {
Class<?> cls = entry.getKey();
String className = cls.getName();
if (extRegistry.registeredClasses.containsKey(className)) {
- LOG.debug("Skip clear serializer for registered class {}", className);
continue;
}
if (className.startsWith(classNamePrefix)) {
@@ -973,7 +972,7 @@ public class ClassResolver {
}
}
} else {
- LOG.debug("Object of type {} can't be serialized by jit", cls);
+ LOG.info("Object of type {} can't be serialized by jit", cls);
switch (fury.getCompatibleMode()) {
case SCHEMA_CONSISTENT:
return ObjectSerializer.class;
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
index 2e5dd39a..c75ebd8c 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/JavaSerializer.java
@@ -32,11 +32,11 @@ import org.apache.fury.Fury;
import org.apache.fury.io.ClassLoaderObjectInputStream;
import org.apache.fury.io.MemoryBufferObjectInput;
import org.apache.fury.io.MemoryBufferObjectOutput;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.resolver.ClassResolver;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
/**
* Serializes objects using Java's built in serialization to be compatible
with java serialization.
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
index 02a94264..51cf84df 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/ObjectStreamSerializer.java
@@ -50,18 +50,18 @@ import org.apache.fury.builder.CodecUtils;
import org.apache.fury.builder.Generated;
import org.apache.fury.collection.ObjectArray;
import org.apache.fury.collection.ObjectIntMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.resolver.ClassInfo;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.resolver.FieldResolver;
import org.apache.fury.resolver.FieldResolver.ClassField;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.Utils;
import org.apache.fury.util.unsafe._JDKAccess;
-import org.slf4j.Logger;
/**
* Implement jdk custom serialization only if following conditions are met:
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
index da1c59fa..4fc5b6f1 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/ReplaceResolveSerializer.java
@@ -28,16 +28,16 @@ import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import org.apache.fury.Fury;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.resolver.ClassInfo;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.resolver.RefResolver;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
import org.apache.fury.util.unsafe._JDKAccess;
-import org.slf4j.Logger;
/**
* Serializer for class which has jdk `writeReplace`/`readResolve` method
defined. This serializer
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
index 7da098f2..92b74fa8 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/StructSerializer.java
@@ -31,6 +31,8 @@ import java.util.Map;
import org.apache.fury.Fury;
import org.apache.fury.config.Language;
import org.apache.fury.exception.ClassNotCompatibleException;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.GenericType;
@@ -38,11 +40,9 @@ import org.apache.fury.type.Generics;
import org.apache.fury.type.Type;
import org.apache.fury.type.TypeUtils;
import org.apache.fury.util.FieldAccessor;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
/**
* A serializer used for cross-language serialization for custom objects.
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
index c4a0daf2..7778b4e3 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/SynchronizedSerializers.java
@@ -36,12 +36,12 @@ import java.util.TreeSet;
import java.util.function.Function;
import org.apache.fury.Fury;
import org.apache.fury.collection.Tuple2;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
/** Serializer for synchronized Collections and Maps created via Collections.
*/
@SuppressWarnings({"rawtypes", "unchecked"})
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
index d651421f..f6207001 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/collection/UnmodifiableSerializers.java
@@ -35,13 +35,13 @@ import java.util.TreeSet;
import java.util.function.Function;
import org.apache.fury.Fury;
import org.apache.fury.collection.Tuple2;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.Utils;
-import org.slf4j.Logger;
/** Serializer for unmodifiable Collections and Maps created via Collections.
*/
@SuppressWarnings({"rawtypes", "unchecked"})
diff --git
a/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
b/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
index 73a5727a..a27b208e 100644
---
a/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
+++
b/java/fury-core/src/main/java/org/apache/fury/serializer/shim/ShimDispatcher.java
@@ -22,13 +22,13 @@ package org.apache.fury.serializer.shim;
import org.apache.fury.Fury;
import org.apache.fury.collection.FuryObjectMap;
import org.apache.fury.collection.ObjectMap;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.serializer.Serializer;
import org.apache.fury.serializer.Serializers;
import org.apache.fury.serializer.collection.CollectionSerializer;
import org.apache.fury.serializer.collection.MapSerializers;
import org.apache.fury.util.Preconditions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** A shim serializer dispatcher to resolve compatibility problems for common
used classes. */
@SuppressWarnings("rawtypes")
diff --git a/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
b/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
index 0e97922d..b05e45ee 100644
--- a/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
+++ b/java/fury-core/src/main/java/org/apache/fury/type/ClassDef.java
@@ -42,16 +42,16 @@ import org.apache.fury.builder.MetaSharedCodecBuilder;
import org.apache.fury.collection.IdentityObjectIntMap;
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.FuryBuilder;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.serializer.CompatibleSerializer;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.MurmurHash3;
import org.apache.fury.util.Platform;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.ReflectionUtils;
-import org.slf4j.Logger;
/**
* Serializable class definition to be sent to other process. So if sender
peer and receiver peer
diff --git
a/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
b/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
index 3dcc200d..8ebb09d8 100644
--- a/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
+++ b/java/fury-core/src/main/java/org/apache/fury/util/ClassLoaderUtils.java
@@ -33,8 +33,9 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.util.unsafe.DefineClass;
-import org.slf4j.Logger;
/** ClassLoader utility for defining class and loading class by strategies. */
public class ClassLoaderUtils {
@@ -256,7 +257,6 @@ public class ClassLoaderUtils {
}
return DefineClass.defineClass(className, neighbor, classLoader, domain,
bytecode);
} catch (Exception | LinkageError e) {
- LOG.debug("Unable define class {} in classloader {}.", className,
classLoader, e);
return null;
}
}
diff --git
a/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java
b/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java
deleted file mode 100644
index 01f0615c..00000000
--- a/java/fury-core/src/main/java/org/apache/fury/util/LoggerFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.fury.util;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import org.slf4j.Logger;
-import org.slf4j.helpers.NOPLogger;
-
-/**
- * A logger factory which can be used to disable fury logging more easily than
configure logging.
- */
-public class LoggerFactory {
- private static boolean disableLogging;
-
- public static void disableLogging() {
- disableLogging = true;
- }
-
- public static void enableLogging() {
- disableLogging = false;
- }
-
- public static Logger getLogger(Class<?> clazz) {
- if (disableLogging) {
- return NOPLogger.NOP_LOGGER;
- } else {
- if (GraalvmSupport.IN_GRAALVM_NATIVE_IMAGE) {
- return (Logger)
- Proxy.newProxyInstance(
- clazz.getClassLoader(), new Class[] {Logger.class}, new
GraalvmLogger(clazz));
- }
- return org.slf4j.LoggerFactory.getLogger(clazz);
- }
- }
-
- private static final class GraalvmLogger implements InvocationHandler {
- private static final DateTimeFormatter dateTimeFormatter =
- DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
- private final Class<?> targetClass;
-
- private GraalvmLogger(Class<?> targetClass) {
- this.targetClass = targetClass;
- }
-
- @Override
- public Object invoke(Object proxy, Method method, Object[] args) throws
Throwable {
- String name = method.getName();
- switch (name) {
- case "isEnabledForLevel":
- case "isInfoEnabled":
- case "isWarnEnabled":
- case "isErrorEnabled":
- return true;
- case "info":
- log("INFO", false, args);
- return null;
- case "warn":
- log("WARN", false, args);
- return null;
- case "error":
- log("ERROR", false, args);
- return null;
- default:
- return method.invoke(NOPLogger.NOP_LOGGER, args);
- }
- }
-
- private void log(String level, boolean mayPrintTrace, Object[] args) {
- StringBuilder builder = new
StringBuilder(dateTimeFormatter.format(LocalDateTime.now()));
- builder.append(" ").append(level);
- builder.append(" ").append(targetClass.getSimpleName());
- builder.append("
[").append(Thread.currentThread().getName()).append(']');
- builder.append(" -");
- for (Object arg : args) {
- builder.append(" ").append(arg);
- }
- System.out.println(builder);
- int length = args.length;
- if (mayPrintTrace && length > 0) {
- Object o = args[length - 1];
- if (o instanceof Throwable) {
- ((Throwable) o).printStackTrace();
- }
- }
- }
- }
-}
diff --git
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
index 74f1304e..bcb3392d 100644
---
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
+++
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
@@ -106,7 +106,8 @@
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
org.apache.fury.shaded.org.codehaus.janino.Java$Invocation,\
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
org.apache.fury.util.record.RecordUtils,\
- org.apache.fury.util.LoggerFactory$GraalvmLogger,\
+ org.apache.fury.logging.FuryLogger,\
+ org.apache.fury.logging.LoggerFactory,\
org.apache.fury.shaded.org.codehaus.janino.Java$Literal,\
org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
@@ -147,7 +148,6 @@
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
com.google.common.collect.RegularImmutableSortedSet,\
org.apache.fury.type.Descriptor,\
org.apache.fury.serializer.PrimitiveSerializers$1,\
- org.slf4j.LoggerFactory,\
org.apache.fury.collection.MultiKeyWeakMap,\
org.apache.fury.serializer.collection.UnmodifiableSerializers,\
org.apache.fury.codegen.CompileUnit,\
@@ -169,5 +169,4 @@
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
org.apache.fury.memory.MemoryUtils,\
org.apache.fury.type.DescriptorGrouper,\
sun.misc.Unsafe,\
- org.slf4j.LoggerFactory,\
com.google.common.collect.Platform
diff --git
a/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
b/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
index 4f722051..81cd55f8 100644
--- a/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/CrossLanguageTest.java
@@ -50,13 +50,13 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import lombok.Data;
import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.serializer.BufferObject;
import org.apache.fury.serializer.Serializer;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.MurmurHash3;
-import org.slf4j.Logger;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
b/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
index 2e3ecfb9..8cf52652 100644
--- a/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
+++ b/java/fury-core/src/test/java/org/apache/fury/FuryInitPerf.java
@@ -25,13 +25,13 @@ import java.util.Collection;
import java.util.List;
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.resolver.MetaContext;
import org.apache.fury.test.bean.BeanA;
import org.apache.fury.test.bean.BeanB;
import org.apache.fury.test.bean.Foo;
import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
import org.testng.annotations.Test;
@Test(enabled = false)
diff --git
a/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
b/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
index 1f3943cf..5898ecff 100644
--- a/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/builder/JITContextTest.java
@@ -28,12 +28,12 @@ import org.apache.fury.Fury;
import org.apache.fury.FuryTestBase;
import org.apache.fury.config.CompatibleMode;
import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.resolver.MetaContext;
import org.apache.fury.serializer.Serializer;
import org.apache.fury.test.bean.BeanA;
import org.apache.fury.test.bean.BeanB;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git
a/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
b/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
index 1c527450..35f0be2c 100644
---
a/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
+++
b/java/fury-core/src/test/java/org/apache/fury/collection/MultiKeyWeakMapTest.java
@@ -22,8 +22,8 @@ package org.apache.fury.collection;
import java.lang.ref.Reference;
import java.lang.reflect.Field;
import java.util.Set;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.testng.annotations.Test;
public class MultiKeyWeakMapTest {
diff --git
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
b/java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
similarity index 52%
copy from
java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
copy to
java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
index c5765e19..a10226af 100644
---
a/java/benchmark/src/main/java/org/apache/fury/benchmark/state/ObjectType.java
+++ b/java/fury-core/src/test/java/org/apache/fury/logging/Slf4jLoggerTest.java
@@ -17,30 +17,23 @@
* under the License.
*/
-package org.apache.fury.benchmark.state;
+package org.apache.fury.logging;
-import org.apache.fury.benchmark.data.MediaContent;
-import org.apache.fury.benchmark.data.Sample;
-import org.apache.fury.benchmark.data.Struct;
+import org.testng.annotations.Test;
-public enum ObjectType {
- SAMPLE,
- MEDIA_CONTENT,
- STRUCT,
- STRUCT2;
+public class Slf4jLoggerTest {
- public static Object createObject(ObjectType objectType, boolean references)
{
- switch (objectType) {
- case SAMPLE:
- return new Sample().populate(references);
- case MEDIA_CONTENT:
- return new MediaContent().populate(references);
- case STRUCT:
- return Struct.create(false);
- case STRUCT2:
- return Struct.create(true);
- default:
- throw new UnsupportedOperationException(String.valueOf(objectType));
- }
+ @Test
+ public void testInfo() {
+ Slf4jLogger logger = new Slf4jLogger((Slf4jLoggerTest.class));
+ FuryLogger furyLogger = new FuryLogger((Slf4jLoggerTest.class));
+ logger.info("testInfo");
+ logger.info("testInfo {}", "placeHolder");
+ logger.warn("testInfo {}", "placeHolder");
+ logger.error("testInfo {}", "placeHolder", new Exception("test log"));
+ furyLogger.info("testInfo");
+ furyLogger.info("testInfo {}", "placeHolder");
+ furyLogger.warn("testInfo {}", "placeHolder");
+ furyLogger.error("testInfo {}", "placeHolder", new Exception("test log"));
}
}
diff --git
a/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
b/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
index 0ad7fd58..7179b390 100644
---
a/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
+++
b/java/fury-core/src/test/java/org/apache/fury/resolver/ClassResolverTest.java
@@ -48,6 +48,8 @@ import org.apache.fury.Fury;
import org.apache.fury.FuryTestBase;
import org.apache.fury.builder.Generated;
import org.apache.fury.config.Language;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.resolver.longlongpkg.C1;
@@ -62,8 +64,6 @@ import
org.apache.fury.serializer.collection.CollectionSerializers;
import org.apache.fury.serializer.collection.MapSerializers;
import org.apache.fury.test.bean.BeanB;
import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git
a/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
b/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
index d18588da..f00b640e 100644
--- a/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
+++ b/java/fury-core/src/test/java/org/apache/fury/util/PlatformTest.java
@@ -25,7 +25,8 @@ import static org.testng.Assert.assertTrue;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.testng.annotations.Test;
public class PlatformTest {
@@ -128,9 +129,7 @@ public class PlatformTest {
}
long duration = System.nanoTime() - startTime;
buffer.putLong(0, 1);
- if (LOG.isInfoEnabled()) {
- LOG.info("wrapDirectBuffer costs " + duration + "ns " + duration /
1000_000 + "ms\n");
- }
+ LOG.info("wrapDirectBuffer costs " + duration + "ns " + duration /
1000_000 + "ms\n");
}
{
for (int i = 0; i < nums; i++) {
@@ -142,9 +141,7 @@ public class PlatformTest {
}
long duration = System.nanoTime() - startTime;
buffer.putLong(0, 1);
- if (LOG.isInfoEnabled()) {
- LOG.info("wrap into buffer costs " + duration + "ns " + duration /
1000_000 + "ms\n");
- }
+ LOG.info("wrap into buffer costs " + duration + "ns " + duration /
1000_000 + "ms\n");
}
{
byte[] arr = new byte[32];
@@ -158,9 +155,7 @@ public class PlatformTest {
}
long duration = System.nanoTime() - startTime;
buf.putLong(0, 1);
- if (LOG.isInfoEnabled()) {
- LOG.info("ByteBuffer.wrap " + duration + "ns " + duration / 1000_000
+ "ms\n");
- }
+ LOG.info("ByteBuffer.wrap " + duration + "ns " + duration / 1000_000 +
"ms\n");
}
} finally {
Platform.freeMemory(address);
diff --git
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
index 376de3f8..62ff1fdb 100644
---
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
+++
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/ArrayEncoderBuilder.java
@@ -32,10 +32,10 @@ import org.apache.fury.codegen.ExpressionUtils;
import org.apache.fury.format.row.binary.BinaryArray;
import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/** Expression builder for building jit array encoder class. */
public class ArrayEncoderBuilder extends BaseBinaryEncoderBuilder {
@@ -106,7 +106,7 @@ public class ArrayEncoderBuilder extends
BaseBinaryEncoderBuilder {
long startTime = System.nanoTime();
String code = ctx.genCode();
long durationMs = (System.nanoTime() - startTime) / 1000_000;
- LOG.debug("Generate array codec for class {} take {} us", beanClass,
durationMs);
+ LOG.info("Generate array codec for class {} take {} us", beanClass,
durationMs);
return code;
}
diff --git
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
index 37507737..22b6f8a7 100644
---
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
+++
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/Encoders.java
@@ -41,11 +41,11 @@ import
org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
import org.apache.fury.format.type.DataTypes;
import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
/**
* Factory to create {@link Encoder}.
@@ -353,7 +353,7 @@ public class Encoders {
Set<TypeToken<?>> set1 = beanSet(tuple2.f0);
Set<TypeToken<?>> set2 = beanSet(tuple2.f1);
- LOG.debug("Find beans to load: {}, {}", set1, set2);
+ LOG.info("Find beans to load: {}, {}", set1, set2);
if (set1.isEmpty() && set2.isEmpty()) {
throw new IllegalArgumentException("can not find bean class.");
@@ -456,7 +456,7 @@ public class Encoders {
for (TypeToken<?> tt : set) {
keyToken = tt;
Encoders.loadOrGenRowCodecClass(getRawType(tt));
- LOG.debug("bean {} load finished", getRawType(tt));
+ LOG.info("bean {} load finished", getRawType(tt));
}
return keyToken;
}
@@ -525,7 +525,7 @@ public class Encoders {
public static Class<?> loadOrGenRowCodecClass(Class<?> beanClass) {
Set<Class<?>> classes = TypeUtils.listBeansRecursiveInclusive(beanClass);
- LOG.debug("Create RowCodec for classes {}", classes);
+ LOG.info("Create RowCodec for classes {}", classes);
CompileUnit[] compileUnits =
classes.stream()
.map(
@@ -543,7 +543,7 @@ public class Encoders {
private static <B> Class<?> loadOrGenArrayCodecClass(
TypeToken<? extends Collection> arrayCls, TypeToken<B> elementType) {
- LOG.debug("Create ArrayCodec for classes {}", elementType);
+ LOG.info("Create ArrayCodec for classes {}", elementType);
Class<?> cls = getRawType(elementType);
// class name prefix
String prefix = TypeInference.inferTypeName(arrayCls);
@@ -560,7 +560,7 @@ public class Encoders {
private static <K, V> Class<?> loadOrGenMapCodecClass(
TypeToken<? extends Map> mapCls, TypeToken<K> keyToken, TypeToken<V>
valueToken) {
- LOG.debug("Create MapCodec for classes {}, {}", keyToken, valueToken);
+ LOG.info("Create MapCodec for classes {}, {}", keyToken, valueToken);
boolean keyIsBean = TypeUtils.isBean(keyToken);
boolean valIsBean = TypeUtils.isBean(valueToken);
TypeToken<?> beanToken;
diff --git
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
index 1126181e..c61a4ee4 100644
---
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
+++
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/MapEncoderBuilder.java
@@ -34,10 +34,10 @@ import org.apache.fury.format.row.binary.BinaryArray;
import org.apache.fury.format.row.binary.BinaryMap;
import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.type.TypeUtils;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/** Expression builder for building jit map encoder class. */
@SuppressWarnings("UnstableApiUsage")
@@ -140,7 +140,7 @@ public class MapEncoderBuilder extends
BaseBinaryEncoderBuilder {
long startTime = System.nanoTime();
String code = ctx.genCode();
long durationMs = (System.nanoTime() - startTime) / 1000_000;
- LOG.debug("Generate map codec for class {} take {} us", beanClass,
durationMs);
+ LOG.info("Generate map codec for class {} take {} us", beanClass,
durationMs);
return code;
}
diff --git
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
index d35f3fe8..9c95b097 100644
---
a/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
+++
b/java/fury-format/src/main/java/org/apache/fury/format/encoder/RowEncoderBuilder.java
@@ -46,13 +46,13 @@ import org.apache.fury.format.row.binary.BinaryUtils;
import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
import org.apache.fury.format.type.DataTypes;
import org.apache.fury.format.type.TypeInference;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.type.Descriptor;
import org.apache.fury.type.TypeUtils;
import org.apache.fury.util.GraalvmSupport;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.StringUtils;
-import org.slf4j.Logger;
/** Expression builder for building jit row encoder class. */
@SuppressWarnings("UnstableApiUsage")
@@ -143,7 +143,7 @@ public class RowEncoderBuilder extends
BaseBinaryEncoderBuilder {
long startTime = System.nanoTime();
String code = ctx.genCode();
long durationMs = (System.nanoTime() - startTime) / 1000;
- LOG.debug("Generate codec for class {} take {} us", beanClass, durationMs);
+ LOG.info("Generate codec for class {} take {} us", beanClass, durationMs);
return code;
}
diff --git
a/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
b/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
index edab44de..c3f1646c 100644
---
a/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
+++
b/java/fury-format/src/test/java/org/apache/fury/format/CrossLanguageTest.java
@@ -63,11 +63,11 @@ import org.apache.fury.format.vectorized.ArrowTable;
import org.apache.fury.format.vectorized.ArrowUtils;
import org.apache.fury.format.vectorized.ArrowWriter;
import org.apache.fury.io.MemoryBufferOutputStream;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.serializer.BufferObject;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
index e133297e..4ddba406 100644
---
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
+++
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryArrayTest.java
@@ -22,8 +22,8 @@ package org.apache.fury.format.row.binary;
import java.util.Random;
import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
import org.apache.fury.format.type.DataTypes;
-import org.apache.fury.util.LoggerFactory;
-import org.slf4j.Logger;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -67,9 +67,7 @@ public class BinaryArrayTest {
}
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info("access array take " + duration + "ns, " + duration / 1000_000
+ " ms\n");
- }
+ LOG.info("access array take " + duration + "ns, " + duration / 1000_000 +
" ms\n");
for (int i = 0; i < iterNums; i++) {
for (int j = 0; j < length; j++) {
@@ -84,9 +82,7 @@ public class BinaryArrayTest {
}
}
duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info("access BinaryArray take " + duration + "ns, " + duration /
1000_000 + " ms\n");
- }
+ LOG.info("access BinaryArray take " + duration + "ns, " + duration /
1000_000 + " ms\n");
}
@Test
diff --git
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
index 5cf23c42..3cd0336b 100644
---
a/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
+++
b/java/fury-format/src/test/java/org/apache/fury/format/row/binary/BinaryRowTest.java
@@ -27,11 +27,11 @@ import org.apache.arrow.vector.types.pojo.Schema;
import org.apache.fury.format.row.binary.writer.BinaryArrayWriter;
import org.apache.fury.format.row.binary.writer.BinaryRowWriter;
import org.apache.fury.format.type.DataTypes;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
-import org.apache.fury.util.LoggerFactory;
import org.apache.fury.util.Platform;
-import org.slf4j.Logger;
import org.testng.annotations.Test;
public class BinaryRowTest {
@@ -104,9 +104,7 @@ public class BinaryRowTest {
}
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info("Array access offset take " + duration + "ns, " + duration /
1000_000 + " ms\n");
- }
+ LOG.info("Array access offset take " + duration + "ns, " + duration /
1000_000 + " ms\n");
int headerInBytes = 64;
// warm
@@ -125,9 +123,7 @@ public class BinaryRowTest {
}
}
duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info("Compute access offset take " + duration + "ns, " + duration /
1000_000 + " ms\n");
- }
+ LOG.info("Compute access offset take " + duration + "ns, " + duration /
1000_000 + " ms\n");
}
@Test
diff --git
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
index fb5c1e5f..b091df05 100644
---
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
+++
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/DeserializationBenchmark.java
@@ -35,11 +35,11 @@ import org.apache.fury.config.Language;
import org.apache.fury.format.encoder.Encoders;
import org.apache.fury.format.encoder.RowEncoder;
import org.apache.fury.format.row.binary.BinaryRow;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.test.bean.Foo;
-import org.apache.fury.util.LoggerFactory;
import org.nustaq.serialization.FSTConfiguration;
import org.objenesis.strategy.StdInstantiatorStrategy;
-import org.slf4j.Logger;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@@ -52,9 +52,7 @@ public class DeserializationBenchmark {
public void setArrSize() {
int defaultIterNums = 20000000;
iterNums = Integer.parseInt(System.getProperty("iterNums",
String.valueOf(defaultIterNums)));
- if (LOG.isInfoEnabled()) {
- LOG.info("iterNums: " + iterNums);
- }
+ LOG.info("iterNums: " + iterNums);
}
// mvn test
-Dtest=org.apache.fury.benchmark.DeserializationBenchmark#deserializationBenchmark
@@ -90,18 +88,16 @@ public class DeserializationBenchmark {
encoder.fromRow(row);
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "encoder decode\t take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n");
- }
+ LOG.info(
+ "encoder decode\t take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n");
}
private void testFury(Object obj) {
@@ -125,18 +121,16 @@ public class DeserializationBenchmark {
fury.deserialize(serializedBytes);
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "fury decode\t take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n");
- }
+ LOG.info(
+ "fury decode\t take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n");
}
private void testFst(Object obj) {
@@ -158,18 +152,16 @@ public class DeserializationBenchmark {
}
System.out.println(newObj);
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "fst\t take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n");
- }
+ LOG.info(
+ "fst\t take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n");
}
private void testKryo(Object obj) {
@@ -193,18 +185,16 @@ public class DeserializationBenchmark {
}
System.out.println(newObj);
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "kryo decode\t take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n");
- }
+ LOG.info(
+ "kryo decode\t take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n");
}
private void testJDK(Object data) throws Exception {
@@ -237,18 +227,16 @@ public class DeserializationBenchmark {
}
System.out.println(System.identityHashCode(((ArrayList) newObj).get(1)));
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "jdk\t {} take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n",
- bas.size());
- }
+ LOG.info(
+ "jdk\t {} take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n",
+ bas.size());
}
}
diff --git
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
index aa5031ca..56ac0f28 100644
---
a/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
+++
b/java/fury-testsuite/src/test/java/org/apache/fury/benchmark/SerializationBenchmark.java
@@ -28,12 +28,12 @@ import org.apache.fury.Fury;
import org.apache.fury.config.Language;
import org.apache.fury.format.encoder.Encoders;
import org.apache.fury.format.encoder.RowEncoder;
+import org.apache.fury.logging.Logger;
+import org.apache.fury.logging.LoggerFactory;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
import org.apache.fury.test.bean.Foo;
-import org.apache.fury.util.LoggerFactory;
import org.nustaq.serialization.FSTConfiguration;
-import org.slf4j.Logger;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@@ -46,9 +46,7 @@ public class SerializationBenchmark {
public void setArrSize() {
int defaultIterNums = 20000000;
iterNums = Integer.parseInt(System.getProperty("iterNums",
String.valueOf(defaultIterNums)));
- if (LOG.isInfoEnabled()) {
- LOG.info("iterNums: " + iterNums);
- }
+ LOG.info("iterNums: " + iterNums);
}
// mvn test -DargLine="-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions
-XX:+PrintInlining"
@@ -86,18 +84,16 @@ public class SerializationBenchmark {
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "encoder\t take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n");
- }
+ LOG.info(
+ "encoder\t take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n");
}
private void testFury(Object obj) {
@@ -121,19 +117,17 @@ public class SerializationBenchmark {
fury.writeRef(buffer, obj);
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "fury\t size {} take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n",
- buffer.writerIndex());
- }
+ LOG.info(
+ "fury\t size {} take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n",
+ buffer.writerIndex());
}
private void testFst(Object obj) {
@@ -154,19 +148,17 @@ public class SerializationBenchmark {
bytes = fstConf.asByteArray(obj);
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "fst\t size {} take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n",
- bytes.length);
- }
+ LOG.info(
+ "fst\t size {} take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n",
+ bytes.length);
}
private void testKryo(Object obj) {
@@ -188,19 +180,17 @@ public class SerializationBenchmark {
long duration = System.nanoTime() - startTime;
Output output = new Output(64, Integer.MAX_VALUE);
kryo.writeObject(output, obj);
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "kryo\t {} take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n",
- output.position());
- }
+ LOG.info(
+ "kryo\t {} take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n",
+ output.position());
}
private void testJDK(Object data) {
@@ -228,18 +218,16 @@ public class SerializationBenchmark {
}
}
long duration = System.nanoTime() - startTime;
- if (LOG.isInfoEnabled()) {
- LOG.info(
- "jdk\t {} take "
- + duration
- + " ns, "
- + duration / 1000_000
- + "ms. "
- + (double) duration / iterNums
- + "/ns, "
- + (double) duration / iterNums / 1000_000
- + "/ms\n",
- bas.size());
- }
+ LOG.info(
+ "jdk\t {} take "
+ + duration
+ + " ns, "
+ + duration / 1000_000
+ + "ms. "
+ + (double) duration / iterNums
+ + "/ns, "
+ + (double) duration / iterNums / 1000_000
+ + "/ms\n",
+ bas.size());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]