2 * ============LICENSE_START====================================================
4 * ===========================================================================
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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 * ============LICENSE_END====================================================
22 package org.onap.aaf.auth.locate.mapper;
24 import java.util.List;
26 import org.onap.aaf.auth.dao.cass.LocateDAO.Data;
27 import org.onap.aaf.auth.layer.Result;
28 import org.onap.aaf.cadi.util.Vars;
29 import org.onap.aaf.misc.env.util.Split;
31 import locate.v1_0.Endpoint;
32 import locate.v1_0.Endpoints;
33 import locate.v1_0.MgmtEndpoint;
34 import locate.v1_0.MgmtEndpoints;
35 import locate_local.v1_0.Error;
36 import locate_local.v1_0.InRequest;
37 import locate_local.v1_0.Out;
39 public class Mapper_1_0 implements Mapper<InRequest,Out,Endpoints,MgmtEndpoints,Error> {
42 public Class<?> getClass(API api) {
44 case IN_REQ: return InRequest.class;
45 case OUT: return Out.class;
46 case ERROR: return Error.class;
47 case VOID: return Void.class;
48 case ENDPOINTS: return Endpoints.class;
49 case MGMT_ENDPOINTS: return MgmtEndpoints.class;
54 @SuppressWarnings("unchecked")
56 public <A> A newInstance(API api) {
58 case IN_REQ: return (A) new InRequest();
59 case OUT: return (A) new Out();
60 case ERROR: return (A)new Error();
61 case ENDPOINTS: return (A) new Endpoints();
62 case MGMT_ENDPOINTS: return (A) new MgmtEndpoints();
63 case VOID: return null;
68 ////////////// Mapping Functions /////////////
70 public locate_local.v1_0.Error errorFromMessage(StringBuilder holder, String msgID, String text,String... var) {
71 Error err = new Error();
72 err.setMessageId(msgID);
73 // AT&T Restful Error Format requires numbers "%" placements
74 err.setText(Vars.convert(holder, text, var));
76 err.getVariables().add(s);
82 * @see org.onap.aaf.auth.locate.mapper.Mapper#endpoints(org.onap.aaf.auth.layer.test.Result, java.lang.String, java.lang.String)
85 public Result<Endpoints> endpoints(Result<List<Data>> resultDB, String version, String other) {
86 if(resultDB.notOK()) {
87 return Result.err(resultDB);
89 int major=-1, minor=-1, patch=-1, pkg=-1;
92 String[] v = Split.split('.',version);
93 if(v.length>0) {major = Integer.parseInt(v[0]);}
94 if(v.length>1) {minor = Integer.parseInt(v[1]);}
95 if(v.length>2) {patch = Integer.parseInt(v[2]);}
96 if(v.length>3) {pkg = Integer.parseInt(v[3]);}
97 } catch (NumberFormatException e) {
98 return Result.err(Result.ERR_BadData,"Invalid Version String " + version);
101 Endpoints eps = new Endpoints();
102 List<Endpoint> leps = eps.getEndpoint();
103 for(Data d : resultDB.value) {
104 if((major<0 || major==d.major) &&
105 (minor<0 || minor<=d.minor) &&
106 (patch<0 || patch==d.patch) &&
107 (pkg<0 || pkg ==d.pkg)) {
108 Endpoint ep = new Endpoint();
110 ep.setHostname(d.hostname);
112 ep.setMajor(d.major);
113 ep.setMinor(d.minor);
114 ep.setPatch(d.patch);
116 ep.setLatitude(d.latitude);
117 ep.setLongitude(d.longitude);
118 ep.setProtocol(d.protocol);
119 for(String s : d.subprotocol(false)) {
120 ep.getSubprotocol().add(s);
125 return Result.ok(eps);
129 * @see org.onap.aaf.auth.locate.mapper.Mapper#locateData(locate.v1_0.MgmtEndpoint)
132 public Data locateData(MgmtEndpoint me) {
133 Data data = new Data();
134 data.name = me.getName();
135 data.port = me.getPort();
136 data.hostname = me.getHostname();
137 data.major = me.getMajor();
138 data.minor = me.getMinor();
139 data.patch = me.getPatch();
140 data.pkg = me.getPkg();
141 data.latitude = me.getLatitude();
142 data.longitude = me.getLongitude();
143 data.protocol = me.getProtocol();
144 for(String s : me.getSubprotocol()) {
145 data.subprotocol(true).add(s);