You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "gnodet (via GitHub)" <gi...@apache.org> on 2026/06/29 14:46:19 UTC

[PR] chore: extract McpFacade from CamelMonitor to reduce God class [camel]

gnodet opened a new pull request, #24319:
URL: https://github.com/apache/camel/pull/24319

   ## Summary
   
   _Claude Code on behalf of Guillaume Nodet_
   
   Extracts ~48 MCP-facing accessor methods (~650 lines) from `CamelMonitor.java` into a new `McpFacade` class. This is **step 1** of the CamelMonitor decomposition plan ([tracking gist](https://gist.github.com/gnodet/8152a5c6b56ee80166895391f5d11b63)).
   
   - **New `McpFacade.java`**: Contains all MCP accessor, navigation, data, and control methods; `TAB_NAMES`/`MORE_TAB_NAMES` constants; `PendingKey` record; and `parseKey()` method
   - **New `MonitorBridge` callback interface**: Decouples `McpFacade` from `CamelMonitor` internals (tab handling, rendering, process control)
   - **`AtomicReference<TapeRecorder>`**: Thread-safe sharing between the monitor event loop and MCP facade
   - **`TuiMcpServer` updated**: Now depends only on `McpFacade`, not the full `CamelMonitor`
   - **`CamelMonitor` reduced**: From 3,200 to ~2,600 lines (638 lines removed)
   - **`CamelMonitorParseKeyTest` updated**: References moved `McpFacade.parseKey()` method
   
   This is a **pure refactor** — zero behavior change. All 260 tests pass.
   
   ## Test plan
   
   - [x] `mvn formatter:format impsort:sort` — 1 file formatted, 2 imports sorted
   - [x] `mvn compile` — compilation succeeds with only pre-existing deprecation warnings
   - [x] `mvn test -pl dsl/camel-jbang/camel-jbang-plugin-tui` — all 260 tests pass (0 failures, 0 errors)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] chore: decompose CamelMonitor God class into focused helpers [camel]

Posted by "gnodet (via GitHub)" <gi...@apache.org>.
gnodet merged PR #24319:
URL: https://github.com/apache/camel/pull/24319


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] chore: decompose CamelMonitor God class into focused helpers [camel]

Posted by "gnodet (via GitHub)" <gi...@apache.org>.
gnodet commented on code in PR #24319:
URL: https://github.com/apache/camel/pull/24319#discussion_r3494134221


##########
dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DataRefreshService.java:
##########
@@ -0,0 +1,666 @@
+/*
+ * 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.camel.dsl.jbang.core.commands.tui;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import dev.tamboui.tui.TuiRunner;
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.PathUtils;
+import org.apache.camel.util.json.JsonArray;
+import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
+
+/**
+ * Manages all data refresh logic for the TUI monitor: integration scanning, infra services, traces, spans, errors, and
+ * history data.
+ * <p>
+ * Extracted from {@link CamelMonitor} to reduce class size and isolate data-loading concerns from event handling and
+ * rendering.
+ */
+class DataRefreshService {
+

Review Comment:
   _Claude Code on behalf of Guillaume Nodet_
   
   Good catch — fixed in fd68d64. Removed the duplicated `TAB_OVERVIEW` constant from both `DataRefreshService` and `McpFacade`, now referencing `TabRegistry.TAB_OVERVIEW` directly.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] chore: extract McpFacade from CamelMonitor to reduce God class [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #24319:
URL: https://github.com/apache/camel/pull/24319#issuecomment-4833846500

   :star2: Thank you for your contribution to the Apache Camel project! :star2:
     :robot: CI automation will test this PR automatically.
   
     :camel: Apache Camel Committers, please review the following items:
   
     * First-time contributors **require MANUAL approval** for the GitHub Actions to run
     * You can use the command `/component-test (camel-)component-name1 (camel-)component-name2..` to request a test from the test bot although they are normally detected and executed by CI.
     * You can label PRs using `skip-tests` and `test-dependents` to fine-tune the checks executed by this PR.
     * Build and test logs are available in the summary page. **Only** [Apache Camel committers](https://camel.apache.org/community/team/#committers) have access to the summary.
     
     :warning: Be careful when sharing logs. Review their contents before sharing them publicly.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] chore: decompose CamelMonitor God class into focused helpers [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus commented on code in PR #24319:
URL: https://github.com/apache/camel/pull/24319#discussion_r3493744212


##########
dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/DataRefreshService.java:
##########
@@ -0,0 +1,666 @@
+/*
+ * 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.camel.dsl.jbang.core.commands.tui;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import dev.tamboui.tui.TuiRunner;
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.PathUtils;
+import org.apache.camel.util.json.JsonArray;
+import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
+
+/**
+ * Manages all data refresh logic for the TUI monitor: integration scanning, infra services, traces, spans, errors, and
+ * history data.
+ * <p>
+ * Extracted from {@link CamelMonitor} to reduce class size and isolate data-loading concerns from event handling and
+ * rendering.
+ */
+class DataRefreshService {
+

Review Comment:
   Nit: this constant is duplicated in `McpFacade` and here. Since all three classes are in the same package, referencing `TabRegistry.TAB_OVERVIEW` directly would avoid drift if tab order ever changes.
   ```suggestion
       private static final int TAB_OVERVIEW = TabRegistry.TAB_OVERVIEW;
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] chore: extract McpFacade from CamelMonitor to reduce God class [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #24319:
URL: https://github.com/apache/camel/pull/24319#issuecomment-4833989253

   <!-- ci-tested-modules -->
   :test_tube: **CI tested the following changed modules:**
   
   - `dsl/camel-jbang/camel-jbang-plugin-tui`
   
   <details><summary>All tested modules (2 modules)</summary>
   
   - Camel :: JBang :: Plugin :: TUI
   - Camel :: Launcher :: Container
   
   </details>
   
   ---
   :gear: [View full build and test results](https://github.com/apache/camel/actions/runs/28380631309)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org