daf57c2878a4337509f161e77d43027e71007a3d
[vfc/nfvo/catalog.git] /
1 /**
2  * Copyright 2016 [ZTE] and others.
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.commontosca.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.commontosca.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 }