Skip to content

Commit 1e4cdfc

Browse files
committed
Add application settings
1 parent a5cf5b8 commit 1e4cdfc

12 files changed

Lines changed: 154 additions & 28 deletions

File tree

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Copyright 2018-2026 Pavel Castornii.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.techsenger.alpha.core.api;
18+
19+
import com.techsenger.toolkit.core.version.Version;
20+
import java.util.Objects;
21+
22+
/**
23+
*
24+
* @author Pavel Castornii
25+
*/
26+
public final class ApplicationSettings implements LayerOwner {
27+
28+
private String name;
29+
30+
private Version version;
31+
32+
private ApplicationSettings() {
33+
}
34+
35+
@Override
36+
public String getName() {
37+
return name;
38+
}
39+
40+
@Override
41+
public String getFullName() {
42+
return name + Constants.NAME_VERSION_SEPARATOR + version;
43+
}
44+
45+
@Override
46+
public Version getVersion() {
47+
return version;
48+
}
49+
50+
public static final class Builder {
51+
52+
private String name;
53+
54+
private Version version;
55+
56+
Builder() {
57+
58+
}
59+
60+
public Builder name(String name) {
61+
this.name = name;
62+
return this;
63+
}
64+
65+
public Builder version(Version version) {
66+
this.version = version;
67+
return this;
68+
}
69+
70+
ApplicationSettings build() {
71+
Objects.requireNonNull(this.name, "Application name is not set");
72+
Objects.requireNonNull(this.version, "Application version is not set");
73+
var settings = new ApplicationSettings();
74+
settings.name = this.name;
75+
settings.version = this.version;
76+
return settings;
77+
}
78+
}
79+
}

alpha-core/src/main/java/com/techsenger/alpha/core/api/Framework.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,21 @@
1818

1919
import com.techsenger.alpha.core.api.registry.Registry;
2020
import com.techsenger.alpha.core.spi.repo.RepoService;
21+
import com.techsenger.toolkit.core.version.Version;
2122

