Skip to content

Commit d531bc6

Browse files
Convert SetModeledMethodsMessage to include multiple modeled methods
1 parent a662533 commit d531bc6

File tree

13 files changed

+202
-173
lines changed

13 files changed

+202
-173
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ interface SetMethodsMessage {
507507

508508
interface SetModeledMethodsMessage {
509509
t: "setModeledMethods";
510-
methods: Record<string, ModeledMethod>;
510+
methods: Record<string, ModeledMethod[]>;
511511
}
512512

513513
interface SetModifiedMethodsMessage {

extensions/ql-vscode/src/model-editor/method.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ export function getArgumentsList(methodParameters: string): string[] {
6868

6969
export function canMethodBeModeled(
7070
method: Method,
71-
modeledMethod: ModeledMethod | undefined,
71+
modeledMethods: ModeledMethod[],
7272
methodIsUnsaved: boolean,
7373
): boolean {
7474
return (
7575
!method.supported ||
76-
(modeledMethod && modeledMethod?.type !== "none") ||
76+
modeledMethods.some((modeledMethod) => modeledMethod.type !== "none") ||
7777
methodIsUnsaved
7878
);
7979
}

extensions/ql-vscode/src/model-editor/model-editor-view.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ import { AutoModeler } from "./auto-modeler";
4343
import { telemetryListener } from "../common/vscode/telemetry";
4444
import { ModelingStore } from "./modeling-store";
4545
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
46-
import {
47-
convertFromLegacyModeledMethod,
48-
convertToLegacyModeledMethods,
49-
} from "./shared/modeled-methods-legacy";
46+
import { convertFromLegacyModeledMethod } from "./shared/modeled-methods-legacy";
5047

5148
export class ModelEditorView extends AbstractWebview<
5249
ToModelEditorMessage,
@@ -640,7 +637,7 @@ export class ModelEditorView extends AbstractWebview<
640637
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
641638
await this.postMessage({
642639
t: "setModeledMethods",
643-
methods: convertToLegacyModeledMethods(event.modeledMethods),
640+
methods: event.modeledMethods,
644641
});
645642
}
646643
}),

extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx

Lines changed: 71 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -146,67 +146,77 @@ LibraryRow.args = {
146146
],
147147
},
148148
],
149-
modeledMethods: {
150-
"org.sql2o.Sql2o#Sql2o(String)": {
151-
type: "sink",
152-
input: "Argument[0]",
153-
output: "",
154-
kind: "jndi-injection",
155-
provenance: "df-generated",
156-
signature: "org.sql2o.Sql2o#Sql2o(String)",
157-
packageName: "org.sql2o",
158-
typeName: "Sql2o",
159-
methodName: "Sql2o",
160-
methodParameters: "(String)",
161-
},
162-
"org.sql2o.Connection#createQuery(String)": {
163-
type: "summary",
164-
input: "Argument[this]",
165-
output: "ReturnValue",
166-
kind: "taint",
167-
provenance: "df-manual",
168-
signature: "org.sql2o.Connection#createQuery(String)",
169-
packageName: "org.sql2o",
170-
typeName: "Connection",
171-
methodName: "createQuery",
172-
methodParameters: "(String)",
173-
},
174-
"org.sql2o.Sql2o#open()": {
175-
type: "summary",
176-
input: "Argument[this]",
177-
output: "ReturnValue",
178-
kind: "taint",
179-
provenance: "manual",
180-
signature: "org.sql2o.Sql2o#open()",
181-
packageName: "org.sql2o",
182-
typeName: "Sql2o",
183-
methodName: "open",
184-
methodParameters: "()",
185-
},
186-
"org.sql2o.Query#executeScalar(Class)": {
187-
type: "neutral",
188-
input: "",
189-
output: "",
190-
kind: "",
191-
provenance: "df-generated",
192-
signature: "org.sql2o.Query#executeScalar(Class)",
193-
packageName: "org.sql2o",
194-
typeName: "Query",
195-
methodName: "executeScalar",
196-
methodParameters: "(Class)",
197-
},
198-
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
199-
type: "neutral",
200-
input: "",
201-
output: "",
202-
kind: "",
203-
provenance: "df-generated",
204-
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
205-
packageName: "org.sql2o",
206-
typeName: "Sql2o",
207-
methodName: "Sql2o",
208-
methodParameters: "(String,String,String)",
209-
},
149+
modeledMethodsMap: {
150+
"org.sql2o.Sql2o#Sql2o(String)": [
151+
{
152+
type: "sink",
153+
input: "Argument[0]",
154+
output: "",
155+
kind: "jndi-injection",
156+
provenance: "df-generated",
157+
signature: "org.sql2o.Sql2o#Sql2o(String)",
158+
packageName: "org.sql2o",
159+
typeName: "Sql2o",
160+
methodName: "Sql2o",
161+
methodParameters: "(String)",
162+
},
163+
],
164+
"org.sql2o.Connection#createQuery(String)": [
165+
{
166+
type: "summary",
167+
input: "Argument[this]",
168+
output: "ReturnValue",
169+
kind: "taint",
170+
provenance: "df-manual",
171+
signature: "org.sql2o.Connection#createQuery(String)",
172+
packageName: "org.sql2o",
173+
typeName: "Connection",
174+
methodName: "createQuery",
175+
methodParameters: "(String)",
176+
},
177+
],
178+
"org.sql2o.Sql2o#open()": [
179+
{
180+
type: "summary",
181+
input: "Argument[this]",
182+
output: "ReturnValue",
183+
kind: "taint",
184+
provenance: "manual",
185+
signature: "org.sql2o.Sql2o#open()",
186+
packageName: "org.sql2o",
187+
typeName: "Sql2o",
188+
methodName: "open",
189+
methodParameters: "()",
190+
},
191+
],
192+
"org.sql2o.Query#executeScalar(Class)": [
193+
{
194+
type: "neutral",
195+
input: "",
196+
output: "",
197+
kind: "",
198+
provenance: "df-generated",
199+
signature: "org.sql2o.Query#executeScalar(Class)",
200+
packageName: "org.sql2o",
201+
typeName: "Query",
202+
methodName: "executeScalar",
203+
methodParameters: "(Class)",
204+
},
205+
],
206+
"org.sql2o.Sql2o#Sql2o(String,String,String)": [
207+
{
208+
type: "neutral",
209+
input: "",
210+
output: "",
211+
kind: "",
212+
provenance: "df-generated",
213+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
214+
packageName: "org.sql2o",
215+
typeName: "Sql2o",
216+
methodName: "Sql2o",
217+
methodParameters: "(String,String,String)",
218+
},
219+
],
210220
},
211221
modifiedSignatures: new Set(["org.sql2o.Sql2o#Sql2o(String)"]),
212222
inProgressMethods: new InProgressMethods(),

