src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java
changeset 47359 e1a6c0168741
parent 47312 d4f959806fe9
child 48409 5ab69533994b
equal deleted inserted replaced
47358:d07d5f7cab35 47359:e1a6c0168741
     1 /*
     1 /*
     2  * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * @LastModified: Sep 2017
     3  * @LastModified: Oct 2017
     4  */
     4  */
     5 /*
     5 /*
     6  * Licensed to the Apache Software Foundation (ASF) under one or more
     6  * Licensed to the Apache Software Foundation (ASF) under one or more
     7  * contributor license agreements.  See the NOTICE file distributed with
     7  * contributor license agreements.  See the NOTICE file distributed with
     8  * this work for additional information regarding copyright ownership.
     8  * this work for additional information regarding copyright ownership.
   510                 if (size == 0 && fCurrentEntity != null && fCurrentEntity.entityLocation != null) {
   510                 if (size == 0 && fCurrentEntity != null && fCurrentEntity.entityLocation != null) {
   511                     baseSystemId = fCurrentEntity.entityLocation.getExpandedSystemId();
   511                     baseSystemId = fCurrentEntity.entityLocation.getExpandedSystemId();
   512                 }
   512                 }
   513                 for (int i = size - 1; i >= 0 ; i--) {
   513                 for (int i = size - 1; i >= 0 ; i--) {
   514                     Entity.ScannedEntity externalEntity =
   514                     Entity.ScannedEntity externalEntity =
   515                             (Entity.ScannedEntity)fEntityStack.elementAt(i);
   515                             (Entity.ScannedEntity)fEntityStack.get(i);
   516                     if (externalEntity.entityLocation != null && externalEntity.entityLocation.getExpandedSystemId() != null) {
   516                     if (externalEntity.entityLocation != null && externalEntity.entityLocation.getExpandedSystemId() != null) {
   517                         baseSystemId = externalEntity.entityLocation.getExpandedSystemId();
   517                         baseSystemId = externalEntity.entityLocation.getExpandedSystemId();
   518                         break;
   518                         break;
   519                     }
   519                     }
   520                 }
   520                 }
  1265         // is entity recursive?
  1265         // is entity recursive?
  1266         int size = fEntityStack.size();
  1266         int size = fEntityStack.size();
  1267         for (int i = size; i >= 0; i--) {
  1267         for (int i = size; i >= 0; i--) {
  1268             Entity activeEntity = i == size
  1268             Entity activeEntity = i == size
  1269                     ? fCurrentEntity
  1269                     ? fCurrentEntity
  1270                     : fEntityStack.elementAt(i);
  1270                     : fEntityStack.get(i);
  1271             if (activeEntity.name == entityName) {
  1271             if (activeEntity.name == entityName) {
  1272                 String path = entityName;
  1272                 String path = entityName;
  1273                 for (int j = i + 1; j < size; j++) {
  1273                 for (int j = i + 1; j < size; j++) {
  1274                     activeEntity = fEntityStack.elementAt(j);
  1274                     activeEntity = fEntityStack.get(j);
  1275                     path = path + " -> " + activeEntity.name;
  1275                     path = path + " -> " + activeEntity.name;
  1276                 }
  1276                 }
  1277                 path = path + " -> " + fCurrentEntity.name;
  1277                 path = path + " -> " + fCurrentEntity.name;
  1278                 path = path + " -> " + entityName;
  1278                 path = path + " -> " + entityName;
  1279                 fErrorReporter.reportError(this.getEntityScanner(),XMLMessageFormatter.XML_DOMAIN,
  1279                 fErrorReporter.reportError(this.getEntityScanner(),XMLMessageFormatter.XML_DOMAIN,
  1439      * Return the top level entity handled by this manager, or null
  1439      * Return the top level entity handled by this manager, or null
  1440      * if no entity was added.
  1440      * if no entity was added.
  1441      */
  1441      */
  1442     public Entity.ScannedEntity getTopLevelEntity() {
  1442     public Entity.ScannedEntity getTopLevelEntity() {
  1443         return (Entity.ScannedEntity)
  1443         return (Entity.ScannedEntity)
  1444             (fEntityStack.empty() ? null : fEntityStack.elementAt(0));
  1444             (fEntityStack.empty() ? null : fEntityStack.get(0));
  1445     }
  1445     }
  1446 
  1446 
  1447 
  1447 
  1448     /**
  1448     /**
  1449      * Close all opened InputStreams and Readers opened by this parser.
  1449      * Close all opened InputStreams and Readers opened by this parser.
  2643             } else {
  2643             } else {
  2644                 // search for the first external entity on the stack
  2644                 // search for the first external entity on the stack
  2645                 int size = fEntityStack.size();
  2645                 int size = fEntityStack.size();
  2646                 for (int i = size - 1; i >= 0 ; i--) {
  2646                 for (int i = size - 1; i >= 0 ; i--) {
  2647                     Entity.ScannedEntity externalEntity =
  2647                     Entity.ScannedEntity externalEntity =
  2648                             (Entity.ScannedEntity)fEntityStack.elementAt(i);
  2648                             (Entity.ScannedEntity)fEntityStack.get(i);
  2649 
  2649 
  2650                     if (externalEntity.entityLocation != null &&
  2650                     if (externalEntity.entityLocation != null &&
  2651                             externalEntity.entityLocation.getExpandedSystemId() != null) {
  2651                             externalEntity.entityLocation.getExpandedSystemId() != null) {
  2652                         return externalEntity.entityLocation.getExpandedSystemId();
  2652                         return externalEntity.entityLocation.getExpandedSystemId();
  2653                     }
  2653                     }
  2675             } else {
  2675             } else {
  2676                 // search for the first external entity on the stack
  2676                 // search for the first external entity on the stack
  2677                 int size = fEntityStack.size();
  2677                 int size = fEntityStack.size();
  2678                 for (int i = size - 1; i >= 0 ; i--) {
  2678                 for (int i = size - 1; i >= 0 ; i--) {
  2679                     Entity.ScannedEntity externalEntity =
  2679                     Entity.ScannedEntity externalEntity =
  2680                             (Entity.ScannedEntity)fEntityStack.elementAt(i);
  2680                             (Entity.ScannedEntity)fEntityStack.get(i);
  2681 
  2681 
  2682                     if (externalEntity.entityLocation != null &&
  2682                     if (externalEntity.entityLocation != null &&
  2683                             externalEntity.entityLocation.getLiteralSystemId() != null) {
  2683                             externalEntity.entityLocation.getLiteralSystemId() != null) {
  2684                         return externalEntity.entityLocation.getLiteralSystemId();
  2684                         return externalEntity.entityLocation.getLiteralSystemId();
  2685                     }
  2685                     }
  2713                 return fCurrentEntity.lineNumber;
  2713                 return fCurrentEntity.lineNumber;
  2714             } else {
  2714             } else {
  2715                 // search for the first external entity on the stack
  2715                 // search for the first external entity on the stack
  2716                 int size = fEntityStack.size();
  2716                 int size = fEntityStack.size();
  2717                 for (int i=size-1; i>0 ; i--) {
  2717                 for (int i=size-1; i>0 ; i--) {
  2718                     Entity.ScannedEntity firstExternalEntity = (Entity.ScannedEntity)fEntityStack.elementAt(i);
  2718                     Entity.ScannedEntity firstExternalEntity = (Entity.ScannedEntity)fEntityStack.get(i);
  2719                     if (firstExternalEntity.isExternal()) {
  2719                     if (firstExternalEntity.isExternal()) {
  2720                         return firstExternalEntity.lineNumber;
  2720                         return firstExternalEntity.lineNumber;
  2721                     }
  2721                     }
  2722                 }
  2722                 }
  2723             }
  2723             }
  2755                 return fCurrentEntity.columnNumber;
  2755                 return fCurrentEntity.columnNumber;
  2756             } else {
  2756             } else {
  2757                 // search for the first external entity on the stack
  2757                 // search for the first external entity on the stack
  2758                 int size = fEntityStack.size();
  2758                 int size = fEntityStack.size();
  2759                 for (int i=size-1; i>0 ; i--) {
  2759                 for (int i=size-1; i>0 ; i--) {
  2760                     Entity.ScannedEntity firstExternalEntity = (Entity.ScannedEntity)fEntityStack.elementAt(i);
  2760                     Entity.ScannedEntity firstExternalEntity = (Entity.ScannedEntity)fEntityStack.get(i);
  2761                     if (firstExternalEntity.isExternal()) {
  2761                     if (firstExternalEntity.isExternal()) {
  2762                         return firstExternalEntity.columnNumber;
  2762                         return firstExternalEntity.columnNumber;
  2763                     }
  2763                     }
  2764                 }
  2764                 }
  2765             }
  2765             }