/** Returns the canonical string format for the given {@link UserAgent}. */ public static String format(UserAgent userAgent) { Map<String, String> primaryComments = userAgent.nodeId().isPresent() ? ImmutableMap.of("nodeId", userAgent.nodeId().get()) : ImmutableMap.of(); return SPACE_JOINER.join(Iterables.concat( ImmutableList.of(formatSingleAgent(userAgent.primary(), primaryComments)), Lists.transform(userAgent.informational(), a -> formatSingleAgent(a, ImmutableMap.of())))); }
/** * Adds informational {@link com.palantir.remoting3.clients.UserAgent.Agent}s to the given {@link UserAgent}, one * for the http-remoting library and one for the given service class. Version strings are extracted from the * packages' {@link Package#getImplementationVersion implementation version}, defaulting to 0.0.0 if no version can * be found. */ private static UserAgent augmentUserAgent(UserAgent agent, Class<?> serviceClass) { UserAgent augmentedAgent = agent; String maybeServiceVersion = serviceClass.getPackage().getImplementationVersion(); augmentedAgent = augmentedAgent.addAgent(UserAgent.Agent.of( serviceClass.getSimpleName(), maybeServiceVersion != null ? maybeServiceVersion : "0.0.0")); String maybeRemotingVersion = OkHttpClients.class.getPackage().getImplementationVersion(); augmentedAgent = augmentedAgent.addAgent(UserAgent.Agent.of( UserAgents.REMOTING_AGENT_NAME, maybeRemotingVersion != null ? maybeRemotingVersion : "0.0.0")); return augmentedAgent; }