1
2
3 package org.apache.commons.jexl3.parser;
4
5
6 import java.io.IOException;
7
8 public class StringProvider implements Provider
9 {
10 private String m_sStr;
11 private int m_nPos = 0;
12 private final int m_nLen;
13
14 public StringProvider(final String sStr)
15 {
16 m_sStr = sStr;
17 m_nLen = sStr.length();
18 }
19
20 public int read (final char[] aDest, final int nOfs, final int nLen) throws IOException
21 {
22 final int nLeft = m_nLen - m_nPos;
23 if (nLeft <= 0)
24 return -1;
25
26 int nCharsRead = aDest.length - nOfs;
27 if (nLen < nCharsRead)
28 nCharsRead = nLen;
29 if (nLeft < nCharsRead)
30 nCharsRead = nLeft;
31
32 m_sStr.getChars(m_nPos, m_nPos + nCharsRead, aDest, nOfs);
33 m_nPos += nCharsRead;
34
35 return nCharsRead;
36 }
37
38 public void close()
39 {
40 m_sStr = null;
41 }
42 }
43