16859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert/*
26859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * Copyright (C) 2010 The Android Open Source Project
36859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert *
46859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
56859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * you may not use this file except in compliance with the License.
66859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * You may obtain a copy of the License at
76859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert *
86859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
96859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert *
106859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
116859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
126859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * See the License for the specific language governing permissions and
146859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * limitations under the License.
156859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert */
166859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
176859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringertpackage com.android.quicksearchbox;
186859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
196859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringertimport com.android.quicksearchbox.util.Consumer;
206859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
216859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert/**
226859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * A consumer that saves the value that it is given.
236859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert *
246859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert * @param <A> The type of values to consume.
256859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert */
266859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringertpublic class ConsumerTrap<A> implements Consumer<A> {
276859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
286859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert    private volatile A mValue;
296859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
306859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert    public boolean consume(A value) {
316859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert        mValue = value;
326859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert        return true;
336859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert    }
346859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert
356859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert    public A getValue() {
366859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert        return mValue;
376859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert    }
386859aead3af0680b2c9dc326244aa89835c2c852Bjorn Bringert}