diff --git a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/position/NmeaPosition.java b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/position/NmeaPosition.java
index e511642b95f..85c3c1fe1bd 100644
--- a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/position/NmeaPosition.java
+++ b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/position/NmeaPosition.java
@@ -24,8 +24,7 @@
*
Latitude in degrees
* Track in degrees
* Altitude in meters
- * Speed in km/h
- * Speed in mph
+ * Speed in m/s (this field has different getters to retrieved value in m/s, km/h or mph)
*
* It adds to the OSGI Position class the following fields:
*
@@ -47,11 +46,14 @@
@ProviderType
public class NmeaPosition {
- private double latitude;
- private double longitude;
- private double altitude;
- private double speed;
- private double track;
+ private static final double MS_TO_KMH = 3.6;
+ private static final double MS_TO_MPH = 2.24;
+
+ private double latitudeDegrees;
+ private double longitudeDegrees;
+ private double altitudeMeters;
+ private double speedMetersPerSecond;
+ private double trackDegrees;
private int fixQuality;
private int nrSatellites;
private double mDOP;
@@ -63,28 +65,29 @@ public class NmeaPosition {
private char latitudeHemisphere;
private char longitudeHemisphere;
- public NmeaPosition(double lat, double lon, double alt, double speed, double track) {
- this(lat, lon, alt, speed, track, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, '0', '0', '0');
+ public NmeaPosition(double latDegrees, double lonDegrees, double altDegrees, double speedMps, double trackDegrees) {
+ this(latDegrees, lonDegrees, altDegrees, speedMps, trackDegrees, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, '0', '0', '0');
}
@SuppressWarnings("checkstyle:parameterNumber")
- public NmeaPosition(double lat, double lon, double alt, double speed, double track, int fixQuality,
- int nrSatellites, double dop, double pdop, double hdop, double vdop, int fix3D) {
- this(lat, lon, alt, speed, track, fixQuality, nrSatellites, dop, pdop, hdop, vdop, fix3D, '0', '0', '0');
+ public NmeaPosition(double latDegrees, double lonDegrees, double altDegrees, double speedMps, double trackDegrees,
+ int fixQuality, int nrSatellites, double dop, double pdop, double hdop, double vdop, int fix3D) {
+ this(latDegrees, lonDegrees, altDegrees, speedMps, trackDegrees, fixQuality, nrSatellites, dop, pdop, hdop,
+ vdop, fix3D, '0', '0', '0');
}
/**
* @since 2.0
*/
@SuppressWarnings("checkstyle:parameterNumber")
- public NmeaPosition(double lat, double lon, double alt, double speed, double track, int fixQuality,
- int nrSatellites, double dop, double pdop, double hdop, double vdop, int fix3D, char validF, char hemiLat,
- char hemiLon) {
- this.latitude = lat;
- this.longitude = lon;
- this.altitude = alt;
- this.speed = speed;
- this.track = track;
+ public NmeaPosition(double latDegrees, double lonDegrees, double altDegrees, double speedMps, double trackDegrees,
+ int fixQuality, int nrSatellites, double dop, double pdop, double hdop, double vdop, int fix3D, char validF,
+ char hemiLat, char hemiLon) {
+ this.latitudeDegrees = latDegrees;
+ this.longitudeDegrees = lonDegrees;
+ this.altitudeMeters = altDegrees;
+ this.speedMetersPerSecond = speedMps;
+ this.trackDegrees = trackDegrees;
this.fixQuality = fixQuality;
this.nrSatellites = nrSatellites;
this.mDOP = dop;
@@ -101,69 +104,69 @@ public NmeaPosition(double lat, double lon, double alt, double speed, double tra
* Return the latitude in degrees
*/
public double getLatitude() {
- return this.latitude;
+ return this.latitudeDegrees;
}
public void setLatitude(double latitude) {
- this.latitude = latitude;
+ this.latitudeDegrees = latitude;
}
/**
* Return the longitude in degrees
*/
public double getLongitude() {
- return this.longitude;
+ return this.longitudeDegrees;
}
public void setLongitude(double longitude) {
- this.longitude = longitude;
+ this.longitudeDegrees = longitude;
}
/**
* Return the altitude in meters
*/
public double getAltitude() {
- return this.altitude;
+ return this.altitudeMeters;
}
public void setAltitude(double altitude) {
- this.altitude = altitude;
+ this.altitudeMeters = altitude;
}
/**
* Return the speed in km/h
*/
public double getSpeedKmh() {
- return this.speed * 3.6;
+ return this.speedMetersPerSecond * MS_TO_KMH;
}
/**
* Return the speed in mph
*/
public double getSpeedMph() {
- return this.speed * 2.24;
+ return this.speedMetersPerSecond * MS_TO_MPH;
}
/**
* Return the speed in m/s
*/
public double getSpeed() {
- return this.speed;
+ return this.speedMetersPerSecond;
}
public void setSpeed(double speed) {
- this.speed = speed;
+ this.speedMetersPerSecond = speed;
}
/**
* Return the track in degrees
*/
public double getTrack() {
- return this.track;
+ return this.trackDegrees;
}
public void setTrack(double track) {
- this.track = track;
+ this.trackDegrees = track;
}
public int getFixQuality() {
diff --git a/kura/org.eclipse.kura.cloudconnection.kapua.mqtt.provider/src/main/java/org/eclipse/kura/core/cloud/CloudServiceImpl.java b/kura/org.eclipse.kura.cloudconnection.kapua.mqtt.provider/src/main/java/org/eclipse/kura/core/cloud/CloudServiceImpl.java
index 9944f1efe1b..9065d5ecf4d 100644
--- a/kura/org.eclipse.kura.cloudconnection.kapua.mqtt.provider/src/main/java/org/eclipse/kura/core/cloud/CloudServiceImpl.java
+++ b/kura/org.eclipse.kura.cloudconnection.kapua.mqtt.provider/src/main/java/org/eclipse/kura/core/cloud/CloudServiceImpl.java
@@ -50,6 +50,7 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@@ -174,9 +175,8 @@ public class CloudServiceImpl
private String ownPid;
private ScheduledFuture> scheduledBirthPublisherFuture;
- private final ScheduledExecutorService scheduledBirthPublisher = Executors.newScheduledThreadPool(1);
- private LifecycleMessage lastBirthMessage;
- private LifecycleMessage lastAppMessage;
+ private final ScheduledExecutorService scheduledBirthPublisher = Executors.newSingleThreadScheduledExecutor();
+ private final AtomicBoolean shouldPublishDelayedBirth = new AtomicBoolean();
public CloudServiceImpl() {
this.cloudClients = new CopyOnWriteArrayList<>();
@@ -825,12 +825,11 @@ private void publishBirthCertificate(boolean isNewConnection) throws KuraExcepti
}
readModemProfile();
- LifecycleMessage birthToPublish = new LifecycleMessage(this.options, this).asBirthCertificateMessage();
if (isNewConnection) {
- publishLifeCycleMessage(birthToPublish);
+ publishLifeCycleMessage(new LifecycleMessage(this.options, this).asBirthCertificateMessage());
} else {
- publishWithDelay(birthToPublish);
+ publishWithDelay(false);
}
}
@@ -843,42 +842,26 @@ private void publishAppCertificate() {
logger.info("framework is stopping.. not republishing app certificate");
return;
}
- publishWithDelay(new LifecycleMessage(this.options, this).asAppCertificateMessage());
+ publishWithDelay(true);
}
- private void publishWithDelay(LifecycleMessage message) {
- if (Objects.nonNull(this.scheduledBirthPublisherFuture)) {
- this.scheduledBirthPublisherFuture.cancel(false);
- logger.debug("CloudServiceImpl: BIRTH message cache timer restarted.");
- }
+ private void publishWithDelay(boolean isAppUpdate) {
+ synchronized (this.shouldPublishDelayedBirth) {
+ if (!isAppUpdate) {
+ this.shouldPublishDelayedBirth.set(true);
+ }
- logger.debug("CloudServiceImpl: BIRTH message cached for 30s.");
+ if (Objects.nonNull(this.scheduledBirthPublisherFuture)) {
+ this.scheduledBirthPublisherFuture.cancel(false);
+ logger.debug("CloudServiceImpl: BIRTH message cache timer restarted.");
+ }
+ logger.info("isAppUpdate? {}", isAppUpdate, new RuntimeException());
- if (message.isBirthCertificateMessage()) {
- this.lastBirthMessage = message;
- }
+ logger.debug("CloudServiceImpl: BIRTH message cached for 30s.");
- if (message.isAppCertificateMessage()) {
- this.lastAppMessage = message;
+ this.scheduledBirthPublisherFuture = this.scheduledBirthPublisher.schedule(this::publishDelayedMessage, 30L,
+ TimeUnit.SECONDS);
}
-
- this.scheduledBirthPublisherFuture = this.scheduledBirthPublisher.schedule(() -> {
- try {
-
- if (Objects.nonNull(this.lastBirthMessage)) {
- logger.debug("CloudServiceImpl: publishing cached BIRTH message.");
- publishLifeCycleMessage(this.lastBirthMessage);
- }
-
- if (Objects.nonNull(this.lastAppMessage)) {
- logger.debug("CloudServiceImpl: publishing cached APP message.");
- publishLifeCycleMessage(this.lastAppMessage);
- }
-
- } catch (KuraException e) {
- logger.error("Error sending cached BIRTH/APP certificate.", e);
- }
- }, 30L, TimeUnit.SECONDS);
}
private void publishLifeCycleMessage(LifecycleMessage message) throws KuraException {
@@ -902,6 +885,23 @@ private void publishLifeCycleMessage(LifecycleMessage message) throws KuraExcept
}
}
+ private void publishDelayedMessage() {
+ synchronized (this.shouldPublishDelayedBirth) {
+ try {
+
+ if (this.shouldPublishDelayedBirth.get()) {
+ publishLifeCycleMessage(new LifecycleMessage(this.options, this).asBirthCertificateMessage());
+ } else {
+ publishLifeCycleMessage(new LifecycleMessage(this.options, this).asAppCertificateMessage());
+ }
+ this.shouldPublishDelayedBirth.set(false);
+
+ } catch (KuraException e) {
+ logger.error("Error sending cached BIRTH/APP certificate.", e);
+ }
+ }
+ }
+
private byte[] encodeProtobufPayload(KuraPayload payload) throws KuraException {
byte[] bytes = new byte[0];
if (payload == null) {
diff --git a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dhcp/server/DnsmasqTool.java b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dhcp/server/DnsmasqTool.java
index 41d1bea9c69..9d6fa752a4f 100644
--- a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dhcp/server/DnsmasqTool.java
+++ b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dhcp/server/DnsmasqTool.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2023 Eurotech and/or its affiliates and others
+ * Copyright (c) 2023, 2024 Eurotech and/or its affiliates and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -40,7 +40,7 @@ public class DnsmasqTool implements DhcpLinuxTool {
private static final Logger logger = LoggerFactory.getLogger(DnsmasqTool.class);
private String globalConfigFilename = "/etc/dnsmasq.d/dnsmasq-globals.conf";
- private static final String GLOBAL_CONFIGURATION = "port=0\nbind-dynamic\ndhcp-leasefile=/var/lib/dhcp/dnsmasq.leases\n";
+ private static final String GLOBAL_CONFIGURATION = "port=0\nbind-dynamic\n";
static final Command IS_ACTIVE_COMMAND = new Command(new String[] { "systemctl", "is-active", "--quiet",
DhcpServerTool.DNSMASQ.getValue() });
diff --git a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/position/MMLocationParser.java b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/position/MMLocationParser.java
index 867bca37f3d..04ad048c4b2 100644
--- a/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/position/MMLocationParser.java
+++ b/kura/org.eclipse.kura.nm/src/main/java/org/eclipse/kura/nm/position/MMLocationParser.java
@@ -38,15 +38,16 @@ public class MMLocationParser {
private static final Logger logger = LoggerFactory.getLogger(MMLocationParser.class);
- private static final double KNOTS_TO_M_S = 1 / 1.94384449;
+ private static final double KNOTS_TO_MS = 1 / 1.94384449;
+
private int gnssTypeUpdateCounter = 0;
private static final int GNSSTYPE_RESET_COUNTER = 50;
- private Double lat = 0.0;
- private Double lon = 0.0;
- private Double alt = 0.0;
- private Double speed = 0.0;
- private Double track = 0.0;
+ private Double latitudeDegrees = 0.0;
+ private Double longitudeDegrees = 0.0;
+ private Double altitudeMeters = 0.0;
+ private Double speedMetersPerSecond = 0.0;
+ private Double trackDegrees = 0.0;
private int fixQuality;
private int nrSatellites;
@@ -68,10 +69,15 @@ public LocalDateTime getLocalDateTime() {
return Objects.requireNonNull(LocalDateTime.of(date, time));
}
+ /*
+ * Conversions are required since org.osgi.util.position.Position requires values in radians for latitude, longitude
+ * and track.
+ */
public Position getPosition() {
- return Objects.requireNonNull(new Position(new Measurement(this.lat, Unit.rad),
- new Measurement(this.lon, Unit.rad), new Measurement(this.alt, Unit.m),
- new Measurement(this.speed, Unit.m_s), new Measurement(this.track, Unit.rad)));
+ return Objects.requireNonNull(new Position(new Measurement(Math.toRadians(this.latitudeDegrees), Unit.rad),
+ new Measurement(Math.toRadians(this.longitudeDegrees), Unit.rad),
+ new Measurement(this.altitudeMeters, Unit.m), new Measurement(this.speedMetersPerSecond, Unit.m_s),
+ new Measurement(Math.toRadians(this.trackDegrees), Unit.rad)));
}
public Set getGnssTypes() {
@@ -83,9 +89,9 @@ public boolean isFixed() {
}
public NmeaPosition getNmeaPosition() {
- return new NmeaPosition(this.lat, this.lon, this.alt, this.speed, this.track, this.fixQuality,
- this.nrSatellites, this.mDOP, this.mPDOP, this.mHDOP, this.mVDOP, this.m3Dfix, this.validFix,
- this.latitudeHemisphere, this.longitudeHemisphere);
+ return new NmeaPosition(this.latitudeDegrees, this.longitudeDegrees, this.altitudeMeters,
+ this.speedMetersPerSecond, this.trackDegrees, this.fixQuality, this.nrSatellites, this.mDOP, this.mPDOP,
+ this.mHDOP, this.mVDOP, this.m3Dfix, this.validFix, this.latitudeHemisphere, this.longitudeHemisphere);
}
public String getNmeaTime() {
@@ -102,15 +108,15 @@ public void parseRawLocation(Variant> rawLocationVariant) {
switch (rawEntry.getKey()) {
case "latitude":
- this.lat = Math.toRadians((Double) rawEntry.getValue().getValue());
+ this.latitudeDegrees = (Double) rawEntry.getValue().getValue();
break;
case "longitude":
- this.lon = Math.toRadians((Double) rawEntry.getValue().getValue());
+ this.longitudeDegrees = (Double) rawEntry.getValue().getValue();
break;
case "altitude":
- this.alt = (Double) rawEntry.getValue().getValue();
+ this.altitudeMeters = (Double) rawEntry.getValue().getValue();
break;
// time comes in format HHmmss.SS, so we cut the string after the dot to extract only the util information
@@ -210,10 +216,10 @@ private void parseRmcSentence(List rmcTokens) {
this.date = LocalDate.parse(rmcTokens.get(9), DateTimeFormatter.ofPattern("ddMyy"));
}
if (!rmcTokens.get(7).isEmpty()) {
- this.speed = Double.parseDouble(rmcTokens.get(7)) * KNOTS_TO_M_S;
+ this.speedMetersPerSecond = Double.parseDouble(rmcTokens.get(7)) * KNOTS_TO_MS;
}
if (!rmcTokens.get(8).isEmpty()) {
- this.track = Math.toRadians(Double.parseDouble(rmcTokens.get(8)));
+ this.trackDegrees = Double.parseDouble(rmcTokens.get(8));
}
if (!rmcTokens.get(4).isEmpty()) {
this.latitudeHemisphere = rmcTokens.get(4).charAt(0);
@@ -287,7 +293,8 @@ private GNSSType sentenceIdToGnssType(String type) {
@Override
public String toString() {
- return "ModemManagerProvider [latitude=" + lat + ", longitude=" + lon + ", altitude=" + alt + ", speed=" + speed
- + ", timestamp=" + time + ", date=" + date + ", gnssType=" + gnssTypes + "]";
+ return "ModemManagerProvider [latitude=" + latitudeDegrees + ", longitude=" + longitudeDegrees + ", altitude="
+ + altitudeMeters + ", speed=" + speedMetersPerSecond + ", timestamp=" + time + ", date=" + date
+ + ", gnssType=" + gnssTypes + "]";
}
}
diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabAdvancedUi.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabAdvancedUi.java
index 469c5ab76e9..f2c9e089058 100644
--- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabAdvancedUi.java
+++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabAdvancedUi.java
@@ -18,23 +18,20 @@
import org.eclipse.kura.web.client.messages.Messages;
import org.eclipse.kura.web.client.util.HelpButton;
import org.eclipse.kura.web.client.util.MessageUtils;
-import org.eclipse.kura.web.shared.model.GwtNetIfType;
import org.eclipse.kura.web.shared.model.GwtNetInterfaceConfig;
import org.eclipse.kura.web.shared.model.GwtSession;
import org.gwtbootstrap3.client.ui.Form;
-import org.gwtbootstrap3.client.ui.FormControlStatic;
import org.gwtbootstrap3.client.ui.FormGroup;
import org.gwtbootstrap3.client.ui.FormLabel;
import org.gwtbootstrap3.client.ui.HelpBlock;
import org.gwtbootstrap3.client.ui.IntegerBox;
import org.gwtbootstrap3.client.ui.ListBox;
import org.gwtbootstrap3.client.ui.PanelHeader;
-import org.gwtbootstrap3.client.ui.TextArea;
-import org.gwtbootstrap3.client.ui.TextBox;
import org.gwtbootstrap3.client.ui.constants.ValidationState;
import org.gwtbootstrap3.client.ui.html.Span;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
@@ -42,7 +39,7 @@
import com.google.gwt.user.client.ui.Widget;
public class TabAdvancedUi extends Composite implements NetworkTab {
-
+
private static final String PROMISC_DEFAULT = "netAdvPromiscDefault";
private static final String PROMISC_ENABLED = "netAdvPromiscEnabled";
private static final String PROMISC_DISABLED = "netAdvPromiscDisabled";
@@ -76,7 +73,6 @@ interface TabAdvancedUiUiBinder extends UiBinder {
@UiField
HelpButton helpButtonPromisc;
-
@UiField
IntegerBox mtu;
@UiField
@@ -99,7 +95,12 @@ interface TabAdvancedUiUiBinder extends UiBinder {
private final NetworkTabsUi tabs;
private Optional selectedNetIfConfig = Optional.empty();
+ private static native void changeCachedDecimalFormat(NumberFormat f) /*-{
+ @com.google.gwt.i18n.client.NumberFormat::cachedDecimalFormat = f;
+ }-*/;
+
public TabAdvancedUi(GwtSession currentSession, NetworkTabsUi netTabs) {
+ changeCachedDecimalFormat(NumberFormat.getFormat("###0"));
initWidget(uiBinder.createAndBindUi(this));
this.helpTitle.setText(MSGS.netHelpTitle());
@@ -151,10 +152,10 @@ private void initPromiscField() {
}
private void initTextBoxes() {
- initMtuField();
- initIp6MtuField();
+ initMtuField();
+ initIp6MtuField();
}
-
+
private void initMtuField() {
this.mtu.addMouseOverHandler(event -> {
this.helpText.clear();
@@ -164,16 +165,8 @@ private void initMtuField() {
this.mtu.addValueChangeHandler(valChangeEvent -> {
setDirty(true);
- String inputText = this.mtu.getText();
- boolean isValidValue = false;
-
- if (inputText != null) {
- if (inputText.trim().isEmpty()) {
- isValidValue = true;
- } else {
- isValidValue = isValidIntegerInRange(inputText, 0, Integer.MAX_VALUE);
- }
- }
+ Integer inputValue = this.mtu.getValue();
+ boolean isValidValue = isValidIntegerInRange(inputValue, 0, Integer.MAX_VALUE);
if (isValidValue) {
this.groupMtu.setValidationState(ValidationState.NONE);
@@ -196,16 +189,8 @@ private void initIp6MtuField() {
this.ip6Mtu.addValueChangeHandler(valChangeEvent -> {
setDirty(true);
- String inputText = this.ip6Mtu.getText();
- boolean isValidValue = false;
-
- if (inputText != null) {
- if (inputText.trim().isEmpty()) {
- isValidValue = true;
- } else {
- isValidValue = isValidIntegerInRange(inputText, 0, Integer.MAX_VALUE);
- }
- }
+ Integer inputValue = this.ip6Mtu.getValue();
+ boolean isValidValue = isValidIntegerInRange(inputValue, 0, Integer.MAX_VALUE);
if (isValidValue) {
this.groupIp6Mtu.setValidationState(ValidationState.NONE);
@@ -217,17 +202,13 @@ private void initIp6MtuField() {
});
}
- private boolean isValidIntegerInRange(String integerText, int min, int max) {
- try {
- int value = Integer.parseInt(integerText.trim());
- return value >= min && value <= max;
- } catch (NumberFormatException e) {
+ private boolean isValidIntegerInRange(Integer integerValue, int min, int max) {
+ if (integerValue == null) {
return false;
}
+ return integerValue >= min && integerValue <= max;
}
-
-
private void setHelpText(String message) {
this.helpText.clear();
this.helpText.add(new Span(message));
@@ -258,7 +239,7 @@ private void refreshForm() {
private void refreshFieldsBasedOnInterface(GwtNetInterfaceConfig config) {
switch (config.getHwTypeEnum()) {
case ETHERNET:
- this.promisc.setEnabled(true);
+ this.promisc.setEnabled(true);
break;
case LOOPBACK:
this.mtu.setEnabled(false);
@@ -301,15 +282,15 @@ public void getUpdatedNetInterface(GwtNetInterfaceConfig updatedNetIf) {
}
private void updateConfigWithSelectedValues(GwtNetInterfaceConfig updatedNetIf) {
- if (this.mtu.getValue() != null) {
+ if (this.mtu.getValue() != null) {
updatedNetIf.setMtu(this.mtu.getValue());
}
- if (this.ip6Mtu.getValue() != null) {
+ if (this.ip6Mtu.getValue() != null) {
updatedNetIf.setIpv6Mtu(this.ip6Mtu.getValue());
}
-
- if(!nullOrEmpty(this.promisc.getSelectedValue())) {
+
+ if (!nullOrEmpty(this.promisc.getSelectedValue())) {
updatedNetIf.setPromisc(Integer.parseInt(this.promisc.getSelectedValue()));
}
}
@@ -343,8 +324,8 @@ public void refresh() {
}
private void reset() {
- this.mtu.setText("");
- this.ip6Mtu.setText("");
+ this.mtu.setValue(0);
+ this.ip6Mtu.setValue(0);
this.promisc.setSelectedIndex(0);
}
diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabIp4Ui.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabIp4Ui.java
index 4dcf431b4c7..d63be45f1a9 100644
--- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabIp4Ui.java
+++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/client/ui/network/TabIp4Ui.java
@@ -206,10 +206,6 @@ public void setNetInterface(GwtNetInterfaceConfig config) {
return;
}
- if (config.getSubnetMask() != null && "255.255.255.255".equals(config.getSubnetMask())) {
- config.setSubnetMask("");
- }
-
this.selectedNetIfConfig = config;
logger.fine(this.selectedNetIfConfig.getName());
logger.fine(this.selectedNetIfConfig.getConfigMode());
@@ -292,6 +288,10 @@ public boolean isValid() {
this.helpGateway.setText(MSGS.netIPv4InvalidAddress());
flag = false;
}
+ if (this.subnet.getValue() == null || "".equals(this.subnet.getValue().trim())) {
+ this.groupSubnet.setValidationState(ValidationState.ERROR);
+ this.helpSubnet.setText(MSGS.netIPv4InvalidAddress());
+ }
if (this.ip.getValue() == null || "".equals(this.ip.getValue().trim())) {
this.groupIp.setValidationState(ValidationState.ERROR);
this.helpIp.setText(MSGS.netIPv4InvalidAddress());
@@ -530,8 +530,7 @@ private void initGatewayField() {
this.gateway.addMouseOutHandler(event -> resetHelp());
this.gateway.addValueChangeHandler(event -> {
setDirty(true);
- if (!TabIp4Ui.this.gateway.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())
- && TabIp4Ui.this.gateway.getText().trim().length() > 0) {
+ if (!TabIp4Ui.this.gateway.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())) {
TabIp4Ui.this.groupGateway.setValidationState(ValidationState.ERROR);
TabIp4Ui.this.helpGateway.setText(MSGS.netIPv4InvalidAddress());
} else {
@@ -551,8 +550,7 @@ private void initSubnetMaskField() {
this.subnet.addMouseOutHandler(event -> resetHelp());
this.subnet.addValueChangeHandler(event -> {
setDirty(true);
- if (!TabIp4Ui.this.subnet.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())
- && TabIp4Ui.this.subnet.getText().trim().length() > 0) {
+ if (!TabIp4Ui.this.subnet.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())) {
TabIp4Ui.this.groupSubnet.setValidationState(ValidationState.ERROR);
TabIp4Ui.this.helpSubnet.setText(MSGS.netIPv4InvalidAddress());
} else {
@@ -572,8 +570,7 @@ private void initIpAddressField() {
this.ip.addMouseOutHandler(event -> resetHelp());
this.ip.addValueChangeHandler(event -> {
setDirty(true);
- if (!TabIp4Ui.this.ip.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())
- || TabIp4Ui.this.ip.getText().trim().length() <= 0) {
+ if (!TabIp4Ui.this.ip.getText().trim().matches(FieldType.IPV4_ADDRESS.getRegex())) {
TabIp4Ui.this.groupIp.setValidationState(ValidationState.ERROR);
TabIp4Ui.this.helpIp.setText(MSGS.netIPv4InvalidAddress());
} else {