extensions/ql-vscode/src/stories/model-editor/ModelEditor.stories.tsx

Lines changed: 70 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -216,65 +216,75 @@ ModelEditor.args = {
216216
},
217217
],
218218
initialModeledMethods: {
219-
"org.sql2o.Sql2o#Sql2o(String)": {
220-
type: "sink",
221-
input: "Argument[0]",
222-
output: "",
223-
kind: "jndi-injection",
224-
provenance: "df-generated",
225-
signature: "org.sql2o.Sql2o#Sql2o(String)",
226-
packageName: "org.sql2o",
227-
typeName: "Sql2o",
228-
methodName: "Sql2o",
229-
methodParameters: "(String)",
230-
},
231-
"org.sql2o.Connection#createQuery(String)": {
232-
type: "summary",
233-
input: "Argument[this]",
234-
output: "ReturnValue",
235-
kind: "taint",
236-
provenance: "df-manual",
237-
signature: "org.sql2o.Connection#createQuery(String)",
238-
packageName: "org.sql2o",
239-
typeName: "Connection",
240-
methodName: "createQuery",
241-
methodParameters: "(String)",
242-
},
243-
"org.sql2o.Sql2o#open()": {
244-
type: "summary",
245-
input: "Argument[this]",
246-
output: "ReturnValue",
247-
kind: "taint",
248-
provenance: "manual",
249-
signature: "org.sql2o.Sql2o#open()",
250-
packageName: "org.sql2o",
251-
typeName: "Sql2o",
252-
methodName: "open",
253-
methodParameters: "()",
254-
},
255-
"org.sql2o.Query#executeScalar(Class)": {
256-
type: "neutral",
257-
input: "",
258-
output: "",
259-
kind: "",
260-
provenance: "df-generated",
261-
signature: "org.sql2o.Query#executeScalar(Class)",
262-
packageName: "org.sql2o",
263-
typeName: "Query",
264-
methodName: "executeScalar",
265-
methodParameters: "(Class)",
266-
},
267-
"org.sql2o.Sql2o#Sql2o(String,String,String)": {
268-
type: "neutral",
269-
input: "",
270-
output: "",
271-
kind: "",
272-
provenance: "df-generated",
273-
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
274-
packageName: "org.sql2o",
275-
typeName: "Sql2o",
276-
methodName: "Sql2o",
277-
methodParameters: "(String,String,String)",
278-
},
219+
"org.sql2o.Sql2o#Sql2o(String)": [
220+
{
221+
type: "sink",
222+
input: "Argument[0]",
223+
output: "",
224+
kind: "jndi-injection",
225+
provenance: "df-generated",
226+
signature: "org.sql2o.Sql2o#Sql2o(String)",
227+
packageName: "org.sql2o",
228+
typeName: "Sql2o",
229+
methodName: "Sql2o",
230+
methodParameters: "(String)",
231+
},
232+
],
233+
"org.sql2o.Connection#createQuery(String)": [
234+
{
235+
type: "summary",
236+
input: "Argument[this]",
237+
output: "ReturnValue",
238+
kind: "taint",
239+
provenance: "df-manual",
240+
signature: "org.sql2o.Connection#createQuery(String)",
241+
packageName: "org.sql2o",
242+
typeName: "Connection",
243+
methodName: "createQuery",
244+
methodParameters: "(String)",
245+
},
246+
],
247+
"org.sql2o.Sql2o#open()": [
248+
{
249+
type: "summary",
250+
input: "Argument[this]",
251+
output: "ReturnValue",
252+
kind: "taint",
253+
provenance: "manual",
254+
signature: "org.sql2o.Sql2o#open()",
255+
packageName: "org.sql2o",
256+
typeName: "Sql2o",
257+
methodName: "open",
258+
methodParameters: "()",
259+
},
260+
],
261+
"org.sql2o.Query#executeScalar(Class)": [
262+
{
263+
type: "neutral",
264+
input: "",
265+
output: "",
266+
kind: "",
267+
provenance: "df-generated",
268+
signature: "org.sql2o.Query#executeScalar(Class)",
269+
packageName: "org.sql2o",
270+
typeName: "Query",
271+
methodName: "executeScalar",
272+
methodParameters: "(Class)",
273+
},
274+
],
275+
"org.sql2o.Sql2o#Sql2o(String,String,String)": [
276+
{
277+
type: "neutral",
278+
input: "",
279+
output: "",
280+
kind: "",
281+
provenance: "df-generated",
282+
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
283+
packageName: "org.sql2o",
284+
typeName: "Sql2o",
285+
methodName: "Sql2o",
286+
methodParameters: "(String,String,String)",
287+
},
288+
],
279289
},
280290
};

