org.cloudsmith.geppetto.validation.runner.ValidationAllContainersState.java Source code

Java tutorial

Introduction

Here is the source code for org.cloudsmith.geppetto.validation.runner.ValidationAllContainersState.java

Source

/**
 * Copyright (c) 2011 Cloudsmith Inc. and other contributors, as listed below.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *   Cloudsmith
 * 
 */
package org.cloudsmith.geppetto.validation.runner;

import java.util.Collections;
import java.util.List;

import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersState;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;

/**
 * This specialization of the default {@link ResourceSetBasedAllContainersState} adds the ability to use more than a single container.
 * 
 */
public class ValidationAllContainersState extends ResourceSetBasedAllContainersState {

    private ArrayListMultimap<String, String> restricted;

    /**
     * This method is only here to throw exception when using the regular API.
     * DO NOT USE - use {@link #configure(List, Multimap, Multimap)} instead.
     */
    @Override
    @Deprecated
    public void configure(List<String> containers, Multimap<String, URI> container2Uris) {
        throw new UnsupportedOperationException("Call configure with 3 arguments instead");
    }

    public void configure(List<String> containers, Multimap<String, URI> container2Uris,
            Multimap<String, String> restrictedVisibility) {
        super.configure(containers, container2Uris);
        this.restricted = ArrayListMultimap.create(restrictedVisibility);
    }

    /**
     * Returns the map of restricted container handles, a get(String handle)
     * returns the set of visible container handles for the given handle. The
     * handle should be a File path to a module directory, a path to the root
     * (non modular content) of a repository, or the special string "_pptp".
     * 
     * @return
     */
    public Multimap<String, String> getRestricted() {
        return Multimaps.unmodifiableMultimap(restricted);
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersState
     * #getVisibleContainerHandles(java.lang.String)
     */
    @Override
    public List<String> getVisibleContainerHandles(String handle) {
        if (restricted.containsKey(handle))
            return Collections.unmodifiableList(restricted.get(handle));

        // super method returns all containers
        return super.getVisibleContainerHandles(handle);
    }
}