Java tutorial
/* * Copyright 2014 Fluo authors (see AUTHORS) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.fluo.api.client; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.SubsetConfiguration; /** * Client interface for Fluo. Fluo clients will have shared resources used by all objects created by the client. Therefore, {@link FluoClient#close()} must * called when you are finished using the client. */ public interface FluoClient extends AutoCloseable { /** * Creates a {@link LoaderExecutor} for loading data into Fluo. Use within a try-with-resources statement or call {@link LoaderExecutor#close()} when you are * finished using it. */ public LoaderExecutor newLoaderExecutor(); /** * Creates a {@link Snapshot} for reading data from Fluo. Use within a try-with-resources statement or call {@link Snapshot#close()} when you are finished * using it. */ public Snapshot newSnapshot(); /** * Creates a {@link Transaction} for reading and writing data to Fluo. Unlike the transactions provided by the {@link Loader} and {@link Observer}, users will * need to call {@link Transaction#commit()}. Use within a try-with-resources statement or call {@link Transaction#close()} when you are finished. */ public Transaction newTransaction(); /** * @return All properties w/ the prefix {@value io.fluo.api.config.FluoConfiguration#APP_PREFIX} that were set at initialization time. The configuration returned is a * {@link SubsetConfiguration} using the prefix {@value io.fluo.api.config.FluoConfiguration#APP_PREFIX} The reason these properties are stored and read from zookeeper * is to offer a consistent view of application config across all nodes in the cluster. So there is no need to worry w/ keeping config files * consistent across a cluster. To update this configuration, use {@link FluoAdmin#updateSharedConfig()}. Changes made to the returned Configuration * will not update Zookeeper. */ public Configuration getAppConfiguration(); /** * Closes client resources */ @Override public void close(); }