private String parseODataPath(final String uri, final String rawBaseUri) throws BatchDeserializerException { if (uri.indexOf(rawBaseUri) == 0) { return uri.substring(rawBaseUri.length()); } else { throw new BatchDeserializerException("Invalid base uri or uri", MessageKeys.INVALID_URI, "0"); } }
private String parseODataPath(final String uri, final String rawBaseUri) throws BatchDeserializerException { if (uri.indexOf(rawBaseUri) == 0) { return uri.substring(rawBaseUri.length()); } else { throw new BatchDeserializerException("Invalid base uri or uri", MessageKeys.INVALID_URI, "0"); } }
private String parseHttpVersion(final String httpVersion) throws BatchDeserializerException { if (!HTTP_VERSION.equals(httpVersion.trim())) { throw new BatchDeserializerException("Invalid http version", MessageKeys.INVALID_HTTP_VERSION, Integer.toString(statusLine.getLineNumber())); } else { return HTTP_VERSION; } }
private void validateHttpMethod(final ODataRequest request) throws BatchDeserializerException { if (request.getMethod() != HttpMethod.POST) { throw new BatchDeserializerException("Invalid HTTP method", MessageKeys.INVALID_METHOD, "0"); } } }
protected Line consumeHttpStatusLine(final List<Line> message) throws BatchDeserializerException { if (!message.isEmpty() && !"".equals(message.get(0).toString().trim())) { final Line method = message.get(0); message.remove(0); return method; } else { final int line = (!message.isEmpty()) ? message.get(0).getLineNumber() : 0; throw new BatchDeserializerException("Missing http request line", BatchDeserializerException.MessageKeys.INVALID_STATUS_LINE, "" + line); } }
public static void consumeBlankLine(final List<Line> remainingMessage, final boolean isStrict) throws BatchDeserializerException { if (!remainingMessage.isEmpty() && remainingMessage.get(0).toString().matches("\\s*\r?\n\\s*")) { remainingMessage.remove(0); } else { if (isStrict) { final int lineNumber = (!remainingMessage.isEmpty()) ? remainingMessage.get(0).getLineNumber() : 0; throw new BatchDeserializerException("Missing blank line", BatchDeserializerException.MessageKeys.MISSING_BLANK_LINE, "[None]", Integer.toString(lineNumber)); } } }
public static void consumeBlankLine(final List<Line> remainingMessage, final boolean isStrict) throws BatchDeserializerException { if (!remainingMessage.isEmpty() && remainingMessage.get(0).toString().matches("\\s*\r?\n\\s*")) { remainingMessage.remove(0); } else { if (isStrict) { final int lineNumber = (!remainingMessage.isEmpty()) ? remainingMessage.get(0).getLineNumber() : 0; throw new BatchDeserializerException("Missing blank line", BatchDeserializerException.MessageKeys.MISSING_BLANK_LINE, "[None]", Integer.toString(lineNumber)); } } }
private void parseRelativeUri(final String rawUri) throws BatchDeserializerException { final Matcher relativeUriMatcher = PATTERN_RELATIVE_URI.matcher(rawUri); if (relativeUriMatcher.matches()) { buildUri(relativeUriMatcher.group(1), relativeUriMatcher.group(2)); } else { throw new BatchDeserializerException("Malformed uri", MessageKeys.INVALID_URI, Integer.toString(statusLine.getLineNumber())); } }
private HttpMethod parseMethod(final String method) throws BatchDeserializerException { try { return HttpMethod.valueOf(method.trim()); } catch (IllegalArgumentException e) { throw new BatchDeserializerException("Illegal http method", e, MessageKeys.INVALID_METHOD, Integer.toString(statusLine.getLineNumber())); } }
public void validateHttpMethod(final boolean isChangeSet) throws BatchDeserializerException { if (isChangeSet && !HTTP_CHANGE_SET_METHODS.contains(getMethod())) { throw new BatchDeserializerException("Invalid change set method", MessageKeys.INVALID_CHANGESET_METHOD, Integer.toString(statusLine.getLineNumber())); } }
private void validateChangeSetBoundary(final String changeSetBoundary, final Header header) throws BatchDeserializerException { if (changeSetBoundary.equals(boundary)) { throw new BatchDeserializerException("Change set boundary is equals to batch request boundary", BatchDeserializerException.MessageKeys.INVALID_BOUNDARY, Integer.toString(header.getHeaderField(HttpHeader.CONTENT_TYPE).getLineNumber())); } }
private void parseAbsoluteUri(final String rawUri, final String baseUri) throws BatchDeserializerException { if (rawUri.startsWith(baseUri)) { final String relativeUri = removeLeadingSlash(rawUri.substring(baseUri.length())); parseRelativeUri(relativeUri); } else { throw new BatchDeserializerException("Base uri does not match", MessageKeys.INVALID_BASE_URI, Integer.toString(statusLine.getLineNumber())); } }
public static void validateHost(final Header headers, final String baseUri) throws BatchDeserializerException { final HeaderField hostField = headers.getHeaderField(HttpHeader.HOST); if (hostField != null && (hostField.getValues().size() > 1 || !URI.create(baseUri).getAuthority().equalsIgnoreCase(hostField.getValues().get(0).trim()))) { throw new BatchDeserializerException("Invalid Host header", MessageKeys.INVALID_HOST, Integer.toString(headers.getLineNumber())); } } }
public static void validateContentTransferEncoding(final Header headers) throws BatchDeserializerException { final HeaderField contentTransferField = headers.getHeaderField(BatchParserCommon.CONTENT_TRANSFER_ENCODING); if (contentTransferField != null) { final List<String> contentTransferValues = contentTransferField.getValues(); if (contentTransferValues.size() > 1 || !BatchParserCommon.BINARY_ENCODING.equalsIgnoreCase(contentTransferValues.get(0))) { throw new BatchDeserializerException("Invalid Content-Transfer-Encoding header", MessageKeys.INVALID_CONTENT_TRANSFER_ENCODING, Integer.toString(headers.getLineNumber())); } } }
private HeaderField getContentId(final BatchQueryOperation queryOperation) throws BatchDeserializerException { final HeaderField contentIdHeader = queryOperation.getHeaders().getHeaderField(HttpHeader.CONTENT_ID); if (contentIdHeader != null) { if (contentIdHeader.getValues().size() == 1) { return contentIdHeader; } else { throw new BatchDeserializerException("Invalid Content-ID header", MessageKeys.INVALID_CONTENT_ID, Integer.toString(contentIdHeader.getLineNumber())); } } return null; }
private HeaderField getContentId(final BatchQueryOperation queryOperation) throws BatchDeserializerException { final HeaderField contentIdHeader = queryOperation.getHeaders().getHeaderField(HttpHeader.CONTENT_ID); if (contentIdHeader != null) { if (contentIdHeader.getValues().size() == 1) { return contentIdHeader; } else { throw new BatchDeserializerException("Invalid Content-ID header", MessageKeys.INVALID_CONTENT_ID, Integer.toString(contentIdHeader.getLineNumber())); } } return null; }
private void parse() throws BatchDeserializerException { final String[] parts = statusLine.toString().split(" "); //Status line consists of 3 parts: Method, URI and HTTP Version if (parts.length == 3) { method = parseMethod(parts[0]); parseUri(parts[1], requestBaseUri); httpVersion = parseHttpVersion(parts[2]); } else { throw new BatchDeserializerException("Invalid status line", MessageKeys.INVALID_STATUS_LINE, Integer.toString(statusLine.getLineNumber())); } }
private void handleContentId(final BatchQueryOperation changeRequestPart, final BatchQueryOperation request) throws BatchDeserializerException { final HeaderField contentIdChangeRequestPart = getContentId(changeRequestPart); final HeaderField contentIdRequest = getContentId(request); if (contentIdChangeRequestPart == null && contentIdRequest == null) { throw new BatchDeserializerException("Missing content id", MessageKeys.MISSING_CONTENT_ID, Integer.toString(changeRequestPart.getHeaders().getLineNumber())); } else if (contentIdChangeRequestPart != null) { request.getHeaders().replaceHeaderField(contentIdChangeRequestPart); } }
private void validateForbiddenHeader(final BatchQueryOperation operation) throws BatchDeserializerException { final Header header = operation.getHeaders(); if (header.exists(HttpHeader.WWW_AUTHENTICATE) || header.exists(HttpHeader.AUTHORIZATION) || header.exists(HttpHeader.EXPECT) || header.exists(HttpHeader.FROM) || header.exists(HttpHeader.MAX_FORWARDS) || header.exists(HttpHeader.RANGE) || header.exists(HttpHeader.TE)) { throw new BatchDeserializerException("Forbidden header", MessageKeys.FORBIDDEN_HEADER, Integer.toString(header.getLineNumber())); } }
private void validateForbiddenHeader(final BatchQueryOperation operation) throws BatchDeserializerException { final Header header = operation.getHeaders(); if (header.exists(HttpHeader.WWW_AUTHENTICATE) || header.exists(HttpHeader.AUTHORIZATION) || header.exists(HttpHeader.EXPECT) || header.exists(HttpHeader.FROM) || header.exists(HttpHeader.MAX_FORWARDS) || header.exists(HttpHeader.RANGE) || header.exists(HttpHeader.TE)) { throw new BatchDeserializerException("Forbidden header", MessageKeys.FORBIDDEN_HEADER, Integer.toString(header.getLineNumber())); } }