Fix mapping issue with type C files

Change-Id: I698b84989dc928a09ff5e1c54adf236edd40b622
Issue-ID: DCAEGEN2-1038
Signed-off-by: emartin <ephraim.martin@est.tech>
diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java
index 03d42d5..b411fd7 100644
--- a/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java
+++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/App.java
@@ -71,7 +71,7 @@
         MetadataFilter metadataFilter = new MetadataFilter(mapperConfig);
         MeasConverter measConverter = new MeasConverter();
         MeasFilterHandler filterHandler = new MeasFilterHandler(measConverter);
-        Mapper mapper = new Mapper(mappingTemplate);
+        Mapper mapper = new Mapper(mappingTemplate, measConverter);
         MeasSplitter splitter = new MeasSplitter(measConverter);
         XMLValidator validator = new XMLValidator(xmlSchema);
         VESPublisher vesPublisher = new VESPublisher(mapperConfig);
diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/mapping/Mapper.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/mapping/Mapper.java
index 44bbc27..a9b7e86 100644
--- a/src/main/java/org/onap/dcaegen2/services/pmmapper/mapping/Mapper.java
+++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/mapping/Mapper.java
@@ -28,6 +28,7 @@
 import org.onap.dcaegen2.services.pmmapper.exceptions.MappingException;
 import org.onap.dcaegen2.services.pmmapper.exceptions.XMLParseException;
 import org.onap.dcaegen2.services.pmmapper.model.Event;
+import org.onap.dcaegen2.services.pmmapper.utils.MeasConverter;
 import org.onap.logging.ref.slf4j.ONAPLogAdapter;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
