Example usage for com.google.common.collect Maps immutableEntry

List of usage examples for com.google.common.collect Maps immutableEntry

Introduction

In this page you can find the example usage for com.google.common.collect Maps immutableEntry.

Prototype

@GwtCompatible(serializable = true)
public static <K, V> Entry<K, V> immutableEntry(@Nullable K key, @Nullable V value) 

Source Link

Document

Returns an immutable map entry with the specified key and value.

Usage

From source file:com.facebook.buck.features.apple.project.WorkspaceAndProjectGenerator.java

/**
 * Transform a map from scheme name to `TargetNode` to scheme name to the associated `PBXProject`.
 * This wraps `mapFromSchemeToPBXProject` with added functionality filters out null target nodes.
 *
 * @param schemeToOptionalTargetNodes Map to transform.
 * @return Map of scheme name to associated `PXBProject`s.
 *///from ww  w .ja  v a 2 s  .  co m
private static ImmutableSetMultimap<String, PBXTarget> mapFromOptionalSchemeToPBXProject(
        ImmutableSetMultimap<String, Optional<TargetNode<?>>> schemeToOptionalTargetNodes,
        ImmutableMap<BuildTarget, PBXTarget> buildTargetToPBXTarget) {
    // filter out map entries that are null
    ImmutableSetMultimap<String, TargetNode<?>> schemeToTargetNodes = ImmutableSetMultimap
            .copyOf(schemeToOptionalTargetNodes.entries().stream().filter(stringOptionalEntry -> { // removes scheme mapped to null
                return stringOptionalEntry.getValue().isPresent();
            }).map(stringOptionalEntry -> {
                // force map to non-Optional value since those values are filtered above
                return Maps.immutableEntry(stringOptionalEntry.getKey(), stringOptionalEntry.getValue().get());
            }).collect(Collectors.toList()));

    return mapFromSchemeToPBXProject(schemeToTargetNodes, buildTargetToPBXTarget);
}

From source file:io.atomix.core.multimap.impl.AbstractAtomicMultimapService.java

@Override
public IteratorBatch<Map.Entry<String, byte[]>> nextEntries(long iteratorId, int position) {
    IteratorContext context = entryIterators.get(iteratorId);
    if (context == null) {
        return null;
    }//from   w ww. j  a v a2s  .  co m

    List<Map.Entry<String, byte[]>> entries = new ArrayList<>();
    int size = 0;
    while (context.iterator.hasNext()) {
        context.position++;
        if (context.position > position) {
            Map.Entry<String, MapEntryValues> entry = context.iterator.next();
            String key = entry.getKey();
            int keySize = key.length();
            for (byte[] value : entry.getValue().values()) {
                entries.add(Maps.immutableEntry(key, value));
                size += keySize;
                size += value.length;
            }

            if (size >= MAX_ITERATOR_BATCH_SIZE) {
                break;
            }
        }
    }

    if (entries.isEmpty()) {
        return null;
    }
    return new IteratorBatch<>(iteratorId, context.position, entries, !context.iterator.hasNext());
}

From source file:org.onosproject.store.consistent.impl.DefaultAsyncConsistentMap.java

private Map.Entry<K, Versioned<V>> mapRawEntry(Map.Entry<String, Versioned<byte[]>> e) {
    return Maps.immutableEntry(dK(e.getKey()), e.getValue().<V>map(serializer::decode));
}

From source file:fi.vm.sade.organisaatio.business.impl.OrganisaatioBusinessServiceImpl.java

