Skip to content

Commit c95efe1

Browse files
authored
fix: Made web2 deps on internal networking, wires, asset and driver p… (#5789)
* fix: Made web2 deps on internal networking, wires, asset and driver packages optional Signed-off-by: Nicola Timeus <nicola.timeus@eurotech.com> * Updated copyright headers Signed-off-by: Nicola Timeus <nicola.timeus@eurotech.com> * Hide command tab if commandservice is not available Signed-off-by: Nicola Timeus <nicola.timeus@eurotech.com> --------- Signed-off-by: Nicola Timeus <nicola.timeus@eurotech.com>
1 parent e24cc2a commit c95efe1

19 files changed

Lines changed: 703 additions & 359 deletions

kura/org.eclipse.kura.web2/META-INF/MANIFEST.MF

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Import-Package: com.eclipsesource.json;version="0.9.5",
2020
org.apache.commons.io.build;version="2.18.0",
2121
org.eclipse.kura;version="[1.2,2.0)",
2222
org.eclipse.kura.asset;version="[0.9,2.0)",
23-
org.eclipse.kura.asset.provider;version="[2.1,2.2)",
23+
org.eclipse.kura.asset.provider;version="[2.1,2.2)";resolution:=optional,
2424
org.eclipse.kura.audit;version="[1.0,2.0)",
2525
org.eclipse.kura.certificate;version="[2.1,3.0)",
2626
org.eclipse.kura.channel;version="[1.0,2.0)",
@@ -37,8 +37,8 @@ Import-Package: com.eclipsesource.json;version="0.9.5",
3737
org.eclipse.kura.core.configuration;version="[2.0,3.0)",
3838
org.eclipse.kura.core.configuration.metatype;version="[1.0,2.0)",
3939
org.eclipse.kura.core.keystore.util;version="[1.0,2.0)",
40-
org.eclipse.kura.core.net;version="[1.0,2.0)",
41-
org.eclipse.kura.core.net.util;version="[1.0,2.0)",
40+
org.eclipse.kura.core.net;version="[1.0,2.0)";resolution:=optional,
41+
org.eclipse.kura.core.net.util;version="[1.0,2.0)";resolution:=optional,
4242
org.eclipse.kura.core.util;version="[2.0,3.0)",
4343
org.eclipse.kura.crypto;version="[1.3,2.0)",
4444
org.eclipse.kura.data;version="[1.0,2.0)",
@@ -47,7 +47,7 @@ Import-Package: com.eclipsesource.json;version="0.9.5",
4747
org.eclipse.kura.driver.descriptor;version="1.0.0",
4848
org.eclipse.kura.executor;version="[1.0,2.0)",
4949
org.eclipse.kura.identity;version="[1.0,2.0)",
50-
org.eclipse.kura.internal.wire.asset;version="[1.0,2.0)",
50+
org.eclipse.kura.internal.wire.asset;version="[1.0,2.0)";resolution:=optional,
5151
org.eclipse.kura.log;version="[1.1,1.2)",
5252
org.eclipse.kura.log.listener;version="[1.0,2.0)",
5353
org.eclipse.kura.marshalling;version="[1.0,2.0)",
@@ -73,6 +73,8 @@ Import-Package: com.eclipsesource.json;version="0.9.5",
7373
org.eclipse.kura.wire;version="[2.0,3.0)",
7474
org.eclipse.kura.wire.graph;version="[1.0,2.0)",
7575
org.osgi.framework;version="1.7.0",
76+
org.osgi.framework.namespace;version="[1.2.0,2.0.0)",
77+
org.osgi.framework.wiring;version="[1.2.0,2.0.0)",
7678
org.osgi.service.cm;version="1.4.0",
7779
org.osgi.service.component;version="1.2.0",
7880
org.osgi.service.component.runtime;version="1.3.0",

kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/Console.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import org.eclipse.kura.web.server.servlet.SslAuthenticationServlet;
6767
import org.eclipse.kura.web.server.servlet.WiresBlinkServlet;
6868
import org.eclipse.kura.web.server.servlet.WiresSnapshotServlet;
69+
import org.eclipse.kura.web.server.util.GwtFeatureUtil;
6970
import org.eclipse.kura.web.server.util.GwtServerUtil;
7071
import org.eclipse.kura.web.session.Attributes;
7172
import org.eclipse.kura.web.session.BaseSecurityHandler;
@@ -76,6 +77,7 @@
7677
import org.eclipse.kura.web.session.SessionAutorizationSecurityHandler;
7778
import org.eclipse.kura.web.session.SessionExpirationSecurityHandler;
7879
import org.eclipse.kura.web.session.SessionLockedSecurityHandler;
80+
import org.eclipse.kura.web.shared.model.GwtSupportedFeatures;
7981
import org.osgi.framework.BundleContext;
8082
import org.osgi.framework.Constants;
8183
import org.osgi.framework.ServiceRegistration;
@@ -455,6 +457,8 @@ private SecurityHandler createSessionHandlerChain() {
455457

456458
private synchronized void initResourcesAndServlets() {
457459

460+
final GwtSupportedFeatures supportedFeatures = GwtFeatureUtil.getSupportedFeatures();
461+
458462
this.eventService = new GwtEventServiceImpl();
459463
this.wiresBlinkService = new WiresBlinkServlet();
460464

@@ -501,7 +505,7 @@ private synchronized void initResourcesAndServlets() {
501505
sessionContextName);
502506
registerServlet("statusService", DENALI_MODULE_PATH + "/status", new GwtStatusServiceImpl(),
503507
sessionContextName);
504-
registerServlet("deviceService", DENALI_MODULE_PATH + "/device", new GwtDeviceServiceImpl(),
508+
registerServlet("deviceService", DENALI_MODULE_PATH + "/device", new GwtDeviceServiceImpl(supportedFeatures),
505509
sessionContextName);
506510
registerServlet("logService", DENALI_MODULE_PATH + "/logservice", new GwtLogServiceImpl(), sessionContextName);
507511
registerServlet("networkService", DENALI_MODULE_PATH + "/network", new GwtNetworkServiceImpl(),
@@ -518,21 +522,28 @@ private synchronized void initResourcesAndServlets() {
518522
sessionContextName);
519523
registerServlet("usersService", DENALI_MODULE_PATH + "/users", new GwtUserServiceImpl(this.userManager),
520524
sessionContextName);
521-
registerServlet("fileServlet", DENALI_MODULE_PATH + "/file/*", new FileServlet(), sessionContextName);
525+
registerServlet("fileServlet", DENALI_MODULE_PATH + "/file/*", new FileServlet(supportedFeatures),
526+
sessionContextName);
522527
registerServlet("deviceSnapshotsServlet", DENALI_MODULE_PATH + "/device_snapshots",
523528
new DeviceSnapshotsServlet(), sessionContextName);
524-
registerServlet("channelServlet", DENALI_MODULE_PATH + "/assetsUpDownload", new ChannelServlet(),
525-
sessionContextName);
529+
if (supportedFeatures.isAssetAvailable()) {
530+
registerServlet("channelServlet", DENALI_MODULE_PATH + "/assetsUpDownload", new ChannelServlet(),
531+
sessionContextName);
532+
}
526533
registerServlet("logServlet", DENALI_MODULE_PATH + "/log", new LogServlet(), sessionContextName);
527534
registerServlet("skinServlet", DENALI_MODULE_PATH + "/skin/*", new SkinServlet(), resourceContextName);
528535
registerServlet("cloudServices", DENALI_MODULE_PATH + "/cloudservices", new GwtCloudConnectionServiceImpl(),
529536
sessionContextName);
530-
registerServlet("wireGraphService", DENALI_MODULE_PATH + "/wires", new GwtWireGraphServiceImpl(),
531-
sessionContextName);
532-
registerServlet("wiresSnapshotServlet", DENALI_MODULE_PATH + "/wiresSnapshot", new WiresSnapshotServlet(),
533-
sessionContextName);
534-
registerServlet("driverAndAssetService", DENALI_MODULE_PATH + "/assetservices",
535-
new GwtDriverAndAssetServiceImpl(), sessionContextName);
537+
if (supportedFeatures.areWiresServicesAvailable()) {
538+
registerServlet("wireGraphService", DENALI_MODULE_PATH + "/wires",
539+
new GwtWireGraphServiceImpl(supportedFeatures), sessionContextName);
540+
registerServlet("wiresSnapshotServlet", DENALI_MODULE_PATH + "/wiresSnapshot", new WiresSnapshotServlet(),
541+
sessionContextName);
542+
}
543+
if (supportedFeatures.areDriverServicesAvailable()) {
544+
registerServlet("driverAndAssetService", DENALI_MODULE_PATH + "/assetservices",
545+
new GwtDriverAndAssetServiceImpl(supportedFeatures), sessionContextName);
546+
}
536547
registerServlet("wiresBlinkService", ADMIN_ROOT + "/sse", this.wiresBlinkService, sessionContextName);
537548
registerServlet("eventService", DENALI_MODULE_PATH + EVENT_PATH, this.eventService, sessionContextName);
538549

kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/denali.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/*******************************************************************************
22
* Copyright (c) 2024, 2025 Eurotech and/or its affiliates and others
3-
*
3+
*
44
* This program and the accompanying materials are made
55
* available under the terms of the Eclipse Public License 2.0
66
* which is available at https://www.eclipse.org/legal/epl-2.0/
7-
*
7+
*
88
* SPDX-License-Identifier: EPL-2.0
9-
*
9+
*
1010
* Contributors:
1111
* Eurotech
1212
*******************************************************************************/
@@ -20,6 +20,7 @@
2020
import org.eclipse.kura.web.shared.model.GwtGroupedNVPair;
2121
import org.eclipse.kura.web.shared.model.GwtSecurityCapabilities;
2222
import org.eclipse.kura.web.shared.model.GwtSession;
23+
import org.eclipse.kura.web.shared.model.GwtSupportedFeatures;
2324
import org.eclipse.kura.web.shared.model.GwtUserConfig;
2425
import org.eclipse.kura.web.shared.model.GwtXSRFToken;
2526
import org.eclipse.kura.web.shared.service.GwtDeviceService;
@@ -124,13 +125,28 @@ public void onFailure(final Throwable caught) {
124125
}
125126

126127
@Override
127-
public void onSuccess(final GwtSecurityCapabilities result) {
128-
if (result.isDebugMode()) {
128+
public void onSuccess(final GwtSecurityCapabilities securityCapabilities) {
129+
if (securityCapabilities.isDebugMode()) {
129130
gwtSession.setDevelopMode(true);
130131
}
131-
EntryClassUi entryUi = new EntryClassUi(userConfig, result, gwtSession);
132-
RootPanel.get().add(entryUi);
133-
entryUi.init();
132+
133+
denali.this.gwtDeviceService.getSupportedFeatures(token,
134+
new AsyncCallback<GwtSupportedFeatures>() {
135+
136+
@Override
137+
public void onSuccess(GwtSupportedFeatures supportedFeatures) {
138+
EntryClassUi entryUi = new EntryClassUi(userConfig,
139+
securityCapabilities, gwtSession, supportedFeatures);
140+
RootPanel.get().add(entryUi);
141+
entryUi.init();
142+
}
143+
144+
@Override
145+
public void onFailure(Throwable caught) {
146+
FailureHandler.handle(caught, denali.class.getSimpleName());
147+
148+
}
149+
});
134150

135151
}
136152
});

kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/EntryClassUi.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.eclipse.kura.web.shared.model.GwtEventInfo;
5656
import org.eclipse.kura.web.shared.model.GwtSecurityCapabilities;
5757
import org.eclipse.kura.web.shared.model.GwtSession;
58+
import org.eclipse.kura.web.shared.model.GwtSupportedFeatures;
5859
import org.eclipse.kura.web.shared.model.GwtUserConfig;
5960
import org.eclipse.kura.web.shared.model.GwtUserData;
6061
import org.eclipse.kura.web.shared.model.GwtXSRFToken;
@@ -227,7 +228,7 @@ interface EntryClassUIUiBinder extends UiBinder<Widget, EntryClassUi> {
227228
private static PopupPanel waitModal;
228229

229230
private final StatusPanelUi statusBinder = GWT.create(StatusPanelUi.class);
230-
private final DevicePanelUi deviceBinder = GWT.create(DevicePanelUi.class);
231+
private final DevicePanelUi deviceBinder;
231232
private final PackagesPanelUi packagesBinder = GWT.create(PackagesPanelUi.class);
232233
private final SettingsPanelUi settingsBinder = GWT.create(SettingsPanelUi.class);
233234
private final SecurityPanelUi securityBinder;
@@ -236,7 +237,7 @@ interface EntryClassUIUiBinder extends UiBinder<Widget, EntryClassUi> {
236237
private final NetworkPanelUi networkBinder = GWT.create(NetworkPanelUi.class);
237238
private final CloudConnectionsUi cloudServicesBinder = GWT.create(CloudConnectionsUi.class);
238239
private final WiresPanelUi wiresBinder = GWT.create(WiresPanelUi.class);
239-
private final DriversAndAssetsUi driversAndTwinsBinder = GWT.create(DriversAndAssetsUi.class);
240+
private final DriversAndAssetsUi driversAndTwinsBinder;
240241

241242
private final GwtComponentServiceAsync gwtComponentService = GWT.create(GwtComponentService.class);
242243
private final GwtSecurityTokenServiceAsync gwtXSRFService = GWT.create(GwtSecurityTokenService.class);
@@ -285,16 +286,18 @@ public void run() {
285286
private static GwtConsoleUserOptions userOptions;
286287

287288
public EntryClassUi(final GwtUserData gwtUserData, final GwtSecurityCapabilities securityCapabilities,
288-
final GwtSession session) {
289+
final GwtSession session, final GwtSupportedFeatures supportedFeatures) {
289290
initWidget(uiBinder.createAndBindUi(this));
290291

291292
this.ui = this;
292293
this.userData = gwtUserData;
293294
this.securityCapabilities = securityCapabilities;
294295
this.securityBinder = new SecurityPanelUi(gwtUserData, securityCapabilities);
296+
this.driversAndTwinsBinder = new DriversAndAssetsUi(supportedFeatures);
297+
this.deviceBinder = new DevicePanelUi(supportedFeatures);
295298

296299
setFooter(session);
297-
initSystemPanel(session);
300+
initSystemPanel(session, supportedFeatures);
298301
setSession(session);
299302

300303
initWaitModal();
@@ -369,14 +372,28 @@ public void setFooter(GwtSession gwtSession) {
369372
}
370373
}
371374

372-
public void initSystemPanel(GwtSession gwtSession) {
375+
public void initSystemPanel(GwtSession gwtSession, final GwtSupportedFeatures supportedFeatures) {
373376
final EntryClassUi instanceReference = this;
374377
if (!gwtSession.isNetAdminAvailable()
375378
|| !this.userData.checkPermissions(Collections.singleton(KuraPermission.NETWORK_ADMIN))) {
376379
this.network.setVisible(false);
377380
this.firewall.setVisible(false);
378381
}
379382

383+
final boolean areWireServicesAvailable = supportedFeatures.areWiresServicesAvailable();
384+
final boolean areDriverServicesAvailable = supportedFeatures.areDriverServicesAvailable();
385+
386+
this.wires.setVisible(areWireServicesAvailable);
387+
this.driversAndAssetsServices.setVisible(areDriverServicesAvailable);
388+
389+
if (areDriverServicesAvailable) {
390+
initDriversAndAssetsPanel();
391+
}
392+
393+
if (areWireServicesAvailable) {
394+
initWiresPanel();
395+
}
396+
380397
initStatusPanel(instanceReference);
381398

382399
initDevicePanel();
@@ -395,10 +412,6 @@ public void initSystemPanel(GwtSession gwtSession) {
395412

396413
initCloudServicesPanel();
397414

398-
initWiresPanel();
399-
400-
initDriversAndAssetsPanel();
401-
402415
}
403416

404417
private void initDriversAndAssetsPanel() {

kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/device/DevicePanelUi.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011, 2021 Eurotech and/or its affiliates and others
3-
*
2+
* Copyright (c) 2011, 2025 Eurotech and/or its affiliates and others
3+
*
44
* This program and the accompanying materials are made
55
* available under the terms of the Eclipse Public License 2.0
66
* which is available at https://www.eclipse.org/legal/epl-2.0/
7-
*
7+
*
88
* SPDX-License-Identifier: EPL-2.0
9-
*
9+
*
1010
* Contributors:
1111
* Eurotech
1212
*******************************************************************************/
@@ -17,6 +17,7 @@
1717
import org.eclipse.kura.web.client.ui.Tab;
1818
import org.eclipse.kura.web.client.util.FailureHandler;
1919
import org.eclipse.kura.web.shared.model.GwtSession;
20+
import org.eclipse.kura.web.shared.model.GwtSupportedFeatures;
2021
import org.eclipse.kura.web.shared.model.GwtXSRFToken;
2122
import org.eclipse.kura.web.shared.service.GwtDeviceService;
2223
import org.eclipse.kura.web.shared.service.GwtDeviceServiceAsync;
@@ -59,6 +60,8 @@ interface DevicePanelUiUiBinder extends UiBinder<Widget, DevicePanelUi> {
5960
TabListItem systemProperties;
6061
@UiField
6162
TabListItem containers;
63+
@UiField
64+
TabListItem command;
6265

6366
@UiField
6467
ProfileTabUi profilePanel;
@@ -77,7 +80,7 @@ interface DevicePanelUiUiBinder extends UiBinder<Widget, DevicePanelUi> {
7780
@UiField
7881
DockerContainersTabUi dockerContainersPanel;
7982

80-
public DevicePanelUi() {
83+
public DevicePanelUi(final GwtSupportedFeatures supportedFeatures) {
8184
initWidget(uiBinder.createAndBindUi(this));
8285
this.deviceIntro.add(new Span("<p>" + MSGS.deviceIntro() + "</p"));
8386

@@ -89,6 +92,10 @@ public DevicePanelUi() {
8992
this.containers.addClickHandler(new Tab.RefreshHandler(this.dockerContainersPanel));
9093

9194
this.containers.setVisible(false); // hidden by default
95+
96+
this.command.setVisible(supportedFeatures.isCommandServiceAvailable());
97+
this.commandPanel.setVisible(supportedFeatures.isCommandServiceAvailable());
98+
9299
}
93100

94101
public void initDevicePanel() {

0 commit comments

Comments
 (0)