public Object unmarshal()

in eureka-client/src/main/java/com/netflix/discovery/converters/Converters.java [365:426]


        public Object unmarshal(HierarchicalStreamReader reader,
                                UnmarshallingContext context) {
            InstanceInfo.Builder builder = InstanceInfo.Builder.newBuilder();

            while (reader.hasMoreChildren()) {
                reader.moveDown();

                String nodeName = reader.getNodeName();

                if (ELEM_HOST.equals(nodeName)) {
                    builder.setHostName(reader.getValue());
                } else if (ELEM_INSTANCE_ID.equals(nodeName)) {
                    builder.setInstanceId(reader.getValue());
                } else if (ELEM_APP.equals(nodeName)) {
                    builder.setAppName(reader.getValue());
                } else if (ELEM_IP.equals(nodeName)) {
                    builder.setIPAddr(reader.getValue());
                } else if (ELEM_SID.equals(nodeName)) {
                    builder.setSID(reader.getValue());
                } else if (ELEM_IDENTIFYING_ATTR.equals(nodeName)) {
                    // nothing;
                } else if (ELEM_STATUS.equals(nodeName)) {
                    builder.setStatus(InstanceStatus.toEnum(reader.getValue()));
                } else if (ELEM_OVERRIDDEN_STATUS.equals(nodeName)) {
                    builder.setOverriddenStatus(InstanceStatus.toEnum(reader
                            .getValue()));
                } else if (ELEM_OVERRIDDEN_STATUS_ALT.equals(nodeName)) {
                    builder.setOverriddenStatus(InstanceStatus.toEnum(reader
                            .getValue()));
                } else if (ELEM_PORT.equals(nodeName)) {
                    builder.setPort(Integer.valueOf(reader.getValue())
                            .intValue());
                    // Defaults to true
                    builder.enablePort(PortType.UNSECURE,
                            !"false".equals(reader.getAttribute(ATTR_ENABLED)));
                } else if (ELEM_SECURE_PORT.equals(nodeName)) {
                    builder.setSecurePort(Integer.valueOf(reader.getValue())
                            .intValue());
                    // Defaults to false
                    builder.enablePort(PortType.SECURE,
                            "true".equals(reader.getAttribute(ATTR_ENABLED)));
                } else if (ELEM_COUNTRY_ID.equals(nodeName)) {
                    builder.setCountryId(Integer.valueOf(reader.getValue())
                            .intValue());
                } else if (NODE_DATACENTER.equals(nodeName)) {
                    builder.setDataCenterInfo((DataCenterInfo) context
                            .convertAnother(builder, DataCenterInfo.class));
                } else if (NODE_LEASE.equals(nodeName)) {
                    builder.setLeaseInfo((LeaseInfo) context.convertAnother(
                            builder, LeaseInfo.class));
                } else if (NODE_METADATA.equals(nodeName)) {
                    builder.setMetadata((Map<String, String>) context
                            .convertAnother(builder, Map.class));
                } else {
                    autoUnmarshalEligible(reader, builder.getRawInstance());
                }

                reader.moveUp();
            }

            return builder.build();
        }