@@ -49,9 +50,11 @@
 public class Mapper {
     private static final ONAPLogAdapter logger = new ONAPLogAdapter(LoggerFactory.getLogger(Mapper.class));
     private Template mappingTemplate;
+    private MeasConverter converter;
 
-    public Mapper(@NonNull Path pathToTemplate) {
+    public Mapper(@NonNull Path pathToTemplate, MeasConverter converter) {
         logger.unwrap().trace("Constructing Mapper from {}", pathToTemplate);
+        this.converter = converter;
         Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
         configuration.setTagSyntax(Configuration.ANGLE_BRACKET_TAG_SYNTAX);
         try {
@@ -72,7 +75,8 @@
         logger.unwrap().info("Mapping event");
         NodeModel pmNodeModel;
         try {
-            pmNodeModel = NodeModel.parse(new InputSource(new StringReader(event.getBody())));
+            String measCollecFile = converter.convert(event.getMeasCollecFile());
+            pmNodeModel = NodeModel.parse(new InputSource(new StringReader(measCollecFile)));
         } catch (IOException | SAXException | ParserConfigurationException exception) {
             logger.unwrap().error("Failed to parse input as XML", exception);
             throw new XMLParseException("Failed to parse input as XML", exception);
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
index e82d90f..b4dc178 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
@@ -132,7 +132,8 @@
     public void testSplit_empty_success() {
         Event mockEvent = Mockito.mock(Event.class);
         MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
-        Flux<List<Event>> splitResult = App.split(new MeasSplitter(new MeasConverter()), mockEvent, mockConfig);
+        MeasConverter mockMeasConverter = Mockito.mock(MeasConverter.class);
+        Flux<List<Event>> splitResult = App.split(new MeasSplitter(mockMeasConverter), mockEvent, mockConfig);
         splitResult.equals(Flux.<List<Event>>empty());
     }
 
@@ -152,10 +153,11 @@
     @Test
     public void testMapping_empty_success() {
         Event mockEvent = Mockito.mock(Event.class);
+        MeasConverter mockMeasConverter = Mockito.mock(MeasConverter.class);
         List<Event> mockEvents = Arrays.asList(mockEvent);
         MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
         Path mappingTemplate = Paths.get("src/main/resources/mapping.ftl");
-        Flux<List<Event>> mappingResult = App.map(new Mapper(mappingTemplate), mockEvents, mockConfig);
+        Flux<List<Event>> mappingResult = App.map(new Mapper(mappingTemplate,mockMeasConverter), mockEvents, mockConfig);
         mappingResult.equals(Flux.<List<Event>>empty());
     }
 
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
index e7c8f3a..8670bed 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
@@ -26,6 +26,7 @@
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import com.google.gson.Gson;
 import freemarker.core.Environment;
@@ -54,6 +55,8 @@
 import org.onap.dcaegen2.services.pmmapper.exceptions.XMLParseException;
 import org.onap.dcaegen2.services.pmmapper.model.Event;
 import org.onap.dcaegen2.services.pmmapper.model.EventMetadata;
+import org.onap.dcaegen2.services.pmmapper.model.MeasCollecFile;
+import org.onap.dcaegen2.services.pmmapper.utils.MeasConverter;
 import org.onap.logging.ref.slf4j.ONAPLogAdapter;
 import org.powermock.reflect.Whitebox;
 import utils.EventUtils;
@@ -64,6 +67,7 @@
 
     private static EventMetadata eventMetadata;
     private static Schema vesSchema;
+    private static MeasConverter converter;
     private Mapper objUnderTest;
 
     private static final Path schema = Paths.get("src/test/resources/mapper_test/CommonEventFormat_30.1-ONAP.json");
@@ -79,22 +83,25 @@
 
         String metadataFileContents = new String(Files.readAllBytes(metadata));
         eventMetadata = new Gson().fromJson(metadataFileContents, EventMetadata.class);
+        converter = mock(MeasConverter.class);
     }
 
     @BeforeEach
     void setup() {
-        objUnderTest = new Mapper(mapping);
+        objUnderTest = new Mapper(mapping,converter);
     }
 
     @ParameterizedTest
     @MethodSource("getValidEvents")
     void testValidEvent(Event testEvent) {
+        when(converter.convert(any(MeasCollecFile.class))).thenReturn(testEvent.getBody());
         vesSchema.validate(new JSONObject(objUnderTest.map(testEvent)));
     }
 
     @ParameterizedTest
     @MethodSource("getInvalidEvents")
     void testInvalidEvent(Event testEvent) {
+        when(converter.convert(any(MeasCollecFile.class))).thenReturn(testEvent.getBody());
         assertThrows(MappingException.class, () -> objUnderTest.map(testEvent));
     }
 
@@ -112,18 +119,19 @@
 
     @Test
     void testFailureToParse() {
-        assertThrows(XMLParseException.class, () ->
+        when(converter.convert(any(MeasCollecFile.class))).thenCallRealMethod();
+        assertThrows(MappingException.class, () ->
                 objUnderTest.map(EventUtils.makeMockEvent("not xml", eventMetadata)));
     }
 
     @Test
     void testInvalidPath() {
-        assertThrows(IllegalArgumentException.class, () -> new Mapper(Paths.get("not a path")));
+        assertThrows(IllegalArgumentException.class, () -> new Mapper(Paths.get("not a path"),converter));
     }
 
     @Test
     void testNullPath() {
-        assertThrows(NullPointerException.class, () -> new Mapper(null));
+        assertThrows(NullPointerException.class, () -> new Mapper(null,converter));
     }
 
     @Test
@@ -141,6 +149,7 @@
         List<Event> events = getValidEvents();
         List<Event> expectedEvents = objUnderTest.mapEvents(events);
         expectedEvents.forEach(event->{
+            when(converter.convert(any(MeasCollecFile.class))).thenReturn(event.getBody());
             assertTrue(event.getVes() != null);
         });
     }
diff --git a/src/test/java/utils/EventUtils.java b/src/test/java/utils/EventUtils.java
index a6b131c..eae050d 100644
--- a/src/test/java/utils/EventUtils.java
+++ b/src/test/java/utils/EventUtils.java
@@ -36,6 +36,7 @@
 
 import org.onap.dcaegen2.services.pmmapper.model.Event;
 import org.onap.dcaegen2.services.pmmapper.model.EventMetadata;
+import org.onap.dcaegen2.services.pmmapper.model.MeasCollecFile;
 
 public class EventUtils {
 
@@ -81,7 +82,9 @@
      * @return event with mock HttpServerExchange
      */
     public static Event makeMockEvent(String body, EventMetadata eventMetadata) {
-        return new Event(mock(HttpServerExchange.class, RETURNS_DEEP_STUBS), body, eventMetadata, new HashMap<>(), "");
+        Event event = new Event(mock(HttpServerExchange.class, RETURNS_DEEP_STUBS), body, eventMetadata, new HashMap<>(), "");
+        event.setMeasCollecFile(new MeasCollecFile());
+        return event;
     }