FELIX-5201: Improved getClassName() method: check if the factory instance is a class name or is an object which provides a toString() method.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1732784 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
index 15cafdb..a90fe14 100644
--- a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
@@ -719,7 +719,7 @@
// The component does not provide a service, use the component definition as the name.
Object componentDefinition = m_componentDefinition;
if (componentDefinition != null) {
- getName(componentDefinition, sb);
+ sb.append(toString(componentDefinition));
} else {
// No component definition means we are using a factory. If the component instance is available use it as the component name,
// alse use teh factory object as the component name.
@@ -730,7 +730,7 @@
// Check if a factory is set.
Object instanceFactory = m_instanceFactory;
if (instanceFactory != null) {
- getName(instanceFactory, sb);
+ sb.append(toString(instanceFactory));
} else {
sb.append(super.toString());
}
@@ -740,22 +740,22 @@
return sb.toString();
}
- private void getName(Object implementation, StringBuffer sb) {
+ private String toString(Object implementation) {
if (implementation instanceof Class) {
- sb.append(((Class<?>) implementation).getName());
+ return (((Class<?>) implementation).getName());
} else {
// If the implementation instance does not override "toString", just display
// the class name, else display the component using its toString method
try {
Method m = implementation.getClass().getMethod("toString", new Class[0]);
if (m.getDeclaringClass().equals(Object.class)) {
- sb.append(implementation.getClass().getName());
+ return implementation.getClass().getName();
} else {
- sb.append(implementation.toString());
+ return implementation.toString();
}
} catch (java.lang.NoSuchMethodException e) {
// Just display the class name
- sb.append(implementation.getClass().getName());
+ return implementation.getClass().getName();
}
}
}
@@ -790,7 +790,7 @@
Object instanceFactory = m_instanceFactory;
if (instanceFactory != null) {
- return instanceFactory.getClass().getName();
+ return toString(instanceFactory);
} else {
// unexpected.
return ComponentImpl.class.getName();