package org.infinispan.query.remote.client;
/**
* MBean interface for ProtobufMetadataManager, suitable for building invocation proxies with one of the {@link
* javax.management.JMX#newMBeanProxy} methods.
*
* @author anistor@redhat.com
* @author gustavonalle
* @since 7.1
*/
public interface ProtobufMetadataManagerMBean extends ProtobufMetadataManagerConstants {
/**
* Register a *.proto schema file. If there are any syntax or semantic errors a *.proto.errors key will be created in
* the underlying cache and its value will be the actual error message. The error message, if any, can be retrieved
* using {@link #getFileErrors(String fileName)} method. The list of offending files can be retrieved using {@link
* #getFilesWithErrors()} method.
*
* @param fileName the full name of the file (name can contain '/'); must end with ".proto" suffix
* @param contents the file contents
* @throws Exception in case of failure
*/
void registerProtofile(String fileName, String contents) throws Exception;
/**
* Registers multiple *.proto schema files. If there are any syntax or semantic errors a *.proto.errors key will be
* created in the underlying cache for each offending file and its value will be the actual error message. The error
* message, if any, can be retrieved using {@link #getFileErrors(String fileName)} method. The list of offending
* files can be retrieved using {@link #getFilesWithErrors()} method.
*
* @param fileNames the full names of the files (name can contain '/'); names must end with ".proto" suffix
* @param contents the contents of each file; this array must have the same length as {@code fileNames}
* @throws Exception in case of failure
*/
void registerProtofiles(String[] fileNames, String[] contents) throws Exception;
/**
* Unregister a *.proto schema file.
*
* @param fileName the full name of the file (name can contain '/'); must end with ".proto" suffix
* @throws Exception in case of failure
*/
void unregisterProtofile(String fileName) throws Exception;
/**
* Unregisters multiple *.proto schema files.
*
* @param fileNames the full names of the files (name can contain '/'); names must end with ".proto" suffix
* @throws Exception in case of failure
*/
void unregisterProtofiles(String[] fileNames) throws Exception;
/**
* Get the full names of all registered schema files.
*
* @return the array of all registered schema file names, never null
*/
String[] getProtofileNames();
/**
* Gets the contents of a registered *.proto schema file.
*
* @param fileName the name of the file; must end with ".proto" suffix
* @return the file contents or {@code null} if the file does not exist
*/
String getProtofile(String fileName);
/**
* Get the full names of all registered schema files.
*
* @return the array of all registered schema file names, never null
*/
String[] getFilesWithErrors();
/**
* Gets the error messages (caused by parsing, linking, etc) associated to a *.proto schema file.
*
* @param fileName the name of the file; must end with ".proto" suffix
* @return the error text or {@code null} if there are no errors
*/
String getFileErrors(String fileName);
}