/******************************************************************************* * ============LICENSE_START==================================================== * * org.onap.aaf * * =========================================================================== * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. * * =========================================================================== * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * * ============LICENSE_END==================================================== * * * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * * ******************************************************************************/ package org.onap.aaf.cadi.client; import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Map; import org.onap.aaf.cadi.Access; import org.onap.aaf.cadi.config.Config; import org.onap.aaf.cadi.config.SecurityInfoC; import org.onap.aaf.cadi.http.HBasicAuthSS; import org.onap.aaf.cadi.http.HMangr; import org.onap.aaf.cadi.locator.DME2Locator; import com.att.aft.dme2.api.DME2Manager; import org.onap.aaf.inno.env.APIException; import org.onap.aaf.rosetta.env.RosettaDF; import org.onap.aaf.rosetta.env.RosettaEnv; public class AAFClient { private RosettaEnv env; private Map,RosettaDF> map = new HashMap,RosettaDF>(); HMangr hman; HBasicAuthSS ss; public AAFClient(RosettaEnv env) throws Exception { this.env = env; Access access = new EnvAccess(env); String user = access.getProperty(Config.AAF_MECHID,null); String password = access.decrypt(access.getProperty(Config.AAF_MECHPASS,null), true); SecurityInfoC si = new SecurityInfoC(access); DME2Manager dm = new DME2Manager("APIclient DME2Manager", System.getProperties()); DME2Locator loc = new DME2Locator(access, dm, access.getProperty(Config.AAF_URL,null)); int TIMEOUT = Integer.parseInt(access.getProperty(Config.AAF_CONN_TIMEOUT, "30000")); hman = new HMangr(access, loc).readTimeout(TIMEOUT).apiVersion("2.0"); ss = new HBasicAuthSS(user, password, si); } public AAFClient(RosettaEnv env, DME2Manager dm) throws Exception { this.env = env; Access access = new EnvAccess(env); String user = access.getProperty(Config.AAF_MECHID,null); String password = access.decrypt(access.getProperty(Config.AAF_MECHPASS,null), true); SecurityInfoC si = new SecurityInfoC(access); DME2Locator loc = new DME2Locator(access, dm, access.getProperty(Config.AAF_URL,null)); int TIMEOUT = Integer.parseInt(access.getProperty(Config.AAF_CONN_TIMEOUT, "30000")); hman = new HMangr(access, loc).readTimeout(TIMEOUT).apiVersion("2.0"); ss = new HBasicAuthSS(user, password, si); } @SuppressWarnings("unchecked") private synchronized RosettaDF getDF(Class cls) throws APIException { RosettaDF rdf; synchronized (env) { rdf = map.get(cls); if(rdf==null) { rdf = env.newDataFactory(cls); map.put(cls, rdf); } } return (RosettaDF)rdf; } // Package on purpose static class Call { protected final static String VOID_CONTENT_TYPE="application/Void+json;version=2.0"; protected RosettaDF df; protected AAFClient client; public Call(AAFClient ac, RosettaDF df) { this.client = ac; this.df = df; } } /////////// Calls ///////////////// /** * Returns a Get Object... same as "get" * * @param cls * @return * @throws APIException */ public Get read(Class cls) throws APIException { return new Get(this,getDF(cls)); } /** * Returns a Get Object... same as "read" * * @param cls * @return * @throws APIException */ public Get get(Class cls) throws APIException { return new Get(this,getDF(cls)); } /** * Returns a Post Object... same as "create" * * @param cls * @return * @throws APIException */ public Post post(Class cls) throws APIException { return new Post(this,getDF(cls)); } /** * Returns a Post Object... same as "post" * * @param cls * @return * @throws APIException */ public Post create(Class cls) throws APIException { return new Post(this,getDF(cls)); } /** * Returns a Put Object... same as "update" * * @param cls * @return * @throws APIException */ public Put put(Class cls) throws APIException { return new Put(this,getDF(cls)); } /** * Returns a Put Object... same as "put" * * @param cls * @return * @throws APIException */ public Put update(Class cls) throws APIException { return new Put(this,getDF(cls)); } /** * Returns a Delete Object * * @param cls * @return * @throws APIException */ public Delete delete(Class cls) throws APIException { return new Delete(this,getDF(cls)); } /** * Returns a Delete Object * * @param cls * @return * @throws APIException */ public Delete delete() throws APIException { return new Delete(this,null); } public Put put() { return new Put(this,null); } }