@Override
public OrganisaatioResult save(OrganisaatioRDTO model, boolean updating, boolean skipParentDateValidation)
        throws ValidationException {
    // Tarkistetaan OID
    if (model.getOid() == null && updating) {
        throw new ValidationException("Oid cannot be null");//trying to update organisaatio that doesn't exist (is is null)");
    } else if (!updating) {
        if ((model.getOid() != null) && (organisaatioDAO.findByOid(model.getOid()) != null)) {
            throw new OrganisaatioExistsException(model.getOid());
        }/* w w w  . j av a2s.  c o m*/

        if (model.getOppilaitosKoodi() != null && model.getOppilaitosKoodi().length() > 0) {
            if (checker.checkLearningInstitutionCodeIsUniqueAndNotUsed(model)) {
                throw new LearningInstitutionExistsException("organisaatio.oppilaitos.exists.with.code");
            }
        }
    }

    // Haetaan parent organisaatio
    Organisaatio parentOrg = (model.getParentOid() != null
            && !model.getParentOid().equalsIgnoreCase(rootOrganisaatioOid))
                    ? organisaatioDAO.findByOid(model.getParentOid())
                    : null;

    // Validointi: Tarkistetaan, ett parent ei ole ryhm
    if (parentOrg != null && OrganisaatioUtil.isRyhma(parentOrg)) {
        throw new ValidationException("Parent cannot be group");
    }

    // Validointi: Tarkistetaan, ett ryhm ei olla lismss muulle kuin oph organisaatiolle
    if (OrganisaatioUtil.isRyhma(model)
            && model.getParentOid().equalsIgnoreCase(rootOrganisaatioOid) == false) {
        throw new ValidationException("Ryhmi ei voi luoda muille kuin oph organisaatiolle");
    }

    // Validointi: Jos organisaatio on ryhm, tarkistetaan ettei muita ryhmi
    if (OrganisaatioUtil.isRyhma(model) && model.getTyypit().size() != 1) {
        throw new ValidationException("Rymll ei voi olla muita tyyppej");
    }

    // Validointi: Jos y-tunnus on annettu, sen tytyy olla oikeassa muodossa
    if (model.getYTunnus() != null && model.getYTunnus().length() == 0) {
        model.setYTunnus(null);
    }
    if (model.getYTunnus() != null
            && !Pattern.matches(OrganisaatioValidationConstraints.YTUNNUS_PATTERN, model.getYTunnus())) {
        throw new ValidationException("validation.Organisaatio.ytunnus");
    }

    // Validointi: Jos virastotunnus on annettu, sen tytyy olla oikeassa muodossa
    if (model.getVirastoTunnus() != null && model.getVirastoTunnus().length() == 0) {
        model.setVirastoTunnus(null);
    }
    if (model.getVirastoTunnus() != null && !Pattern
            .matches(OrganisaatioValidationConstraints.VIRASTOTUNNUS_PATTERN, model.getVirastoTunnus())) {
        throw new ValidationException("validation.Organisaatio.virastotunnus");
    }

    // Validointi: koodistoureissa pit olla versiotieto
    checker.checkVersionInKoodistoUris(model);

    Map<String, String> oldName = null;
    if (updating) {
        Organisaatio oldOrg = organisaatioDAO.findByOid(model.getOid());
        oldName = new HashMap<>(oldOrg.getNimi().getValues());
    }

    // Luodaan tallennettava entity objekti
    Organisaatio entity = conversionService.convert(model, Organisaatio.class); //this entity is populated with new data

    // Asetetaan parent path
    setParentPath(entity, model.getParentOid());

    // Tarkistetaan ett toimipisteen nimi on oikeassa formaatissa
    if (parentOrg != null
            && (organisaatioIsOfType(entity, OrganisaatioTyyppi.TOIMIPISTE)
                    || organisaatioIsOfType(entity, OrganisaatioTyyppi.OPPISOPIMUSTOIMIPISTE))
            && !organisaatioIsOfType(entity, OrganisaatioTyyppi.OPPILAITOS)) {
        checker.checkToimipisteNimiFormat(entity, parentOrg.getNimi());
    }

    // Asetetaan pivittj ja pivityksen aikaleima
    try {
        entity.setPaivittaja(getCurrentUser());
        entity.setPaivitysPvm(new Date());
    } catch (Throwable t) {
        LOG.error("Could not set updater for organisation!", t);
        throw new OrganisaatioResourceException(Response.Status.INTERNAL_SERVER_ERROR, t.getMessage(),
                "error.setting.updater");
    }

    // Pivitystapauksessa pitaa asetta id:t, ettei luoda uusia rivej
    boolean parentChanged = false;
    Organisaatio oldParent = null;
    if (updating) {
        Organisaatio orgEntity = this.organisaatioDAO.findByOid(model.getOid());
        mergeAuxData(entity, orgEntity);
        entity.setId(orgEntity.getId());
        entity.setOpetuspisteenJarjNro(orgEntity.getOpetuspisteenJarjNro());

        // Tarkistetaan organisaatiohierarkia jos hierarkia muuttunut (onko parent muuttunut)
        if (model.getParentOid().equals(orgEntity.getParent().getOid()) == false) {
            LOG.info("Hierarkia muuttunut, tarkastetaan hierarkia.");
            checker.checkOrganisaatioHierarchy(entity, model.getParentOid());
            parentChanged = true;
            oldParent = orgEntity.getParent();
        }

        // Tarkistetaan organisaatiohierarkia jos organisaatiotyypit muutuneet
        if (!entity.getTyypit().containsAll(orgEntity.getTyypit())
                || !orgEntity.getTyypit().containsAll(entity.getTyypit())) {
            LOG.info("Organisaation tyypit muuttuneet, tarkastetaan hierarkia.");
            checker.checkOrganisaatioHierarchy(entity, model.getParentOid());
        }

        // Tarkistetaan ettei lakkautuspivmrn jlkeen ole alkavia koulutuksia
        if (OrganisaatioUtil.isSameDay(entity.getLakkautusPvm(), orgEntity.getLakkautusPvm()) == false) {
            LOG.info("Lakkautuspivmr muuttunut, tarkastetaan alkavat koulutukset.");
            checker.checkLakkautusAlkavatKoulutukset(entity);
        }
    } else {
        // Tarkistetaan organisaatio hierarkia
        checker.checkOrganisaatioHierarchy(entity, model.getParentOid());
    }

    // Generoidaan oidit
    try {
        generateOids(entity);
        generateOidsMetadata(entity.getMetadata());
    } catch (ExceptionMessage em) {
        throw new OrganisaatioResourceException(Response.Status.INTERNAL_SERVER_ERROR, em.getMessage());
    }

    // Generoidaan opetuspiteenJarjNro
    String opJarjNro = null;
    if (!updating && StringUtils.isEmpty(model.getOpetuspisteenJarjNro())) {
        opJarjNro = generateOpetuspisteenJarjNro(entity, parentOrg, model.getTyypit());
        entity.setOpetuspisteenJarjNro(opJarjNro);
    } else {
        opJarjNro = entity.getOpetuspisteenJarjNro();
    }

    // If inserting, check if ytunnus allready exists in the database
    if (!updating && entity.getYtunnus() != null) {
        checker.checkYtunnusIsUniqueAndNotUsed(entity.getYtunnus());
    }

    entity.setOrganisaatioPoistettu(false);

    // OVT-4765 do not validate start date against parent date when updating
    if (updating) {
        LOG.info("this is an update, not validating parent dates.");
        skipParentDateValidation = true;
    }

    // OH-116
    if (parentOrg != null) {
        // Check if organization has parent and if it has check that passivation dates match to parent
        OrganisationDateValidator dateValidator = new OrganisationDateValidator(skipParentDateValidation);
        if (!dateValidator.apply(Maps.immutableEntry(parentOrg, entity))) {
            throw new OrganisaatioDateException();
        }
    }

    // Asetetaan yhteystietoarvot
    entity.setYhteystietoArvos(mergeYhteystietoArvos(entity, entity.getYhteystietoArvos(), updating));

    // Kirjoitetaan yhteystiedot uusiksi (ei pivitet vanhoja)
    for (Yhteystieto yhtTieto : entity.getYhteystiedot()) {
        yhtTieto.setOrganisaatio(entity);
    }

    // Kirjoitetaan nimihistoria uusiksi (ei pivitet vanhoja)
    for (OrganisaatioNimi nimi : entity.getNimet()) {
        nimi.setOrganisaatio(entity);
    }

    // Nimihistoriaan liittyvt tarkistukset (HUOM! Ei koske Ryhmi)
    if (OrganisaatioUtil.isRyhma(entity) == false) {
        /** @TODO --> Tarkistetaan, ettei nimihistoriaa muuteta muuta kuin nykyisen tai uusimman nimen osalta */
        // Tarkistetaan, ett nimen alkupivmr ei ole NULL
        checker.checkNimihistoriaAlkupvm(entity.getNimet());

        // Tarkistetaan, ett nimihistoriassa on organisaatiolle validi nimi
        MonikielinenTeksti nimi = OrganisaatioNimiUtil.getNimi(entity.getNimet());
        if (nimi == null) {
            throw new OrganisaatioNameHistoryNotValidException();
        }

        // Tarkistetaan, ett organisaatiolle asetettu nimi ei ole
        // ristiriidassa nimihistorian kanssa
        if (nimi.getValues().equals(entity.getNimi().getValues()) == false) {
            throw new OrganisaatioNameHistoryNotValidException();
        }

        // Asetetaan organisaatiolle sama nimi instanssi kuin nimihistoriassa
        entity.setNimi(nimi);
    }

    // Asetetaan tyypit "organisaatio" taulun kenttn
    String tyypitStr = "";
    for (String curTyyppi : model.getTyypit()) {
        tyypitStr += curTyyppi + "|";
    }
    entity.setOrganisaatiotyypitStr(tyypitStr);

    // Generate natural key, OVT-4954
    // "Jos kyseess on koulutustoimija pitisi palauttaa y-tunnus."
    // "Jos oppilaitos, palautetaan oppilaitosnumero."
    // "Jos toimipiste, palautetaan oppilaitosnro+toimipisteenjrjestysnumero(konkatenoituna)sek yhkoulukoodi."
    entity.setToimipisteKoodi(calculateToimipisteKoodi(entity, parentOrg));

    // call super.insert OR update which saves & validates jpa
    if (updating) {
        LOG.info("updating " + entity);
        try {
            organisaatioDAO.update(entity);
        } catch (OptimisticLockException ole) {
            throw new OrganisaatioModifiedException(ole);
        }
        entity = organisaatioDAO.read(entity.getId());
    } else {
        entity = organisaatioDAO.insert(entity);
    }

    // Saving the parent relationship
    if (parentOrg == null) {
        // Koulutustoimija in root level is stored under OPH
        Organisaatio uberParent = organisaatioDAO.findByOid(rootOrganisaatioOid);
        entity = saveParentSuhde(entity, uberParent, opJarjNro);
    } else {
        entity = saveParentSuhde(entity, parentOrg, opJarjNro);
        if (!updating && entity.getParent() != null) {
            solrIndexer.index(Arrays.asList(parentOrg));
        }
    }

    // Indeksoidaan organisaatio solriin (HUOM! Ryhmi ei indeksoida)
    // Uuden organisaation tapauksessa uudelleenindeksoidaan mys parent
    if (OrganisaatioUtil.isRyhma(entity) == false) {
        solrIndexer.index(entity);

        if ((parentChanged || !updating) && parentOrg != null) {
            solrIndexer.index(parentOrg);
        }
    }

    // Tarkistetaan ja pivitetn oppilaitoksen alla olevien opetuspisteiden nimet
    if (updating && parentOrg != null && organisaatioIsOfType(entity, OrganisaatioTyyppi.OPPILAITOS)) {
        updateOrganisaatioNameHierarchy(entity, oldName);
    }

    // Parent changed update children and reindex old parent.
    if (parentChanged) {
        updateChildrenRecursive(entity);
        solrIndexer.index(oldParent);
    }

    // Pivit tiedot koodistoon.
    String info = organisaatioKoodisto.paivitaKoodisto(entity, true);

    return new OrganisaatioResult(entity, info);
}

