xref: /JGit/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/errors/InvalidLongObjectIdException.java (revision 5c5f7c6b146b24f2bd4afae1902df85ad6e57ea3)
1 /*
2  * Copyright (C) 2009, Jonas Fonseca <fonseca@diku.dk>
3  * Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com>
4  * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> and others
5  *
6  * This program and the accompanying materials are made available under the
7  * terms of the Eclipse Distribution License v. 1.0 which is available at
8  * https://www.eclipse.org/org/documents/edl-v10.php.
9  *
10  * SPDX-License-Identifier: BSD-3-Clause
11  */
12 
13 package org.eclipse.jgit.lfs.errors;
14 
15 import static java.nio.charset.StandardCharsets.US_ASCII;
16 
17 import java.text.MessageFormat;
18 
19 import org.eclipse.jgit.lfs.internal.LfsText;
20 
21 /**
22  * Thrown when an invalid long object id is passed in as an argument.
23  *
24  * @since 4.3
25  */
26 public class InvalidLongObjectIdException extends IllegalArgumentException {
27 	private static final long serialVersionUID = 1L;
28 
29 	/**
30 	 * Create exception with bytes of the invalid object id.
31 	 *
32 	 * @param bytes containing the invalid id.
33 	 * @param offset in the byte array where the error occurred.
34 	 * @param length of the sequence of invalid bytes.
35 	 */
InvalidLongObjectIdException(byte[] bytes, int offset, int length)36 	public InvalidLongObjectIdException(byte[] bytes, int offset, int length) {
37 		super(MessageFormat.format(LfsText.get().invalidLongId,
38 				asAscii(bytes, offset, length)));
39 	}
40 
41 	/**
42 	 * <p>Constructor for InvalidLongObjectIdException.</p>
43 	 *
44 	 * @param idString
45 	 *            String containing the invalid id
46 	 */
InvalidLongObjectIdException(String idString)47 	public InvalidLongObjectIdException(String idString) {
48 		super(MessageFormat.format(LfsText.get().invalidLongId, idString));
49 	}
50 
asAscii(byte[] bytes, int offset, int length)51 	private static String asAscii(byte[] bytes, int offset, int length) {
52 		try {
53 			return new String(bytes, offset, length, US_ASCII);
54 		} catch (StringIndexOutOfBoundsException e) {
55 			return ""; //$NON-NLS-1$
56 		}
57 	}
58 }
59