Package org.openjdk.jmc.agent.impl
Class DefaultTransformRegistry
- java.lang.Object
-
- org.openjdk.jmc.agent.impl.DefaultTransformRegistry
-
- All Implemented Interfaces:
TransformRegistry
public class DefaultTransformRegistry extends java.lang.Object implements TransformRegistry
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
currentConfiguration
private static java.util.logging.Logger
logger
private static javax.xml.validation.Schema
PROBE_SCHEMA
private static java.lang.String
PROBE_SCHEMA_XSD
private boolean
revertInstrumentation
private java.util.HashMap<java.lang.String,java.util.List<TransformDescriptor>>
transformData
private static java.lang.String
XML_ATTRIBUTE_NAME_ID
private static java.lang.String
XML_ELEMENT_CONFIGURATION
private static java.lang.String
XML_ELEMENT_FIELD_NAME
private static java.lang.String
XML_ELEMENT_METHOD_NAME
private static java.lang.String
XML_ELEMENT_NAME_EVENT
private static java.lang.String
XML_ELEMENT_PARAMETER_NAME
private static java.lang.String
XML_ELEMENT_RETURN_VALUE_NAME
-
Constructor Summary
Constructors Constructor Description DefaultTransformRegistry()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
add(TransformDescriptor td)
private static void
addDefaults(java.util.HashMap<java.lang.String,java.lang.String> globalDefaults)
private void
clearAllOtherTransformData(java.util.Set<java.lang.String> classesToKeep)
java.util.Set<java.lang.String>
clearAllTransformData()
Clears all classes and their corresponding transforms in the registry.private static void
disableExternalEntityProcessing(javax.xml.stream.XMLInputFactory inputFactory)
static TransformRegistry
empty()
static TransformRegistry
from(java.io.InputStream in)
java.util.Set<java.lang.String>
getClassNames()
Returns the names of all classes stored in the registry.java.lang.String
getCurrentConfiguration()
Returns the currently instrumented configuration.java.util.List<TransformDescriptor>
getTransformData(java.lang.String className)
Returns the unmodifiable list ofTransformDescriptor
s for the named class.private static java.lang.String
getXmlAsString(java.io.InputStream in)
boolean
hasPendingTransforms(java.lang.String className)
The named class has transforms that have not been executed yet.private boolean
isPendingTransforms(java.util.List<TransformDescriptor> transforms)
boolean
isRevertIntrumentation()
Determines if classes should be reverted to their pre instrumentation versions.java.util.Set<java.lang.String>
modify(java.lang.String xmlDescription)
Modifies class information in the registry according to the xml description.private static Field
parseField(javax.xml.stream.XMLStreamReader streamReader)
private static Method
parseMethod(javax.xml.stream.XMLStreamReader streamReader, java.util.List<Parameter> parameters, ReturnValue[] returnValue)
private static Parameter
parseParameter(int index, javax.xml.stream.XMLStreamReader streamReader)
private static ReturnValue
parseReturnValue(javax.xml.stream.XMLStreamReader streamReader)
private static TransformDescriptor
parseTransformData(javax.xml.stream.XMLStreamReader streamReader, java.util.HashMap<java.lang.String,java.lang.String> globalDefaults)
private static void
readGlobalConfig(javax.xml.stream.XMLStreamReader streamReader, java.util.HashMap<java.lang.String,java.lang.String> globalDefaults)
void
setCurrentConfiguration(java.lang.String configuration)
Set the current configuration that will be instrumentedvoid
setRevertInstrumentation(boolean shouldRevert)
Signify classes are or are not being reverted to their pre instrumentation versions.java.lang.String
toString()
private static void
transfer(java.util.HashMap<java.lang.String,java.lang.String> globalDefaults, java.util.Map<java.lang.String,java.lang.String> values)
private static boolean
validate(DefaultTransformRegistry registry, TransformDescriptor td)
static void
validateProbeDefinition(java.io.InputStream in)
static void
validateProbeDefinition(java.lang.String configuration)
-
-
-
Field Detail
-
XML_ATTRIBUTE_NAME_ID
private static final java.lang.String XML_ATTRIBUTE_NAME_ID
- See Also:
- Constant Field Values
-
XML_ELEMENT_NAME_EVENT
private static final java.lang.String XML_ELEMENT_NAME_EVENT
- See Also:
- Constant Field Values
-
XML_ELEMENT_METHOD_NAME
private static final java.lang.String XML_ELEMENT_METHOD_NAME
- See Also:
- Constant Field Values
-
XML_ELEMENT_FIELD_NAME
private static final java.lang.String XML_ELEMENT_FIELD_NAME
- See Also:
- Constant Field Values
-
XML_ELEMENT_PARAMETER_NAME
private static final java.lang.String XML_ELEMENT_PARAMETER_NAME
- See Also:
- Constant Field Values
-
XML_ELEMENT_RETURN_VALUE_NAME
private static final java.lang.String XML_ELEMENT_RETURN_VALUE_NAME
- See Also:
- Constant Field Values
-
XML_ELEMENT_CONFIGURATION
private static final java.lang.String XML_ELEMENT_CONFIGURATION
- See Also:
- Constant Field Values
-
logger
private static final java.util.logging.Logger logger
-
transformData
private final java.util.HashMap<java.lang.String,java.util.List<TransformDescriptor>> transformData
-
revertInstrumentation
private volatile boolean revertInstrumentation
-
currentConfiguration
private java.lang.String currentConfiguration
-
PROBE_SCHEMA_XSD
private static final java.lang.String PROBE_SCHEMA_XSD
- See Also:
- Constant Field Values
-
PROBE_SCHEMA
private static final javax.xml.validation.Schema PROBE_SCHEMA
-
-
Method Detail
-
hasPendingTransforms
public boolean hasPendingTransforms(java.lang.String className)
Description copied from interface:TransformRegistry
The named class has transforms that have not been executed yet.- Specified by:
hasPendingTransforms
in interfaceTransformRegistry
- Parameters:
className
- the name of the class to be transformed.- Returns:
- true if the class has transforms scheduled. false if not.
-
empty
public static TransformRegistry empty()
-
validateProbeDefinition
public static void validateProbeDefinition(java.io.InputStream in) throws XMLValidationException
- Throws:
XMLValidationException
-
validateProbeDefinition
public static void validateProbeDefinition(java.lang.String configuration) throws XMLValidationException
- Throws:
XMLValidationException
-
from
public static TransformRegistry from(java.io.InputStream in) throws javax.xml.stream.XMLStreamException, XMLValidationException
- Throws:
javax.xml.stream.XMLStreamException
XMLValidationException
-
add
private void add(TransformDescriptor td)
-
validate
private static boolean validate(DefaultTransformRegistry registry, TransformDescriptor td)
-
parseTransformData
private static TransformDescriptor parseTransformData(javax.xml.stream.XMLStreamReader streamReader, java.util.HashMap<java.lang.String,java.lang.String> globalDefaults) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
transfer
private static void transfer(java.util.HashMap<java.lang.String,java.lang.String> globalDefaults, java.util.Map<java.lang.String,java.lang.String> values)
-
readGlobalConfig
private static void readGlobalConfig(javax.xml.stream.XMLStreamReader streamReader, java.util.HashMap<java.lang.String,java.lang.String> globalDefaults)
-
addDefaults
private static void addDefaults(java.util.HashMap<java.lang.String,java.lang.String> globalDefaults)
-
parseParameter
private static Parameter parseParameter(int index, javax.xml.stream.XMLStreamReader streamReader) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
parseField
private static Field parseField(javax.xml.stream.XMLStreamReader streamReader) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
parseReturnValue
private static ReturnValue parseReturnValue(javax.xml.stream.XMLStreamReader streamReader) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
parseMethod
private static Method parseMethod(javax.xml.stream.XMLStreamReader streamReader, java.util.List<Parameter> parameters, ReturnValue[] returnValue) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
getTransformData
public java.util.List<TransformDescriptor> getTransformData(java.lang.String className)
Description copied from interface:TransformRegistry
Returns the unmodifiable list ofTransformDescriptor
s for the named class.- Specified by:
getTransformData
in interfaceTransformRegistry
- Parameters:
className
- the class for which to retrieve the transformation metadata.- Returns:
- the list of transformation metadata for the named class; may be empty but never
null
.
-
isPendingTransforms
private boolean isPendingTransforms(java.util.List<TransformDescriptor> transforms)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
modify
public java.util.Set<java.lang.String> modify(java.lang.String xmlDescription) throws XMLValidationException
Description copied from interface:TransformRegistry
Modifies class information in the registry according to the xml description.- Specified by:
modify
in interfaceTransformRegistry
- Parameters:
xmlDescription
- an XML snippet describing the wanted modifications.- Returns:
- a set of class names associated with modified
TransformDescriptor
s. - Throws:
XMLValidationException
- if the supplied XML fails to validate.
-
clearAllOtherTransformData
private void clearAllOtherTransformData(java.util.Set<java.lang.String> classesToKeep)
-
clearAllTransformData
public java.util.Set<java.lang.String> clearAllTransformData()
Description copied from interface:TransformRegistry
Clears all classes and their corresponding transforms in the registry.- Specified by:
clearAllTransformData
in interfaceTransformRegistry
- Returns:
- the set of class names that were cleared.
-
getXmlAsString
private static java.lang.String getXmlAsString(java.io.InputStream in)
-
getClassNames
public java.util.Set<java.lang.String> getClassNames()
Description copied from interface:TransformRegistry
Returns the names of all classes stored in the registry.- Specified by:
getClassNames
in interfaceTransformRegistry
- Returns:
- the unmodifiable set of class names.
-
getCurrentConfiguration
public java.lang.String getCurrentConfiguration()
Description copied from interface:TransformRegistry
Returns the currently instrumented configuration.- Specified by:
getCurrentConfiguration
in interfaceTransformRegistry
- Returns:
- an XML snippet of the configuration.
-
setCurrentConfiguration
public void setCurrentConfiguration(java.lang.String configuration)
Description copied from interface:TransformRegistry
Set the current configuration that will be instrumented- Specified by:
setCurrentConfiguration
in interfaceTransformRegistry
- Parameters:
configuration
- an XML snippet describing the current configuration
-
setRevertInstrumentation
public void setRevertInstrumentation(boolean shouldRevert)
Description copied from interface:TransformRegistry
Signify classes are or are not being reverted to their pre instrumentation versions.- Specified by:
setRevertInstrumentation
in interfaceTransformRegistry
- Parameters:
shouldRevert
- true if class instrumentation should be reverted, false otherwise.
-
isRevertIntrumentation
public boolean isRevertIntrumentation()
Description copied from interface:TransformRegistry
Determines if classes should be reverted to their pre instrumentation versions.- Specified by:
isRevertIntrumentation
in interfaceTransformRegistry
- Returns:
- true, if classes should be reverted and false otherwise.
-
disableExternalEntityProcessing
private static void disableExternalEntityProcessing(javax.xml.stream.XMLInputFactory inputFactory)
-
-