From source file:co.cask.cdap.internal.app.runtime.workflow.WorkflowDriver.java

private void executeFork(final ApplicationSpecification appSpec, WorkflowForkNode fork,
        final InstantiatorFactory instantiator, final ClassLoader classLoader, final WorkflowToken token)
        throws Exception {
    ExecutorService executorService = Executors.newFixedThreadPool(fork.getBranches().size(),
            new ThreadFactoryBuilder().setNameFormat("workflow-fork-executor-%d").build());
    CompletionService<Map.Entry<String, WorkflowToken>> completionService = new ExecutorCompletionService<>(
            executorService);/*from  ww  w.  ja  v a  2 s .com*/

    try {
        for (final List<WorkflowNode> branch : fork.getBranches()) {
            completionService.submit(new Callable<Map.Entry<String, WorkflowToken>>() {
                @Override
                public Map.Entry<String, WorkflowToken> call() throws Exception {
                    WorkflowToken copiedToken = ((BasicWorkflowToken) token).deepCopy();
                    executeAll(branch.iterator(), appSpec, instantiator, classLoader, copiedToken);
                    return Maps.immutableEntry(branch.toString(), copiedToken);
                }
            });
        }

        for (int i = 0; i < fork.getBranches().size(); i++) {
            try {
                Future<Map.Entry<String, WorkflowToken>> f = completionService.take();
                Map.Entry<String, WorkflowToken> retValue = f.get();
                String branchInfo = retValue.getKey();
                WorkflowToken branchToken = retValue.getValue();
                ((BasicWorkflowToken) token).mergeToken((BasicWorkflowToken) branchToken);
                LOG.info("Execution of branch {} for fork {} completed", branchInfo, fork);
            } catch (Throwable t) {
                Throwable rootCause = Throwables.getRootCause(t);
                if (rootCause instanceof ExecutionException) {
                    LOG.error("Exception occurred in the execution of the fork node {}", fork);
                    throw (ExecutionException) t;
                }
                if (rootCause instanceof InterruptedException) {
                    LOG.error("Workflow execution aborted.");
                    break;
                }
                Throwables.propagateIfPossible(t, Exception.class);
                throw Throwables.propagate(t);
            }
        }
    } finally {
        // Update the WorkflowToken after the execution of the FORK node completes.
        store.updateWorkflowToken(workflowId, runId.getId(), token);
        executorService.shutdownNow();
        executorService.awaitTermination(Integer.MAX_VALUE, TimeUnit.NANOSECONDS);
    }
}

