Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ query in an iterable/iterator format. The returned QueryIterableResult should
be used in a try-with-resources statement to ensure proper closing of
resources.
- updated NoSQLHandle and QueryRequest interfaces to extend AutoClosable
- added support for setting an extension to the User Agent http header by
setting the ExtensionUserAgent property on NoSQLHandlerConfig.

### Changed
- Cloud only: Updated OCI regions: CDG, MAD, QRO
Expand Down
33 changes: 33 additions & 0 deletions driver/src/main/java/oracle/nosql/driver/NoSQLHandleConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,10 @@ public class NoSQLHandleConfig implements Cloneable {
* Hidden flag to control automatic auth refresh in cloud service
*/
private boolean authRefresh;
/**
* Additional extension to user agent http header.
*/
private String extensionUserAgent;

/**
* Specifies an endpoint or region id to use to connect to the Oracle
Expand Down Expand Up @@ -1579,4 +1583,33 @@ private void setConfigFromEnvironment() {
statsEnableLog = Boolean.FALSE;
}
}

/**
* Returns the set extension to the user agent http header or null if
* unset.
*
* @return the extension to the user agent http header
*
* @since 5.3.3
*/
public String getExtensionUserAgent() {
return extensionUserAgent;
}

/**
* Sets an extension to the user agent http header. Extension can be
* up to 64 bytes in length.
*
* @param extensionUserAgent the new extension
*
* @since 5.3.3
*/
public void setExtensionUserAgent(String extensionUserAgent) {
if (extensionUserAgent != null && extensionUserAgent.length() > 64) {
throw new IllegalArgumentException("Extension to the user agent " +
"http header too long, it can be up to 64 bytes. Length: " +
extensionUserAgent.length());
}
this.extensionUserAgent = extensionUserAgent;
}
}
2 changes: 1 addition & 1 deletion driver/src/main/java/oracle/nosql/driver/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public byte[] getBytes() {
/**
* @hidden
* @param version the version to use
* @return a new Version intance
* @return a new Version instance
*/
public static Version createVersion(byte[] version) {
if (version == null) {
Expand Down
33 changes: 23 additions & 10 deletions driver/src/main/java/oracle/nosql/driver/http/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@
import static oracle.nosql.driver.util.BinaryProtocol.V2;
import static oracle.nosql.driver.util.BinaryProtocol.V3;
import static oracle.nosql.driver.util.CheckNull.requireNonNull;
import static oracle.nosql.driver.util.LogUtil.isLoggable;
import static oracle.nosql.driver.util.LogUtil.logFine;
import static oracle.nosql.driver.util.LogUtil.logInfo;
import static oracle.nosql.driver.util.LogUtil.logTrace;
import static oracle.nosql.driver.util.LogUtil.logWarning;
import static oracle.nosql.driver.util.HttpConstants.ACCEPT;
import static oracle.nosql.driver.util.HttpConstants.CONNECTION;
import static oracle.nosql.driver.util.HttpConstants.CONTENT_LENGTH;
Expand All @@ -28,11 +23,16 @@
import static oracle.nosql.driver.util.HttpConstants.NOSQL_DATA_PATH;
import static oracle.nosql.driver.util.HttpConstants.REQUEST_ID_HEADER;
import static oracle.nosql.driver.util.HttpConstants.USER_AGENT;
import static oracle.nosql.driver.util.LogUtil.isLoggable;
import static oracle.nosql.driver.util.LogUtil.logFine;
import static oracle.nosql.driver.util.LogUtil.logInfo;
import static oracle.nosql.driver.util.LogUtil.logTrace;
import static oracle.nosql.driver.util.LogUtil.logWarning;

import java.io.IOException;
import java.net.URL;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
Expand Down Expand Up @@ -61,8 +61,8 @@
import oracle.nosql.driver.SecurityInfoNotReadyException;
import oracle.nosql.driver.StatsControl;
import oracle.nosql.driver.TableNotFoundException;
import oracle.nosql.driver.WriteThrottlingException;
import oracle.nosql.driver.UnsupportedProtocolException;
import oracle.nosql.driver.WriteThrottlingException;
import oracle.nosql.driver.httpclient.HttpClient;
import oracle.nosql.driver.httpclient.ResponseHandler;
import oracle.nosql.driver.kv.AuthenticationException;
Expand All @@ -85,13 +85,13 @@
import oracle.nosql.driver.ops.serde.BinarySerializerFactory;
import oracle.nosql.driver.ops.serde.SerializerFactory;
import oracle.nosql.driver.query.QueryDriver;
import oracle.nosql.driver.values.MapValue;
import oracle.nosql.driver.util.ByteInputStream;
import oracle.nosql.driver.util.HttpConstants;
import oracle.nosql.driver.util.NettyByteInputStream;
import oracle.nosql.driver.util.NettyByteOutputStream;
import oracle.nosql.driver.util.RateLimiterMap;
import oracle.nosql.driver.util.SerializationUtil;
import oracle.nosql.driver.values.MapValue;

import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
Expand Down Expand Up @@ -197,6 +197,9 @@ public class Client {
/* note this must end with '=' */
private final String SESSION_COOKIE_FIELD = "session=";

/* for keeping track of SDKs usage */
private String userAgent;

public Client(Logger logger,
NoSQLHandleConfig httpConfig) {

Expand Down Expand Up @@ -271,6 +274,16 @@ public Client(Logger logger,
oneTimeMessages = new HashSet<String>();
statsControl = new StatsControlImpl(config,
logger, httpClient, httpConfig.getRateLimitingEnabled());

String extensionUserAgent = httpConfig.getExtensionUserAgent();
if (extensionUserAgent != null) {
userAgent = new StringBuilder(HttpConstants.userAgent)
.append(" ")
.append(extensionUserAgent)
.toString();
} else {
this.userAgent = HttpConstants.userAgent;
}
}

/**
Expand Down Expand Up @@ -1297,8 +1310,8 @@ private void addCommonHeaders(HttpHeaders headers) {
.set(USER_AGENT, getUserAgent());
}

private static String getUserAgent() {
return HttpConstants.userAgent;
private String getUserAgent() {
return userAgent;
}

public static void trace(String msg, int level) {
Expand Down