001package ca.uhn.fhir.rest.method;
002
003/*
004 * #%L
005 * HAPI FHIR - Core Library
006 * %%
007 * Copyright (C) 2014 - 2017 University Health Network
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import java.io.IOException;
024import java.io.Writer;
025
026import ca.uhn.fhir.model.api.TagList;
027import ca.uhn.fhir.parser.IParser;
028
029/**
030 * @author Peter Van Houte
031 *
032 * @param <T> A functional class that parses an outcome
033 */
034public abstract class ParseAction<T> {
035
036    protected T theOutcome;
037    
038    protected ParseAction(T outcome) {
039        this.theOutcome = outcome;
040    }
041
042    public abstract void execute(IParser parser, Writer writer) throws IOException;
043
044    public static ParseAction<TagList> create(TagList outcome) {
045        return outcome == null ? null : new ParseAction<TagList>(outcome) {
046            @Override
047            public void execute(IParser theParser, Writer theWriter) throws IOException {
048                theParser.encodeTagListToWriter(this.theOutcome, theWriter);
049            }
050        };
051    }
052    
053}