From source file:ninja.leaping.permissionsex.PermissionsEx.java

public CalculatedSubject getCalculatedSubject(String type, String identifier)
        throws PermissionsLoadingException {
    try {//from  www  .ja  v a 2s  .  com
        return calculatedSubjects.get(Maps.immutableEntry(type, identifier));
    } catch (ExecutionException e) {
        throw new PermissionsLoadingException(t("While calculating subject data for %s:%s", type, identifier),
                e);
    }
}

From source file:io.atomix.protocols.gossip.map.AntiEntropyMapDelegate.java

@Override
public V compute(K key, BiFunction<? super K, ? super V, ? extends V> recomputeFunction) {
    checkState(!closed, destroyedMessage);
    checkNotNull(key, ERROR_NULL_KEY);/*from  www.j ava2s  .c om*/
    checkNotNull(recomputeFunction, "Recompute function cannot be null");

    String encodedKey = encodeKey(key);
    AtomicReference<MapDelegateEvent.Type> update = new AtomicReference<>();
    AtomicReference<MapValue> previousValue = new AtomicReference<>();
    MapValue computedValue = items.compute(encodedKey, (k, mv) -> {
        previousValue.set(mv);
        V newRawValue = recomputeFunction.apply(key, mv == null ? null : mv.get(this::decodeValue));
        byte[] newEncodedValue = encodeValue(newRawValue);
        if (mv != null && Arrays.equals(newEncodedValue, mv.get())) {
            // value was not updated
            return mv;
        }
        MapValue newValue = new MapValue(newEncodedValue,
                timestampProvider.get(Maps.immutableEntry(key, newRawValue)));
        if (mv == null) {
            update.set(INSERT);
            return newValue;
        } else if (newValue.isNewerThan(mv)) {
            update.set(UPDATE);
            return newValue;
        } else {
            return mv;
        }
    });
    if (update.get() != null) {
        notifyPeers(new UpdateEntry(encodedKey, computedValue), peerUpdateFunction
                .select(Maps.immutableEntry(key, computedValue.get(this::decodeValue)), membershipService));
        MapDelegateEvent.Type updateType = computedValue.isTombstone() ? REMOVE : update.get();
        V value = computedValue.isTombstone()
                ? previousValue.get() == null ? null : previousValue.get().get(this::decodeValue)
                : computedValue.get(this::decodeValue);
        if (value != null) {
            notifyListeners(new MapDelegateEvent<>(updateType, key, value));
        }
        return value;
    }
    return computedValue.get(this::decodeValue);
}

