Merge "Increment version"
diff --git a/INFO.yaml b/INFO.yaml
index 31a8e44..9304d55 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -4,11 +4,11 @@
 project_category: ''
 lifecycle_state: 'Incubation'
 project_lead: &onap_vnfsdk_ptl
-    name: 'Chris Donley'
-    email: 'christopher.donley@huawei.com'
-    id: 'chrisd5110'
+    name: 'Victor Gao'
+    email: 'victor.gao@huawei.com'
     company: 'Huawei'
-    timezone: 'America/Los_Angeles'
+    id: 'g310497'
+    timezone: 'Asia/Shanghai'
 primary_contact: *onap_vnfsdk_ptl
 issue_tracking:
     type: 'jira'
@@ -60,11 +60,6 @@
       company: 'Intel'
       id: 'avul'
       timezone: 'America/New_York'
-    - name: 'Victor Gao'
-      email: 'victor.gao@huawei.com'
-      company: 'Huawei'
-      id: 'g310497'
-      timezone: 'Asia/Shanghai'
     - name: 'wenyao guan'
       email: 'guanwenyao@chinamobile.com'
       company: 'ChinaMobile'
@@ -114,3 +109,9 @@
           name: 'Ting Lu'
           name: 'Amir Levy'
           link: 'https://lists.onap.org/g/ONAP-TSC/message/3390'
+        - type: 'Addition-PTL'
+          name: 'Victor Gao'
+          link: 'https://lists.onap.org/g/ONAP-TSC/message/3725'
+        - type: 'Removal'
+          name: 'Chris Donley'
+          link: 'https://lists.onap.org/g/ONAP-TSC/message/3725'
diff --git a/csarvalidation/src/main/java/org/onap/validation/csar/CommonConstants.java b/csarvalidation/src/main/java/org/onap/validation/csar/CommonConstants.java
index 29c4bdf..5f4e053 100644
--- a/csarvalidation/src/main/java/org/onap/validation/csar/CommonConstants.java
+++ b/csarvalidation/src/main/java/org/onap/validation/csar/CommonConstants.java
@@ -45,6 +45,10 @@
 
 	public static final String MAINSERV_TEMPLATE = "MainServiceTemplate.yaml";
 
+	public static final String TOSCA_SWIMAGE = "tosca.artifacts.nfv.SwImage";
+
+	public static final String TOSCA_IMAGE = "tosca.artifacts.Deployment.Image";
+
 	public static final String CSAR_SUFFIX = ".csar";
 
 	public static final String HTTP_HEADER_CONTENT_RANGE = "Content-Range";
diff --git a/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java b/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
index 88cd0e0..d27aa5a 100644
--- a/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
+++ b/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
@@ -108,6 +108,8 @@
 
         String vms = validateMainService();
 
+        //String r02454 = r02454();
+
         if((CommonConstants.SUCCESS_STR != vsm) && (CommonConstants.SUCCESS_STR != vms)) {
 
             return vsm + " OR " + vms;
@@ -116,7 +118,11 @@
         if(CommonConstants.SUCCESS_STR != vtm) {
             return vtm;
         }
-
+/*
+        if (CommonConstants.SUCCESS_STR != r02454) {
+            return r02454;
+        }
+*/
         return CommonConstants.SUCCESS_STR;
     }
 
@@ -291,12 +297,45 @@
         if(!Paths.get(MAINSERV_TEMPLATE).isAbsolute()) {
             mainservTemplate = csarFiles.get(FilenameUtils.getName(mainservTemplate));
         }
+
         if(StringUtils.isEmpty(mainservTemplate)) {
             return "MainServiceTemplate does not exist in the package";
         }
         return CommonConstants.SUCCESS_STR;
     }
 
+    /*
+     * @Author: Victor Gao
+     * @Description:
+     * @Date: 2018/9/18
+     * @Param: [filePath]
+     * @return: boolean
+     **/
+    public static String r02454() {
+        String mainservTemplate = MAINSERV_TEMPLATE;
+        mainservTemplate = csarFiles.get(FilenameUtils.getName(mainservTemplate));
+
+        //TODO: Fixme R3 only check the existence of swImage filed inside VNFD.
+        File file = new File(mainservTemplate);
+        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
+            String tempString = null;
+            while ((tempString = reader.readLine()) != null) {
+                if (tempString.contains((CommonConstants.TOSCA_SWIMAGE))) {
+                    return CommonConstants.SUCCESS_STR;
+                }
+            }
+        } catch(IOException e2) {
+            return ("CSAR_META_VALIDATION" + ":" + "Exception caught while validateCsarMeta ! " + ErrorCodes.FILE_IO
+                    + e2);
+        }
+
+        if(StringUtils.isEmpty(mainservTemplate)) {
+            return "Can not find the swImage inside Mainservicetemplate";
+        }
+
+        return "Can not find the swImage inside Mainservicetemplate";
+    }
+
     private static String checkEntryFor(String fileWithPath, String attribute) throws IOException {
 
         List<String> lines = Files.readAllLines(Paths.get(fileWithPath), UTF_8);
diff --git a/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java b/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
index 5693ba6..f9a8d8a 100644
--- a/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
+++ b/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
@@ -58,6 +58,12 @@
 
     String packageId2 = UUID.randomUUID().toString();
 
+    private String cf = classLoader.getResource("testR02454.csar").getFile();
+
+    String sample = System.getProperty("file.separator") + cf.substring(1);
+
+    String pkgid = UUID.randomUUID().toString();
+
     private String csarFile3 = classLoader.getResource("vIMS_NS.csar").getFile();
 
     String sample3 = System.getProperty("file.separator") + csarFile3.substring(1);
@@ -127,17 +133,25 @@
         testValidateCsarIntegrity(csarValidator5);
         testValidateToscaMeta(csarValidator5);
         testValidateMainService(csarValidator5);
+
+        CsarValidator csarValidator6 = new CsarValidator(pkgid, sample);
+        testValidateCsarIntegrity(csarValidator6);
+        testValidateToscaMeta(csarValidator6);
+        testValidateMainService(csarValidator6);
+        testR02454(csarValidator6);
         // Rel1 specific test case
         String sample1Dir = sample1.replace(".csar", "");
         String sample2Dir = sample2.replace(".csar", "");
         String sample3Dir = sample3.replace(".csar", "");
         String sample4Dir = sample4.replace(".csar", "");
         String sample5Dir = sample5.replace(".csar", "");
+        String sampleDir = sample.replace(".csar", "");
         boolean result = FileUtil.deleteDirectory(sample1Dir);
         boolean result1 = FileUtil.deleteDirectory(sample2Dir);
         boolean result2 = FileUtil.deleteDirectory(sample3Dir);
         boolean result3 = FileUtil.deleteDirectory(sample4Dir);
         boolean result4 = FileUtil.deleteDirectory(sample5Dir);
+        boolean result5 = FileUtil.deleteDirectory(sampleDir);
         assertEquals(true, result == true && result1 == true && result2 == true && result3 == true && result4 == true);
     }
 
@@ -200,4 +214,9 @@
         String result = CsarValidator.validateCsar();
         assertEquals(true, result == CommonConstants.SUCCESS_STR);
     }
+
+    private void testR02454(CsarValidator cv) {
+        String result = CsarValidator.r02454();
+        assertEquals(true, result == CommonConstants.SUCCESS_STR);
+    }
 }
diff --git a/csarvalidation/src/test/resources/testR02454.csar b/csarvalidation/src/test/resources/testR02454.csar
new file mode 100644
index 0000000..2cf70eb
--- /dev/null
+++ b/csarvalidation/src/test/resources/testR02454.csar
Binary files differ