* org.onap.dmaap
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Modifications Copyright (C) 2019 IBM.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.dmaap.dbcapi.client;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.ConnectException;
-import java.net.ProtocolException;
-import java.net.SocketException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import javax.net.ssl.HttpsURLConnection;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
import org.onap.dmaap.dbcapi.logging.BaseLoggingClass;
import org.onap.dmaap.dbcapi.logging.DmaapbcLogMessageEnum;
import org.onap.dmaap.dbcapi.model.ApiError;
-import org.onap.dmaap.dbcapi.model.DR_Pub;
import org.onap.dmaap.dbcapi.model.DR_Sub;
import org.onap.dmaap.dbcapi.model.Feed;
import org.onap.dmaap.dbcapi.service.DmaapService;
-import org.onap.dmaap.dbcapi.util.RandomInteger;
+import org.onap.dmaap.dbcapi.util.DmaapConfig;
+
+import javax.net.ssl.HttpsURLConnection;
+import java.io.*;
+import java.net.ConnectException;
+import java.net.ProtocolException;
+import java.net.SocketException;
+import java.net.URL;
+import java.util.Arrays;
private String provURL;
+ private String provApi;
+ private String behalfHeader;
+ private String feedContentType;
+ private String subContentType;
+ private String unit_test;
private HttpsURLConnection uc;
if ( provURL.length() < 1 ) {
errorLogger.error( DmaapbcLogMessageEnum.PREREQ_DMAAP_OBJECT, "getDrProvUrl");
}
+ DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig();
+ provApi = p.getProperty( "DR.provApi", "ONAP" );
+ behalfHeader = p.getProperty( "DR.onBehalfHeader", "X-DMAAP-DR-ON-BEHALF-OF");
+ feedContentType = p.getProperty( "DR.feedContentType", "application/vnd.dmaap-dr.feed");
+ subContentType = p.getProperty( "DR.subContentType", "application/vnd.dmaap-dr.subscription");
+ logger.info( "provURL=" + provURL + " provApi=" + provApi + " behalfHeader=" + behalfHeader
+ + " feedContentType=" + feedContentType + " subContentType=" + subContentType );
+ unit_test = p.getProperty( "UnitTest", "No" );
}
try {
logger.info( "uc=" + uc );
uc.setRequestMethod("POST");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.feed");
+ uc.setRequestProperty("Content-Type", feedContentType);
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", postFeed.getOwner() );
+ uc.setRequestProperty( behalfHeader, postFeed.getOwner() );
uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
err.setCode( 500 );
err.setMessage( "Unable to read response from DR");
} catch (Exception e) {
- logger.warn("Unable to read response " );
- e.printStackTrace();
- try {
- err.setCode( uc.getResponseCode());
- err.setMessage(uc.getResponseMessage());
- } catch (Exception e2) {
- err.setCode( 500 );
- err.setMessage("Unable to determine response message");
- }
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doPostFeed because unit_test =" + unit_test );
+ } else {
+ logger.warn("Unable to read response " );
+ e.printStackTrace();
+ try {
+ err.setCode( uc.getResponseCode());
+ err.setMessage(uc.getResponseMessage());
+ } catch (Exception e2) {
+ err.setCode( 500 );
+ err.setMessage("Unable to determine response message");
+ }
+ }
}
finally {
try {
try {
uc.setRequestMethod("POST");
-// uc.setRequestProperty("Content-Type", "application/vnd.att-dr.feed");
-// uc.setRequestProperty( "charset", "utf-8");
-// uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", postFeed.getOwner() );
-// uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
-// uc.setUseCaches(false);
-// uc.setDoOutput(true);
- OutputStream os = null;
-
-
+
+
try {
uc.connect();
- os = uc.getOutputStream();
-
} catch (ProtocolException pe) {
// Rcvd error instead of 100-Continue
// without this, Java will connect multiple times to the server to run the same request
uc.setDoOutput(false);
} catch (Exception e) {
+ logger.error(e.getMessage(), e);
}
}
rc = uc.getResponseCode();
err.setMessage(responsemessage);
}
} catch (Exception e) {
- System.err.println("Unable to read response " );
- e.printStackTrace();
- } finally {
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doXgressPost because unit_test =" + unit_test );
+ } else {
+ logger.error("Unable to read response " );
+ e.printStackTrace();
+ }
+ }
+ finally {
try {
uc.disconnect();
- } catch ( Exception e ) {}
+ } catch ( Exception e ) {
+ logger.error(e.getMessage(), e);
+ }
}
return rc;
public String doPostDr_Sub( DR_Sub postSub, ApiError err ) {
logger.info( "entry: doPostDr_Sub() " );
- byte[] postData = postSub.getBytes();
+ byte[] postData = postSub.getBytes(provApi );
logger.info( "post fields=" + postData );
String responsemessage = null;
String responseBody = null;
uc.setRequestMethod("POST");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.subscription");
+ uc.setRequestProperty("Content-Type", subContentType );
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", "DGL" );
+ uc.setRequestProperty( behalfHeader, "DGL" );
uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
}
} catch (Exception e) {
- System.err.println("Unable to read response " );
- e.printStackTrace();
- } finally {
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doPostDr_Sub because unit_test =" + unit_test );
+ } else {
+ System.err.println("Unable to read response " );
+ e.printStackTrace();
+ }
+ }
+ finally {
try {
uc.disconnect();
} catch ( Exception e ) {}
try {
logger.info( "uc=" + uc );
uc.setRequestMethod("PUT");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.feed");
+ uc.setRequestProperty("Content-Type", feedContentType );
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", putFeed.getOwner() );
+ uc.setRequestProperty( behalfHeader, putFeed.getOwner() );
uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
if (rc >= 200 && rc < 300 ) {
responseBody = bodyToString( uc.getInputStream() );
logger.info( "responseBody=" + responseBody );
-
+ err.setCode( rc );
} else if ( rc == 404 ) {
err.setCode( rc );
err.setFields( "feedid");
err.setCode( 500 );
err.setMessage( "Unable to read response from DR");
} catch (Exception e) {
- logger.warn("Unable to read response " );
- e.printStackTrace();
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doPutFeed because unit_test =" + unit_test );
+ } else {
+ logger.warn("Unable to read response " );
+ e.printStackTrace();
+ }
try {
err.setCode( uc.getResponseCode());
err.setMessage(uc.getResponseMessage());
}
public String doPutDr_Sub(DR_Sub postSub, ApiError err) {
logger.info( "entry: doPutDr_Sub() " );
- byte[] postData = postSub.getBytes();
+ byte[] postData = postSub.getBytes(provApi);
logger.info( "post fields=" + postData );
String responsemessage = null;
String responseBody = null;
uc.setRequestMethod("PUT");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.subscription");
+ uc.setRequestProperty("Content-Type", subContentType );
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", "DGL" );
+ uc.setRequestProperty( behalfHeader, "DGL" );
uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
err.setCode( 500 );
err.setMessage("Backend connection refused");
} catch (Exception e) {
- System.err.println("Unable to read response " );
- e.printStackTrace();
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doPutDr_Sub because unit_test =" + unit_test );
+ } else {
+ logger.error("Unable to read response " );
+ logger.error(e.getMessage(), e);
+ }
} finally {
uc.disconnect();
}
//logger.info( "get fields=" + postData );
String responsemessage = null;
String responseBody = null;
- logger.info( "templog:doGetNodes at 12.10.14.10" );
try {
- logger.info( "templog:doGetNodes at 12.10.14.11" );
uc.setRequestMethod("GET");
-
- //uc.setRequestProperty("Content-Type", "application/vnd.att-dr.subscription");
- //uc.setRequestProperty( "charset", "utf-8");
- //uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", "DGL" );
- //uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
- //uc.setUseCaches(false);
- //uc.setDoOutput(true);
- OutputStream os = null;
int rc = -1;
- logger.info( "templog:doGetNodes at 12.10.14.12" );
+
try {
- uc.connect();
- logger.info( "templog:doGetNodes at 12.10.14.13" );
- //os = uc.getOutputStream();
- //os.write( postData );
+ uc.connect();
+
} catch (ProtocolException pe) {
- logger.info( "templog:doGetNodes at 12.10.14.14" );
+
// Rcvd error instead of 100-Continue
try {
// work around glitch in Java 1.7.0.21 and likely others
} catch (Exception e) {
}
}
- logger.info( "templog:doGetNodes at 12.10.14.15" );
+
rc = uc.getResponseCode();
logger.info( "http response code:" + rc );
responsemessage = uc.getResponseMessage();
logger.info( "responsemessage=" + responsemessage );
- logger.info( "templog:doGetNodes at 12.10.14.16" );
+
if (responsemessage == null) {
- logger.info( "templog:doGetNodes at 12.10.14.17" );
+
// work around for glitch in Java 1.7.0.21 and likely others
// When Expect: 100 is set and a non-100 response is received, the response message is not set but the response code is
String h0 = uc.getHeaderField(0);
}
}
}
- logger.info( "templog:doGetNodes at 12.10.14.18" );
+
err.setCode(rc); // may not really be an error, but we save rc
if (rc == 200 ) {
responseBody = bodyToString( uc.getInputStream() );
err.setMessage(responsemessage);
}
- logger.info( "templog:doGetNodes at 12.10.14.19" );
+
} catch (ConnectException ce) {
- logger.info( "templog:doGetNodes at 12.10.14.20" );
+
errorLogger.error( DmaapbcLogMessageEnum.HTTP_CONNECTION_EXCEPTION, provURL, ce.getMessage() );
err.setCode( 500 );
err.setMessage("Backend connection refused");
} catch (Exception e) {
- logger.info( "templog:doGetNodes at 12.10.14.21" );
- System.err.println("Unable to read response " );
- e.printStackTrace();
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doGetNodes because unit_test =" + unit_test );
+ } else {
+ System.err.println("Unable to read response " );
+ e.printStackTrace();
+ }
} finally {
- logger.info( "templog:doGetNodes at 12.10.14.22" );
+
if ( uc != null ) uc.disconnect();
}
- logger.info( "templog:doGetNodes at 12.10.14.23" );
+
return responseBody;
}
uc.setRequestMethod("PUT");
- //uc.setRequestProperty("Content-Type", "application/vnd.att-dr.subscription");
+ //uc.setRequestProperty("Content-Type", subContentType );
//uc.setRequestProperty( "charset", "utf-8");
- //uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", "DGL" );
+ //uc.setRequestProperty( behalfHeader, "DGL" );
//uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
//uc.setDoOutput(true);
}
} catch (Exception e) {
- System.err.println("Unable to read response " + e.getMessage() );
- e.printStackTrace();
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doPutNodes because unit_test =" + unit_test );
+ } else {
+ System.err.println("Unable to read response " + e.getMessage() );
+ e.printStackTrace();
+ }
} finally {
if ( uc != null ) {
uc.disconnect();
try {
logger.info( "uc=" + uc );
uc.setRequestMethod("DELETE");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.feed");
+ uc.setRequestProperty("Content-Type", feedContentType );
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", putFeed.getOwner() );
+ uc.setRequestProperty( behalfHeader, putFeed.getOwner() );
//uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
err.setCode( 500 );
err.setMessage( "Unable to read response from DR");
} catch (Exception e) {
- logger.warn("Unable to read response " );
- e.printStackTrace();
- try {
- err.setCode( uc.getResponseCode());
- err.setMessage(uc.getResponseMessage());
- } catch (Exception e2) {
- err.setCode( 500 );
- err.setMessage("Unable to determine response message");
- }
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doDeleteFeed because unit_test =" + unit_test );
+ } else {
+ logger.warn("Unable to read response " );
+ e.printStackTrace();
+ try {
+ err.setCode( uc.getResponseCode());
+ err.setMessage(uc.getResponseMessage());
+ } catch (Exception e2) {
+ err.setCode( 500 );
+ err.setMessage("Unable to determine response message");
+ }
+ }
} finally {
try {
uc.disconnect();
public String doDeleteDr_Sub(DR_Sub delSub, ApiError err) {
logger.info( "entry: doDeleteDr_Sub() " );
- byte[] postData = delSub.getBytes();
+ byte[] postData = delSub.getBytes(provApi);
logger.info( "post fields=" + postData );
String responsemessage = null;
String responseBody = null;
uc.setRequestMethod("DELETE");
- uc.setRequestProperty("Content-Type", "application/vnd.att-dr.subscription");
+ uc.setRequestProperty("Content-Type", subContentType);
uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "X-ATT-DR-ON-BEHALF-OF", "DGL" );
+ uc.setRequestProperty( behalfHeader, "DGL" );
//uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
uc.setUseCaches(false);
uc.setDoOutput(true);
}
} catch (ConnectException ce) {
- errorLogger.error( DmaapbcLogMessageEnum.HTTP_CONNECTION_EXCEPTION, provURL, ce.getMessage() );
- err.setCode( 500 );
- err.setMessage("Backend connection refused");
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doDeleteDr_Sub because unit_test =" + unit_test );
+ } else {
+ errorLogger.error( DmaapbcLogMessageEnum.HTTP_CONNECTION_EXCEPTION, provURL, ce.getMessage() );
+ err.setCode( 500 );
+ err.setMessage("Backend connection refused");
+ }
} catch (Exception e) {
- System.err.println("Unable to read response " );
- e.printStackTrace();
+ if ( unit_test.equals( "Yes" ) ) {
+ err.setCode(200);
+ err.setMessage( "simulated response");
+ logger.info( "artificial 200 response from doDeleteDr_Sub because unit_test =" + unit_test );
+ } else {
+ System.err.println("Unable to read response " );
+ e.printStackTrace();
+ }
} finally {
uc.disconnect();
}
return responseBody;
}
- /*
- public static void main( String[] args ) throws Exception {
- PropertyConfigurator.configure("log4j.properties");
- logger.info("Started.");
-
- RandomInteger ri = new RandomInteger(10000);
- //String postJSON = String.format("{\"name\": \"dgl feed %d\", \"version\": \"v1.0\", \"description\": \"dgl feed N for testing\", \"authorization\": { \"classification\": \"unclassified\", \"endpoint_addrs\": [],\"endpoint_ids\": [{\"password\": \"test\",\"id\": \"test\"}]}}", ri.next()) ;
- int i = ri.next();
- Feed tst = new Feed( "dgl feed " + i,
- "v1.0",
- "dgl feed " + i + "for testing",
- "TEST",
- "unclassified"
- );
- ArrayList<DR_Pub> pubs = new ArrayList<DR_Pub>();
- pubs.add( new DR_Pub( "centralLocation" ) );
- tst.setPubs(pubs);
-
- boolean rc;
- DrProvConnection context = new DrProvConnection();
- rc = context.makeFeedConnection();
- logger.info( "makeFeedConnection returns " + rc);
- ApiError err = new ApiError();
- if ( rc ) {
- String tmp = context.doPostFeed( tst, err );
- logger.info( "doPostFeed returns " + tmp);
- }
-
- }
- */
}