2223
/**
2324
*
2425
* @author Pavel Castornii
2526
*/
26-
public interface Framework extends LayerOwner {
27+
public interface Framework {
2728

2829
/**
29-
* Returns framework settings.
30+
* Returns the version of the framework.
31+
*/
32+
Version getVersion();
33+
34+
/**
35+
* Returns the framework settings.
3036
*/
3137
FrameworkSettings getSettings();
3238

alpha-core/src/main/java/com/techsenger/alpha/core/api/FrameworkSettings.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.techsenger.alpha.core.api;
1818

19+
import java.util.function.Consumer;
20+
1921
/**
2022
*
2123
* @author Pavel Castornii
@@ -24,20 +26,26 @@ public final class FrameworkSettings {
2426

2527
private boolean repoChecksumEnabled;
2628

29+
private ApplicationSettings application;
30+
2731
private FrameworkSettings() {
2832
}
2933

3034
public boolean isRepoChecksumEnabled() {
3135
return repoChecksumEnabled;
3236
}
3337

38+
public ApplicationSettings getApplication() {
39+
return application;
40+
}
41+
3442
public static Builder builder() {
3543
return new Builder();
3644
}
3745

3846
public static final class Builder {
39-
4047
private boolean repoChecksumEnabled = true;
48+
private final ApplicationSettings.Builder applicationBuilder = new ApplicationSettings.Builder();
4149

4250
private Builder() {
4351
}
@@ -47,9 +55,15 @@ public Builder repoChecksumEnabled(boolean repoChecksumEnabled) {
4755
return this;
4856
}
4957

58+
public Builder application(Consumer<ApplicationSettings.Builder> consumer) {
59+
consumer.accept(applicationBuilder);
60+
return this;
61+
}
62+
5063
public FrameworkSettings build() {
5164
var settings = new FrameworkSettings();
5265
settings.repoChecksumEnabled = this.repoChecksumEnabled;
66+
settings.application = applicationBuilder.build();
5367
return settings;
5468
}
5569
}

alpha-core/src/main/java/com/techsenger/alpha/core/impl/DefaultFramework.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,16 +118,6 @@ public FrameworkSettings getSettings() {
118118
return settings;
119119
}
120120

121-
@Override
122-
public String getName() {
123-
return LAYER_NAME;
124-
}
125-
126-
@Override
127-
public String getFullName() {
128-
return LAYER_NAME + Constants.NAME_VERSION_SEPARATOR + getVersion();
129-
}
130-
131121
@Override
132122
public Version getVersion() {
133123
return ProjectInfo.getVersion();

alpha-core/src/main/java/com/techsenger/alpha/core/impl/DefaultJvmInspector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public List<ThreadInfoModel> getThreadInfos() {
9595
@Override
9696
public ModulesInfo getModulesInfo() {
9797
Map<String, ModuleLayer> layersByName = new LinkedHashMap<>();
98-
layersByName.put(ComponentLayerModel.resolveName(framework.getFullName(), 0),
98+
layersByName.put(ComponentLayerModel.resolveName(framework.getSettings().getApplication().getFullName(), 0),
9999
Framework.class.getModule().getLayer());
100100
var result = new DefaultModulesInfo();
101101
synchronized (framework.getComponentManager()) {
@@ -165,8 +165,8 @@ public LayersInfo getLayersInfo() {
165165
var map = new HashMap<Integer, ComponentLayerModel>();
166166
result.setLayersById(map);
167167
//boot layer or non boot
168-
var bootLayer = createLayer(framework.getFullName(), 0, Framework.class.getModule().getLayer(),
169-
idsByLayerConfig, null);
168+
var bootLayer = createLayer(framework.getSettings().getApplication().getFullName(), 0,
169+
Framework.class.getModule().getLayer(), idsByLayerConfig, null);
170170
map.put(bootLayer.getId(), bootLayer);
171171
components.forEach(c -> {
172172
var d = c.getDescriptor();

alpha-core/src/main/java/com/techsenger/alpha/core/impl/LayerBuilder.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ private void applyModuleDirective(ModuleLayer.Controller controller, Module modu
324324
*/
325325
private String resolveLayerName(ModuleLayer layer) {
326326
if (layer == Framework.class.getModule().getLayer()) {
327-
return this.framework.getFullName();
327+
return this.framework.getSettings().getApplication().getFullName();
328328
}
329329
var descriptor = framework.getComponentManager().findComponent(layer).getDescriptor();
330330
if (descriptor != null) {
@@ -349,8 +349,9 @@ private Map<String, ModuleLayer> findLayers(DefaultComponent component, String l
349349
} else {
350350
var nameAndVersion = Component.resolveNameAndVersion(layerName);
351351
if (nameAndVersion.getSecond() == null) { //find by name
352-
if (nameAndVersion.getFirst().equals(framework.getName())) {
353-
layersByName.put(framework.getFullName(), Framework.class.getModule().getLayer());
352+
if (nameAndVersion.getFirst().equals(framework.getSettings().getApplication().getName())) {
353+
layersByName.put(framework.getSettings().getApplication().getFullName(),
354+
Framework.class.getModule().getLayer());
354355
} else {
355356
Set<ComponentDescriptor> ancestors = component.getDescriptor().findAncestors();
356357
for (var ancestor : ancestors) {
@@ -362,9 +363,10 @@ private Map<String, ModuleLayer> findLayers(DefaultComponent component, String l
362363
}
363364
}
364365
} else { //find by name and version
365-
if (nameAndVersion.getFirst().equals(framework.getName())
366+
if (nameAndVersion.getFirst().equals(framework.getSettings().getApplication().getName())
366367
&& nameAndVersion.getSecond().equals(framework.getVersion())) {
367-
layersByName.put(framework.getFullName(), Framework.class.getModule().getLayer());
368+
layersByName.put(framework.getSettings().getApplication().getFullName(),
369+
Framework.class.getModule().getLayer());
368370
} else {
369371
Set<ComponentDescriptor> ancestors = component.getDescriptor().findAncestors();
370372
for (var ancestor : ancestors) {

alpha-demo/alpha-demo-cli/src/main/java/com/techsenger/alpha/demo/cli/CliDemo.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public static void main(String[] args) throws Exception {
4040

4141
// Checksum is disabled because artifacts resolved from the local Maven repository
4242
// do not have checksum files when installed via "mvn install"
43-
var settings = FrameworkSettings.builder().repoChecksumEnabled(false).build();
43+
var settings = FrameworkSettings.builder()
44+
.repoChecksumEnabled(false)
45+
.application(app -> app
46+
.name("cli-demo")
47+
.version(Version.parse("1.0.0")))
48+
.build();
4449

4550
var framework = FrameworkFactory.create(settings, rootPath);
4651
resolveAndStartComponent(framework, "alpha-repo");

alpha-demo/alpha-demo-gui/src/main/java/com/techsenger/alpha/demo/gui/GuiDemo.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ public static void main(String[] args) throws Exception {
3939

4040
// Checksum is disabled because artifacts resolved from the local Maven repository
4141
// do not have checksum files when installed via "mvn install"
42-
var settings = FrameworkSettings.builder().repoChecksumEnabled(false).build();
42+
var settings = FrameworkSettings.builder()
43+
.repoChecksumEnabled(false)
44+
.application(app -> app
45+
.name("gui-demo")
46+
.version(Version.parse("1.0.0")))
47+
.build();
4348
var framework = FrameworkFactory.create(settings, rootPath);
4449
var componentManager = framework.getComponentManager();
4550

alpha-demo/alpha-demo-starter/src/main/java/com/techsenger/alpha/demo/starter/StarterDemo.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ public final class StarterDemo {
5252

5353
public static void main(String[] args) throws Exception {
5454
var frameworkPath = Paths.get(System.getProperty(SystemProperties.ROOT_PATH));
55-
var settings = FrameworkSettings.builder().repoChecksumEnabled(false).build();
55+
var settings = FrameworkSettings.builder()
56+
.repoChecksumEnabled(false)
57+
.application(app -> app
58+
.name("starter-demo")
59+
.version(Version.parse("1.0.0")))
60+
.build();
5661
var framework = FrameworkFactory.create(settings, frameworkPath);
5762
var messagePrinter = new SystemMessagePrinter();
5863
var componentManager = framework.getComponentManager();

alpha-it/alpha-it-core/src/test/java/com/techsenger/alpha/it/core/ComponentManagerIT.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.techsenger.alpha.core.api.component.UnknownComponentException;
2424
import com.techsenger.alpha.core.api.message.LoggerMessagePrinter;
2525
import com.techsenger.alpha.it.shared.TestUtils;
26+
import com.techsenger.toolkit.core.version.Version;
2627
import java.io.BufferedReader;
2728
import java.io.IOException;
2829
import java.io.InputStream;
@@ -72,7 +73,13 @@ private static List<String> readFile(String fileName) throws IOException {
7273
public void startFramework() throws Exception {
7374
var frameworkPath = Paths.get(System.getProperty("basedir"), "target", "framework");
7475
TestUtils.copyDirectory(frameworkPath, tempFwPath);
75-
framework = FrameworkFactory.create(FrameworkSettings.builder().repoChecksumEnabled(false).build(), tempFwPath);
76+
var settings = FrameworkSettings.builder()
77+
.repoChecksumEnabled(false)
78+
.application(app -> app
79+
.name("core-test")
80+
.version(Version.parse("1.0.0")))
81+
.build();
82+
framework = FrameworkFactory.create(settings, tempFwPath);
7683
componentManager = framework.getComponentManager();
7784
componentManager.startComponent("alpha-repo", framework.getVersion());
7885
}

0 commit comments

Comments
 (0)