Skip to content

Commit c8f13b2

Browse files
Merge pull request #20 from tech-beeline/1.0.4
1.0.4
2 parents 3514bdf + 06c023e commit c8f13b2

20 files changed

Lines changed: 598 additions & 504 deletions

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The extension includes:
1212

1313
## Prerequisites
1414

15-
- **Java 17+** ([download](https://java.com/en/download/)) - required for the language server
15+
- **Java 17+** ([download](https://dev.java/download)) - required for the language server
1616
- Workspace containing model files with `.dsl` extension
1717
- Support for multiple workspaces and `!include` files
1818

@@ -78,6 +78,7 @@ Export diagram to **drawio** and **svg** formats
7878
| `c4.languageserver.logs.enabled` | `true`/`false` | `false` | Enable language server logging to `c4-language-server.log` |
7979
| `c4.decorations.enabled` | `off`, `onChange`, `onSave` | `onChange` | Text decoration timing |
8080
| `c4.SSL\TLS.disabled` | `true`/`false` | `false` | Disable SSL/TLS verification |
81+
| `c4.beeline.telemetry.disabled` | `true`/`false` | `false` | Disable ArchOPS telemetry collection |
8182
| `c4.beeline.api.url` | URL | | ArchOPS server URL |
8283
| `c4.beeline.api.key` | String | | ArchOPS API key |
8384
| `c4.beeline.api.secret` | String | | ArchOPS API secret |
@@ -91,7 +92,7 @@ Export diagram to **drawio** and **svg** formats
9192

9293
**Requirements:**
9394
- Node.js 20+
94-
- Yarn
95+
- Yarn2
9596
- JDK 17+
9697
- Apache Maven
9798

c4-server/pom.xml

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,45 +14,47 @@
1414
<properties>
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<maven.compiler.release>17</maven.compiler.release>
17-
<aspectj.version>1.9.8</aspectj.version>
17+
<aspectj.version>1.9.24</aspectj.version>
18+
<structurizr.version>4.1.0</structurizr.version>
1819
</properties>
1920

2021
<dependencies>
22+
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
2123
<dependency>
2224
<groupId>ch.qos.logback</groupId>
2325
<artifactId>logback-classic</artifactId>
24-
<version>1.2.6</version>
26+
<version>1.5.20</version>
2527
<scope>compile</scope>
26-
</dependency>
28+
</dependency>
2729
<!-- https://mvnrepository.com/artifact/info.picocli/picocli -->
2830
<dependency>
2931
<groupId>info.picocli</groupId>
3032
<artifactId>picocli</artifactId>
3133
<version>4.7.7</version>
32-
</dependency>
34+
</dependency>
3335
<!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
3436
<dependency>
3537
<groupId>com.google.inject</groupId>
3638
<artifactId>guice</artifactId>
37-
<version>5.1.0</version>
39+
<version>7.0.0</version>
3840
</dependency>
3941
<!-- https://mvnrepository.com/artifact/org.eclipse.lsp4j/org.eclipse.lsp4j -->
4042
<dependency>
4143
<groupId>org.eclipse.lsp4j</groupId>
4244
<artifactId>org.eclipse.lsp4j</artifactId>
4345
<version>0.24.0</version>
44-
</dependency>
46+
</dependency>
4547
<!-- https://mvnrepository.com/artifact/com.structurizr/structurizr-dsl -->
4648
<dependency>
4749
<groupId>com.structurizr</groupId>
4850
<artifactId>structurizr-dsl</artifactId>
49-
<version>3.2.1</version>
51+
<version>${structurizr.version}</version>
5052
</dependency>
5153
<!-- https://mvnrepository.com/artifact/com.structurizr/structurizr-export -->
5254
<dependency>
5355
<groupId>com.structurizr</groupId>
5456
<artifactId>structurizr-export</artifactId>
55-
<version>3.2.1</version>
57+
<version>${structurizr.version}</version>
5658
</dependency>
5759
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
5860
<dependency>
@@ -65,7 +67,7 @@
6567
<groupId>org.aspectj</groupId>
6668
<artifactId>aspectjweaver</artifactId>
6769
<version>${aspectj.version}</version>
68-
</dependency>
70+
</dependency>
6971
<dependency>
7072
<groupId>junit</groupId>
7173
<artifactId>junit</artifactId>
@@ -78,7 +80,7 @@
7880
<artifactId>mockito-core</artifactId>
7981
<version>5.18.0</version>
8082
<scope>test</scope>
81-
</dependency>
83+
</dependency>
8284
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
8385
<dependency>
8486
<groupId>org.junit.jupiter</groupId>
@@ -92,15 +94,15 @@
9294
<artifactId>assertj-core</artifactId>
9395
<version>3.27.3</version>
9496
<scope>test</scope>
95-
</dependency>
97+
</dependency>
9698
</dependencies>
9799

98100
<build>
99101
<finalName>${project.artifactId}</finalName>
100102
<plugins>
101103
<plugin>
102104
<artifactId>maven-jar-plugin</artifactId>
103-
<version>3.0.2</version>
105+
<version>3.4.2</version>
104106
<configuration>
105107
<!-- Configures the created archive -->
106108
<archive>
@@ -139,8 +141,8 @@
139141
<weaveDependency>
140142
<groupId>com.structurizr</groupId>
141143
<artifactId>structurizr-client</artifactId>
142-
</weaveDependency>
143-
</weaveDependencies>
144+
</weaveDependency>
145+
</weaveDependencies>
144146
</configuration>
145147
<executions>
146148
<execution>
@@ -168,8 +170,8 @@
168170
<goal>single</goal>
169171
</goals>
170172
</execution>
171-
</executions>
172-
</plugin>
173+
</executions>
174+
</plugin>
173175
</plugins>
174176
</build>
175177
</project>

c4-server/src/assembly/assembly.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
<dependencySet>
99
<excludes>
1010
<exclude>javax.activation:*</exclude>
11-
<exclude>javax.xml.bind:jaxb-api</exclude>
12-
<exclude>com.google.code.findbugs:jsr305</exclude>
13-
<exclude>com.structurizr:structurizr-dsl</exclude>
11+
<exclude>javax.xml.bind:jaxb-api</exclude>
12+
<exclude>com.google.code.findbugs:jsr305</exclude>
13+
<exclude>com.structurizr:structurizr-dsl</exclude>
14+
<exclude>com.structurizr:structurizr-client</exclude>
15+
<exclude>com.structurizr:structurizr-import</exclude>
1416
</excludes>
1517
<useProjectArtifact>false</useProjectArtifact>
1618
<outputDirectory>lib</outputDirectory>

c4-server/src/main/java/ru/beeatlas/c4/custom/Custom.java

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public class Custom {
9595
private SSLSocketFactory allTrustingTrustManager = null;
9696
private boolean noTLS = false;
9797
private boolean serverLogsEnabled = false;
98+
private boolean beelineNoTelemetry = false;
9899
private boolean started = false;
99100

100101
private String lastHover = "";
@@ -105,7 +106,7 @@ public class Custom {
105106
private String beelineCloudUrl = "";
106107
private String beelineCloudToken = "";
107108
private String glossaries = "";
108-
private String ver = "1.0.0";
109+
private String version = "";
109110
private String cmdb = "";
110111

111112
private AtomicReference<Map<String, Capability>> capabilities = new AtomicReference<>(Collections.emptyMap());
@@ -122,6 +123,21 @@ public class Custom {
122123

123124
private static final Custom INSTANCE = new Custom();
124125

126+
public void setVersion(String version) {
127+
this.version = version;
128+
}
129+
130+
public void setBeelineNoTelemetry(boolean beelineNoTelemetry) {
131+
if (this.beelineNoTelemetry != beelineNoTelemetry) {
132+
this.beelineNoTelemetry = beelineNoTelemetry;
133+
if (this.beelineNoTelemetry == true) {
134+
logger.debug("Stop ArchOps Telemetry collection");
135+
} else {
136+
logger.debug("Start ArchOps Telemetry collection");
137+
}
138+
}
139+
}
140+
125141
public void setBeelineApiSecret(String beelineApiSecret) {
126142
this.beelineApiSecret = beelineApiSecret;
127143
}
@@ -284,6 +300,7 @@ public void reinit() {
284300
updateTech();
285301
updateTerms();
286302
}
303+
startTelemetry();
287304
}
288305

289306
public void setBeelineCloudUrl(String beelineCloudUrl) {
@@ -379,9 +396,6 @@ private void updateTerms() {
379396
public void setBeelineApiUrl(String beelineApiUrl) {
380397
if(beelineApiUrl != null && !this.beelineApiUrl.equals(beelineApiUrl) && isValidURL(beelineApiUrl)) {
381398
this.beelineApiUrl = beelineApiUrl;
382-
if(started == false) {
383-
started = startTelemetry();
384-
}
385399
}
386400
}
387401

@@ -937,33 +951,40 @@ public void closeScope(C4CompletionScope scope, C4DocumentModel model) {
937951
}
938952

939953
public void snippetTelemetry(String templateId) {
940-
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"template\", \"template_id\": \"{1}\", \"user\": \"{2}\", \"cmdb\": \"{3}\"'}'", ver, templateId, username, cmdb);
954+
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"template\", \"template_id\": \"{1}\", \"user\": \"{2}\", \"cmdb\": \"{3}\"'}'", version, templateId, username, cmdb);
941955
CompletableFuture.runAsync(() -> sendTelemetry(message));
942956
}
943957

944958
public void deploymentTelemetry() {
945-
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"deployment\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", ver, username, cmdb);
959+
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"deployment\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", version, username, cmdb);
946960
CompletableFuture.runAsync(() -> sendTelemetry(message));
947961
}
948962

949963
public void completionTelemety() {
950-
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"autocomplite\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", ver, username, cmdb);
964+
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"autocomplite\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", version, username, cmdb);
951965
CompletableFuture.runAsync(() -> sendTelemetry(message));
952966
}
953967

954-
public boolean startTelemetry() {
955-
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"start\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", ver, username, cmdb);
956-
return sendTelemetry(message);
968+
private void startTelemetry() {
969+
String message = MessageFormat.format("'{'\"version\": \"{0}\", \"action\": \"start\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", version, username, cmdb);
970+
CompletableFuture.runAsync(() -> {
971+
if(started == false) {
972+
started = sendTelemetry(message);
973+
}
974+
});
957975
}
958976

959977
public void hoverTelemetry() {
960978
String message = MessageFormat.format(
961-
"'{'\"version\": \"{0}\", \"action\": \"hover\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", ver,
979+
"'{'\"version\": \"{0}\", \"action\": \"hover\", \"user\": \"{1}\", \"cmdb\": \"{2}\"'}'", version,
962980
username, cmdb);
963981
CompletableFuture.runAsync(() -> sendTelemetry(message));
964982
}
965983

966984
private boolean sendTelemetry(String message) {
985+
if(beelineNoTelemetry == true) {
986+
return false;
987+
}
967988
try {
968989
String path = "/dashboard/api/v1/telemetry/c4plugin/start";
969990
HttpsURLConnection conn = beelineApiConnection("POST", path, message, "application/json");

c4-server/src/main/java/ru/beeatlas/c4/intercept/InterceptParserAspect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public void interceptInfrastructureNodeParser(JoinPoint joinPoint, Object result
192192
parserListener.onParsedModelElement(infrastructureNode);
193193
}
194194

195-
@AfterReturning(pointcut = "within(com.structurizr.dsl.DeploymentNodeParser) && execution(com.structurizr.model.DeploymentNode parse(..))", returning = "result")
195+
@AfterReturning(pointcut = "within(com.structurizr.dsl.DeploymentNodeParser) && execution(com.structurizr.model.DeploymentNode parse(com.structurizr.dsl.DeploymentEnvironmentDslContext, com.structurizr.dsl.DeploymentNodeDslContext, ..))", returning = "result")
196196
public void interceptDeploymentNodeParser(JoinPoint joinPoint, Object result) {
197197
DeploymentNode deploymentNode = (DeploymentNode)result;
198198
parserListener.onParsedModelElement(deploymentNode);

c4-server/src/main/java/ru/beeatlas/c4/service/C4WorkspaceService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,15 @@ public CompletableFuture<Object> executeCommand(ExecuteCommandParams params) {
8181
String beelineCloudToken = ((JsonObject) params.getArguments().get(0)).get("beelineCloudToken").getAsJsonPrimitive().getAsString();
8282
boolean noTLS = ((JsonObject) params.getArguments().get(0)).get("noTLS").getAsJsonPrimitive().getAsBoolean();
8383
boolean serverLogsEnabled = ((JsonObject) params.getArguments().get(0)).get("serverLogsEnabled").getAsJsonPrimitive().getAsBoolean();
84+
boolean beelineNoTelemetry = ((JsonObject) params.getArguments().get(0)).get("beelineNoTelemetry").getAsJsonPrimitive().getAsBoolean();
85+
String version = ((JsonObject) params.getArguments().get(0)).get("version").getAsJsonPrimitive().getAsString();
86+
Custom.getInstance().setServerLogsEnabled(serverLogsEnabled);
8487
Custom.getInstance().setNoTLS(noTLS);
88+
Custom.getInstance().setVersion(version);
89+
Custom.getInstance().setBeelineNoTelemetry(beelineNoTelemetry);
8590
Custom.getInstance().setBeelineApiUrl(beelineApiUrl);
8691
Custom.getInstance().setBeelineCloudUrl(beelineCloudUrl);
8792
Custom.getInstance().setBeelineCloudToken(beelineCloudToken);
88-
Custom.getInstance().setServerLogsEnabled(serverLogsEnabled);
8993
Custom.getInstance().setBeelineApiSecret(beelineApiSecret);
9094
Custom.getInstance().setBeelineApiKey(beelineApiKey);
9195
Custom.getInstance().reinit();

extension/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Change Log
22

3+
## 1.0.4
4+
5+
- Bump lang server to Structurizr v4.1.0
6+
- Bump Java dependencies
7+
- Bump NodeJS dependencies
8+
- Remove some unneeded jars from extension package
9+
- Remove unneeded .ts file
10+
- Option to disable ArchOps telemetry collection
11+
- Use current workspace folder for terraform script generation
12+
- Show Architecture views on left side only when C4 workspace opened
13+
- Urls can be specified with or without slash at end
14+
- Fixed a bug where the generated terraform script would not open in a new tab
15+
- Added a parameter that allows you to specify the path to the JDK or JRE for executing c4 language server
16+
- Fixed a bug where "c4-server.configuration" command not registered right after run c4 language server
17+
- Updated links to Java downloading
18+
319
## 1.0.0
420

521
- Initial commit

extension/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The extension includes:
1212

1313
## Prerequisites
1414

15-
- **Java 17+** ([download](https://java.com/en/download/)) - required for the language server
15+
- **Java 17+** ([download](https://dev.java/download)) - required for the language server
1616
- Workspace containing model files with `.dsl` extension
1717
- Support for multiple workspaces and `!include` files
1818

@@ -79,6 +79,7 @@ Export diagram to **drawio** and **svg** formats
7979
| `c4.decorations.enabled` | `off`, `onChange`, `onSave` | `onChange` | Text decoration timing |
8080
| `c4.SSL\TLS.disabled` | `true`/`false` | `false` | Disable SSL/TLS verification |
8181
| `c4.beeline.api.url` | URL | | ArchOPS server URL |
82+
| `c4.beeline.telemetry.disabled` | `true`/`false` | `false` | Disable ArchOPS telemetry collection |
8283
| `c4.beeline.api.key` | String | | ArchOPS API key |
8384
| `c4.beeline.api.secret` | String | | ArchOPS API secret |
8485
| `c4.beeline.cloud.token` | String | | Beeline Cloud security token |

extension/package.json

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
},
1010
"license": "Apache-2.0",
1111
"icon": "images/logo.png",
12-
"version": "1.0.3",
12+
"version": "1.0.4",
1313
"engines": {
1414
"vscode": "^1.73.0"
1515
},
@@ -45,11 +45,13 @@
4545
{
4646
"id": "architectureAsACodeView",
4747
"name": "Architecture As A Code",
48+
"when": "extension:c4",
4849
"icon": "$(book)"
4950
},
5051
{
5152
"id": "architectureCatalogueView",
5253
"name": "Architecture Catalogue",
54+
"when": "extension:c4",
5355
"icon": "$(book)"
5456
}
5557
]
@@ -64,7 +66,7 @@
6466
"title": "Add pattern to workspace",
6567
"shortTitle": "Add",
6668
"icon": "$(add)"
67-
},
69+
},
6870
{
6971
"command": "c4.architectureCatalogue.refresh",
7072
"title": "Refresh architecture catalogue",
@@ -87,7 +89,7 @@
8789
"when": "view == architectureCatalogueView",
8890
"group": "navigation"
8991
}
90-
],
92+
],
9193
"view/item/context": [
9294
{
9395
"command": "c4.architectureCatalogue.add",
@@ -151,6 +153,11 @@
151153
"scope": "application",
152154
"description": "Determines when text decoration takes place"
153155
},
156+
"c4.languageserver.java.path": {
157+
"type": "string",
158+
"default": "",
159+
"description": "Java Path (JDK or JRE) for executing c4 language server. If set, this setting is prefered over OS path setting"
160+
},
154161
"c4.languageserver.logs.enabled": {
155162
"type": "boolean",
156163
"default": false,
@@ -195,6 +202,11 @@
195202
"type": "string",
196203
"default": "Product,Service,Customer",
197204
"description": "Data dictionary names for data flow markup on architecture"
205+
},
206+
"c4.beeline.telemetry.disabled": {
207+
"type": "boolean",
208+
"default": "false",
209+
"description": "Disable ArchOPS telemetry collection"
198210
}
199211
}
200212
}

0 commit comments

Comments
 (0)