diff --git a/Ghidra/Framework/DB/src/main/java/db/buffers/RemoteBufferFileHandle.java b/Ghidra/Framework/DB/src/main/java/db/buffers/RemoteBufferFileHandle.java
index 8d9dbe624f..592ab77d5f 100644
--- a/Ghidra/Framework/DB/src/main/java/db/buffers/RemoteBufferFileHandle.java
+++ b/Ghidra/Framework/DB/src/main/java/db/buffers/RemoteBufferFileHandle.java
@@ -15,12 +15,77 @@
*/
package db.buffers;
+import java.io.IOException;
import java.rmi.Remote;
+import java.rmi.server.RemoteObjectInvocationHandler;
+import java.util.NoSuchElementException;
/**
* RemoteBufferFileHandle facilitates access to a remote BufferFile
* via RMI.
+ *
+ * Methods from {@link BufferFileHandle} must be re-declared here
+ * so they may be properly marshalled for remote invocation via RMI.
+ * This became neccessary with an OpenJDK 11.0.6 change made to
+ * {@link RemoteObjectInvocationHandler}.
*/
public interface RemoteBufferFileHandle extends BufferFileHandle, Remote {
- // provides combined interface
+ @Override
+ public boolean isReadOnly() throws IOException;
+
+ @Override
+ public boolean setReadOnly() throws IOException;
+
+ @Override
+ public int getParameter(String name) throws NoSuchElementException, IOException;
+
+ @Override
+ public void setParameter(String name, int value) throws IOException;
+
+ @Override
+ public void clearParameters() throws IOException;
+
+ @Override
+ public String[] getParameterNames() throws IOException;
+
+ @Override
+ public int getBufferSize() throws IOException;
+
+ @Override
+ public int getIndexCount() throws IOException;
+
+ @Override
+ public int[] getFreeIndexes() throws IOException;
+
+ @Override
+ public void setFreeIndexes(int[] indexes) throws IOException;
+
+ @Override
+ public void close() throws IOException;
+
+ @Override
+ public boolean delete() throws IOException;
+
+ @Override
+ public DataBuffer get(int index) throws IOException;
+
+ @Override
+ public void put(DataBuffer buf, int index) throws IOException;
+
+ @Override
+ public void dispose() throws IOException;
+
+ @Override
+ public InputBlockStream getInputBlockStream() throws IOException;
+
+ @Override
+ public OutputBlockStream getOutputBlockStream(int blockCount) throws IOException;
+
+ @Override
+ public BlockStreamHandle
+ * Methods from {@link BufferFileHandle} and {@link ManagedBufferFile} must
+ * be re-declared here so they may be properly marshalled for remote invocation via RMI.
+ * This became neccessary with an OpenJDK 11.0.6 change made to
+ * {@link RemoteObjectInvocationHandler}.
*/
public interface RemoteManagedBufferFileHandle extends ManagedBufferFileHandle, Remote {
- // provides combined interface
+
+ //--------------------------------------------------------------------------
+ // BufferFileHandle methods
+ //--------------------------------------------------------------------------
+ @Override
+ public boolean isReadOnly() throws IOException;
+
+ @Override
+ public boolean setReadOnly() throws IOException;
+
+ @Override
+ public int getParameter(String name) throws NoSuchElementException, IOException;
+
+ @Override
+ public void setParameter(String name, int value) throws IOException;
+
+ @Override
+ public void clearParameters() throws IOException;
+
+ @Override
+ public String[] getParameterNames() throws IOException;
+
+ @Override
+ public int getBufferSize() throws IOException;
+
+ @Override
+ public int getIndexCount() throws IOException;
+
+ @Override
+ public int[] getFreeIndexes() throws IOException;
+
+ @Override
+ public void setFreeIndexes(int[] indexes) throws IOException;
+
+ @Override
+ public void close() throws IOException;
+
+ @Override
+ public boolean delete() throws IOException;
+
+ @Override
+ public DataBuffer get(int index) throws IOException;
+
+ @Override
+ public void put(DataBuffer buf, int index) throws IOException;
+
+ @Override
+ public void dispose() throws IOException;
+
+ @Override
+ public InputBlockStream getInputBlockStream() throws IOException;
+
+ @Override
+ public OutputBlockStream getOutputBlockStream(int blockCount) throws IOException;
+
+ @Override
+ public BlockStreamHandle
+ * Methods from {@link RepositoryHandle} must be re-declared here
+ * so they may be properly marshalled for remote invocation via RMI.
+ * This became neccessary with an OpenJDK 11.0.6 change made to
+ * {@link RemoteObjectInvocationHandler}.
*/
public interface RemoteRepositoryHandle extends RepositoryHandle, Remote {
+ @Override
+ String getName() throws IOException;
+
+ @Override
+ User getUser() throws IOException;
+
+ @Override
+ User[] getUserList() throws IOException;
+
+ @Override
+ boolean anonymousAccessAllowed() throws IOException;
+
+ @Override
+ String[] getServerUserList() throws IOException;
+
+ @Override
+ void setUserList(User[] users, boolean anonymousAccessAllowed) throws IOException;
+
+ @Override
+ String[] getSubfolderList(String folderPath) throws IOException;
+
+ @Override
+ int getItemCount() throws IOException;
+
+ @Override
+ RepositoryItem[] getItemList(String folderPath) throws IOException;
+
+ @Override
+ RepositoryItem getItem(String parentPath, String name) throws IOException;
+
+ @Override
+ RepositoryItem getItem(String fileID) throws IOException;
+
+ @Override
+ ManagedBufferFileHandle createDatabase(String parentPath, String itemName, String fileID,
+ int bufferSize, String contentType, String projectPath)
+ throws IOException, InvalidNameException;
+
+ @Override
+ ManagedBufferFileHandle openDatabase(String parentPath, String itemName, int version,
+ int minChangeDataVer) throws IOException;
+
+ @Override
+ ManagedBufferFileHandle openDatabase(String parentPath, String itemName, long checkoutId)
+ throws IOException;
+
+ @Override
+ Version[] getVersions(String parentPath, String itemName) throws IOException;
+
+ @Override
+ void deleteItem(String parentPath, String itemName, int version) throws IOException;
+
+ @Override
+ void moveFolder(String oldParentPath, String newParentPath, String oldFolderName,
+ String newFolderName) throws InvalidNameException, IOException;
+
+ @Override
+ void moveItem(String oldParentPath, String newParentPath, String oldItemName,
+ String newItemName) throws InvalidNameException, IOException;
+
+ @Override
+ ItemCheckoutStatus checkout(String parentPath, String itemName, CheckoutType checkoutType,
+ String projectPath) throws IOException;
+
+ @Override
+ void terminateCheckout(String parentPath, String itemName, long checkoutId, boolean notify)
+ throws IOException;
+
+ @Override
+ ItemCheckoutStatus getCheckout(String parentPath, String itemName, long checkoutId)
+ throws IOException;
+
+ @Override
+ ItemCheckoutStatus[] getCheckouts(String parentPath, String itemName) throws IOException;
+
+ @Override
+ boolean folderExists(String folderPath) throws IOException;
+
+ @Override
+ boolean fileExists(String parentPath, String itemName) throws IOException;
+
+ @Override
+ long getLength(String parentPath, String itemName) throws IOException;
+
+ @Override
+ boolean hasCheckouts(String parentPath, String itemName) throws IOException;
+
+ @Override
+ boolean isCheckinActive(String parentPath, String itemName) throws IOException;
+
+ @Override
+ void updateCheckoutVersion(String parentPath, String itemName, long checkoutId,
+ int checkoutVersion) throws IOException;
+
+ @Override
+ RepositoryChangeEvent[] getEvents() throws IOException;
+
+ @Override
+ void close() throws IOException;
}
diff --git a/Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/remote/RemoteRepositoryServerHandle.java b/Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/remote/RemoteRepositoryServerHandle.java
index 996aa05c46..d62c2676cd 100644
--- a/Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/remote/RemoteRepositoryServerHandle.java
+++ b/Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/remote/RemoteRepositoryServerHandle.java
@@ -15,11 +15,54 @@
*/
package ghidra.framework.remote;
+import java.io.IOException;
import java.rmi.Remote;
+import java.rmi.server.RemoteObjectInvocationHandler;
/**
*
+ * Methods from {@link RepositoryServerHandle} must be re-declared here
+ * so they may be properly marshalled for remote invocation via RMI.
+ * This became neccessary with an OpenJDK 11.0.6 change made to
+ * {@link RemoteObjectInvocationHandler}.
*/
public interface RemoteRepositoryServerHandle extends RepositoryServerHandle, Remote {
+ @Override
+ boolean anonymousAccessAllowed() throws IOException;
+
+ @Override
+ boolean isReadOnly() throws IOException;
+
+ @Override
+ RepositoryHandle createRepository(String name) throws IOException;
+
+ @Override
+ RepositoryHandle getRepository(String name) throws IOException;
+
+ @Override
+ void deleteRepository(String name) throws IOException;
+
+ @Override
+ String[] getRepositoryNames() throws IOException;
+
+ @Override
+ String getUser() throws IOException;
+
+ @Override
+ String[] getAllUsers() throws IOException;
+
+ @Override
+ boolean canSetPassword() throws IOException;
+
+ @Override
+ long getPasswordExpiration() throws IOException;
+
+ @Override
+ boolean setPassword(char[] saltedSHA256PasswordHash) throws IOException;
+
+ @Override
+ void connected() throws IOException;
+
}
RemoteManagedBufferFileHandle facilitates access to a ManagedBufferFile
* via RMI.
+ * RepositoryHandle provides access to a remote repository via RMI.
+ * RepositoryServerHandle provides access to a remote repository server via RMI.
+ *