Javolution 6.0.0 java
EntitiesImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.xml.internal.stream;
10 
11 import java.util.Map;
12 
17 
24 public final class EntitiesImpl {
25 
29  private int _maxLength = 1;
30 
34  private Map<String, String> _entitiesMapping;
35 
40 
44  public int getMaxLength() {
45  return _maxLength;
46  }
47 
59  public int replaceEntity(char[] buffer, int start, int length)
60  throws XMLStreamException {
61 
62  // Checks for character references.
63  if (buffer[start + 1] == '#') {
64  char c = buffer[start + 2];
65  int base = (c == 'x') ? 16 : 10;
66  int i = (c == 'x') ? 3 : 2;
67  int charValue = 0;
68  for (; i < length - 1; i++) {
69  c = buffer[start + i];
70  charValue *= base;
71  charValue += (c <= '9') ? (c - '0') : (c <= 'Z') ? c - 'A'
72  : c - 'a';
73  }
74  buffer[start] = (char) charValue;
75  return 1;
76  }
77 
78  if ((buffer[start + 1] == 'l') && (buffer[start + 2] == 't')
79  && (buffer[start + 3] == ';')) {
80  buffer[start] = '<';
81  return 1;
82  }
83 
84  if ((buffer[start + 1] == 'g') && (buffer[start + 2] == 't')
85  && (buffer[start + 3] == ';')) {
86  buffer[start] = '>';
87  return 1;
88  }
89 
90  if ((buffer[start + 1] == 'a') && (buffer[start + 2] == 'p')
91  && (buffer[start + 3] == 'o') && (buffer[start + 4] == 's')
92  && (buffer[start + 5] == ';')) {
93  buffer[start] = '\'';
94  return 1;
95  }
96 
97  if ((buffer[start + 1] == 'q') && (buffer[start + 2] == 'u')
98  && (buffer[start + 3] == 'o') && (buffer[start + 4] == 't')
99  && (buffer[start + 5] == ';')) {
100  buffer[start] = '"';
101  return 1;
102  }
103 
104  if ((buffer[start + 1] == 'a') && (buffer[start + 2] == 'm')
105  && (buffer[start + 3] == 'p') && (buffer[start + 4] == ';')) {
106  buffer[start] = '&';
107  return 1;
108  }
109 
110  // Searches user defined entities.
111  _tmp.setArray(buffer, start + 1, length - 2);
112  CharSequence replacementText = (_entitiesMapping != null) ? _entitiesMapping
113  .get(_tmp) : null;
114  if (replacementText == null)
115  throw new XMLStreamException("Entity " + _tmp + " not recognized");
116  int replacementTextLength = replacementText.length();
117  for (int i = 0; i < replacementTextLength; i++) {
118  buffer[start + i] = replacementText.charAt(i);
119  }
120  return replacementTextLength;
121  }
122 
123  private CharArray _tmp = new CharArray();
124 
129  public void setEntitiesMapping(Map<String, String> entityToReplacementText) {
130  FastTable<String> values = new FastTable<String>();
131  values.addAll(entityToReplacementText.values());
133 
134  @Override
135  public Integer apply(CharSequence csq) {
136  return csq.length();
137  }}).max();
138 
139  _entitiesMapping = entityToReplacementText;
140  }
141 
145  public Map<String, String> getEntitiesMapping() {
146  return _entitiesMapping;
147  }
148 
149  // Implements Reusable.
150  public void reset() {
151  _maxLength = 1;
152  _entitiesMapping = null;
153  }
154 
155 }
javolution.text.CharArray
Definition: CharArray.java:36
javolution
javolution.xml.internal.stream.EntitiesImpl.getMaxLength
int getMaxLength()
Definition: EntitiesImpl.java:44
javolution.xml.internal.stream.EntitiesImpl._maxLength
int _maxLength
Definition: EntitiesImpl.java:29
javolution.xml.internal.stream.EntitiesImpl.EntitiesImpl
EntitiesImpl()
Definition: EntitiesImpl.java:39
javolution.xml.internal.stream.EntitiesImpl.getEntitiesMapping
Map< String, String > getEntitiesMapping()
Definition: EntitiesImpl.java:145
javolution.util.FastTable.addAll
boolean addAll(final int index, Collection<? extends E > elements)
Definition: FastTable.java:190
javolution.xml.internal.stream.EntitiesImpl.reset
void reset()
Definition: EntitiesImpl.java:150
javolution.xml.internal.stream.EntitiesImpl._tmp
CharArray _tmp
Definition: EntitiesImpl.java:123
javolution.util.FastCollection.mapped
public< R > FastCollection< R > mapped(Function<? super E, ? extends R > function)
Definition: FastCollection.java:258
javolution.xml.internal.stream.EntitiesImpl.setEntitiesMapping
void setEntitiesMapping(Map< String, String > entityToReplacementText)
Definition: EntitiesImpl.java:129
javolution.xml.internal.stream.EntitiesImpl._entitiesMapping
Map< String, String > _entitiesMapping
Definition: EntitiesImpl.java:34
javolution.xml.internal.stream.EntitiesImpl
Definition: EntitiesImpl.java:24
javolution.xml.stream.XMLStreamException
Definition: XMLStreamException.java:17
javolution.text
Definition: CharArray.java:9
javolution.xml.internal.stream.EntitiesImpl.replaceEntity
int replaceEntity(char[] buffer, int start, int length)
Definition: EntitiesImpl.java:59
javolution.util.function
Definition: Consumer.java:9
javolution.util.function.Function
Definition: Function.java:22
javolution.text.CharArray.setArray
CharArray setArray(char[] array, int offset, int length)
Definition: CharArray.java:116
javolution.xml
Definition: DefaultXMLFormat.java:9
javolution.xml.stream
Definition: Location.java:9
javolution.util
Definition: FastBitSet.java:9
javolution.util.FastTable
Definition: FastTable.java:88