Copyright (c) 2016 Alex Blewitt and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: Alex Blewitt - initial API and implementation
/****************************************************************************** * Copyright (c) 2016 Alex Blewitt and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * Alex Blewitt - initial API and implementation ******************************************************************************/
package org.eclipse.osgi.internal.loader.classpath;
Stores a pair of TitleVersionVendor package attributes for the Implementation- and Specification- entries.
/** * Stores a pair of {@link TitleVersionVendor} package attributes for the Implementation- and Specification- entries. */
class ManifestPackageAttributes {
Constant used when no titles, versions or vendors are specified for the package.
/** * Constant used when no titles, versions or vendors are specified for the package. */
static final ManifestPackageAttributes NONE = new ManifestPackageAttributes(TitleVersionVendor.NONE, TitleVersionVendor.NONE); private final TitleVersionVendor implementation; private final TitleVersionVendor specification;
Utility method to return the first version, or the second if it is null
Params:
  • first – the string to return if not null
  • second – the fallback value if the first is null
Returns:the first value, or the second value if the first is null
/** * Utility method to return the first version, or the second if it is null * @param first the string to return if not null * @param second the fallback value if the first is null * @return the first value, or the second value if the first is null */
private static String or(String first, String second) { return first == null ? second : first; }
Factory method for creating ManifestPackageAttributes. If any of the given title, version, or vendor values are null then the defaultAttributes will be used. If the defaultAttributes is null or returns all null values then null values will be used. If null values are used for all of the versions, titles, and vendors then NONE is returned.
Params:
  • specificationTitle – the package specification title
  • specificationVersion – the package specification version
  • specificationVendor – the package specification vendor
  • implementationTitle – the package implementation title
  • implementationVersion – the package implementation version
  • implementationVendor – the package implementation vendor
  • defaultAttributes – the default attributes to use when the specified title, version or vendor is null.
Returns:
/** * Factory method for creating ManifestPackageAttributes. If any of the given title, * version, or vendor values are <code>null</code> then the defaultAttributes will be * used. If the defaultAttributes is null or returns all <code>null</code> values then * <code>null</code> values will be used. If <code>null</code> values are used for all of the * versions, titles, and vendors then {@link #NONE} is returned. * @param specificationTitle the package specification title * @param specificationVersion the package specification version * @param specificationVendor the package specification vendor * @param implementationTitle the package implementation title * @param implementationVersion the package implementation version * @param implementationVendor the package implementation vendor * @param defaultAttributes the default attributes to use when the specified title, version or vendor is <code>null</code>. * @return */
static ManifestPackageAttributes of(String specificationTitle, String specificationVersion, String specificationVendor, String implementationTitle, String implementationVersion, String implementationVendor, ManifestPackageAttributes defaultAttributes) { if (defaultAttributes == null) { defaultAttributes = NONE; } return of(// or(specificationTitle, defaultAttributes.getSpecification().getTitle()), // or(specificationVersion, defaultAttributes.getSpecification().getVersion()), // or(specificationVendor, defaultAttributes.getSpecification().getVendor()), // or(implementationTitle, defaultAttributes.getImplementation().getTitle()), // or(implementationVersion, defaultAttributes.getImplementation().getVersion()), // or(implementationVendor, defaultAttributes.getImplementation().getVendor())// ); } private static ManifestPackageAttributes of(String specificationTitle, String specificationVersion, String specificationVendor, String implementationTitle, String implementationVersion, String implementationVendor) { TitleVersionVendor specification = TitleVersionVendor.of(specificationTitle, specificationVersion, specificationVendor); TitleVersionVendor implementation = TitleVersionVendor.of(implementationTitle, implementationVersion, implementationVendor); if (specification == TitleVersionVendor.NONE && implementation == TitleVersionVendor.NONE) { return NONE; } return new ManifestPackageAttributes(implementation, specification); } private ManifestPackageAttributes(TitleVersionVendor implementation, TitleVersionVendor specification) { if (implementation == null || specification == null) { throw new IllegalArgumentException(); } this.implementation = implementation; this.specification = specification; }
Returns the title, version and vendor for the package implementation.
Returns:the title, version and vendor for the package implemetnation.
/** * Returns the title, version and vendor for the package implementation. * @return the title, version and vendor for the package implemetnation. */
TitleVersionVendor getImplementation() { return implementation; }
Returns the title, version and vendor for the package specification.
Returns:the title, version and vendor for the package specification.
/** * Returns the title, version and vendor for the package specification. * @return the title, version and vendor for the package specification. */
TitleVersionVendor getSpecification() { return specification; } }