Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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 com.facebook.presto.operator;
 
 
 
 
 import static com.fasterxml.jackson.core.JsonFactory.Feature.CANONICALIZE_FIELD_NAMES;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
 public abstract class Unnester
         implements Closeable
 {
     protected static final JsonFactory JSON_FACTORY = new JsonFactory().disable();
     protected static final int ESTIMATED_JSON_OUTPUT_SIZE = 512;
 
     private final int channelCount;
     private final JsonParser jsonParser;
     private boolean closed;
 
     protected Unnester(int channelCount, @Nullable Slice slice)
     {
         this. = channelCount;
         if (slice == null) {
             this. = null;
             return;
         }
 
         try {
             this. = .createJsonParser(slice.getInput());
             JsonToken token = .nextToken();
             checkState(token == . || token == ."Expected start of array or object in input: \"%s\""slice.toStringUtf8());
             readNextToken();
         }
         catch (IOException e) {
             close();
             throw Throwables.propagate(e);
         }
     }
 
     public final int getChannelCount()
     {
         return ;
     }
 
     public final void appendNext(PageBuilder pageBuilderint outputChannelOffset)
     {
         appendTo(pageBuilderoutputChannelOffset);
         readNextToken();
     }
 
     protected abstract void appendTo(PageBuilder pageBuilderint outputChannelOffsetJsonParser jsonParser);
 
     public final boolean hasNext()
     {
         return  != null && !;
     }
 
     protected final void readNextToken()
     {
         JsonToken token;
         checkNotNull("jsonParser is null");
         try {
             token = .nextToken();
         }
         catch (IOException e) {
             throw Throwables.propagate(e);
         }
         if (token == null || token == . || token == .) {
             close();
         }
     }
 
     @Override
     public final void close()
     {
         if () {
             return;
        }
        try {
            if ( != null) {
                .close();
            }
        }
        catch (IOException e) {
            throw Throwables.propagate(e);
        }
        finally {
             = true;
        }
    }
New to GrepCode? Check out our FAQ X