extensions/ql-vscode/src/view/method-modeling/MethodModelingView.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,13 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
8989
return <NoMethodSelected />;
9090
}
9191

92-
if (!canMethodBeModeled(method, modeledMethod, isMethodModified)) {
92+
if (
93+
!canMethodBeModeled(
94+
method,
95+
convertFromLegacyModeledMethod(modeledMethod),
96+
isMethodModified,
97+
)
98+
) {
9399
return <MethodAlreadyModeled />;
94100
}
95101

extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export type LibraryRowProps = {
7171
title: string;
7272
libraryVersion?: string;
7373
methods: Method[];
74-
modeledMethods: Record<string, ModeledMethod>;
74+
modeledMethodsMap: Record<string, ModeledMethod[]>;
7575
modifiedSignatures: Set<string>;
7676
inProgressMethods: InProgressMethods;
7777
viewState: ModelEditorViewState;
@@ -92,7 +92,7 @@ export const LibraryRow = ({
9292
title,
9393
libraryVersion,
9494
methods,
95-
modeledMethods,
95+
modeledMethodsMap: modeledMethods,
9696
modifiedSignatures,
9797
inProgressMethods,
9898
viewState,
@@ -231,7 +231,7 @@ export const LibraryRow = ({
231231
<ModeledMethodDataGrid
232232
packageName={title}
233233
methods={methods}
234-
modeledMethods={modeledMethods}
234+
modeledMethodsMap={modeledMethods}
235235
modifiedSignatures={modifiedSignatures}
236236
inProgressMethods={inProgressMethods}
237237
viewState={viewState}

extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ const ButtonsContainer = styled.div`
7474
type Props = {
7575
initialViewState?: ModelEditorViewState;
7676
initialMethods?: Method[];
77-
initialModeledMethods?: Record<string, ModeledMethod>;
77+
initialModeledMethods?: Record<string, ModeledMethod[]>;
7878
initialHideModeledMethods?: boolean;
7979
};
8080

@@ -113,7 +113,7 @@ export function ModelEditor({
113113
}, [hideModeledMethods]);
114114

115115
const [modeledMethods, setModeledMethods] = useState<
116-
Record<string, ModeledMethod>
116+
Record<string, ModeledMethod[]>
117117
>(initialModeledMethods);
118118

119119
useEffect(() => {
@@ -329,7 +329,7 @@ export function ModelEditor({
329329
</ButtonsContainer>
330330
<ModeledMethodsList
331331
methods={methods}
332-
modeledMethods={modeledMethods}
332+
modeledMethodsMap={modeledMethods}
333333
modifiedSignatures={modifiedSignatures}
334334
inProgressMethods={inProgressMethods}
335335
viewState={viewState}

0 commit comments

Comments
 (0)