From source file:org.onosproject.store.primitives.impl.DefaultAsyncConsistentMap.java

private Map.Entry<String, Versioned<byte[]>> reverseMapRawEntry(Map.Entry<K, Versioned<V>> e) {
    return Maps.immutableEntry(sK(e.getKey()), e.getValue().map(serializer::encode));
}

From source file:org.jooby.internal.netty.NettyServer.java

@SuppressWarnings("rawtypes")
private Map.Entry<ChannelOption, Class<?>> findOption(final String optionName) {
    try {//from w  ww .j  a  v a2  s  .  co  m
        Field field = EpollChannelOption.class.getField(optionName);
        ChannelOption option = (ChannelOption) field.get(null);
        Class optionType = (Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
        return Maps.immutableEntry(option, optionType);
    } catch (NoSuchFieldException | SecurityException | IllegalAccessException ex) {
        return null;
    }
}

From source file:org.opendaylight.controller.netconf.util.xml.XmlElement.java

/**
 * Search for element's attributes defining namespaces. Look for the one
 * namespace that matches prefix of element's text content. E.g.
 *
 * <pre>/*from w  ww  . j a  v a  2  s .  c  o  m*/
 * &lt;type
 * xmlns:th-java="urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl"&gt;th-java:threadfactory-naming&lt;/type&gt;
 * </pre>
 *
 * returns {"th-java","urn:.."}. If no prefix is matched, then default
 * namespace is returned with empty string as key. If no default namespace
 * is found value will be null.
 */
public Map.Entry<String/* prefix */, String/* namespace */> findNamespaceOfTextContent()
        throws NetconfDocumentedException {
    Map<String, String> namespaces = extractNamespaces();
    String textContent = getTextContent();
    int indexOfColon = textContent.indexOf(':');
    String prefix;
    if (indexOfColon > -1) {
        prefix = textContent.substring(0, indexOfColon);
    } else {
        prefix = DEFAULT_NAMESPACE_PREFIX;
    }
    if (!namespaces.containsKey(prefix)) {
        throw new IllegalArgumentException("Cannot find namespace for " + XmlUtil.toString(element)
                + ". Prefix from content is " + prefix + ". Found namespaces " + namespaces);
    }
    return Maps.immutableEntry(prefix, namespaces.get(prefix));
}