Update license date and text
[aai/model-loader.git] / src / test / java / org / onap / aai / modelloader / notification / EventCallbackTest.java
1 /**\r
2  * ============LICENSE_START==========================================\r
3  * org.onap.aai\r
4  * ===================================================================\r
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.\r
6  * Copyright © 2017-2018 Amdocs\r
7  * ===================================================================\r
8  * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * you may not use this file except in compliance with the License.\r
10  * You may obtain a copy of the License at\r
11  *\r
12  *        http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing, software\r
15  * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * See the License for the specific language governing permissions and\r
18  * limitations under the License.\r
19  * ============LICENSE_END============================================\r
20  */\r
21 package org.onap.aai.modelloader.notification;\r
22 \r
23 import com.google.gson.Gson;\r
24 import com.google.gson.GsonBuilder;\r
25 import com.google.gson.InstanceCreator;\r
26 import org.junit.Before;\r
27 import org.junit.Test;\r
28 import org.mockito.Mock;\r
29 import org.mockito.Mockito;\r
30 import org.mockito.MockitoAnnotations;\r
31 import org.onap.aai.modelloader.config.ModelLoaderConfig;\r
32 import org.openecomp.sdc.api.IDistributionClient;\r
33 import org.openecomp.sdc.api.consumer.INotificationCallback;\r
34 import org.openecomp.sdc.api.notification.IArtifactInfo;\r
35 import org.openecomp.sdc.api.notification.INotificationData;\r
36 import org.openecomp.sdc.api.notification.IResourceInstance;\r
37 import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;\r
38 import org.openecomp.sdc.api.results.IDistributionClientResult;\r
39 import org.openecomp.sdc.impl.DistributionClientFactory;\r
40 import org.openecomp.sdc.impl.DistributionClientImpl;\r
41 import org.openecomp.sdc.utils.DistributionActionResultEnum;\r
42 \r
43 import java.lang.reflect.Type;\r
44 import java.util.ArrayList;\r
45 import java.util.List;\r
46 import java.util.Properties;\r
47 \r
48 public class EventCallbackTest {\r
49 \r
50     ModelLoaderConfig config;\r
51     DistributionClientImpl client;\r
52     EventCallback callBack;\r
53 \r
54     @Before\r
55     public void init(){\r
56         MockitoAnnotations.initMocks(this);\r
57         Properties props = new Properties();\r
58         props.setProperty("ml.distribution.ARTIFACT_TYPES",\r
59                 "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");\r
60         config = new ModelLoaderConfig(props, null);\r
61         client = Mockito.spy(DistributionClientImpl.class);\r
62         callBack = new EventCallback(client, config);\r
63     }\r
64 \r
65     @Test\r
66     public void testActivateCallBack_PublishFailure(){\r
67         Gson gson = new GsonBuilder().setPrettyPrinting().create();\r
68         NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),\r
69                 NotificationDataInstance.class);\r
70 \r
71         TestConfiguration testConfig = new TestConfiguration();\r
72         Mockito.when(client.getConfiguration()).thenReturn(testConfig);\r
73         callBack.activateCallback(notification);\r
74     }\r
75 \r
76     @Test\r
77     public void testActivateCallBack_PublishSuccess(){\r
78         Gson gson = new GsonBuilder().setPrettyPrinting().create();\r
79         NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),\r
80                 NotificationDataInstance.class);\r
81 \r
82         TestConfiguration testConfig = new TestConfiguration();\r
83         Mockito.when(client.download(Mockito.any(IArtifactInfo.class))).thenReturn(buildSuccessResult());\r
84         Mockito.when(client.getConfiguration()).thenReturn(testConfig);\r
85         callBack.activateCallback(notification);\r
86     }\r
87 \r
88     private static IDistributionClientDownloadResult buildSuccessResult() {\r
89         return new IDistributionClientDownloadResult() {\r
90 \r
91             @Override\r
92             public byte[] getArtifactPayload() {\r
93                 return new byte[0];\r
94             }\r
95 \r
96             @Override\r
97             public String getArtifactName() {\r
98                 return "";\r
99             }\r
100 \r
101             @Override\r
102             public String getArtifactFilename() {\r
103                 return "";\r
104             }\r
105 \r
106             @Override\r
107             public String getDistributionMessageResult() {\r
108                 return "";\r
109             }\r
110 \r
111             @Override\r
112             public DistributionActionResultEnum getDistributionActionResult() {\r
113                 return DistributionActionResultEnum.SUCCESS;\r
114             }\r
115         };\r
116     }\r
117 \r
118     private String getNotificationWithMultipleResources(){\r
119         return "{\"distributionID\" : \"bcc7a72e-90b1-4c5f-9a37-28dc3cd86416\",\r\n" +\r
120                 "       \"serviceName\" : \"Testnotificationser1\",\r\n" +\r
121                 "       \"serviceVersion\" : \"1.0\",\r\n" +\r
122                 "       \"serviceUUID\" : \"7f7f94f4-373a-4b71-a0e3-80ae2ba4eb5d\",\r\n" +\r
123                 "       \"serviceDescription\" : \"TestNotificationVF1\",\r\n" +\r
124                 "       \"resources\" : [{\r\n" +\r
125                 "                       \"resourceInstanceName\" : \"testnotificationvf11\",\r\n" +\r
126                 "                       \"resourceName\" : \"TestNotificationVF1\",\r\n" +\r
127                 "                       \"resourceVersion\" : \"1.0\",\r\n" +\r
128                 "                       \"resoucreType\" : \"VF\",\r\n" +\r
129                 "                       \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2d\",\r\n" +\r
130                 "                       \"artifacts\" : [{\r\n" +\r
131                 "                                       \"artifactName\" : \"sample-xml-alldata-1-1.xml\",\r\n" +\r
132                 "                                       \"artifactType\" : \"YANG_XML\",\r\n" +\r
133                 "                                       \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +\r
134                 "                                       resourceInstances/testnotificationvf11/artifacts/" +\r
135                 "                                       sample-xml-alldata-1-1.xml\",\r\n" +\r
136                 "                                       \"artifactChecksum\" : \"MTUxODFkMmRlOTNhNjYxMGYyYTI1ZjA5Y2QyNWQyYTk\\u003d\",\r\n" +\r
137                 "                                       \"artifactDescription\" : \"MyYang\",\r\n" +\r
138                 "                                       \"artifactTimeout\" : 0,\r\n" +\r
139                 "                                       \"artifactUUID\" : \"0005bc4a-2c19-452e-be6d-d574a56be4d0\",\r\n" +\r
140                 "                                       \"artifactVersion\" : \"1\"\r\n" +\r
141                 "                               }" +\r
142                 "                       ]\r\n" +\r
143                 "               },\r\n" +\r
144                 "       {\r\n" +\r
145                 "                       \"resourceInstanceName\" : \"testnotificationvf12\",\r\n" +\r
146                 "                       \"resourceName\" : \"TestNotificationVF1\",\r\n" +\r
147                 "                       \"resourceVersion\" : \"1.0\",\r\n" +\r
148                 "                       \"resoucreType\" : \"VF\",\r\n" +\r
149                 "                       \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2e\",\r\n" +\r
150                 "                       \"artifacts\" : [{\r\n" +\r
151                 "                                       \"artifactName\" : \"heat.yaml\",\r\n" +\r
152                 "                                       \"artifactType\" : \"HEAT\",\r\n" +\r
153                 "                                       \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +\r
154                 "                                       resourceInstances/testnotificationvf11/artifacts/" +\r
155                 "                                       heat.yaml\",\r\n" +\r
156                 "                                       \"artifactChecksum\" : \"ODEyNjE4YTMzYzRmMTk2ODVhNTU2NTg3YWEyNmIxMTM\\u003d\",\r\n" +\r
157                 "                                       \"artifactDescription\" : \"heat\",\r\n" +\r
158                 "                                       \"artifactTimeout\" : 60,\r\n" +\r
159                 "                                       \"artifactUUID\" : \"8df6123c-f368-47d3-93be-1972cefbcc35\",\r\n" +\r
160                 "                                       \"artifactVersion\" : \"1\"\r\n" +\r
161                 "                               }" +\r
162                 "                       ]\r\n" +\r
163                 "               }\r\n" +\r
164                 "       ]}";\r
165     }\r
166 }\r
167 \r
168 class NotificationDataInstance implements INotificationData{\r
169 \r
170     private String distributionID;\r
171     private String serviceName;\r
172     private String serviceVersion;\r
173     private String serviceUUID;\r
174     private String serviceDescription;\r
175     private String serviceInvariantUUID;\r
176     private List<JsonContainerResourceInstance> resources;\r
177     private List<ArtifactInfoImpl> serviceArtifacts;\r
178     private String workloadContext;\r
179 \r
180     @Override\r
181     public String getDistributionID() {\r
182         return distributionID;\r
183     }\r
184 \r
185     @Override\r
186     public String getServiceName() {\r
187         return serviceName;\r
188     }\r
189 \r
190     @Override\r
191     public String getServiceVersion() {\r
192         return serviceVersion;\r
193     }\r
194 \r
195     @Override\r
196     public String getServiceUUID() {\r
197         return serviceUUID;\r
198     }\r
199 \r
200     public void setDistributionID(String distributionID) {\r
201         this.distributionID = distributionID;\r
202     }\r
203 \r
204     public void setServiceName(String serviceName) {\r
205         this.serviceName = serviceName;\r
206     }\r
207 \r
208     public void setServiceVersion(String serviceVersion) {\r
209         this.serviceVersion = serviceVersion;\r
210     }\r
211 \r
212     public void setServiceUUID(String serviceUUID) {\r
213         this.serviceUUID = serviceUUID;\r
214     }\r
215 \r
216 \r
217 \r
218     public String getServiceDescription() {\r
219         return serviceDescription;\r
220     }\r
221 \r
222     public void setServiceDescription(String serviceDescription) {\r
223         this.serviceDescription = serviceDescription;\r
224     }\r
225 \r
226     public String getWorkloadContext() {\r
227         return workloadContext;\r
228     }\r
229 \r
230     public void setWorkloadContext(String workloadContext) {\r
231         this.workloadContext = workloadContext;\r
232     }\r
233 \r
234     @Override\r
235     public String toString() {\r
236         return "NotificationDataImpl [distributionID=" + distributionID + ", serviceName=" + serviceName\r
237                 + ", serviceVersion=" + serviceVersion + ", serviceUUID=" + serviceUUID + ", serviceDescription="\r
238                 + serviceDescription + ", serviceInvariantUUID=" + serviceInvariantUUID + ", resources=" + resources\r
239                 + ", serviceArtifacts=" + serviceArtifacts + ", workloadContext=" + workloadContext + "]";\r
240     }\r
241 \r
242     @Override\r
243     public List<IResourceInstance> getResources() {\r
244         List<IResourceInstance> ret = new ArrayList<IResourceInstance>();\r
245         if( resources != null ){\r
246             ret.addAll(resources);\r
247         }\r
248         return ret;\r
249     }\r
250 \r
251     public void setResources(List<IResourceInstance> resources){\r
252         this.resources = JsonContainerResourceInstance.convertToJsonContainer(resources);\r
253     }\r
254 \r
255     public List<JsonContainerResourceInstance> getResourcesImpl(){\r
256         return resources;\r
257     }\r
258 \r
259     List<ArtifactInfoImpl> getServiceArtifactsImpl(){\r
260         return serviceArtifacts;\r
261     }\r
262 \r
263     @Override\r
264     public List<IArtifactInfo> getServiceArtifacts() {\r
265 \r
266         List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
267         if( serviceArtifacts != null ){\r
268             temp.addAll(serviceArtifacts);\r
269         }\r
270         return temp;\r
271     }\r
272 \r
273     void setServiceArtifacts(List<ArtifactInfoImpl> relevantServiceArtifacts) {\r
274         serviceArtifacts = relevantServiceArtifacts;\r
275 \r
276     }\r
277 \r
278     @Override\r
279     public String getServiceInvariantUUID() {\r
280         return serviceInvariantUUID;\r
281     }\r
282 \r
283 \r
284     public void setServiceInvariantUUID(String serviceInvariantUUID) {\r
285         this.serviceInvariantUUID = serviceInvariantUUID;\r
286     }\r
287     @Override\r
288     public IArtifactInfo getArtifactMetadataByUUID(String artifactUUID){\r
289         IArtifactInfo ret = findArtifactInfoByUUID(artifactUUID, serviceArtifacts);\r
290         if( ret == null && resources != null ){\r
291             for( JsonContainerResourceInstance currResourceInstance : resources ){\r
292                 ret = findArtifactInfoByUUID(artifactUUID, currResourceInstance.getArtifactsImpl());\r
293                 if( ret != null ){\r
294                     break;\r
295                 }\r
296             }\r
297         }\r
298         return ret;\r
299 \r
300     }\r
301 \r
302     private IArtifactInfo findArtifactInfoByUUID(String artifactUUID, List<ArtifactInfoImpl> listToCheck) {\r
303         IArtifactInfo ret = null;\r
304         if( listToCheck != null ){\r
305             for(IArtifactInfo curr: listToCheck ){\r
306                 if(curr.getArtifactUUID().equals(artifactUUID) ){\r
307                     ret = curr;\r
308                     break;\r
309                 }\r
310             }\r
311         }\r
312         return ret;\r
313     }\r
314 }\r
315 \r
316 class ArtifactInfoImpl implements IArtifactInfo{\r
317 \r
318     private String artifactName;\r
319     private String artifactType;\r
320     private String artifactURL;\r
321     private String artifactChecksum;\r
322     private String artifactDescription;\r
323     private Integer artifactTimeout;\r
324     private String artifactVersion;\r
325     private String artifactUUID;\r
326     private String generatedFromUUID;\r
327     private IArtifactInfo generatedArtifact;\r
328     private List<String> relatedArtifacts;\r
329     private List<IArtifactInfo> relatedArtifactsInfo;\r
330     ArtifactInfoImpl(){}\r
331 \r
332     private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){\r
333         artifactName = iArtifactInfo.getArtifactName();\r
334         artifactType = iArtifactInfo.getArtifactType();\r
335         artifactURL = iArtifactInfo.getArtifactURL();\r
336         artifactChecksum = iArtifactInfo.getArtifactChecksum();\r
337         artifactDescription = iArtifactInfo.getArtifactDescription();\r
338         artifactTimeout = iArtifactInfo.getArtifactTimeout();\r
339         artifactVersion = iArtifactInfo.getArtifactVersion();\r
340         artifactUUID = iArtifactInfo.getArtifactUUID();\r
341         generatedArtifact = iArtifactInfo.getGeneratedArtifact();\r
342         relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts();\r
343         relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo);\r
344 \r
345     }\r
346 \r
347 \r
348     private List<String> fillRelatedArtifactsUUID(List<IArtifactInfo> relatedArtifactsInfo) {\r
349         List<String> relatedArtifactsUUID = null;\r
350         if( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()){\r
351             relatedArtifactsUUID = new ArrayList<>();\r
352             for(IArtifactInfo curr: relatedArtifactsInfo){\r
353                 relatedArtifactsUUID.add(curr.getArtifactUUID());\r
354             }\r
355         }\r
356         return relatedArtifactsUUID;\r
357     }\r
358 \r
359     public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(List<IArtifactInfo> list){\r
360         List<ArtifactInfoImpl> ret = new ArrayList<ArtifactInfoImpl>();\r
361         if( list != null ){\r
362             for(IArtifactInfo artifactInfo : list  ){\r
363                 ret.add(new ArtifactInfoImpl(artifactInfo));\r
364             }\r
365         }\r
366         return ret;\r
367     }\r
368 \r
369     public String getArtifactName() {\r
370         return artifactName;\r
371     }\r
372 \r
373     public void setArtifactName(String artifactName) {\r
374         this.artifactName = artifactName;\r
375     }\r
376 \r
377     public String getArtifactType() {\r
378         return artifactType;\r
379     }\r
380 \r
381     public void setArtifactType(String artifactType) {\r
382         this.artifactType = artifactType;\r
383     }\r
384 \r
385     public String getArtifactURL() {\r
386         return artifactURL;\r
387     }\r
388 \r
389     public void setArtifactURL(String artifactURL) {\r
390         this.artifactURL = artifactURL;\r
391     }\r
392 \r
393     public String getArtifactChecksum() {\r
394         return artifactChecksum;\r
395     }\r
396 \r
397     public void setArtifactChecksum(String artifactChecksum) {\r
398         this.artifactChecksum = artifactChecksum;\r
399     }\r
400 \r
401     public String getArtifactDescription() {\r
402         return artifactDescription;\r
403     }\r
404 \r
405     public void setArtifactDescription(String artifactDescription) {\r
406         this.artifactDescription = artifactDescription;\r
407     }\r
408 \r
409     public Integer getArtifactTimeout() {\r
410         return artifactTimeout;\r
411     }\r
412 \r
413     public void setArtifactTimeout(Integer artifactTimeout) {\r
414         this.artifactTimeout = artifactTimeout;\r
415     }\r
416 \r
417     @Override\r
418     public String toString() {\r
419         return "BaseArtifactInfoImpl [artifactName=" + artifactName\r
420                 + ", artifactType=" + artifactType + ", artifactURL="\r
421                 + artifactURL + ", artifactChecksum=" + artifactChecksum\r
422                 + ", artifactDescription=" + artifactDescription\r
423                 + ", artifactVersion=" + artifactVersion\r
424                 + ", artifactUUID=" + artifactUUID\r
425                 + ", artifactTimeout=" + artifactTimeout + "]";\r
426     }\r
427 \r
428     public String getArtifactVersion() {\r
429         return artifactVersion;\r
430     }\r
431 \r
432     public void setArtifactVersion(String artifactVersion) {\r
433         this.artifactVersion = artifactVersion;\r
434     }\r
435 \r
436     public String getArtifactUUID() {\r
437         return artifactUUID;\r
438     }\r
439 \r
440     public void setArtifactUUID(String artifactUUID) {\r
441         this.artifactUUID = artifactUUID;\r
442     }\r
443 \r
444     public String getGeneratedFromUUID() {\r
445         return generatedFromUUID;\r
446     }\r
447 \r
448     public void setGeneratedFromUUID(String generatedFromUUID) {\r
449         this.generatedFromUUID = generatedFromUUID;\r
450     }\r
451 \r
452     public IArtifactInfo getGeneratedArtifact() {\r
453         return generatedArtifact;\r
454     }\r
455 \r
456     public void setGeneratedArtifact(IArtifactInfo generatedArtifact) {\r
457         this.generatedArtifact = generatedArtifact;\r
458     }\r
459 \r
460     public List<IArtifactInfo> getRelatedArtifacts(){\r
461         List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
462         if( relatedArtifactsInfo != null ){\r
463             temp.addAll(relatedArtifactsInfo);\r
464         }\r
465         return temp;\r
466     }\r
467 \r
468     public void setRelatedArtifacts(List<String> relatedArtifacts) {\r
469         this.relatedArtifacts = relatedArtifacts;\r
470     }\r
471 \r
472     public void setRelatedArtifactsInfo(List<IArtifactInfo> relatedArtifactsInfo) {\r
473         this.relatedArtifactsInfo = relatedArtifactsInfo;\r
474     }\r
475 \r
476     public List<String> getRelatedArtifactsUUID(){\r
477         return relatedArtifacts;\r
478     }\r
479 }\r
480 \r
481 class JsonContainerResourceInstance implements IResourceInstance{\r
482     JsonContainerResourceInstance (){}\r
483     private String resourceInstanceName;\r
484     private String resourceCustomizationUUID;\r
485     private String resourceName;\r
486     private String resourceVersion;\r
487     private String resoucreType;\r
488     private String resourceUUID;\r
489     private String resourceInvariantUUID;\r
490     private String category;\r
491     private String subcategory;\r
492     private List<ArtifactInfoImpl> artifacts;\r
493 \r
494     private JsonContainerResourceInstance(IResourceInstance resourceInstance){\r
495         resourceInstanceName = resourceInstance.getResourceInstanceName();\r
496         resourceCustomizationUUID = resourceInstance.getResourceCustomizationUUID();\r
497         resourceName = resourceInstance.getResourceName();\r
498         resourceVersion = resourceInstance.getResourceVersion();\r
499         resoucreType = resourceInstance.getResourceType();\r
500         resourceUUID = resourceInstance.getResourceUUID();\r
501         resourceInvariantUUID = resourceInstance.getResourceInvariantUUID();\r
502         category = resourceInstance.getCategory();\r
503         subcategory = resourceInstance.getSubcategory();\r
504         artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(resourceInstance.getArtifacts());\r
505     }\r
506 \r
507     public static List<JsonContainerResourceInstance> convertToJsonContainer(List<IResourceInstance> resources){\r
508         List<JsonContainerResourceInstance> buildResources = new ArrayList<JsonContainerResourceInstance>();\r
509         if( resources != null ){\r
510             for( IResourceInstance resourceInstance : resources ){\r
511                 buildResources.add(new JsonContainerResourceInstance(resourceInstance));\r
512             }\r
513         }\r
514         return buildResources;\r
515     }\r
516 \r
517     @Override\r
518     public String getResourceInstanceName() {\r
519         return resourceInstanceName;\r
520     }\r
521 \r
522     public void setResourceInstanceName(String resourceInstanceName) {\r
523         this.resourceInstanceName = resourceInstanceName;\r
524     }\r
525 \r
526     @Override\r
527     public String getResourceName() {\r
528         return resourceName;\r
529     }\r
530 \r
531     public void setResourceName(String resourceName) {\r
532         this.resourceName = resourceName;\r
533     }\r
534 \r
535     @Override\r
536     public String getResourceVersion() {\r
537         return resourceVersion;\r
538     }\r
539 \r
540     public void setResourceVersion(String resourceVersion) {\r
541         this.resourceVersion = resourceVersion;\r
542     }\r
543 \r
544     @Override\r
545     public String getResourceType() {\r
546         return resoucreType;\r
547     }\r
548 \r
549     public void setResoucreType(String resoucreType) {\r
550         this.resoucreType = resoucreType;\r
551     }\r
552 \r
553     @Override\r
554     public String getResourceUUID() {\r
555         return resourceUUID;\r
556     }\r
557 \r
558     public void setResourceUUID(String resourceUUID) {\r
559         this.resourceUUID = resourceUUID;\r
560     }\r
561 \r
562     @Override\r
563     public List<IArtifactInfo> getArtifacts() {\r
564         List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();\r
565         if( artifacts != null ){\r
566             temp.addAll(artifacts);\r
567         }\r
568         return temp;\r
569     }\r
570 \r
571     public void setArtifacts(List<ArtifactInfoImpl> artifacts) {\r
572         this.artifacts = artifacts;\r
573     }\r
574 \r
575     public List<ArtifactInfoImpl> getArtifactsImpl(){\r
576         return artifacts;\r
577     }\r
578 \r
579     @Override\r
580     public String getResourceInvariantUUID() {\r
581         return resourceInvariantUUID;\r
582     }\r
583 \r
584     public void setResourceInvariantUUID(String resourceInvariantUUID) {\r
585         this.resourceInvariantUUID = resourceInvariantUUID;\r
586     }\r
587     public String getResourceCustomizationUUID() {\r
588         return resourceCustomizationUUID;\r
589     }\r
590 \r
591     public void setResourceCustomizationUUID(String resourceCustomizationUUID) {\r
592         this.resourceCustomizationUUID = resourceCustomizationUUID;\r
593     }\r
594 \r
595     public String getCategory() {\r
596         return category;\r
597     }\r
598 \r
599     public void setCategory(String category) {\r
600         this.category = category;\r
601     }\r
602 \r
603     public String getSubcategory() {\r
604         return subcategory;\r
605     }\r
606 \r
607     public void setSubcategory(String subcategory) {\r
608         this.subcategory = subcategory;\r
609     }\r
610 }\r