2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.client.lcm.model;
27 import org.junit.Assert;
28 import org.junit.Test;
30 import java.lang.reflect.Field;
31 import java.lang.reflect.Method;
32 import java.util.ArrayList;
33 import java.util.List;
35 public class TestModelPOJO {
36 static List<Class> pojoClassName;
37 static List<String> fields;
39 pojoClassName = new ArrayList<>();
40 pojoClassName.add(AuditInput.class);
41 pojoClassName.add(AuditOutput.class);
42 pojoClassName.add(CheckLockInput.class);
43 pojoClassName.add(CheckLockOutput.class);
44 pojoClassName.add(ConfigBackupDeleteInput.class);
45 pojoClassName.add(ConfigBackupDeleteOutput.class);
46 pojoClassName.add(ConfigBackupInput.class);
47 pojoClassName.add(ConfigBackupOutput.class);
48 pojoClassName.add(ConfigExportInput.class);
49 pojoClassName.add(ConfigExportOutput.class);
50 pojoClassName.add(ConfigModifyInput.class);
51 pojoClassName.add(ConfigModifyOutput.class);
52 pojoClassName.add(ConfigRestoreInput.class);
53 pojoClassName.add(ConfigRestoreOutput.class);
54 pojoClassName.add(ConfigureInput.class);
55 pojoClassName.add(ConfigureOutput.class);
56 pojoClassName.add(EvacuateInput.class);
57 pojoClassName.add(EvacuateOutput.class);
58 pojoClassName.add(HealthCheckInput.class);
59 pojoClassName.add(HealthCheckOutput.class);
60 pojoClassName.add(LiveUpgradeInput.class);
61 pojoClassName.add(LiveUpgradeOutput.class);
62 pojoClassName.add(LockInput.class);
63 pojoClassName.add(LockOutput.class);
64 pojoClassName.add(MigrateInput.class);
65 pojoClassName.add(MigrateOutput.class);
66 pojoClassName.add(RebuildInput.class);
67 pojoClassName.add(RebuildOutput.class);
68 pojoClassName.add(HealthCheckInput.class);
69 pojoClassName.add(RollbackInput.class);
70 pojoClassName.add(RollbackOutput.class);
71 pojoClassName.add(RestartInput.class);
72 pojoClassName.add(RestartOutput.class);
73 pojoClassName.add(SnapshotInput.class);
74 pojoClassName.add(SnapshotOutput.class);
75 pojoClassName.add(SoftwareUploadInput.class);
76 pojoClassName.add(SoftwareUploadOutput.class);
77 pojoClassName.add(StartApplicationInput.class);
78 pojoClassName.add(StartApplicationOutput.class);
79 pojoClassName.add(StartInput.class);
80 pojoClassName.add(StartOutput.class);
81 pojoClassName.add(StopApplicationInput.class);
82 pojoClassName.add(StopApplicationOutput.class);
83 pojoClassName.add(StopInput.class);
84 pojoClassName.add(SyncInput.class);
85 pojoClassName.add(SyncOutput.class);
86 pojoClassName.add(TerminateInput.class);
87 pojoClassName.add(TerminateOutput.class);
88 pojoClassName.add(TestInput.class);
89 pojoClassName.add(TestOutput.class);
90 pojoClassName.add(UnlockInput.class);
91 pojoClassName.add(UnlockOutput.class);
93 fields = new ArrayList<>();
94 fields.add("CommonHeader");
96 fields.add("Payload");
100 public void testModel() throws Exception{
101 for(String field: fields){
102 for(Class c: pojoClassName){
103 Object instance = c.newInstance();
104 Field[] fields = c.getDeclaredFields();
105 for(Field f: fields){
106 if(f.getType() == getClassForString(field)){
107 Method m = c.getDeclaredMethod("set"+field,getClassForString(field));
108 Object argument = createArgument(field);
109 m.invoke(instance,argument);
111 Method getter = c.getDeclaredMethod("get"+field);
112 Object getValue = getter.invoke(instance);
113 Assert.assertEquals("POJO test failed for class:"+c.getCanonicalName()+" for method:"+m.getName(),argument, getValue);
120 private Object createArgument(String field){
121 if(field.equals("CommonHeader")){
122 return createHeader();
124 else if(field.equals("Action")){
125 return createAction();
126 }else if(field.equals("Payload")){
127 return createPayload();
128 }else if(field.equals("Status")){
129 return createStatus();
132 throw new IllegalArgumentException();
135 private Action createAction(){
136 return Action.Restart;
138 private Payload createPayload(){
139 return new Payload();
141 private CommonHeader createHeader(){
142 CommonHeader header = new CommonHeader();
143 header.setApiVer("apiver");
144 header.setOriginatorId("originator");
147 private Status createStatus() {
151 private Class getClassForString(String field){
153 if(field.equals("CommonHeader")){
154 return CommonHeader.class;
155 }else if(field.equals("Action")){
157 }else if(field.equals("ActionIdentifiers")){
158 return ActionIdentifiers.class;
159 }else if(field.equals("Payload")){
160 return Payload.class;
161 }else if(field.equals("Status")){
164 throw new IllegalArgumentException();