Skip to content

Commit 7ff09e2

Browse files
authored
refactor: Amazon Q Transform service utils #4609
Problem Monolith files are making adding new features difficult without separation of concerns. Solution Refactor our monlithic file into smaller, semantically digestible files
1 parent b4fe4b4 commit 7ff09e2

File tree

15 files changed

+553
-532
lines changed

15 files changed

+553
-532
lines changed

packages/core/src/amazonqGumby/activation.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55

66
import * as vscode from 'vscode'
77
import { Commands } from '../shared/vscode/commands2'
8-
import { TransformationHubViewProvider } from '../codewhisperer/service/transformationHubViewProvider'
8+
import { TransformationHubViewProvider } from '../codewhisperer/service/transformByQ/transformationHubViewProvider'
99
import { ExtContext } from '../shared/extensions'
1010
import { stopTransformByQ } from '../codewhisperer/commands/startTransformByQ'
1111
import { transformByQState } from '../codewhisperer/models/model'
1212
import * as CodeWhispererConstants from '../codewhisperer/models/constants'
13-
import { ProposedTransformationExplorer } from '../codewhisperer/service/transformationResultsViewProvider'
13+
import { ProposedTransformationExplorer } from '../codewhisperer/service/transformByQ/transformationResultsViewProvider'
1414
import { codeTransformTelemetryState } from './telemetry/codeTransformTelemetryState'
1515
import { telemetry } from '../shared/telemetry/telemetry'
1616
import { CancelActionPositions } from './telemetry/codeTransformTelemetry'
1717
import { AuthUtil } from '../codewhisperer/util/authUtil'
18-
import { validateAndLogProjectDetails } from '../codewhisperer/service/transformByQHandler'
18+
import { validateAndLogProjectDetails } from '../codewhisperer/service/transformByQ/transformProjectValidationHandler'
1919

