private void processValue()

in gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/LoggingProcessor.java [454:537]


    private void processValue(final Object value, final ElementBuilder builder, final boolean fullFormForReference, final boolean inMap) {
        // well, I know that's ugly... but didn't find other way to resolve that
        if (value instanceof BeanDefinition) {
            processBeanDefinition(null, (BeanDefinition) value, builder, true);
        }
        else if (value instanceof BeanDefinitionHolder) {
            BeanDefinitionHolder holder = (BeanDefinitionHolder) value;
            processBeanDefinition(holder.getBeanName(), holder.getBeanDefinition(), builder, true);
        }
        else if (value instanceof RuntimeBeanReference) {
            processRuntimeBeanReference(value, builder, fullFormForReference, inMap);
        }
        else if (value instanceof List) {
            processList((List) value, builder);
        }
        else if (value instanceof Set) {
            processSet((Set) value, builder);
        }
        else if (value instanceof Map) {
            processMap((Map) value, builder);
        }
        else if (value instanceof TypedStringValue) {
            TypedStringValue typedStringValue = (TypedStringValue) value;
            String stringValue = typedStringValue.getValue();

            if (fullFormForReference) {
                builder.addChild(VALUE_ELEMENT);
            }

            if (stringValue != null) {
                String targetTypeName = typedStringValue.getTargetTypeName();
                if (!fullFormForReference && (targetTypeName != null)) {
                    builder.addChild(VALUE_ELEMENT);
                    builder.addAttribute(TYPE_ATTRIBUTE, targetTypeName);
                    builder.addPCData(stringValue);
                    builder.up();
                }
                else {
                    if (inMap) {
                        builder.addAttribute(VALUE_ATTRIBUTE, stringValue);
                    }
                    else {
                        builder.addPCData(stringValue);
                    }
                }
            }
            else {
                builder.addChild(NULL_ELEMENT);
                builder.up();
            }

            if (fullFormForReference) {
                builder.up();
            }
        }
        else if (value instanceof String) {
            if (fullFormForReference) {
                builder.addChild(VALUE_ELEMENT);
                builder.addPCData((String) value);
                builder.up();
            }
            else {
                builder.addAttribute(VALUE_ATTRIBUTE, (String) value);
            }
        }
        else {
            if (value == null) {
                builder.addChild(NULL_ELEMENT);
                builder.up();
            }
            else {
                String str = value.toString();

                if (fullFormForReference) {
                    builder.addChild(VALUE_ELEMENT);
                    builder.addPCData(str);
                    builder.up();
                }
                else {
                    builder.addAttribute(VALUE_ATTRIBUTE, str);
                }
            }
        }
    }