001/**
002 * Copyright 2013 John Ericksen
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *    http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.androidtransfuse.analysis.astAnalyzer;
017
018import org.androidtransfuse.adapter.ASTMethod;
019import org.androidtransfuse.adapter.ASTMethodUniqueSignatureDecorator;
020import org.androidtransfuse.adapter.ASTType;
021
022import java.util.*;
023
024/**
025 * @author John Ericksen
026 */
027public class ObservesAspect {
028
029    private final Map<ASTType, Set<ASTMethod>> observesMap = new HashMap<ASTType, Set<ASTMethod>>();
030
031    public void addObserver(ASTType event, ASTMethod method){
032        if(!observesMap.containsKey(event)){
033            observesMap.put(event, new HashSet<ASTMethod>());
034        }
035
036        observesMap.get(event).add(new ASTMethodUniqueSignatureDecorator(method));
037    }
038
039    public Set<ASTType> getEvents(){
040        return observesMap.keySet();
041    }
042
043    public Set<ASTMethod> getObserverMethods(ASTType event){
044        if(observesMap.containsKey(event)){
045            return observesMap.get(event);
046        }
047
048        return Collections.emptySet();
049    }
050}