REPO-4102: MNT-20213: Unable to run using Java 8

- explicit cast for compatibility with covariant return type on JDK 9's ByteBuffer
This commit is contained in:
Cristian Turlica
2019-02-05 15:06:24 +02:00
parent 79c2ec03db
commit f95d379de9
4 changed files with 121 additions and 115 deletions

View File

@@ -1,28 +1,28 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2016 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is * the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms: * provided under the following open source license terms:
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L% * #L%
*/ */
package org.alfresco.repo.search.impl.lucene.index; package org.alfresco.repo.search.impl.lucene.index;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
@@ -36,6 +36,7 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.RandomAccessFile; import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.Buffer;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer; import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
@@ -2428,10 +2429,10 @@ public class IndexInfo implements IndexMonitor
{ {
buffer = ByteBuffer.wrap(new byte[8]); buffer = ByteBuffer.wrap(new byte[8]);
channel.read(buffer); channel.read(buffer);
buffer.position(0); ((Buffer) buffer).position(0);
} }
buffer.position(0); ((Buffer) buffer).position(0);
long onDiskVersion = buffer.getLong(); long onDiskVersion = buffer.getLong();
return (version == onDiskVersion); return (version == onDiskVersion);
} }
@@ -2455,10 +2456,10 @@ public class IndexInfo implements IndexMonitor
{ {
buffer = ByteBuffer.wrap(new byte[(int) channel.size()]); buffer = ByteBuffer.wrap(new byte[(int) channel.size()]);
channel.read(buffer); channel.read(buffer);
buffer.position(0); ((Buffer) buffer).position(0);
} }
buffer.position(0); ((Buffer) buffer).position(0);
long onDiskVersion = buffer.getLong(); long onDiskVersion = buffer.getLong();
if (version != onDiskVersion) if (version != onDiskVersion)
{ {
@@ -2604,7 +2605,7 @@ public class IndexInfo implements IndexMonitor
buffer = ByteBuffer.wrap(new byte[(int) size]); buffer = ByteBuffer.wrap(new byte[(int) size]);
} }
buffer.position(0); ((Buffer) buffer).position(0);
buffer.putLong(version); buffer.putLong(version);
CRC32 crc32 = new CRC32(); CRC32 crc32 = new CRC32();
@@ -2647,7 +2648,7 @@ public class IndexInfo implements IndexMonitor
} }
else else
{ {
buffer.rewind(); ((Buffer) buffer).rewind();
channel.position(0); channel.position(0);
channel.write(buffer); channel.write(buffer);
} }

View File

@@ -30,6 +30,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.Buffer;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.Channels; import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel; import java.nio.channels.ReadableByteChannel;
@@ -817,7 +818,7 @@ public class HttpClientTransmitterImpl implements TransferTransmitter
while (src.read(buffer) != -1) while (src.read(buffer) != -1)
{ {
// prepare the buffer to be drained // prepare the buffer to be drained
buffer.flip(); ((Buffer) buffer).flip();
// write to the channel, may block // write to the channel, may block
dest.write(buffer); dest.write(buffer);
@@ -827,7 +828,7 @@ public class HttpClientTransmitterImpl implements TransferTransmitter
} }
// EOF will leave buffer in fill state // EOF will leave buffer in fill state
buffer.flip(); ((Buffer) buffer).flip();
// make sure the buffer is fully drained. // make sure the buffer is fully drained.
while (buffer.hasRemaining()) while (buffer.hasRemaining())

View File

@@ -1,56 +1,57 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2016 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is * the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms: * provided under the following open source license terms:
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L% * #L%
*/ */
package org.alfresco.repo.content; package org.alfresco.repo.content;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.ByteBuffer; import java.nio.Buffer;
import java.nio.channels.FileChannel; import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel; import java.nio.channels.FileChannel;
import java.util.Locale; import java.nio.channels.ReadableByteChannel;
import java.util.Locale;
import org.alfresco.service.cmr.repository.ContentIOException;
import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentIOException;
import org.alfresco.service.cmr.repository.ContentStreamListener; import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentStreamListener;
import org.alfresco.util.TempFileProvider; import org.alfresco.service.cmr.repository.ContentWriter;
import org.apache.commons.logging.Log; import org.alfresco.util.TempFileProvider;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log;
import org.junit.Test; import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/** /**
* Abstract base class that provides a set of tests for implementations * Abstract base class that provides a set of tests for implementations
@@ -433,10 +434,10 @@ public abstract class AbstractWritableContentStoreTest extends AbstractReadOnlyC
// attempt to delete the content // attempt to delete the content
boolean deleted = store.delete(contentUrl); boolean deleted = store.delete(contentUrl);
// close the reader stream // close the reader stream
if(is != null) if(is != null)
{ {
is.close(); is.close();
} }
// get a fresh reader // get a fresh reader
@@ -731,7 +732,7 @@ public abstract class AbstractWritableContentStoreTest extends AbstractReadOnlyC
int count = fileChannel.read(buffer); int count = fileChannel.read(buffer);
assertEquals("Incorrect number of bytes read", bytes.length, count); assertEquals("Incorrect number of bytes read", bytes.length, count);
// transfer back to array // transfer back to array
buffer.rewind(); ((Buffer) buffer).rewind();
buffer.get(bytes); buffer.get(bytes);
String checkContent = new String(bytes); String checkContent = new String(bytes);
assertEquals("Content read failure", content, checkContent); assertEquals("Content read failure", content, checkContent);

View File

@@ -1,34 +1,35 @@
/* /*
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2016 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is * the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms: * provided under the following open source license terms:
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L% * #L%
*/ */
package org.alfresco.repo.content.filestore; package org.alfresco.repo.content.filestore;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.Buffer;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
import java.util.HashSet; import java.util.HashSet;
@@ -86,8 +87,10 @@ public class FileIOTest extends TestCase
int countB = 0; int countB = 0;
do do
{ {
countA = channelA.read((ByteBuffer)bufferA.clear()); ((Buffer) bufferA).clear();
countB = channelB.read((ByteBuffer)bufferB.clear()); countA = channelA.read(bufferA);
((Buffer) bufferB).clear();
countB = channelB.read(bufferB);
assertEquals("Should read same number of bytes", countA, countB); assertEquals("Should read same number of bytes", countA, countB);
} while (countA > 6); } while (countA > 6);