[PORTAL-7] Rebase
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / service / ApplicationsRestClientService.java
1 /*-
2  * ================================================================================
3  * ECOMP Portal SDK
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ================================================================================
19  */
20 package org.openecomp.portalapp.portal.service;
21
22 import org.apache.cxf.transport.http.HTTPException;
23 import org.openecomp.portalapp.util.SystemType;
24
25 public interface ApplicationsRestClientService {
26         public <T> T get(Class<T> clazz, long app, String restPath) throws HTTPException;
27         public String getIncomingJsonString(long appId, String restPath) throws HTTPException;
28
29         public <T> T post(Class<T> clazz, long appId, Object payload, String restPath) throws HTTPException;
30         public <T> T post(Class<T> clazz, long appId, Object payload, String restPath, SystemType type) throws HTTPException;
31
32         public <T> T put(Class<T> clazz, long appId, Object payload, String restPath) throws HTTPException;
33
34         /**
35          * Sends a GET request to the specified application at the specified path.
36          * This is a workaround for a problem triggered by a superclass/subclass
37          * with identical field names.
38          * 
39          * @param clazz
40          *            Expected response type
41          * @param appId
42          *            Application ID
43          * @param restPath
44          *            Path at the remote application
45          * @param useJacksonMapper
46          *            If true, uses a com.fasterxml.jackson.databind.ObjectMapper to
47          *            translate the remote application response from JSON to an
48          *            object. Otherwise, uses a com.google.gson.Gson.
49          * @return Instance of the specified class
50          * @throws HTTPException
51          */
52         public <T> T get(Class<T> clazz, long appId, String restPath, boolean useJacksonMapper) throws HTTPException;
53 }