Shadow relocates are no longer needed because of our new bootstrapping
process.
It's no longer possible for agent dependencies to interfere with the
user's classpath.
The immediate reason for this change is a bug created in the Cassandra
instrumentation.
The Cassandra instrumentation references guava transitive deps from
the datastax driver. These references are re-written by shadow,
causing the instrumentation to reference 'datadog.agent.deps.google.*'
instead of the guava class.
By default, instrumentation is enabled, and can be disabled by default by overriding the `defaultEnabled` method. Instrumentation can also be disabled individually or enabled when default is disabled.
Java 9 is commented out because there are some test failures that will be investigated later.
Some tests had to be excluded from Java 7 because they don’t have a Java 7 compatible version.
This does not yet include instrumentation for MessageListener.
I think there is actually no difference between the instrumentation so we should combine them.
I also added TEXT_MAP as a format that maps to the HTTP Codec. There is some remapping inside the instrumentation to remove dashes before setting as a property. This should also be changed when an official format is defined.
This also currently has a problem with Spring Boot applications as the JMS Util references classes not on the system classpath (it needs to be injected into the child classpath)
This instrumentation creates spans for Statements and PreparedStatements. It also captures the corresponding SQL and additional connection info. ResultSet could be considered for future instrumentation to capture even more of the DB interaction time.
This integration uses Bytebuddy instead of Byteman as the many methods to instrument would have been messy in Byteman.
This is important for things like Spring Boot’s executable jar classloader which keeps all the jars individually rather than on the system classloader.
It brings in a bunch of duplicate and unnecessary dependencies since it also bundles them in its’ jar. Copying the OpenTracingHelper class to our repo until we can refactor it away. It also is Apache 2 licensed so I think we should be ok.
`TraceAnnotationsManager` is responsible for generating the rules for `@Trace`ed methods, `InstrumentationRulesManager` is responsible for our custom built Integrations.
This will prevent us from respecting any existing SLF4J implementation and just print to the console. This is important for things like Spring Boot that never put a SLF4J implementation on the system classpath, but instead keep it inside the jar.