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 } |