d803b0270c3fe782041203166363bfff350a2760
[vfc/nfvo/catalog.git] /
1 /**
2  *     Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE)
3  *
4  *     Licensed under the Apache License, Version 2.0 (the "License");
5  *     you may not use this file except in compliance with the License.
6  *     You may obtain a copy of the License at
7  *
8  *             http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *     Unless required by applicable law or agreed to in writing, software
11  *     distributed under the License is distributed on an "AS IS" BASIS,
12  *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *     See the License for the specific language governing permissions and
14  *     limitations under the License.
15  */
16 package org.openo.orchestrator.nfv.catalog.model.externalservice.container;
17
18 import java.io.IOException;
19 import java.io.InputStream;
20 import java.lang.annotation.Annotation;
21 import java.lang.reflect.Type;
22
23 import javax.ws.rs.WebApplicationException;
24 import javax.ws.rs.core.MediaType;
25 import javax.ws.rs.core.MultivaluedMap;
26 import javax.ws.rs.ext.MessageBodyReader;
27 import javax.xml.bind.JAXBContext;
28 import javax.xml.bind.Unmarshaller;
29 import javax.xml.transform.Source;
30 import javax.xml.transform.sax.SAXSource;
31
32 import org.openo.orchestrator.nfv.catalog.model.externalservice.entity.containerEntity.ContainerServiceNodeTemplateList;
33 import org.xml.sax.InputSource;
34 import org.xml.sax.XMLReader;
35 import org.xml.sax.helpers.XMLReaderFactory;
36
37 /**
38  * The opentosca container service returns data to the node template entity
39  * @author 10189609
40  *
41  */
42 public class ContainerServiceNodeTemplateProvider implements 
43         MessageBodyReader<ContainerServiceNodeTemplateList> {
44
45         @Override
46         public boolean isReadable(Class<?> type, Type genericType,
47                         Annotation[] annotations, MediaType mediaType) {
48                 return ContainerServiceNodeTemplateList.class.isAssignableFrom(type);
49         }
50
51         @Override
52         public ContainerServiceNodeTemplateList readFrom(
53                         Class<ContainerServiceNodeTemplateList> type, Type genericType,
54                         Annotation[] annotations, MediaType mediaType,
55                         MultivaluedMap<String, String> httpHeaders, InputStream entityStream)
56                         throws IOException, WebApplicationException {
57                 ContainerServiceNodeTemplateList nodetemplatelist = null;
58                 
59                 try {
60                         JAXBContext jaxbContext = JAXBContext.newInstance(ContainerServiceNodeTemplateList.class);
61                         Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
62                         //ignore namespace
63                         NamespaceFilter inFilter = new NamespaceFilter(null, false);
64                 XMLReader reader = XMLReaderFactory.createXMLReader();
65                 inFilter.setParent(reader);
66                 Source source = new SAXSource(inFilter, new InputSource(entityStream)); 
67                  
68                         nodetemplatelist = (ContainerServiceNodeTemplateList) unmarshaller.unmarshal(source);
69                 } catch (Exception e) {
70                         e.printStackTrace();
71                 }
72                 
73                 return nodetemplatelist;
74         }
75
76 }