Skip to content

Commit 2b857d8

Browse files
Removes the feature flag around archetypes.
1 parent 1f72126 commit 2b857d8

File tree

4 files changed

+16
-42
lines changed

4 files changed

+16
-42
lines changed

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- structurizr-dsl: Adds a reluctant version of `include *` (`include *?`) for component views that only adds relationships to/from the components in the scoped container.
1111
- structurizr-dsl: Removes deprecated `!ref` and `!extend` keywords.
1212
- structurizr-dsl: Adds support for Java style `"""` multi-line text blocks.
13+
- structurizr-dsl: Adds support for defining element and relationship archetypes.
1314

1415
## 3.2.1 (10th December 2024)
1516

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
package com.structurizr.dsl;
22

33
public final class Features extends com.structurizr.util.Features {
4-
5-
public static final String ARCHETYPES = "structurizr.feature.dsl.archetypes";
6-
74
}

structurizr-dsl/src/main/java/com/structurizr/dsl/StructurizrDslParser.java

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ void parse(List<String> lines, File dslFile, boolean fragment, boolean includeIn
661661
startContext(new ModelDslContext());
662662
parsedTokens.add(MODEL_TOKEN);
663663

664-
} else if (ARCHETYPES_TOKEN.equalsIgnoreCase(firstToken) && inContext(ModelDslContext.class) && features.isEnabled(Features.ARCHETYPES)) {
664+
} else if (ARCHETYPES_TOKEN.equalsIgnoreCase(firstToken) && inContext(ModelDslContext.class)) {
665665
startContext(new ArchetypesDslContext());
666666

667667
} else if (isElementKeywordOrArchetype(firstToken, GROUP_TOKEN) && inContext(ArchetypesDslContext.class)) {
@@ -1337,28 +1337,22 @@ public Features getFeatures() {
13371337
}
13381338

13391339
private boolean isElementKeywordOrArchetype(String token, String keyword) {
1340-
if (features.isEnabled(Features.ARCHETYPES)) {
1341-
if (token.equalsIgnoreCase(keyword)) {
1342-
return true;
1343-
} else {
1344-
return (archetypes.get(keyword).containsKey(token.toLowerCase()));
1345-
}
1340+
if (token.equalsIgnoreCase(keyword)) {
1341+
return true;
13461342
} else {
1347-
return token.equalsIgnoreCase(keyword);
1343+
return (archetypes.get(keyword).containsKey(token.toLowerCase()));
13481344
}
13491345
}
13501346

13511347
private boolean isRelationshipKeywordOrArchetype(String token) {
1352-
if (features.isEnabled(Features.ARCHETYPES)) {
1353-
if (token.equalsIgnoreCase(RELATIONSHIP_TOKEN)) {
1354-
return true;
1355-
} else if (token.startsWith(RELATIONSHIP_ARCHETYPE_PREFIX) && token.endsWith(RELATIONSHIP_ARCHETYPE_SUFFIX)) {
1356-
token = token.substring(RELATIONSHIP_ARCHETYPE_PREFIX.length(), token.length()-RELATIONSHIP_ARCHETYPE_SUFFIX.length());
1357-
return (archetypes.get(RELATIONSHIP_TOKEN).containsKey(token.toLowerCase()));
1358-
}
1348+
if (token.equalsIgnoreCase(RELATIONSHIP_TOKEN)) {
1349+
return true;
1350+
} else if (token.startsWith(RELATIONSHIP_ARCHETYPE_PREFIX) && token.endsWith(RELATIONSHIP_ARCHETYPE_SUFFIX)) {
1351+
token = token.substring(RELATIONSHIP_ARCHETYPE_PREFIX.length(), token.length()-RELATIONSHIP_ARCHETYPE_SUFFIX.length());
1352+
return (archetypes.get(RELATIONSHIP_TOKEN).containsKey(token.toLowerCase()));
13591353
}
13601354

1361-
return token.equalsIgnoreCase(RELATIONSHIP_TOKEN);
1355+
return false;
13621356
}
13631357

13641358
private void addArchetype(Archetype archetype) {
@@ -1368,14 +1362,12 @@ private void addArchetype(Archetype archetype) {
13681362
private Archetype getArchetype(String archetypeType, String archetypeName) {
13691363
Archetype archetype = null;
13701364

1371-
if (features.isEnabled(Features.ARCHETYPES)) {
1372-
if (RELATIONSHIP_TOKEN.equals(archetypeType)) {
1373-
if (archetypeName.startsWith(RELATIONSHIP_ARCHETYPE_PREFIX) && archetypeName.endsWith(RELATIONSHIP_ARCHETYPE_SUFFIX)) {
1374-
archetypeName = archetypeName.substring(RELATIONSHIP_ARCHETYPE_PREFIX.length(), archetypeName.length() - RELATIONSHIP_ARCHETYPE_SUFFIX.length());
1375-
}
1365+
if (RELATIONSHIP_TOKEN.equals(archetypeType)) {
1366+
if (archetypeName.startsWith(RELATIONSHIP_ARCHETYPE_PREFIX) && archetypeName.endsWith(RELATIONSHIP_ARCHETYPE_SUFFIX)) {
1367+
archetypeName = archetypeName.substring(RELATIONSHIP_ARCHETYPE_PREFIX.length(), archetypeName.length() - RELATIONSHIP_ARCHETYPE_SUFFIX.length());
13761368
}
1377-
archetype = archetypes.get(archetypeType).get(archetypeName.toLowerCase());
13781369
}
1370+
archetype = archetypes.get(archetypeType).get(archetypeName.toLowerCase());
13791371

13801372
if (archetype == null) {
13811373
archetype = new Archetype(archetypeName, archetypeType);

structurizr-dsl/src/test/java/com/structurizr/dsl/DslTests.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1459,23 +1459,9 @@ void test_sourceIsNotRetained() throws Exception {
14591459
}
14601460

14611461
@Test
1462-
void test_archetypes_WhenDisabled() throws Exception {
1463-
try {
1464-
File parentDslFile = new File("src/test/resources/dsl/archetypes.dsl");
1465-
StructurizrDslParser parser = new StructurizrDslParser();
1466-
parser.parse(parentDslFile);
1467-
fail();
1468-
} catch (StructurizrDslParserException e) {
1469-
assertTrue(e.getMessage().startsWith("Unexpected tokens (expected: !identifiers, group, person, softwareSystem, deploymentEnvironment, element, ->) at line 4"));
1470-
assertTrue(e.getMessage().endsWith("archetypes {"));
1471-
}
1472-
}
1473-
1474-
@Test
1475-
void test_archetypes_WhenEnabled() throws Exception {
1462+
void test_archetypes() throws Exception {
14761463
File parentDslFile = new File("src/test/resources/dsl/archetypes.dsl");
14771464
StructurizrDslParser parser = new StructurizrDslParser();
1478-
parser.getFeatures().enable(Features.ARCHETYPES);
14791465
parser.parse(parentDslFile);
14801466
Workspace workspace = parser.getWorkspace();
14811467

@@ -1492,7 +1478,6 @@ void test_archetypes_WhenEnabled() throws Exception {
14921478
void test_archetypesForDefaults() throws Exception {
14931479
File parentDslFile = new File("src/test/resources/dsl/archetypes-for-defaults.dsl");
14941480
StructurizrDslParser parser = new StructurizrDslParser();
1495-
parser.getFeatures().enable(Features.ARCHETYPES);
14961481
parser.parse(parentDslFile);
14971482
Workspace workspace = parser.getWorkspace();
14981483

@@ -1520,7 +1505,6 @@ void test_archetypesForDefaults() throws Exception {
15201505
void test_archetypesForExtension() throws Exception {
15211506
File parentDslFile = new File("src/test/resources/dsl/archetypes-for-extension.dsl");
15221507
StructurizrDslParser parser = new StructurizrDslParser();
1523-
parser.getFeatures().enable(Features.ARCHETYPES);
15241508
parser.parse(parentDslFile);
15251509
Workspace workspace = parser.getWorkspace();
15261510

0 commit comments

Comments
 (0)