private EdmEntityContainer readEntityContainer()

in odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/deserializer/XmlMetadataDeserializer.java [452:515]


  private EdmEntityContainer readEntityContainer(final XMLStreamReader reader, EdmImpl edm)//NOSONAR
      throws XMLStreamException, EntityProviderException, EdmException { 
    reader.require(XMLStreamConstants.START_ELEMENT, edmNamespace, XmlMetadataConstants.EDM_ENTITY_CONTAINER);
    EdmEntityContainerImpl container = new EdmEntityContainerImpl(edm);
    List<EdmAnnotationElement> annotationElements = new ArrayList<EdmAnnotationElement>();

    List<EdmEntitySet> edmEntitySets = new ArrayList<EdmEntitySet>();
    List<EdmFunctionImport> edmFunctionImports = new ArrayList<EdmFunctionImport>();
    List<EdmAssociationSet> edmAssociationSets = new ArrayList<EdmAssociationSet>();

    container.setName(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAME));
    if (reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, XmlMetadataConstants.EDM_CONTAINER_IS_DEFAULT) != null) {
      container.setDefaultContainer(
          "true".equalsIgnoreCase(reader.getAttributeValue(Edm.NAMESPACE_M_2007_08,
              "IsDefaultEntityContainer")));
      defaultEdmEntityContainer = container;
    }
    container.setExtendz(reader.getAttributeValue(null, XmlMetadataConstants.EDM_CONTAINER_EXTENDZ));
    List<EdmAnnotationAttribute> annotationAttribute = readAnnotationAttribute(reader);
    EdmAnnotationsImpl annotations = new EdmAnnotationsImpl();
    annotations.setAnnotationAttributes(annotationAttribute);
    container.setAnnotations(annotations);

    while (reader.hasNext()
        && !(reader.isEndElement() && edmNamespace.equals(reader.getNamespaceURI())
            && XmlMetadataConstants.EDM_ENTITY_CONTAINER.equals(reader.getLocalName()))) {
      reader.next();
      if (reader.isStartElement()) {
        extractNamespaces(reader);
        currentHandledStartTagName = reader.getLocalName();
        if (XmlMetadataConstants.EDM_ENTITY_SET.equals(currentHandledStartTagName)) {
          EdmEntitySetImpl entity = readEntitySet(reader);
          entity.setEdmEntityContainer(container);
          edmEntitySets.add(entity);
        } else if (XmlMetadataConstants.EDM_ASSOCIATION_SET.equals(currentHandledStartTagName)) {
          EdmAssociationSet association = readAssociationSet(reader, edm);
          edmAssociationSets.add(association);
        } else if (XmlMetadataConstants.EDM_FUNCTION_IMPORT.equals(currentHandledStartTagName)) {
          edmFunctionImports.add(readFunctionImport(reader, edm));
        } else {
          annotationElements.add(readAnnotationElement(reader));
        }
      }
    }
    if (!annotationElements.isEmpty()) {
      annotations.setAnnotationElements(annotationElements);
      container.setAnnotations(annotations);
    }
    if (edmFunctionImports != null && !edmFunctionImports.isEmpty()) {
      setContainerInFunctionImport(edmFunctionImports, container);
    }
    if (edmAssociationSets != null && !edmAssociationSets.isEmpty()) {
      setConatinerInAssociationSet(edmAssociationSets, container);
    }
    container.setNamespace(currentNamespace);
    container.setEdmEntitySets(edmEntitySets).setEdmAssociationSets(edmAssociationSets).setEdmFunctionImports(
        edmFunctionImports);

    containerMap.put(new FullQualifiedName(currentNamespace, container.getName()),
        container);
    edmEntitySetList.addAll(edmEntitySets);
    edmFunctionImportList.addAll(edmFunctionImports);
    return container;
  }