This is an automated email from the ASF dual-hosted git repository. hepin pushed a commit to branch classContext in repository https://gitbox.apache.org/repos/asf/pekko.git
commit cb7886dca933c2f2cb64d3100325d6c5ca238906 Author: He-Pin <[email protected]> AuthorDate: Mon Sep 22 12:46:39 2025 +0800 chore: Rewrite ClassContext with scala --- .../pekko/actor/typed/internal/LoggerClass.scala | 12 +++++-- .../java/org/apache/pekko/util/ClassContext.java | 41 ---------------------- 2 files changed, 10 insertions(+), 43 deletions(-) diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/LoggerClass.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/LoggerClass.scala index 555c738550..c68a16b376 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/LoggerClass.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/internal/LoggerClass.scala @@ -17,7 +17,7 @@ import scala.util.control.NonFatal import org.apache.pekko import pekko.annotation.InternalApi -import pekko.util.{ ClassContext, OptionVal } +import pekko.util.OptionVal /** * INTERNAL API @@ -26,6 +26,14 @@ import pekko.util.{ ClassContext, OptionVal } private[pekko] object LoggerClass { private val defaultPrefixesToSkip = List("scala.runtime", "org.apache.pekko.actor.typed.internal") + private val OPTIONS: java.util.Set[StackWalker.Option] = java.util.Set.of( + StackWalker.Option.RETAIN_CLASS_REFERENCE, StackWalker.Option.SHOW_HIDDEN_FRAMES) + private val CLASS_STACK_WALKER: java.util.function.Function[ + java.util.stream.Stream[StackWalker.StackFrame], Array[Class[_]]] = + (frames: java.util.stream.Stream[StackWalker.StackFrame]) => + frames.map(frame => frame.getDeclaringClass).toArray(new Array[Class[_]](_)) + + private def getClassStack: Array[Class[_]] = StackWalker.getInstance(OPTIONS).walk(CLASS_STACK_WALKER) /** * Try to extract a logger class from the call stack, if not possible the provided default is used @@ -43,7 +51,7 @@ private[pekko] object LoggerClass { loop(additionalPrefixesToSkip ::: defaultPrefixesToSkip) } - val trace = ClassContext.getClassStack + val trace = getClassStack var suitableClass: OptionVal[Class[_]] = OptionVal.None var idx = 1 // skip this method/class and right away while (suitableClass.isEmpty && idx < trace.length) { diff --git a/actor/src/main/java/org/apache/pekko/util/ClassContext.java b/actor/src/main/java/org/apache/pekko/util/ClassContext.java deleted file mode 100644 index d47d638ae5..0000000000 --- a/actor/src/main/java/org/apache/pekko/util/ClassContext.java +++ /dev/null @@ -1,41 +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.pekko.util; - -import java.util.Set; -import java.util.function.Function; -import java.util.stream.Stream; -import org.apache.pekko.annotation.InternalApi; - -/** INTERNAL API */ -@InternalApi -public final class ClassContext { - private ClassContext() { - throw new UnsupportedOperationException("Cannot instantiate utility class"); - } - - private static final Set<StackWalker.Option> OPTIONS = - Set.of(StackWalker.Option.RETAIN_CLASS_REFERENCE, StackWalker.Option.SHOW_HIDDEN_FRAMES); - - private static final Function<Stream<StackWalker.StackFrame>, Class<?>[]> CLASS_STACK_WALKER = - frames -> frames.map(StackWalker.StackFrame::getDeclaringClass).toArray(Class<?>[]::new); - - public static Class<?>[] getClassStack() { - return StackWalker.getInstance(OPTIONS).walk(CLASS_STACK_WALKER); - } -} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
