Skip to content

Commit 4ea920e

Browse files
authored
IGNITE-27565 Remove unsafe dependency from binary-api (#12635)
1 parent 97a1829 commit 4ea920e

18 files changed

+38
-32
lines changed

modules/binary/api/pom.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,6 @@
4141
<scope>provided</scope>
4242
</dependency>
4343

44-
<!-- TODO: remove me after extraction of implementation -->
45-
<dependency>
46-
<groupId>${project.groupId}</groupId>
47-
<artifactId>ignite-grid-unsafe</artifactId>
48-
<scope>provided</scope>
49-
</dependency>
50-
5144
<dependency>
5245
<groupId>org.jetbrains</groupId>
5346
<artifactId>annotations</artifactId>

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinariesFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,7 @@ public BinaryReaderEx reader(BinaryContext ctx,
168168

169169
/** Creates new instance of binary object. */
170170
public BinaryObject binaryObject(BinaryContext ctx, byte[] valBytes, CacheObjectValueContext coCtx);
171+
172+
/** */
173+
public BinaryIdentityResolver arrayIdentityResolver();
171174
}

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ private void configure(
361361
BinaryIdMapper idMapper = CommonUtils.firstNotNull(typeCfg.getIdMapper(), globalIdMapper);
362362
BinaryNameMapper nameMapper = CommonUtils.firstNotNull(typeCfg.getNameMapper(), globalNameMapper);
363363
BinarySerializer serializer = CommonUtils.firstNotNull(typeCfg.getSerializer(), globalSerializer);
364-
BinaryIdentityResolver identity = BinaryArrayIdentityResolver.instance();
364+
BinaryIdentityResolver identity = BinaryUtils.binariesFactory.arrayIdentityResolver();
365365

366366
BinaryInternalMapper mapper = resolveMapper(nameMapper, idMapper);
367367

@@ -1338,7 +1338,7 @@ public String affinityKeyFieldName(int typeId) {
13381338
public BinaryIdentityResolver identity(int typeId) {
13391339
BinaryIdentityResolver rslvr = identities.get(typeId);
13401340

1341-
return rslvr != null ? rslvr : BinaryArrayIdentityResolver.instance();
1341+
return rslvr != null ? rslvr : BinaryUtils.binariesFactory.arrayIdentityResolver();
13421342
}
13431343

13441344
/**

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectEx.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,13 @@ public default BinaryObjectEx detach(boolean checkCrossObjReferences) {
132132
public default void detachAllowed(boolean detachAllowed) {
133133
// No-op.
134134
}
135+
136+
/**
137+
* Check if object graph has circular references.
138+
*
139+
* @return {@code true} if object has circular references.
140+
*/
141+
public default boolean hasCircularReferences() {
142+
return false;
143+
}
135144
}

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryObjectExImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,12 +367,8 @@ private static void handleOverflow(SB buf, int size) {
367367
buf.a("... and ").a(overflow).a(" more");
368368
}
369369

370-
/**
371-
* Check if object graph has circular references.
372-
*
373-
* @return {@code true} if object has circular references.
374-
*/
375-
public boolean hasCircularReferences() {
370+
/** {@inheritDoc} */
371+
@Override public boolean hasCircularReferences() {
376372
try {
377373
BinaryReaderHandles ctx = new BinaryReaderHandles();
378374

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3057,6 +3057,16 @@ public static BinaryMetadata binaryMetadata(
30573057
return new BinaryMetadata(typeId, typeName, fields, affKeyFieldName, schemas, isEnum, enumMap);
30583058
}
30593059

3060+
/** */
3061+
public static int hashCode(byte[] data, int startPos, int endPos) {
3062+
int hash = 1;
3063+
3064+
for (int i = startPos; i < endPos; i++)
3065+
hash = 31 * hash + data[i];
3066+
3067+
return hash;
3068+
}
3069+
30603070
/**
30613071
* Enum type.
30623072
*/

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ public boolean mustDeserialize(Object obj) {
461461
* @return Writer.
462462
*/
463463
public BinaryWriterEx writer(BinaryOutputStream out) {
464-
return BinaryUtils.writer(ctx, out, BinaryThreadLocalContext.get().schemaHolder());
464+
return BinaryUtils.writer(ctx, out);
465465
}
466466

467467
/**

modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinariesFactoryImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,11 @@ public class BinariesFactoryImpl implements BinariesFactory {
219219
return new BinaryObjectImpl(ctx, valBytes, coCtx);
220220
}
221221

222+
/** {@inheritDoc} */
223+
@Override public BinaryIdentityResolver arrayIdentityResolver() {
224+
return BinaryArrayIdentityResolver.instance();
225+
}
226+
222227
/**
223228
* @param cls Class to check.
224229
* @return {@code True} if {@code val} is assignable to binary Enum object.

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java renamed to modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryAbstractIdentityResolver.java

File renamed without changes.

modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java renamed to modules/binary/impl/src/main/java/org/apache/ignite/internal/binary/BinaryArrayIdentityResolver.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private BinaryArrayIdentityResolver() {
5757
int end = ex.footerStartOffset();
5858

5959
if (ex.hasBytes())
60-
return hashCode(ex.bytes(), start, end);
60+
return BinaryUtils.hashCode(ex.bytes(), start, end);
6161
else {
6262
// Handle offheap object.
6363
int hash = 1;
@@ -88,16 +88,6 @@ else if (BinaryUtils.isBinaryEnumObject(obj)) {
8888
"implementation: " + obj.getClass().getName());
8989
}
9090

91-
/** */
92-
public int hashCode(byte[] data, int startPos, int endPos) {
93-
int hash = 1;
94-
95-
for (int i = startPos; i < endPos; i++)
96-
hash = 31 * hash + data[i];
97-
98-
return hash;
99-
}
100-
10191
/** {@inheritDoc} */
10292
@Override protected boolean equals0(BinaryObject o1, BinaryObject o2) {
10393
if (o1 instanceof BinaryObjectEx && o2 instanceof BinaryObjectEx) {

0 commit comments

Comments
 (0)