private FetchResponse.BodyElement bodyFetch(final MessageResult messageResult, BodyFetchElement fetchElement) throws MailboxException { final Long firstOctet = fetchElement.getFirstOctet(); final Long numberOfOctets = fetchElement.getNumberOfOctets(); final String name = fetchElement.getResponseName(); final int specifier = fetchElement.getSectionType(); final int[] path = fetchElement.getPath(); final Collection<String> names = fetchElement.getFieldNames(); final boolean isBase = (path == null || path.length == 0); final FetchResponse.BodyElement fullResult = bodyContent(messageResult, name, specifier, path, names, isBase); final FetchResponse.BodyElement result = wrapIfPartialFetch(firstOctet, numberOfOctets, fullResult); return result; }
fetch.setUid(true); } else if ("RFC822".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822(), false); } else if ("RFC822.HEADER".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822Header(), true); } else if ("RFC822.TEXT".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822Text(), false); } else if ("MODSEQ".equalsIgnoreCase(name)) { fetch.setModSeq(true);
private BodyFetchElement createBodyElement(String parameter, Long firstOctet, Long numberOfOctets) throws DecodingException { final String responseName = "BODY[" + parameter + "]"; FetchPartPathDecoder decoder = new FetchPartPathDecoder(); decoder.decode(parameter); final int sectionType = getSectionType(decoder); final List<String> names = decoder.getNames(); final int[] path = decoder.getPath(); final BodyFetchElement bodyFetchElement = new BodyFetchElement(responseName, sectionType, path, names, firstOctet, numberOfOctets); return bodyFetchElement; }
for (final Iterator<BodyFetchElement> it = bodyElements.iterator(); it.hasNext();) { final BodyFetchElement element = it.next(); final int sectionType = element.getSectionType(); final int[] path = element.getPath(); final boolean isBase = (path == null || path.length == 0); switch (sectionType) {
fetch.setUid(true); } else if ("RFC822".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822(), false); } else if ("RFC822.HEADER".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822Header(), true); } else if ("RFC822.TEXT".equalsIgnoreCase(name)) { fetch.add(BodyFetchElement.createRFC822Text(), false); } else if ("MODSEQ".equalsIgnoreCase(name)) { fetch.setModSeq(true);
private BodyFetchElement createBodyElement(String parameter, Long firstOctet, Long numberOfOctets) throws DecodingException { final String responseName = "BODY[" + parameter + "]"; FetchPartPathDecoder decoder = new FetchPartPathDecoder(); decoder.decode(parameter); final int sectionType = getSectionType(decoder); final List<String> names = decoder.getNames(); final int[] path = decoder.getPath(); return new BodyFetchElement(responseName, sectionType, path, names, firstOctet, numberOfOctets); }
if (bodyElements != null) { for (BodyFetchElement element : bodyElements) { final int sectionType = element.getSectionType(); final int[] path = element.getPath(); final boolean isBase = (path == null || path.length == 0); switch (sectionType) {
private FetchResponse.BodyElement bodyFetch(MessageResult messageResult, BodyFetchElement fetchElement) throws MailboxException { final Long firstOctet = fetchElement.getFirstOctet(); final Long numberOfOctets = fetchElement.getNumberOfOctets(); final String name = fetchElement.getResponseName(); final int specifier = fetchElement.getSectionType(); final int[] path = fetchElement.getPath(); final Collection<String> names = fetchElement.getFieldNames(); final boolean isBase = (path == null || path.length == 0); final FetchResponse.BodyElement fullResult = bodyContent(messageResult, name, specifier, path, names, isBase); return wrapIfPartialFetch(firstOctet, numberOfOctets, fullResult); }
@Test public void testShouldParseZeroAndLength() throws Exception { IdRange[] ranges = { new IdRange(1) }; FetchData data = new FetchData(); data.add(new BodyFetchElement("BODY[]", BodyFetchElement.CONTENT, null, null, new Long(0), new Long(100)), false); check("1 (BODY[]<0.100>)\r\n", ranges, false, data, "A01"); }
@Test public void testShouldParseNonZeroAndLength() throws Exception { IdRange[] ranges = { new IdRange(1) }; FetchData data = new FetchData(); data.add(new BodyFetchElement("BODY[]", BodyFetchElement.CONTENT, null, null, new Long(20), new Long(12342348)), false); check("1 (BODY[]<20.12342348>)\r\n", ranges, false, data, "A01"); }