Mercurial > hg4j
annotate src/org/tmatesoft/hg/internal/DataSerializer.java @ 713:661e77dc88ba tip
Mac support: respect Mac alternatives of command-line arguments for common unix tools
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Sun, 03 Aug 2014 18:09:00 +0200 | 
| parents | 545b1d4cc11d | 
| children | 
| rev | line source | 
|---|---|
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
2 * Copyright (c) 2013 TMate Software Ltd | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.internal; | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
19 import java.io.ByteArrayOutputStream; | 
| 
645
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
20 import java.io.IOException; | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
21 import java.io.OutputStream; | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
22 | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
23 import org.tmatesoft.hg.core.HgIOException; | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
618 
diff
changeset
 | 
24 import org.tmatesoft.hg.repo.HgRuntimeException; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
25 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
26 /** | 
| 
673
 
545b1d4cc11d
Refactor HgBundle.GroupElement (clear experimental mark), resolve few technical debt issues
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
645 
diff
changeset
 | 
27 * Serialization friend of {@link DataAccess}, similar to OutputStream with few handy methods | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 * | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 * @author Artem Tikhomirov | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 * @author TMate Software Ltd. | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
31 */ | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
32 @Experimental(reason="Work in progress") | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 public class DataSerializer { | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
34 private byte[] buffer; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
36 public void writeByte(byte... values) throws HgIOException { | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 write(values, 0, values.length); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
38 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
39 | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
40 public void writeInt(int... values) throws HgIOException { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
41 ensureBufferSize(4*values.length); // sizeof(int) | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
42 int idx = 0; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
43 for (int v : values) { | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
44 bigEndian(v, buffer, idx); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
45 idx += 4; | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
46 } | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
47 write(buffer, 0, idx); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
48 } | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
49 | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
50 public void write(byte[] data, int offset, int length) throws HgIOException { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
51 throw new HgIOException("Attempt to write to non-existent file", null); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
52 } | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
53 | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
54 public void done() throws HgIOException { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
55 // no-op | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
56 } | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
57 | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
58 private void ensureBufferSize(int bytesNeeded) { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
59 if (buffer == null || buffer.length < bytesNeeded) { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
60 buffer = new byte[bytesNeeded]; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
61 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
62 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
63 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
64 /** | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
65 * Writes 4 bytes of supplied value into the buffer at given offset, big-endian. | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
66 */ | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
67 public static final void bigEndian(int value, byte[] buffer, int offset) { | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
68 assert offset + 4 <= buffer.length; | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
69 buffer[offset++] = (byte) ((value >>> 24) & 0x0ff); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
70 buffer[offset++] = (byte) ((value >>> 16) & 0x0ff); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
71 buffer[offset++] = (byte) ((value >>> 8) & 0x0ff); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
72 buffer[offset++] = (byte) (value & 0x0ff); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
73 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
74 | 
| 
556
 
e55f17a7a195
AnnotateFacility renamed to HgBlameFacility and exposed, API shapes out and got some javadoc
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
534 
diff
changeset
 | 
75 /** | 
| 
 
e55f17a7a195
AnnotateFacility renamed to HgBlameFacility and exposed, API shapes out and got some javadoc
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
534 
diff
changeset
 | 
76 * Denotes an entity that wants to/could be serialized | 
| 
 
e55f17a7a195
AnnotateFacility renamed to HgBlameFacility and exposed, API shapes out and got some javadoc
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
534 
diff
changeset
 | 
77 */ | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
78 @Experimental(reason="Work in progress") | 
| 
645
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
79 public interface DataSource { | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
80 /** | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
81 * Invoked once for a single write operation, | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
82 * although the source itself may get serialized several times | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
83 */ | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
618 
diff
changeset
 | 
84 public void serialize(DataSerializer out) throws HgIOException, HgRuntimeException; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
85 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
86 /** | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
87 * Hint of data length it would like to writes | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
88 * @return -1 if can't answer | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
89 */ | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
618 
diff
changeset
 | 
90 public int serializeLength() throws HgRuntimeException; | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
91 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
92 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 public static class ByteArrayDataSource implements DataSource { | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
94 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
95 private final byte[] data; | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
96 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
97 public ByteArrayDataSource(byte[] bytes) { | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
98 data = bytes; | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
99 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
100 | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
101 public void serialize(DataSerializer out) throws HgIOException { | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
102 if (data != null) { | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
103 out.write(data, 0, data.length); | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
104 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
105 } | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
106 | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
107 public int serializeLength() { | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
108 return data == null ? 0 : data.length; | 
| 
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
109 } | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
110 } | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
111 | 
| 
645
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
112 /** | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
113 * Serialize data to byte array | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
114 */ | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
115 public static class ByteArraySerializer extends DataSerializer { | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
116 private final ByteArrayOutputStream out = new ByteArrayOutputStream(); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
117 | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
118 @Override | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
119 public void write(byte[] data, int offset, int length) { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
120 out.write(data, offset, length); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
121 } | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
122 | 
| 
618
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
123 public byte[] toByteArray() { | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
124 return out.toByteArray(); | 
| 
 
7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
556 
diff
changeset
 | 
125 } | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
126 } | 
| 
645
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
127 | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
128 /** | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
129 * Bridge to the world of {@link java.io.OutputStream}. | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
130 * Caller instantiates the stream and is responsible to close it as appropriate, | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
131 * {@link #done() DataSerializer.done()} doesn't close the stream. | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
132 */ | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
133 public static class OutputStreamSerializer extends DataSerializer { | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
134 private final OutputStream out; | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
135 | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
136 public OutputStreamSerializer(OutputStream outputStream) { | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
137 out = outputStream; | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
138 } | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
139 | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
140 @Override | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
141 public void write(byte[] data, int offset, int length) throws HgIOException { | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
142 try { | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
143 out.write(data, offset, length); | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
144 } catch (IOException ex) { | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
145 throw new HgIOException(ex.getMessage(), ex, null); | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
146 } | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
147 } | 
| 
 
14dac192aa26
Push: phase2 - upload bundle with changes to remote server
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
628 
diff
changeset
 | 
148 } | 
| 
534
 
243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
149 } | 
