public void addDescriptor(Descriptor descriptor) { if (descriptor != null) { String name = descriptor.getName(); if (useTypes) { Class<?> type = descriptor.getType(this); if (type != null) { if ((name == null) && (descriptor instanceof AbstractDescriptor)) { name = type.getName(); ((AbstractDescriptor) descriptor).setName(type.getName()); } if ((name != null) && ((descriptors == null) || (!descriptors.containsKey(name)))) { // add all superclasses and interfaces to map to this descriptor addDescriptorType(type, descriptor, name); } } } if ((name != null) && (!hasDescriptor(name))) { putDescriptor(name, descriptor); if (descriptor.isEagerInit()) { addEagerInitObjectName(name); } } } }
public Class<?> getType(WireDefinition wireDefinition) { if (className != null) { try { return ReflectUtil .loadClass(wireDefinition.getClassLoader(), className); } catch (BonitaRuntimeException e) { String message = ExceptionManager.getInstance().getFullMessage( "bp_OD_10", (name != null ? name : className), e.getMessage()); throw new WireException(message, e .getCause()); } } Descriptor descriptor = null; if (factoryDescriptor != null) { descriptor = factoryDescriptor; } else if (factoryObjectName != null) { descriptor = wireDefinition.getDescriptor(factoryObjectName); } if (descriptor != null) { Class<?> factoryClass = descriptor.getType(wireDefinition); if (factoryClass != null) { Method method = ReflectUtilDescriptor.findMethod(factoryClass, methodName, argDescriptors, null); if (method != null) { return method.getReturnType(); } } } return null; }