From d47fb586ca1d117a4f7ef1db97d58fc25e408ca2 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:11:24 +0300 Subject: [PATCH] Sonar: [squid:S2095] Use try-with-resources --- .../ByteArrayOutputNetStream.java | 6 ++ .../packets/serverside/ChunkDataPacket.java | 102 +++++++++--------- .../proto_1_12_2/ByteArrayInputNetStream.java | 5 + .../proto_1_12_2/netty/PacketDecoder.java | 3 + .../proto_1_12_2/netty/PacketEncoder.java | 3 + .../proto_1_12_2/netty/PacketPostEncoder.java | 3 + 6 files changed, 73 insertions(+), 49 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java index 7a2b7d6..8bcd5b1 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java @@ -1,6 +1,7 @@ package mc.core.network.proto_1_12_2; import java.io.ByteArrayOutputStream; +import java.io.IOException; public class ByteArrayOutputNetStream extends NetOutputStream_p340 { private ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -61,6 +62,11 @@ public class ByteArrayOutputNetStream extends NetOutputStream_p340 { writeLong(Double.doubleToLongBits(value)); } + @Override + public void close() throws IOException { + baos.close(); + } + public int size() { return baos.size(); } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java index 55d0d7a..9c694b2 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java @@ -13,6 +13,7 @@ import mc.core.world.block.BlockType; import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkSection; +import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -127,72 +128,75 @@ public class ChunkDataPacket implements SCPacket { } netStream.writeVarInt(bitMask); // Primary Bit Mask - final ByteArrayOutputNetStream data = new ByteArrayOutputNetStream(); + try (ByteArrayOutputNetStream data = new ByteArrayOutputNetStream(); + ByteArrayOutputNetStream biomes = new ByteArrayOutputNetStream()) { - final ByteArrayOutputNetStream biomes = new ByteArrayOutputNetStream(); - boolean biomeWrite = true; + boolean biomeWrite = true; - List nbtList = new ArrayList<>(); + List nbtList = new ArrayList<>(); - for (int h = 0; h < maxH; h++) { - ChunkSection chunkSection = null; + for (int h = 0; h < maxH; h++) { + ChunkSection chunkSection = null; - if (chunk != null) { - chunkSection = chunk.getChunkSection(h); - } else if (sectionList != null) { - chunkSection = sectionList.remove(0); - } + if (chunk != null) { + chunkSection = chunk.getChunkSection(h); + } else if (sectionList != null) { + chunkSection = sectionList.remove(0); + } - if (chunkSection == null) { - continue; - } + if (chunkSection == null) { + continue; + } - final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); + final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); - for (int y = 0; y < 16; y++) { - for (int z = 0; z < 16; z++) { - for (int x = 0; x < 16; x++) { - Block block = chunkSection.getBlock(x, y, z); + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + for (int x = 0; x < 16; x++) { + Block block = chunkSection.getBlock(x, y, z); - palettedChunkSection.addBlock( - block, - chunkSection.getSkyLight(x, y, z) - ); + palettedChunkSection.addBlock( + block, + chunkSection.getSkyLight(x, y, z) + ); - CompoundTag nbt = block.getNBTData(); - if (nbt != null) { - nbtList.add(nbt); - } + CompoundTag nbt = block.getNBTData(); + if (nbt != null) { + nbtList.add(nbt); + } - if (biomeWrite) { - biomes.writeByte(chunk.getBiome( - (chunk.getX() << 4) + x, - (chunk.getZ() << 4) + z - ).getId()); - if (x == 15 && z == 15) { - biomeWrite = false; + if (biomeWrite) { + biomes.writeByte(chunk.getBiome( + (chunk.getX() << 4) + x, + (chunk.getZ() << 4) + z + ).getId()); + if (x == 15 && z == 15) { + biomeWrite = false; + } } } } } + + // + palettedChunkSection.writeToNetStream(data); + // } + // + data.writeBytes(biomes.toByteArray()); + // - // - palettedChunkSection.writeToNetStream(data); - // + netStream.writeVarInt(data.size()); // Size of Data + netStream.writeBytes(data.toByteArray()); // Data + netStream.writeVarInt(nbtList.size()); // Number of block entities + // + for (CompoundTag compoundTag : nbtList) { + netStream.writeNBT(compoundTag); + } + // + } catch (IOException e) { + log.error("", e); } - // - data.writeBytes(biomes.toByteArray()); - // - - netStream.writeVarInt(data.size()); // Size of Data - netStream.writeBytes(data.toByteArray()); // Data - netStream.writeVarInt(nbtList.size()); // Number of block entities - // - for (CompoundTag compoundTag : nbtList) { - netStream.writeNBT(compoundTag); - } - // } @Override diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java index 4b0c90a..1d13d18 100644 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java @@ -81,4 +81,9 @@ public class ByteArrayInputNetStream extends NetInputStream_p340 { public void skipBytes(int count) { throw new UnsupportedOperationException(); } + + @Override + public void close() throws IOException { + bais.close(); + } } diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java index 2e0ee69..35dfd5d 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java @@ -32,6 +32,9 @@ public class PacketDecoder extends ReplayingDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { State state = ctx.channel().attr(ATTR_STATE).get(); + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса InputStream и если её нет, то убрать. */ NetInputStream netStream = new WrapperNetInputStream(in); int packetSize = netStream.readVarInt(); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java index 5198f01..8c8714c 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java @@ -27,6 +27,9 @@ public class PacketEncoder extends MessageToByteEncoder { log.debug("Send {}:{}", state, packet); try { + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса OutputStream и если её нет, то убрать. */ NetOutputStream netStream = new WrapperNetOutputStream(out); netStream.writeVarInt(id); packet.writeSelf(netStream); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java index 7e7b848..f25f5c5 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java @@ -32,6 +32,9 @@ public class PacketPostEncoder extends MessageToByteEncoder { } out.ensureWritable(sizeOfPktSize + pktSize); + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса OutputStream и если её нет, то убрать. */ (new WrapperNetOutputStream(out)).writeVarInt(pktSize); out.writeBytes(msg); }