2020
export async function activate(context: ExtContext) {
2121
void vscode.commands.executeCommand('setContext', 'gumby.wasQCodeTransformationUsed', false)

packages/core/src/amazonqGumby/chat/controller/controller.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
* This class is responsible for responding to UI events by calling
66
* the Gumby extension.
77
*/
8-
8+
import fs from 'fs'
9+
import path from 'path'
10+
import * as vscode from 'vscode'
911
import { GumbyNamedMessages, Messenger } from './messenger/messenger'
1012
import { AuthController } from '../../../amazonq/auth/controller'
1113
import { ChatSessionManager } from '../storages/chatSession'
12-
import * as vscode from 'vscode'
1314
import { ConversationState, Session } from '../session/session'
1415
import { getLogger } from '../../../shared/logger'
1516
import { featureName } from '../../models/constants'
@@ -22,17 +23,15 @@ import {
2223
stopTransformByQ,
2324
validateCanCompileProject,
2425
} from '../../../codewhisperer/commands/startTransformByQ'
25-
import { JDKVersion, transformByQState } from '../../../codewhisperer/models/model'
26+
import { JDKVersion, TransformationCandidateProject, transformByQState } from '../../../codewhisperer/models/model'
2627
import { JavaHomeNotSetError, NoJavaProjectsFoundError, NoMavenJavaProjectsFoundError } from '../../errors'
2728
import MessengerUtils, { ButtonActions, GumbyCommands } from './messenger/messengerUtils'
28-
import { TransformationCandidateProject, getAuthType } from '../../../codewhisperer/service/transformByQHandler'
2929
import { CancelActionPositions } from '../../telemetry/codeTransformTelemetry'
30-
import fs from 'fs'
31-
import path from 'path'
3230
import { openUrl } from '../../../shared/utilities/vsCodeUtils'
3331
import { telemetry } from '../../../shared/telemetry/telemetry'
3432
import { MetadataResult } from '../../../shared/telemetry/telemetryClient'
3533
import { codeTransformTelemetryState } from '../../telemetry/codeTransformTelemetryState'
34+
import { getAuthType } from '../../../codewhisperer/service/transformByQ/transformApiHandler'
3635

3736
// These events can be interactions within the chat,
3837
// or elsewhere in the IDE

packages/core/src/amazonqGumby/chat/controller/messenger/messenger.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import { AuthFollowUpType, expiredText, enableQText, reauthenticateText } from '../../../../amazonq/auth/model'
1212
import { ChatItemType } from '../../../../amazonqFeatureDev/models'
13-
import { JDKVersion } from '../../../../codewhisperer/models/model'
13+
import { JDKVersion, TransformationCandidateProject } from '../../../../codewhisperer/models/model'
1414
import { FeatureAuthState } from '../../../../codewhisperer/util/authUtil'
1515
import {
1616
AppToWebViewMessageDispatcher,
@@ -26,7 +26,6 @@ import {
2626
} from '../../views/connector/connector'
2727
import { ChatItemButton, ChatItemFormItem } from '@aws/mynah-ui/dist/static'
2828
import MessengerUtils, { ButtonActions } from './messengerUtils'
29-
import { TransformationCandidateProject } from '../../../../codewhisperer/service/transformByQHandler'
3029

3130
export type StaticTextResponseType =
3231
| 'transform'

packages/core/src/amazonqGumby/chat/session/session.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import { TransformationCandidateProject } from '../../../codewhisperer/service/transformByQHandler'
6+
import { TransformationCandidateProject } from '../../../codewhisperer/models/model'
77

88
export enum ConversationState {
99
IDLE,

packages/core/src/codewhisperer/commands/startTransformByQ.ts

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as vscode from 'vscode'
77
import * as nls from 'vscode-nls'
88
import * as fs from 'fs'
99
import * as os from 'os'
10+
import path from 'path'
1011
import { getLogger } from '../../shared/logger'
1112
import * as CodeWhispererConstants from '../models/constants'
1213
import {
@@ -15,28 +16,22 @@ import {
1516
TransformByQReviewStatus,
1617
JDKVersion,
1718
sessionPlanProgress,
19+
FolderInfo,
20+
TransformationCandidateProject,
1821
} from '../models/model'
19-
import { convertToTimeString, convertDateToTimestamp } from '../../shared/utilities/textUtilities'
22+
import { convertToTimeString, convertDateToTimestamp, encodeHTML } from '../../shared/utilities/textUtilities'
2023
import {
21-
throwIfCancelled,
24+
getTransformationPlan,
25+
pollTransformationJob,
2226
startJob,
2327
stopJob,
28+
throwIfCancelled,
2429
uploadPayload,
25-
getTransformationPlan,
2630
zipCode,
27-
pollTransformationJob,
28-
getOpenProjects,
29-
getVersionData,
30-
validateOpenProjects,
31-
writeLogs,
32-
TransformationCandidateProject,
33-
getDependenciesFolderInfo,
34-
FolderInfo,
35-
prepareProjectDependencies,
36-
} from '../service/transformByQHandler'
37-
import path from 'path'
38-
import { sleep } from '../../shared/utilities/timeoutUtils'
39-
import { encodeHTML, getStringHash } from '../../shared/utilities/textUtilities'
31+
} from '../service/transformByQ/transformApiHandler'
32+
import { getOpenProjects, validateOpenProjects } from '../service/transformByQ/transformProjectValidationHandler'
33+
import { getVersionData, prepareProjectDependencies } from '../service/transformByQ/transformMavenHandler'
34+
import { getStringHash } from '../../shared/utilities/textUtilities'
4035
import {
4136
CodeTransformCancelSrcComponents,
4237
CodeTransformJavaSourceVersionsAllowed,
@@ -55,6 +50,8 @@ import { submitFeedback } from '../../feedback/vue/submitFeedback'
5550
import { placeholder } from '../../shared/vscode/commands2'
5651
import { JavaHomeNotSetError } from '../../amazonqGumby/errors'
5752
import { ChatSessionManager } from '../../amazonqGumby/chat/storages/chatSession'
53+
import { getDependenciesFolderInfo, writeLogs } from '../service/transformByQ/transformFileHandler'
54+
import { sleep } from '../../shared/utilities/timeoutUtils'
5855

5956
const localize = nls.loadMessageBundle()
6057
export const stopTransformByQButton = localize('aws.codewhisperer.stop.transform.by.q', 'Stop')

packages/core/src/codewhisperer/models/model.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import globals from '../../shared/extensionGlobals'
1616
import { autoTriggerEnabledKey } from './constants'
1717
import { get, set } from '../util/commonUtil'
1818
import { ChatControllerEventEmitters } from '../../amazonqGumby/chat/controller/controller'
19-
import { FolderInfo } from '../service/transformByQHandler'
2019
import { TransformationSteps } from '../client/codewhispereruserclient'
2120

2221
// unavoidable global variables
@@ -655,3 +654,14 @@ export enum Cloud9AccessState {
655654
RequestedAccess,
656655
HasAccess,
657656
}
657+
658+
export interface TransformationCandidateProject {
659+
name: string
660+
path: string
661+
JDKVersion?: JDKVersion
662+
}
663+
664+
export interface FolderInfo {
665+
path: string
666+
name: string
667+
}

0 commit comments

Comments
 (0)