jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java
changeset 27536 533660d72131
parent 25868 686eef1e7a79
child 33352 35c096b5709c
equal deleted inserted replaced
27535:872cc59854b0 27536:533660d72131
   536         if (c == '\n' ||
   536         if (c == '\n' ||
   537                 (c == '\r' && isExternal)) {
   537                 (c == '\r' && isExternal)) {
   538             fCurrentEntity.lineNumber++;
   538             fCurrentEntity.lineNumber++;
   539             fCurrentEntity.columnNumber = 1;
   539             fCurrentEntity.columnNumber = 1;
   540             if (fCurrentEntity.position == fCurrentEntity.count) {
   540             if (fCurrentEntity.position == fCurrentEntity.count) {
       
   541                 invokeListeners(1);
   541                 fCurrentEntity.ch[0] = (char)c;
   542                 fCurrentEntity.ch[0] = (char)c;
   542                 load(1, false, true);
   543                 load(1, false, false);
   543             }
   544             }
   544             if (c == '\r' && isExternal) {
   545             if (c == '\r' && isExternal) {
   545                 if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') {
   546                 if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') {
   546                     fCurrentEntity.position--;
   547                     fCurrentEntity.position--;
   547                 }
   548                 }
   668 
   669 
   669         // scan name
   670         // scan name
   670         int offset = fCurrentEntity.position;
   671         int offset = fCurrentEntity.position;
   671         if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) {
   672         if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) {
   672             if (++fCurrentEntity.position == fCurrentEntity.count) {
   673             if (++fCurrentEntity.position == fCurrentEntity.count) {
       
   674                 invokeListeners(1);
   673                 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
   675                 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
   674                 offset = 0;
   676                 offset = 0;
   675                 if (load(1, false, true)) {
   677                 if (load(1, false, false)) {
   676                     fCurrentEntity.columnNumber++;
   678                     fCurrentEntity.columnNumber++;
   677                     String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);
   679                     String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);
   678 
   680 
   679                     if (DEBUG_BUFFER) {
   681                     if (DEBUG_BUFFER) {
   680                         System.out.print(")scanName: ");
   682                         System.out.print(")scanName: ");
   774         //as defined by production [5] in the XML 1.0 specification.
   776         //as defined by production [5] in the XML 1.0 specification.
   775         // Name ::= (Letter | '_' | ':') (NameChar)*
   777         // Name ::= (Letter | '_' | ':') (NameChar)*
   776 
   778 
   777         if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) {
   779         if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) {
   778             if (++fCurrentEntity.position == fCurrentEntity.count) {
   780             if (++fCurrentEntity.position == fCurrentEntity.count) {
       
   781                 invokeListeners(1);
   779                 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
   782                 fCurrentEntity.ch[0] = fCurrentEntity.ch[offset];
   780                 offset = 0;
   783                 offset = 0;
   781 
   784 
   782                 if (load(1, false, true)) {
   785                 if (load(1, false, false)) {
   783                     fCurrentEntity.columnNumber++;
   786                     fCurrentEntity.columnNumber++;
   784                     //adding into symbol table.
   787                     //adding into symbol table.
   785                     //XXX We are trying to add single character in SymbolTable??????
   788                     //XXX We are trying to add single character in SymbolTable??????
   786                     String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);
   789                     String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1);
   787                     qname.setValues(null, name, name, null);
   790                     qname.setValues(null, name, name, null);
   904 
   907 
   905         // load more characters, if needed
   908         // load more characters, if needed
   906         if (fCurrentEntity.position == fCurrentEntity.count) {
   909         if (fCurrentEntity.position == fCurrentEntity.count) {
   907             load(0, true, true);
   910             load(0, true, true);
   908         } else if (fCurrentEntity.position == fCurrentEntity.count - 1) {
   911         } else if (fCurrentEntity.position == fCurrentEntity.count - 1) {
       
   912             invokeListeners(0);
   909             fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1];
   913             fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1];
   910             load(1, false, true);
   914             load(1, false, false);
   911             fCurrentEntity.position = 0;
   915             fCurrentEntity.position = 0;
   912         }
   916         }
   913 
   917 
   914         // normalize newlines
   918         // normalize newlines
   915         int offset = fCurrentEntity.position;
   919         int offset = fCurrentEntity.position;
  1052         }
  1056         }
  1053         // load more characters, if needed
  1057         // load more characters, if needed
  1054         if (fCurrentEntity.position == fCurrentEntity.count) {
  1058         if (fCurrentEntity.position == fCurrentEntity.count) {
  1055             load(0, true, true);
  1059             load(0, true, true);
  1056         } else if (fCurrentEntity.position == fCurrentEntity.count - 1) {
  1060         } else if (fCurrentEntity.position == fCurrentEntity.count - 1) {
       
  1061             invokeListeners(0);
  1057             fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1];
  1062             fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1];
  1058             load(1, false, true);
  1063             load(1, false, false);
  1059             fCurrentEntity.position = 0;
  1064             fCurrentEntity.position = 0;
  1060         }
  1065         }
  1061 
  1066 
  1062         // normalize newlines
  1067         // normalize newlines
  1063         int offset = fCurrentEntity.position;
  1068         int offset = fCurrentEntity.position;
  1425             }
  1430             }
  1426             return true;
  1431             return true;
  1427         } else if (c == '\n' && cc == '\r' && isExternal) {
  1432         } else if (c == '\n' && cc == '\r' && isExternal) {
  1428             // handle newlines
  1433             // handle newlines
  1429             if (fCurrentEntity.position == fCurrentEntity.count) {
  1434             if (fCurrentEntity.position == fCurrentEntity.count) {
       
  1435                 invokeListeners(1);
  1430                 fCurrentEntity.ch[0] = (char)cc;
  1436                 fCurrentEntity.ch[0] = (char)cc;
  1431                 load(1, false, true);
  1437                 load(1, false, false);
  1432             }
  1438             }
  1433             fCurrentEntity.position++;
  1439             fCurrentEntity.position++;
  1434             if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') {
  1440             if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') {
  1435                 fCurrentEntity.position++;
  1441                 fCurrentEntity.position++;
  1436             }
  1442             }
  1500                 // handle newlines
  1506                 // handle newlines
  1501                 if (c == '\n' || (isExternal && c == '\r')) {
  1507                 if (c == '\n' || (isExternal && c == '\r')) {
  1502                     fCurrentEntity.lineNumber++;
  1508                     fCurrentEntity.lineNumber++;
  1503                     fCurrentEntity.columnNumber = 1;
  1509                     fCurrentEntity.columnNumber = 1;
  1504                     if (fCurrentEntity.position == fCurrentEntity.count - 1) {
  1510                     if (fCurrentEntity.position == fCurrentEntity.count - 1) {
       
  1511                         invokeListeners(0);
  1505                         fCurrentEntity.ch[0] = (char)c;
  1512                         fCurrentEntity.ch[0] = (char)c;
  1506                         entityChanged = load(1, true, true);
  1513                         entityChanged = load(1, true, false);
  1507                         if (!entityChanged){
  1514                         if (!entityChanged){
  1508                             // the load change the position to be 1,
  1515                             // the load change the position to be 1,
  1509                             // need to restore it when entity not changed
  1516                             // need to restore it when entity not changed
  1510                             fCurrentEntity.position = 0;
  1517                             fCurrentEntity.position = 0;
  1511                         }else if(fCurrentEntity == null){
  1518                         }else if(fCurrentEntity == null){