org.immutables.criteria.geode.GeodeBackend Maven / Gradle / Ivy
/*
* Copyright 2019 Immutables Authors and Contributors
*
* 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 org.immutables.criteria.geode;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable;
import io.reactivex.FlowableEmitter;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.query.CqAttributesFactory;
import org.apache.geode.cache.query.CqQuery;
import org.apache.geode.cache.query.QueryService;
import org.immutables.criteria.backend.Backend;
import org.immutables.criteria.backend.DefaultResult;
import org.immutables.criteria.backend.KeyExtractor;
import org.immutables.criteria.backend.PathNaming;
import org.immutables.criteria.backend.StandardOperations;
import org.immutables.criteria.backend.WatchEvent;
import org.reactivestreams.Publisher;
import java.util.Objects;
import java.util.logging.Logger;
/**
* Backend for Apache Geode
*/
public class GeodeBackend implements Backend {
static final Logger logger = Logger.getLogger(GeodeBackend.class.getName());
private final GeodeSetup setup;
private final PathNaming pathNaming;
public GeodeBackend(GeodeSetup setup) {
this.setup = Objects.requireNonNull(setup, "setup");
this.pathNaming = ReservedWordNaming.of(PathNaming.defaultNaming());
}
@Override
public Backend.Session open(Class> entityType) {
Objects.requireNonNull(entityType, "context");
return new Session(entityType, this);
}
static class Session implements Backend.Session {
final Class> entityType;
final Region
© 2015 - 2025 Weber Informatics LLC | Privacy Policy