Github user kchilton2 commented on a diff in the pull request:

    https://github.com/apache/incubator-rya/pull/172#discussion_r160518292
  
    --- Diff: 
extras/indexing/src/main/java/org/apache/rya/indexing/pcj/matching/provider/AbstractPcjIndexSetProvider.java
 ---
    @@ -0,0 +1,160 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you 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.apache.rya.indexing.pcj.matching.provider;
    +
    +import static java.util.Objects.requireNonNull;
    +
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +
    +import org.apache.hadoop.conf.Configuration;
    +import org.apache.log4j.Logger;
    +import org.apache.rya.api.instance.RyaDetails;
    +import 
org.apache.rya.indexing.IndexPlanValidator.IndexedExecutionPlanGenerator;
    +import 
org.apache.rya.indexing.IndexPlanValidator.ValidIndexCombinationGenerator;
    +import org.apache.rya.indexing.external.matching.ExternalSetProvider;
    +import org.apache.rya.indexing.external.matching.QuerySegment;
    +import org.apache.rya.indexing.external.tupleSet.ExternalTupleSet;
    +import org.apache.rya.indexing.pcj.matching.PCJOptimizerUtilities;
    +import org.apache.rya.indexing.pcj.matching.PCJToSegmentConverter;
    +import org.openrdf.query.algebra.TupleExpr;
    +
    +import com.google.common.annotations.VisibleForTesting;
    +
    +/**
    + * Abstraction of {@link ExternalSetProvider} that provides {@link 
ExternalTupleSet}s.
    + * Implementations of this use either user specified configuration 
information or user a specified
    + * List of ExternalTupleSets to populate an internal cache of 
ExternalTupleSets.  If a configuration
    + * is provided, the provider connects to an instance of RyaDetails and 
populates the cache with
    + * PCJs registered in RyaDetails.
    + */
    +public abstract class AbstractPcjIndexSetProvider implements 
ExternalSetProvider<ExternalTupleSet> {
    +    protected static final Logger log = 
Logger.getLogger(AbstractPcjIndexSetProvider.class);
    +    protected static final PCJToSegmentConverter converter = new 
PCJToSegmentConverter();
    +    protected List<ExternalTupleSet> indexCache;
    +    protected final Configuration conf;
    +    protected boolean init = false;
    +
    +    /**
    +     * Creates a new {@link AbstractPcjIndexSetProvider} based on 
configuration only.
    +     * @param conf - The {@link Configuration} used to connect to {@link 
RyaDetails}.
    +     */
    +    public AbstractPcjIndexSetProvider(final Configuration conf) {
    +        requireNonNull(conf);
    +        this.conf = conf;
    +    }
    +
    +    /**
    +     * Creates a new {@link AbstractPcjIndexSetProvider} based user 
provided {@link ExternalTupleSet}s.
    +     * @param conf - The {@link Configuration} used to connect to {@link 
RyaDetails}.
    +     * @param indices - The {@link ExternalTupleSet}s to populate the 
internal cache.
    +     */
    +    public AbstractPcjIndexSetProvider(final Configuration conf, final 
List<ExternalTupleSet> indices) {
    +        requireNonNull(conf);
    +        this.conf = conf;
    +        indexCache = indices;
    +        init = true;
    +    }
    +
    +
    +    /**
    +     *
    +     * @param indices
    +     */
    +    @VisibleForTesting
    +    public void setIndices(final List<ExternalTupleSet> indices) {
    --- End diff --
    
    If this is going to be exposed for testing, could it at least be package 
scoped? Would prefer if this method did not exist. If it's going to stay, it 
should be documented.


---

Reply via email to