All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.jersey.internal.inject.ForeignDescriptorImpl Maven / Gradle / Ivy

Go to download

A bundle project producing JAX-RS RI bundles. The primary artifact is an "all-in-one" OSGi-fied JAX-RS RI bundle (jaxrs-ri.jar). Attached to that are two compressed JAX-RS RI archives. The first archive (jaxrs-ri.zip) consists of binary RI bits and contains the API jar (under "api" directory), RI libraries (under "lib" directory) as well as all external RI dependencies (under "ext" directory). The secondary archive (jaxrs-ri-src.zip) contains buildable JAX-RS RI source bundle and contains the API jar (under "api" directory), RI sources (under "src" directory) as well as all external RI dependencies (under "ext" directory). The second archive also contains "build.xml" ANT script that builds the RI sources. To build the JAX-RS RI simply unzip the archive, cd to the created jaxrs-ri directory and invoke "ant" from the command line.

There is a newer version: 3.1.6
Show newest version
/*
 * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.jersey.internal.inject;

import java.util.Objects;
import java.util.function.Consumer;

/**
 * The descriptor holder for an externally provided DI providers. Using this interface DI provider is able to provider his own
 * descriptor which can be used and returned to the DI provider in further processing.
 * 

* This is useful in the case of caching where an algorithm is able to store and subsequently provide for an injection the already * resolved descriptor of the same value. */ public class ForeignDescriptorImpl implements ForeignDescriptor { private static final Consumer NOOP_DISPOSE_INSTANCE = instance -> {}; private final Object foreignDescriptor; private final Consumer disposeInstance; /** * Constructor accepts a descriptor of the DI provider and to be able to provide it in further processing. * * @param foreignDescriptor DI provider's descriptor. */ public ForeignDescriptorImpl(Object foreignDescriptor) { this(foreignDescriptor, NOOP_DISPOSE_INSTANCE); } /** * Constructor accepts a descriptor of the DI provider and to be able to provide it in further processing along with * dispose mechanism to destroy the objects corresponding the given {@code foreign key}. * * @param foreignDescriptor DI provider's descriptor. */ public ForeignDescriptorImpl(Object foreignDescriptor, Consumer disposeInstance) { this.foreignDescriptor = foreignDescriptor; this.disposeInstance = disposeInstance; } @Override public Object get() { return foreignDescriptor; } @Override public void dispose(Object instance) { disposeInstance.accept(instance); } @Override public boolean equals(final Object o) { if (this == o) { return true; } if (!(o instanceof ForeignDescriptorImpl)) { return false; } final ForeignDescriptorImpl that = (ForeignDescriptorImpl) o; return foreignDescriptor.equals(that.foreignDescriptor); } @Override public int hashCode() { return foreignDescriptor.hashCode(); } }