diff options
5 files changed, 205 insertions, 211 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/OperationalEnvironment.java b/vid-app-common/src/main/java/org/onap/vid/aai/OperationalEnvironment.java index be6c6e51f..71ed1713a 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/OperationalEnvironment.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/OperationalEnvironment.java @@ -3,13 +3,14 @@ * VID * ================================================================================ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nokia. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,37 +21,83 @@ package org.onap.vid.aai; -import org.onap.vid.aai.model.RelationshipList; +import static com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY; + +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.onap.vid.aai.model.RelationshipList; @JsonIgnoreProperties(ignoreUnknown = true) -public class OperationalEnvironment { - - private String operationalEnvironmentId; - private String operationalEnvironmentName; - private String operationalEnvironmentType; - private String operationalEnvironmentStatus; - private String tenantContext; - private String workloadContext; - private String resourceVersion; - private RelationshipList relationshipList; - - public OperationalEnvironment() { +public final class OperationalEnvironment { + + private final String operationalEnvironmentId; + private final String operationalEnvironmentName; + private final String operationalEnvironmentType; + private final String operationalEnvironmentStatus; + private final String tenantContext; + private final String workloadContext; + private final String resourceVersion; + private final RelationshipList relationshipList; + + public static OperationalEnvironmentBuilder builder() { + return new OperationalEnvironmentBuilder(); + } + + @JsonCreator + OperationalEnvironment( + @JsonProperty(value = "operational-environment-id", access = WRITE_ONLY) String operationalEnvironmentId, + @JsonProperty(value = "operational-environment-name", access = WRITE_ONLY) String operationalEnvironmentName, + @JsonProperty(value = "operational-environment-type", access = WRITE_ONLY) String operationalEnvironmentType, + @JsonProperty(value = "operational-environment-status", access = WRITE_ONLY) String operationalEnvironmentStatus, + @JsonProperty(value = "tenant-context", access = WRITE_ONLY) String tenantContext, + @JsonProperty(value = "workload-context", access = WRITE_ONLY) String workloadContext, + @JsonProperty(value = "resource-version", access = WRITE_ONLY) String resourceVersion, + @JsonProperty(value = "relationship-list", access = WRITE_ONLY) RelationshipList relationshipList) { + this.operationalEnvironmentId = operationalEnvironmentId; + this.operationalEnvironmentName = operationalEnvironmentName; + this.operationalEnvironmentType = operationalEnvironmentType; + this.operationalEnvironmentStatus = operationalEnvironmentStatus; + this.tenantContext = tenantContext; + this.workloadContext = workloadContext; + this.resourceVersion = resourceVersion; + this.relationshipList = relationshipList; } - public OperationalEnvironment(OperationalEnvironmentBuilder builder) { - this.operationalEnvironmentId = builder.operationalEnvironmentId; - this.operationalEnvironmentName = builder.operationalEnvironmentName; - this.operationalEnvironmentType = builder.operationalEnvironmentType; - this.operationalEnvironmentStatus = builder.operationalEnvironmentStatus; - this.tenantContext = builder.tenantContext; - this.workloadContext = builder.workloadContext; - this.resourceVersion = builder.resourceVersion; - this.relationshipList = builder.relationshipList; + public String getOperationalEnvironmentId() { + return operationalEnvironmentId; + } + + public String getOperationalEnvironmentName() { + return operationalEnvironmentName; + } + + public String getOperationalEnvironmentType() { + return operationalEnvironmentType; + } + + public String getOperationalEnvironmentStatus() { + return operationalEnvironmentStatus; + } + + public String getTenantContext() { + return tenantContext; + } + + public String getWorkloadContext() { + return workloadContext; + } + + public String getResourceVersion() { + return resourceVersion; + } + + public RelationshipList getRelationshipList() { + return relationshipList; } public static class OperationalEnvironmentBuilder { + private String operationalEnvironmentId; private String operationalEnvironmentName; private String operationalEnvironmentType; @@ -58,127 +105,65 @@ public class OperationalEnvironment { private String tenantContext; private String workloadContext; private String resourceVersion; + private RelationshipList relationshipList; - public OperationalEnvironmentBuilder setOperationalEnvironmentId( - String operationalEnvironmentId) { + public OperationalEnvironmentBuilder withOperationalEnvironmentId( + String operationalEnvironmentId) { this.operationalEnvironmentId = operationalEnvironmentId; return this; } - public OperationalEnvironmentBuilder setOperationalEnvironmentName( - String operationalEnvironmentName) { + public OperationalEnvironmentBuilder withOperationalEnvironmentName( + String operationalEnvironmentName) { this.operationalEnvironmentName = operationalEnvironmentName; return this; } - public OperationalEnvironmentBuilder setOperationalEnvironmentType( - String operationalEnvironmentType) { + public OperationalEnvironmentBuilder withOperationalEnvironmentType( + String operationalEnvironmentType) { this.operationalEnvironmentType = operationalEnvironmentType; return this; } - public OperationalEnvironmentBuilder setOperationalEnvironmentStatus( - String operationalEnvironmentStatus) { + public OperationalEnvironmentBuilder withOperationalEnvironmentStatus( + String operationalEnvironmentStatus) { this.operationalEnvironmentStatus = operationalEnvironmentStatus; return this; } - public OperationalEnvironmentBuilder setTenantContext(String tenantContext) { + public OperationalEnvironmentBuilder withTenantContext(String tenantContext) { this.tenantContext = tenantContext; return this; } - public OperationalEnvironmentBuilder setWorkloadContext(String workloadContext) { + public OperationalEnvironmentBuilder withWorkloadContext(String workloadContext) { this.workloadContext = workloadContext; return this; } - public OperationalEnvironmentBuilder setResourceVersion(String resourceVersion) { + public OperationalEnvironmentBuilder withResourceVersion(String resourceVersion) { this.resourceVersion = resourceVersion; return this; } - public OperationalEnvironmentBuilder setRelationshipList( - RelationshipList relationshipList) { + public OperationalEnvironmentBuilder withRelationshipList( + RelationshipList relationshipList) { this.relationshipList = relationshipList; return this; } - public OperationalEnvironment createOperationalEnvironment() { - return new OperationalEnvironment(this); + public OperationalEnvironment build() { + return new OperationalEnvironment(operationalEnvironmentId, + operationalEnvironmentName, + operationalEnvironmentType, + operationalEnvironmentStatus, + tenantContext, + workloadContext, + resourceVersion, + relationshipList); } - } - - public String getOperationalEnvironmentId() { - return operationalEnvironmentId; - } - @JsonProperty("operational-environment-id") - public void setJsonOperationalEnvironmentId(String operationalEnvironmentId) { - this.operationalEnvironmentId = operationalEnvironmentId; } - public String getOperationalEnvironmentName() { - return operationalEnvironmentName; - } - - @JsonProperty("operational-environment-name") - public void setJsonOperationalEnvironmentName(String operationalEnvironmentName) { - this.operationalEnvironmentName = operationalEnvironmentName; - } - - public String getOperationalEnvironmentType() { - return operationalEnvironmentType; - } - - @JsonProperty("operational-environment-type") - public void setJsonOperationalEnvironmentType(String operationalEnvironmentType) { - this.operationalEnvironmentType = operationalEnvironmentType; - } - - public String getOperationalEnvironmentStatus() { - return operationalEnvironmentStatus; - } - - @JsonProperty("operational-environment-status") - public void setJsonOperationalEnvironmentStatus(String operationalEnvironmentStatus) { - this.operationalEnvironmentStatus = operationalEnvironmentStatus; - } - - public String getTenantContext() { - return tenantContext; - } - - @JsonProperty("tenant-context") - public void setJsonTenantContext(String tenantContext) { - this.tenantContext = tenantContext; - } - - public String getWorkloadContext() { - return workloadContext; - } - - @JsonProperty("workload-context") - public void setJsonWorkloadContext(String workloadContext) { - this.workloadContext = workloadContext; - } - - public String getResourceVersion() { - return resourceVersion; - } - - @JsonProperty("resource-version") - public void setJsonResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } - - public RelationshipList getRelationshipList() { - return relationshipList; - } - - @JsonProperty("relationship-list") - public void setJsonRelationshipList(RelationshipList relationshipList) { - this.relationshipList = relationshipList; - } } diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentList.java b/vid-app-common/src/main/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentList.java index 13c6ada2d..6b3fbbd64 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentList.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentList.java @@ -3,13 +3,14 @@ * VID * ================================================================================ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nokia. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,30 +21,27 @@ package org.onap.vid.aai.model.AaiGetOperationalEnvironments; -import com.fasterxml.jackson.annotation.JsonAlias; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import org.onap.vid.aai.OperationalEnvironment; +import static com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collections; import java.util.List; +import org.onap.vid.aai.OperationalEnvironment; @JsonIgnoreProperties(ignoreUnknown = true) -public class OperationalEnvironmentList { - - public List<OperationalEnvironment> getOperationalEnvironment() { - return operationalEnvironment; - } +public final class OperationalEnvironmentList { - @JsonAlias("operational-environment") - public void setOperationalEnvironment(List<OperationalEnvironment> operationalEnvironment) { - this.operationalEnvironment = operationalEnvironment; - } + private final List<OperationalEnvironment> operationalEnvironment; - public OperationalEnvironmentList() { + @JsonCreator + public OperationalEnvironmentList( + @JsonProperty(value = "operational-environment", access = WRITE_ONLY) List<OperationalEnvironment> operationalEnvironment) { + this.operationalEnvironment = Collections.unmodifiableList(operationalEnvironment); } - public OperationalEnvironmentList(List<OperationalEnvironment> operationalEnvironment) { - this.operationalEnvironment = operationalEnvironment; + public List<OperationalEnvironment> getOperationalEnvironment() { + return operationalEnvironment; } - - private List<OperationalEnvironment> operationalEnvironment; } diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/OperationalEnvironmentTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/OperationalEnvironmentTest.java index 076c46284..063b2220c 100644 --- a/vid-app-common/src/test/java/org/onap/vid/aai/OperationalEnvironmentTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/aai/OperationalEnvironmentTest.java @@ -22,73 +22,94 @@ package org.onap.vid.aai; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.Assert; -import org.onap.vid.aai.model.RelationshipList; -import org.testng.annotations.Test; +import static org.assertj.core.api.Assertions.assertThat; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.ArrayList; - -import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters; -import static org.assertj.core.api.Assertions.assertThat; +import org.onap.vid.aai.model.RelationshipList; +import org.testng.annotations.Test; public class OperationalEnvironmentTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - private static final String OPERATIONAL_ENVIRONMENT_TEST = "{\n" + - "\"operational-environment-id\": \"environmentId\",\n" + - "\"operational-environment-name\": \"environmentName\",\n" + - "\"operational-environment-type\": \"environmentType\",\n" + - "\"operational-environment-status\": \"environmentStatus\",\n" + - "\"tenant-context\": \"tenantContext\",\n" + - "\"workload-context\": \"workloadContext\",\n" + - "\"resource-version\": \"resourceVersion\",\n" + - "\"relationship-list\": {\n" + - "\"relationship\": []\n" + - "}\n" + - "}"; + private static final String OPERATIONAL_ENVIRONMENT_JSON_DASHES = "{\n" + + "\"operational-environment-id\": \"testEnvironmentId\",\n" + + "\"operational-environment-name\": \"testEnvironmentName\",\n" + + "\"operational-environment-type\": \"testEnvironmentType\",\n" + + "\"operational-environment-status\": \"testEnvironmentStatus\",\n" + + "\"tenant-context\": \"testTenantContext\",\n" + + "\"workload-context\": \"testWorkloadContext\",\n" + + "\"resource-version\": \"testResourceVersion\",\n" + + "\"relationship-list\": {\n" + + "\"relationship\": []\n" + + "}\n" + + "}"; + + private static final String OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE = "{\n" + + "\"operationalEnvironmentId\": \"testEnvironmentId\",\n" + + "\"operationalEnvironmentName\": \"testEnvironmentName\",\n" + + "\"operationalEnvironmentType\": \"testEnvironmentType\",\n" + + "\"operationalEnvironmentStatus\": \"testEnvironmentStatus\",\n" + + "\"tenantContext\": \"testTenantContext\",\n" + + "\"workloadContext\": \"testWorkloadContext\",\n" + + "\"resourceVersion\": \"testResourceVersion\",\n" + + "\"relationshipList\": {\n" + + "\"relationship\": []\n" + + "}\n" + + "}"; @Test - public void shouldCreateProperOperationalEnvironmentWithConstructor(){ - RelationshipList relationshipList = new RelationshipList(); - relationshipList.relationship = new ArrayList<>(); + public void shouldProperlyConvertJsonToOperationalEnvironment_whenJsonPropertyNamesContainDashSeparators() + throws IOException { + assertOperationalEnvironmentDeserialization(OPERATIONAL_ENVIRONMENT_JSON_DASHES); + } + + @Test + public void shouldProperlyConvertJsonToOperationalEnvironment_whenJsonPropertyNamesAreCamelCase() + throws IOException { + assertOperationalEnvironmentDeserialization(OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE); + } + private void assertOperationalEnvironmentDeserialization(String operationalEnvironmentTestDashes) + throws IOException { OperationalEnvironment operationalEnvironment = - new OperationalEnvironment.OperationalEnvironmentBuilder() - .setOperationalEnvironmentId("testId") - .setOperationalEnvironmentName("testEnvName") - .setOperationalEnvironmentType("testEnvType") - .setOperationalEnvironmentStatus("testEnvStatus") - .setTenantContext("testTenant").setWorkloadContext("testWorkload") - .setResourceVersion("testResource").setRelationshipList(relationshipList) - .createOperationalEnvironment(); - - assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("testId"); - assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("testWorkload"); + OBJECT_MAPPER.readValue(operationalEnvironmentTestDashes, OperationalEnvironment.class); + + assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("testEnvironmentId"); + assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("testEnvironmentName"); + assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("testEnvironmentType"); + assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("testEnvironmentStatus"); + assertThat(operationalEnvironment.getTenantContext()).isEqualTo("testTenantContext"); + assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("testWorkloadContext"); + assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("testResourceVersion"); assertThat(operationalEnvironment.getRelationshipList().getRelationship()).hasSize(0); - assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("testResource"); - assertThat(operationalEnvironment.getTenantContext()).isEqualTo("testTenant"); - assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("testEnvType"); - assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("testEnvStatus"); - assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("testEnvName"); } @Test - public void shouldProperlyConvertJsonToOperationalEnvironment() throws IOException { - OperationalEnvironment operationalEnvironment = - OBJECT_MAPPER.readValue(OPERATIONAL_ENVIRONMENT_TEST, OperationalEnvironment.class); + public void shouldSerializeToJson_usingActualPropertyNameAsJsonLogicalProperty() throws JsonProcessingException { + RelationshipList relationshipList = new RelationshipList(); + relationshipList.relationship = new ArrayList<>(); - assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("environmentId"); - assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("workloadContext"); - assertThat(operationalEnvironment.getRelationshipList().getRelationship()).hasSize(0); - assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("resourceVersion"); - assertThat(operationalEnvironment.getTenantContext()).isEqualTo("tenantContext"); - assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("environmentType"); - assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("environmentStatus"); - assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("environmentName"); + OperationalEnvironment operationalEnvironment = createOperationalEnvironment(relationshipList); + + assertThat(OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE) + .isEqualToIgnoringWhitespace(OBJECT_MAPPER.writeValueAsString(operationalEnvironment)); } + private OperationalEnvironment createOperationalEnvironment(RelationshipList relationshipList) { + return new OperationalEnvironment.OperationalEnvironmentBuilder() + .withOperationalEnvironmentId("testEnvironmentId") + .withOperationalEnvironmentName("testEnvironmentName") + .withOperationalEnvironmentType("testEnvironmentType") + .withOperationalEnvironmentStatus("testEnvironmentStatus") + .withTenantContext("testTenantContext") + .withWorkloadContext("testWorkloadContext") + .withResourceVersion("testResourceVersion") + .withRelationshipList(relationshipList) + .build(); + } } diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java deleted file mode 100644 index fb79634a5..000000000 --- a/vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.vid.aai.model.AaiGetOperationalEnvironments; - -import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters; -import static org.hamcrest.MatcherAssert.assertThat; -import org.junit.Test; - -public class OperationalEnvironmentListTest { - - @Test - public void shouldHaveValidGettersAndSetters(){ - assertThat(OperationalEnvironmentList.class, hasValidGettersAndSetters()); - } - -} diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/AaiControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/AaiControllerTest.java index 51bdec882..521102383 100644 --- a/vid-app-common/src/test/java/org/onap/vid/controller/AaiControllerTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/controller/AaiControllerTest.java @@ -57,8 +57,10 @@ import org.onap.vid.aai.AaiResponseTranslator; import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigData; import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigDataError; import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigDataOk; +import org.onap.vid.aai.OperationalEnvironment; import org.onap.vid.aai.model.AaiGetAicZone.AicZones; import org.onap.vid.aai.model.AaiGetAicZone.Zone; +import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList; import org.onap.vid.aai.model.AaiGetPnfs.Pnf; import org.onap.vid.aai.model.PortDetailsTranslator.PortDetails; import org.onap.vid.aai.model.PortDetailsTranslator.PortDetailsError; @@ -561,5 +563,27 @@ public class AaiControllerTest { .andExpect(content().string(expectedResponse)); } + @Test + public void getOperationalEnvironments_shouldReturnOkResponse() throws Exception { + String operationalEnvironmentType = "testEnvType"; + String operationalEnvironmentStatus = "testEnvStatus"; + OperationalEnvironmentList operationalEnvironmentList = new OperationalEnvironmentList( + ImmutableList.of(OperationalEnvironment.builder() + .withOperationalEnvironmentType(operationalEnvironmentType) + .withOperationalEnvironmentStatus(operationalEnvironmentStatus) + .build())); + AaiResponse<OperationalEnvironmentList> aaiResponse = new AaiResponse<>(operationalEnvironmentList, null, + HttpStatus.OK.value()); + given(aaiService.getOperationalEnvironments(operationalEnvironmentType, operationalEnvironmentStatus)) + .willReturn(aaiResponse); + + mockMvc.perform(get("/get_operational_environments") + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .param("operationalEnvironmentType", operationalEnvironmentType) + .param("operationalEnvironmentStatus", operationalEnvironmentStatus)) + .andExpect(status().isOk()) + .andExpect(content().json(objectMapper.writeValueAsString(aaiResponse))); + } } |