From 760fbea420290f8adf86ab45bc0d34b22d3da4b0 Mon Sep 17 00:00:00 2001 From: Sergii Leshchenko Date: Mon, 4 Dec 2017 11:25:31 +0200 Subject: [PATCH] Renamed properties to attributes in Machine model object (#7687) CHE-6803 Rename properties to attributes in Machine model object It also contain removing outdated WsAgentPingRequestFactoryTest --- .../model/workspace/config/MachineConfig.java | 2 +- .../core/model/workspace/runtime/Machine.java | 4 +- dashboard/src/components/typings/che.d.ts | 2 +- .../ide/api/workspace/model/MachineImpl.java | 22 ++--- .../ide/api/workspace/model/RuntimeImpl.java | 2 +- .../ide/macro/DevMachineHostNameMacro.java | 2 +- .../panel/ProcessesPanelPresenter.java | 2 +- .../infrastructure/docker/DockerMachine.java | 2 +- .../openshift/OpenShiftMachine.java | 2 +- .../GdbConfigurationPagePresenter.java | 2 +- .../ext/machine/server/ssh/KeysInjector.java | 2 +- .../machine/server/ssh/KeysInjectorTest.java | 2 +- .../api/workspace/shared/dto/MachineDto.java | 4 +- .../api/workspace/server/DtoConverter.java | 2 +- .../server/model/impl/MachineImpl.java | 22 ++--- .../workspace/server/spi/InternalRuntime.java | 2 +- .../server/WsAgentPingRequestFactoryTest.java | 91 ------------------- .../server/spi/InternalRuntimeTest.java | 6 +- 18 files changed, 41 insertions(+), 132 deletions(-) delete mode 100644 wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/agent/server/WsAgentPingRequestFactoryTest.java diff --git a/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/config/MachineConfig.java b/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/config/MachineConfig.java index e8595f73f7..bebae9fccb 100644 --- a/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/config/MachineConfig.java +++ b/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/config/MachineConfig.java @@ -42,7 +42,7 @@ public interface MachineConfig { /** Returns environment variables of machine. */ Map getEnv(); - /** Returns attributes of resources of machine. */ + /** Returns attributes of machine. */ Map getAttributes(); /** Returns volumes of machine */ diff --git a/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/runtime/Machine.java b/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/runtime/Machine.java index 5aaaff2fd8..5f85a66b4a 100644 --- a/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/runtime/Machine.java +++ b/core/che-core-api-model/src/main/java/org/eclipse/che/api/core/model/workspace/runtime/Machine.java @@ -19,8 +19,8 @@ import java.util.Map; */ public interface Machine { - /** Returns machine specific properties. */ - Map getProperties(); + /** Returns machine specific attributes. */ + Map getAttributes(); /** * Returns mapping of exposed ports to {@link Server}. diff --git a/dashboard/src/components/typings/che.d.ts b/dashboard/src/components/typings/che.d.ts index 711c9f1ab7..0a6f8dd9a4 100755 --- a/dashboard/src/components/typings/che.d.ts +++ b/dashboard/src/components/typings/che.d.ts @@ -355,7 +355,7 @@ declare namespace che { } export interface IWorkspaceRuntimeMachine { - properties: { [propName: string]: string }; + attributes: { [propName: string]: string }; servers: { [serverName: string]: IWorkspaceRuntimeMachineServer }; } diff --git a/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/MachineImpl.java b/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/MachineImpl.java index 30432b3c16..8bd0bc0375 100644 --- a/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/MachineImpl.java +++ b/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/MachineImpl.java @@ -21,13 +21,13 @@ import org.eclipse.che.api.core.model.workspace.runtime.Server; public class MachineImpl implements Machine { private String name; - private Map properties; + private Map attributes; private Map servers; public MachineImpl( - String name, Map properties, Map servers) { + String name, Map attributes, Map servers) { this.name = name; - this.properties = new HashMap<>(properties); + this.attributes = new HashMap<>(attributes); if (servers != null) { this.servers = servers @@ -42,7 +42,7 @@ public class MachineImpl implements Machine { } public MachineImpl(String name, Machine machine) { - this(name, machine.getProperties(), machine.getServers()); + this(name, machine.getAttributes(), machine.getServers()); } public String getName() { @@ -50,11 +50,11 @@ public class MachineImpl implements Machine { } @Override - public Map getProperties() { - if (properties == null) { - properties = new HashMap<>(); + public Map getAttributes() { + if (attributes == null) { + attributes = new HashMap<>(); } - return properties; + return attributes; } @Override @@ -74,17 +74,17 @@ public class MachineImpl implements Machine { if (this == o) return true; if (!(o instanceof MachineImpl)) return false; MachineImpl that = (MachineImpl) o; - return Objects.equals(getProperties(), that.getProperties()) + return Objects.equals(getAttributes(), that.getAttributes()) && Objects.equals(getServers(), that.getServers()); } @Override public int hashCode() { - return Objects.hash(getProperties(), getServers()); + return Objects.hash(getAttributes(), getServers()); } @Override public String toString() { - return "MachineImpl{" + "properties=" + properties + ", servers=" + servers + '}'; + return "MachineImpl{" + "attributes=" + attributes + ", servers=" + servers + '}'; } } diff --git a/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/RuntimeImpl.java b/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/RuntimeImpl.java index 1b8e878f0f..56676e28e5 100644 --- a/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/RuntimeImpl.java +++ b/ide/che-core-ide-api/src/main/java/org/eclipse/che/ide/api/workspace/model/RuntimeImpl.java @@ -50,7 +50,7 @@ public class RuntimeImpl implements Runtime { entry -> new MachineImpl( entry.getKey(), - entry.getValue().getProperties(), + entry.getValue().getAttributes(), entry.getValue().getServers()))); } this.owner = owner; diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/macro/DevMachineHostNameMacro.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/macro/DevMachineHostNameMacro.java index 4113288f06..17a0f25edd 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/macro/DevMachineHostNameMacro.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/macro/DevMachineHostNameMacro.java @@ -60,7 +60,7 @@ public class DevMachineHostNameMacro implements Macro { Optional devMachine = wsAgentServerUtil.getWsAgentServerMachine(); if (devMachine.isPresent()) { - String hostName = devMachine.get().getProperties().get("config.hostname"); + String hostName = devMachine.get().getAttributes().get("config.hostname"); if (hostName != null) { value = hostName; diff --git a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/processes/panel/ProcessesPanelPresenter.java b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/processes/panel/ProcessesPanelPresenter.java index 0505ac8d31..3214a6dcdc 100644 --- a/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/processes/panel/ProcessesPanelPresenter.java +++ b/ide/che-core-ide-app/src/main/java/org/eclipse/che/ide/processes/panel/ProcessesPanelPresenter.java @@ -501,7 +501,7 @@ public class ProcessesPanelPresenter extends BasePresenter // user final String userName; - String user = machine.get().getProperties().get("config.user"); + String user = machine.get().getAttributes().get("config.user"); if (isNullOrEmpty(user)) { userName = "root"; } else { diff --git a/infrastructures/docker/infrastructure/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerMachine.java b/infrastructures/docker/infrastructure/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerMachine.java index 7fc6a9e2c4..2d5dd2b1ce 100644 --- a/infrastructures/docker/infrastructure/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerMachine.java +++ b/infrastructures/docker/infrastructure/src/main/java/org/eclipse/che/workspace/infrastructure/docker/DockerMachine.java @@ -70,7 +70,7 @@ public class DockerMachine implements Machine { } @Override - public Map getProperties() { + public Map getAttributes() { return Collections.emptyMap(); } diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftMachine.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftMachine.java index 98d3c9725e..1b349c8f9f 100644 --- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftMachine.java +++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/OpenShiftMachine.java @@ -62,7 +62,7 @@ public class OpenShiftMachine implements Machine { } @Override - public Map getProperties() { + public Map getAttributes() { return emptyMap(); } diff --git a/plugins/plugin-gdb/che-plugin-gdb-ide/src/main/java/org/eclipse/che/plugin/gdb/ide/configuration/GdbConfigurationPagePresenter.java b/plugins/plugin-gdb/che-plugin-gdb-ide/src/main/java/org/eclipse/che/plugin/gdb/ide/configuration/GdbConfigurationPagePresenter.java index 2e4721ec57..d8ee249ced 100644 --- a/plugins/plugin-gdb/che-plugin-gdb-ide/src/main/java/org/eclipse/che/plugin/gdb/ide/configuration/GdbConfigurationPagePresenter.java +++ b/plugins/plugin-gdb/che-plugin-gdb-ide/src/main/java/org/eclipse/che/plugin/gdb/ide/configuration/GdbConfigurationPagePresenter.java @@ -109,7 +109,7 @@ public class GdbConfigurationPagePresenter private void setHosts(List machines) { Map hosts = new HashMap<>(); for (MachineImpl machine : machines) { - String host = machine.getProperties().get("network.ipAddress"); + String host = machine.getAttributes().get("network.ipAddress"); if (host == null) { continue; } diff --git a/plugins/plugin-machine/che-plugin-machine-ext-server/src/main/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjector.java b/plugins/plugin-machine/che-plugin-machine-ext-server/src/main/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjector.java index ca58094d1d..7bcabd5fc9 100644 --- a/plugins/plugin-machine/che-plugin-machine-ext-server/src/main/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjector.java +++ b/plugins/plugin-machine/che-plugin-machine-ext-server/src/main/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjector.java @@ -94,7 +94,7 @@ public class KeysInjector { return; } - final String containerId = machine.getRuntime().getProperties().get("id"); + final String containerId = machine.getRuntime().getAttributes().get("id"); StringBuilder command = new StringBuilder("mkdir ~/.ssh/ -p"); for (String publicKey : publicKeys) { command.append("&& echo '") diff --git a/plugins/plugin-machine/che-plugin-machine-ext-server/src/test/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjectorTest.java b/plugins/plugin-machine/che-plugin-machine-ext-server/src/test/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjectorTest.java index 538dc12687..104eea99a9 100644 --- a/plugins/plugin-machine/che-plugin-machine-ext-server/src/test/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjectorTest.java +++ b/plugins/plugin-machine/che-plugin-machine-ext-server/src/test/java/org/eclipse/che/ide/ext/machine/server/ssh/KeysInjectorTest.java @@ -74,7 +74,7 @@ public class KeysInjectorTest { // public void setUp() throws Exception { // final Map metadataProperties = new HashMap<>(); // metadataProperties.put("id", CONTAINER_ID); - // when(machineRuntime.getProperties()).thenReturn(metadataProperties); + // when(machineRuntime.getAttributes()).thenReturn(metadataProperties); // // when(environmentEngine.getMachine(WORKSPACE_ID, MACHINE_ID)).thenReturn(instance); // when(instance.getOwner()).thenReturn(OWNER); diff --git a/wsmaster/che-core-api-workspace-shared/src/main/java/org/eclipse/che/api/workspace/shared/dto/MachineDto.java b/wsmaster/che-core-api-workspace-shared/src/main/java/org/eclipse/che/api/workspace/shared/dto/MachineDto.java index 9997b5b376..f3449744d9 100644 --- a/wsmaster/che-core-api-workspace-shared/src/main/java/org/eclipse/che/api/workspace/shared/dto/MachineDto.java +++ b/wsmaster/che-core-api-workspace-shared/src/main/java/org/eclipse/che/api/workspace/shared/dto/MachineDto.java @@ -19,9 +19,9 @@ import org.eclipse.che.dto.shared.DTO; public interface MachineDto extends Machine { @Override - Map getProperties(); + Map getAttributes(); - MachineDto withProperties(Map properties); + MachineDto withAttributes(Map attributes); @Override Map getServers(); diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/DtoConverter.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/DtoConverter.java index b367350d67..3eaf84d2ef 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/DtoConverter.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/DtoConverter.java @@ -279,7 +279,7 @@ public final class DtoConverter { /** Converts {@link Machine} to {@link MachineDto}. */ public static MachineDto asDto(Machine machine) { - MachineDto machineDto = newDto(MachineDto.class).withProperties(machine.getProperties()); + MachineDto machineDto = newDto(MachineDto.class).withAttributes(machine.getAttributes()); if (machine.getServers() != null) { machineDto.withServers( machine diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/MachineImpl.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/MachineImpl.java index 15a200e094..2da7161b96 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/MachineImpl.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/model/impl/MachineImpl.java @@ -23,16 +23,16 @@ import org.eclipse.che.api.core.model.workspace.runtime.Server; */ public class MachineImpl implements Machine { - private Map properties; + private Map attributes; private Map servers; public MachineImpl(Machine machineRuntime) { - this(machineRuntime.getProperties(), machineRuntime.getServers()); + this(machineRuntime.getAttributes(), machineRuntime.getServers()); } - public MachineImpl(Map properties, Map servers) { + public MachineImpl(Map attributes, Map servers) { this(servers); - this.properties = new HashMap<>(properties); + this.attributes = new HashMap<>(attributes); } public MachineImpl(Map servers) { @@ -49,11 +49,11 @@ public class MachineImpl implements Machine { } @Override - public Map getProperties() { - if (properties == null) { - properties = new HashMap<>(); + public Map getAttributes() { + if (attributes == null) { + attributes = new HashMap<>(); } - return properties; + return attributes; } @Override @@ -69,17 +69,17 @@ public class MachineImpl implements Machine { if (this == o) return true; if (!(o instanceof MachineImpl)) return false; MachineImpl machine = (MachineImpl) o; - return Objects.equals(getProperties(), machine.getProperties()) + return Objects.equals(getAttributes(), machine.getAttributes()) && Objects.equals(getServers(), machine.getServers()); } @Override public int hashCode() { - return Objects.hash(getProperties(), getServers()); + return Objects.hash(getAttributes(), getServers()); } @Override public String toString() { - return "MachineImpl{" + "properties=" + properties + ", servers=" + servers + '}'; + return "MachineImpl{" + "attributes=" + attributes + ", servers=" + servers + '}'; } } diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/InternalRuntime.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/InternalRuntime.java index 0b59adf3a0..fbaf55ce55 100644 --- a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/InternalRuntime.java +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/spi/InternalRuntime.java @@ -77,7 +77,7 @@ public abstract class InternalRuntime implements Runti Map.Entry::getKey, e -> new MachineImpl( - e.getValue().getProperties(), + e.getValue().getAttributes(), rewriteExternalServers(e.getValue().getServers())))); } diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/agent/server/WsAgentPingRequestFactoryTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/agent/server/WsAgentPingRequestFactoryTest.java deleted file mode 100644 index 5cfc8eae8b..0000000000 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/agent/server/WsAgentPingRequestFactoryTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2012-2017 Red Hat, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Red Hat, Inc. - initial API and implementation - */ -package org.eclipse.che.api.agent.server; - -import org.mockito.testng.MockitoTestNGListener; -import org.testng.annotations.Listeners; - -@Listeners(value = {MockitoTestNGListener.class}) -public class WsAgentPingRequestFactoryTest { - // private final static int WS_AGENT_PING_CONNECTION_TIMEOUT_MS = 20; - // private final static String WS_AGENT_URL_IS_NOT_VALID = "URL of Workspace Agent is - // null or empty."; - // private static final String WS_AGENT_SERVER_NOT_FOUND_ERROR = "Workspace agent server - // not found in dev machine."; - // private final static String WS_AGENT_SERVER_URL = "ws_agent"; - // - // @Mock - // private HttpJsonRequestFactory httpJsonRequestFactory; - // @Mock - // private HttpJsonRequest httpJsonRequest; - // @Mock - // private OldMachine devMachine; - // @Mock - // private OldServer server; - // @Mock - // private Machine machineRuntimeInfo; - // @Mock - // private ServerProperties serverProperties; - // - // private Map servers = new HashMap<>(1); - // - // private WsAgentPingRequestFactory factory; - // - // @BeforeMethod - // public void setUp() throws Exception { - // factory = new WsAgentPingRequestFactory(httpJsonRequestFactory, - // WS_AGENT_PING_CONNECTION_TIMEOUT_MS); - // - // servers.put(WS_AGENT_SERVER_URL, server); - // servers.put(WS_AGENT_PORT, server); - // - // when(httpJsonRequestFactory.fromUrl(anyString())).thenReturn(httpJsonRequest); - // when(httpJsonRequest.setMethod(HttpMethod.GET)).thenReturn(httpJsonRequest); - // when(server.getProperties()).thenReturn(serverProperties); - // when(serverProperties.getInternalUrl()).thenReturn(WS_AGENT_SERVER_URL); - // when(devMachine.getRuntime()).thenReturn(machineRuntimeInfo); - // doReturn(servers).when(machineRuntimeInfo).getServers(); - // } - // - // - // @Test(expectedExceptions = ServerException.class, expectedExceptionsMessageRegExp = - // WS_AGENT_SERVER_NOT_FOUND_ERROR) - // public void throwsServerExceptionWhenWsAgentIsNull() throws Exception { - // servers.clear(); - // - // factory.createRequest(devMachine); - // } - // - // @Test(expectedExceptions = ServerException.class, expectedExceptionsMessageRegExp = - // WS_AGENT_URL_IS_NOT_VALID) - // public void throwsServerExceptionWhenWsServerUrlIsNull() throws Exception { - // when(serverProperties.getInternalUrl()).thenReturn(null); - // - // factory.createRequest(devMachine); - // } - // - // @Test(expectedExceptions = ServerException.class, expectedExceptionsMessageRegExp = - // WS_AGENT_URL_IS_NOT_VALID) - // public void throwsServerExceptionWhenWsServerUrlIsEmpty() throws Exception { - // when(serverProperties.getInternalUrl()).thenReturn(""); - // - // factory.createRequest(devMachine); - // } - // - // @Test - // public void pingRequestShouldBeCreated() throws Exception { - // factory.createRequest(devMachine); - // - // verify(httpJsonRequestFactory).fromUrl(WS_AGENT_SERVER_URL + '/'); - // verify(httpJsonRequest).setMethod(javax.ws.rs.HttpMethod.GET); - // verify(httpJsonRequest).setTimeout(WS_AGENT_PING_CONNECTION_TIMEOUT_MS); - // } -} diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/InternalRuntimeTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/InternalRuntimeTest.java index 428f148047..8a2493310f 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/InternalRuntimeTest.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/spi/InternalRuntimeTest.java @@ -399,7 +399,7 @@ public class InternalRuntimeTest { assertEquals(actualMachines.size(), expectedMachinesAmount); assertTrue(actualMachines.containsKey(expectedMachineName)); Machine actualMachine = actualMachines.get(expectedMachineName); - assertEquals(actualMachine.getProperties().size(), expectedMachinePropsSize); + assertEquals(actualMachine.getAttributes().size(), expectedMachinePropsSize); assertEquals(actualMachine.getServers().size(), expectedMachineServersSize); assertTrue(actualMachine.getServers().containsKey(expectedServerName)); assertEquals( @@ -419,7 +419,7 @@ public class InternalRuntimeTest { originInternalMachines.put("newM", createMachine()); MachineImpl originMachine = originInternalMachines.get(machineToModify); // change properties of origin server - originMachine.getProperties().put("new_prop", "new_value"); + originMachine.getAttributes().put("new_prop", "new_value"); // add new server in origin machine originMachine.getServers().put("newS", createServer(RUNNING)); ServerImpl originServer = originMachine.getServers().get(serverToModify); @@ -445,7 +445,7 @@ public class InternalRuntimeTest { machine1.getServers().put(badServerName, failingRewritingServer); internalMachines.put("m1", machine1); internalMachines.put("m2", machine2); - expectedMachines.put("m1", new MachineImpl(machine1.getProperties(), expectedServers)); + expectedMachines.put("m1", new MachineImpl(machine1.getAttributes(), expectedServers)); expectedMachines.put("m2", machine2); List expectedWarnings = new ArrayList<>(); expectedWarnings.add(