diff --git a/bundles/org.eclipse.passage.lic.agreements.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.agreements.model/META-INF/MANIFEST.MF index b2f220ec7..9c0216eee 100644 --- a/bundles/org.eclipse.passage.lic.agreements.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.agreements.model/META-INF/MANIFEST.MF @@ -1,24 +1,24 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.agreements.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.agreements.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.agreements;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.agreements.model.api, - org.eclipse.passage.lic.agreements.model.impl;x-internal:=true, - org.eclipse.passage.lic.agreements.model.meta, - org.eclipse.passage.lic.agreements.model.util, - org.eclipse.passage.lic.internal.agreements.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.lic.internal.agreements.model.util;x-internal:=true -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy - +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.agreements.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.agreements.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.agreements;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.agreements.model.api, + org.eclipse.passage.lic.agreements.model.impl;x-internal:=true, + org.eclipse.passage.lic.agreements.model.meta, + org.eclipse.passage.lic.agreements.model.util, + org.eclipse.passage.lic.internal.agreements.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.lic.internal.agreements.model.util;x-internal:=true +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy + diff --git a/bundles/org.eclipse.passage.lic.agreements.model/plugin.xml b/bundles/org.eclipse.passage.lic.agreements.model/plugin.xml index 6fe37e350..55c987fa1 100644 --- a/bundles/org.eclipse.passage.lic.agreements.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.agreements.model/plugin.xml @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/migration/AgreementsResourceHandler.java b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/migration/AgreementsResourceHandler.java index fe52ef876..8ad4e69e6 100644 --- a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/migration/AgreementsResourceHandler.java +++ b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/migration/AgreementsResourceHandler.java @@ -19,6 +19,7 @@ import org.eclipse.passage.lic.emf.migration.SimpleMigrationRoutes; import org.eclipse.passage.lic.emf.xmi.MigratingResourceHandler; +@SuppressWarnings("restriction") public final class AgreementsResourceHandler extends MigratingResourceHandler { @Override diff --git a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceFactoryImpl.java index 8087ac8ef..3094abce2 100644 --- a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceFactoryImpl.java @@ -1,26 +1,26 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.agreements.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; - -public class AgreementsResourceFactoryImpl extends ResourceFactoryImpl { - - @Override - public Resource createResource(URI uri) { - return new AgreementsResourceImpl(uri); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.agreements.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; + +public class AgreementsResourceFactoryImpl extends ResourceFactoryImpl { + + @Override + public Resource createResource(URI uri) { + return new AgreementsResourceImpl(uri); + } + +} diff --git a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceImpl.java b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceImpl.java index 5de8046f0..316ef57d2 100644 --- a/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.agreements.model/src/org/eclipse/passage/lic/internal/agreements/model/util/AgreementsResourceImpl.java @@ -1,35 +1,35 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.agreements.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.agreements.model.migration.AgreementsResourceHandler; - -public class AgreementsResourceImpl extends XMIResourceImpl { - - public AgreementsResourceImpl(URI uri) { - super(uri); - } - - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new AgreementsResourceHandler()); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.agreements.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.agreements.model.migration.AgreementsResourceHandler; + +public class AgreementsResourceImpl extends XMIResourceImpl { + + public AgreementsResourceImpl(URI uri) { + super(uri); + } + + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new AgreementsResourceHandler()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.base/META-INF/MANIFEST.MF index 4455e87a4..5cc1b78d1 100644 --- a/bundles/org.eclipse.passage.lic.base/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.base/META-INF/MANIFEST.MF @@ -1,33 +1,33 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.base -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.base;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport -Export-Package: org.eclipse.passage.lic.base, - org.eclipse.passage.lic.base.access;x-internal:=true, - org.eclipse.passage.lic.base.acquire, - org.eclipse.passage.lic.base.agreements;x-friends:="org.eclipse.passage.lic.execute", - org.eclipse.passage.lic.base.conditions, - org.eclipse.passage.lic.base.conditions.evaluation, - org.eclipse.passage.lic.base.conditions.mining, - org.eclipse.passage.lic.base.diagnostic, - org.eclipse.passage.lic.base.diagnostic.code, - org.eclipse.passage.lic.base.inspection, - org.eclipse.passage.lic.base.io, - org.eclipse.passage.lic.base.registry, - org.eclipse.passage.lic.base.requirements, - org.eclipse.passage.lic.base.restrictions, - org.eclipse.passage.lic.base.version, - org.eclipse.passage.lic.internal.base;x-friends:="org.eclipse.passage.lic.equinox.tests", - org.eclipse.passage.lic.internal.base.access;x-internal:=true, - org.eclipse.passage.lic.internal.base.access.storage;x-internal:=true, - org.eclipse.passage.lic.internal.base.conditions;x-internal:=true, - org.eclipse.passage.lic.internal.base.inspection.hardware;x-friends:="org.eclipse.passage.loc.licenses.core,org.eclipse.passage.lic.oshi", - org.eclipse.passage.lic.internal.base.requirements;x-internal:=true, - org.eclipse.passage.lic.internal.base.time;x-friends:="org.eclipse.passage.lic.base.tests" -Import-Package: org.slf4j;version="1.7.36" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.base +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.base;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport +Export-Package: org.eclipse.passage.lic.base, + org.eclipse.passage.lic.base.access;x-internal:=true, + org.eclipse.passage.lic.base.acquire, + org.eclipse.passage.lic.base.agreements;x-friends:="org.eclipse.passage.lic.execute", + org.eclipse.passage.lic.base.conditions, + org.eclipse.passage.lic.base.conditions.evaluation, + org.eclipse.passage.lic.base.conditions.mining, + org.eclipse.passage.lic.base.diagnostic, + org.eclipse.passage.lic.base.diagnostic.code, + org.eclipse.passage.lic.base.inspection, + org.eclipse.passage.lic.base.io, + org.eclipse.passage.lic.base.registry, + org.eclipse.passage.lic.base.requirements, + org.eclipse.passage.lic.base.restrictions, + org.eclipse.passage.lic.base.version, + org.eclipse.passage.lic.internal.base;x-friends:="org.eclipse.passage.lic.equinox.tests", + org.eclipse.passage.lic.internal.base.access;x-internal:=true, + org.eclipse.passage.lic.internal.base.access.storage;x-internal:=true, + org.eclipse.passage.lic.internal.base.conditions;x-internal:=true, + org.eclipse.passage.lic.internal.base.inspection.hardware;x-friends:="org.eclipse.passage.loc.licenses.core,org.eclipse.passage.lic.oshi", + org.eclipse.passage.lic.internal.base.requirements;x-internal:=true, + org.eclipse.passage.lic.internal.base.time;x-friends:="org.eclipse.passage.lic.base.tests" +Import-Package: org.slf4j;version="1.7.36" diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BasePassage.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BasePassage.java index 74b4dcd24..ba49dec79 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BasePassage.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BasePassage.java @@ -1,58 +1,58 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.base; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.Passage; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.access.GrantLockAttempt; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.internal.base.access.Access; - -/** - * @since 2.1 - */ -public final class BasePassage implements Passage { - - private final FrameworkAware delegate; - - public BasePassage(FrameworkAware delegate) { - this.delegate = delegate; - } - - @Override - public boolean canUse(String feature) { - return delegate.withFramework(framework -> new Access(framework).canUse(feature)).orElse(Boolean.FALSE); - } - - @Override - public ServiceInvocationResult assess() { - return delegate.withFrameworkService(framework -> new Access(framework).assess()); - } - - @Override - public ServiceInvocationResult acquireLicense(String feature) { - return delegate.withFrameworkService(framework -> new Access(framework).acquire(feature)); - } - - @Override - public ServiceInvocationResult releaseLicense(GrantLockAttempt lock) { - return delegate.withFrameworkService(framework -> new Access(framework).release(lock)); - } - - @Override - public ServiceInvocationResult product() { - return delegate.withFrameworkService(framework -> new BaseServiceInvocationResult<>(framework.product())); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.base; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.Passage; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.access.GrantLockAttempt; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.internal.base.access.Access; + +/** + * @since 2.1 + */ +public final class BasePassage implements Passage { + + private final FrameworkAware delegate; + + public BasePassage(FrameworkAware delegate) { + this.delegate = delegate; + } + + @Override + public boolean canUse(String feature) { + return delegate.withFramework(framework -> new Access(framework).canUse(feature)).orElse(Boolean.FALSE); + } + + @Override + public ServiceInvocationResult assess() { + return delegate.withFrameworkService(framework -> new Access(framework).assess()); + } + + @Override + public ServiceInvocationResult acquireLicense(String feature) { + return delegate.withFrameworkService(framework -> new Access(framework).acquire(feature)); + } + + @Override + public ServiceInvocationResult releaseLicense(GrantLockAttempt lock) { + return delegate.withFrameworkService(framework -> new Access(framework).release(lock)); + } + + @Override + public ServiceInvocationResult product() { + return delegate.withFrameworkService(framework -> new BaseServiceInvocationResult<>(framework.product())); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/access/Library.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/access/Library.java index 5596064b5..1914c341e 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/access/Library.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/access/Library.java @@ -1,132 +1,132 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.base.access; - -import java.nio.file.Path; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.PassageLicenseCoverage; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; -import org.eclipse.passage.lic.api.agreements.AgreementToAccept; -import org.eclipse.passage.lic.api.conditions.mining.LicenseReadingService; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.diagnostic.code.ForeignLicense; - -/** - *

- * Represent a library's licensing aspect for an owning product. - *

- *

- * Implementation must be stateless: service is to be instantiated as many times - * as it is appealed to, no caching to perform for scanned extensions. - *

- *

- * A library appeals to it's own standalone {@linkplain Framewrok} instance when - * checks license coverage for its features. Nothing to be contributed to the - * product {@code access cycle} for this scenario. - *

- *

- * However, a library should participate in - *

- * - *
    - * - *
  • 1. the owning product license coverage assessment
  • - * - *
  • 2. bulk license import (prevent end user from dealing with all the - * product-libraries relations)
  • - * - *
- * - *

- * smoothly, so it should - *

- * - *
    - * - *
  • 1.1. supply it's own assessment results when asked: {@code access()}
  • - * - *
  • 1.2. facilitate acceptance of a license agreement, in case it demands - * some for acceptance: - * {@code agreementsService(AgreementToAccept agreement)}
  • - * - *
  • 2.1. supply a {@linkplain LicenseReadingService} that will read licensing - * {@linkplain Condition}s from a license file, in case it can be treated a this - * library's license
  • - * - *
  • 2.2. provide a way to install a license (it defined to be this library's - * license) to path configured for the library as license residence: - * {@code installLicense(Path license)}.
  • - * - *
- * - */ -public interface Library extends PassageLicenseCoverage { - - /** - * Library represents its own product. - */ - LicensedProduct product(); - - /** - * Request a library to perform full license coverage assessment. - */ - @Override - ServiceInvocationResult assess(); - - /** - *

- * For a given {@code agreement} a library should perform an analysis if this - * agreement is demanded by it, and in this case supply an instance and - * {@linkplain AgreementAcceptanceService} for acceptance. - *

- *

- * If the {@code agreement} does not belong to the library, report empty result - * with bearable diagnostic of {@linkplain ForeignLicense} trouble code. - *

- */ - ServiceInvocationResult agreementsService(AgreementToAccept agreement); - - /** - * Supply license reading service configured for the library to be used for - * imported license analysis. - */ - ServiceInvocationResult licenseReadingService(); - - /** - *

- * If the given {@code license} relates to the library, it should install to the - * license residence, configured for this library's - * {@code access cycle configuration} - *

- * - *

- * If the {@code license} file does not belong to the library, report negative - * result with bearable diagnostic of {@linkplain ForeignLicense} trouble code. - *

- *

- * If the {@code license} file can be read, but was not imported for some - * reason, report negative result with severe trouble in diagnostic. - *

- *

- * In case the {@code license} has been actually installed, report positive - * result, optionally with whatever informative diagnostic. - *

- * - * @return diagnosed result of installation: whether installation of the - * {@code license} has been actually performed or not - */ - ServiceInvocationResult installLicense(Path license); - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.base.access; + +import java.nio.file.Path; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.PassageLicenseCoverage; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; +import org.eclipse.passage.lic.api.agreements.AgreementToAccept; +import org.eclipse.passage.lic.api.conditions.mining.LicenseReadingService; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.diagnostic.code.ForeignLicense; + +/** + *

+ * Represent a library's licensing aspect for an owning product. + *

+ *

+ * Implementation must be stateless: service is to be instantiated as many times + * as it is appealed to, no caching to perform for scanned extensions. + *

+ *

+ * A library appeals to it's own standalone {@linkplain Framewrok} instance when + * checks license coverage for its features. Nothing to be contributed to the + * product {@code access cycle} for this scenario. + *

+ *

+ * However, a library should participate in + *

+ * + *
    + * + *
  • 1. the owning product license coverage assessment
  • + * + *
  • 2. bulk license import (prevent end user from dealing with all the + * product-libraries relations)
  • + * + *
+ * + *

+ * smoothly, so it should + *

+ * + *
    + * + *
  • 1.1. supply it's own assessment results when asked: {@code access()}
  • + * + *
  • 1.2. facilitate acceptance of a license agreement, in case it demands + * some for acceptance: + * {@code agreementsService(AgreementToAccept agreement)}
  • + * + *
  • 2.1. supply a {@linkplain LicenseReadingService} that will read licensing + * {@linkplain Condition}s from a license file, in case it can be treated a this + * library's license
  • + * + *
  • 2.2. provide a way to install a license (it defined to be this library's + * license) to path configured for the library as license residence: + * {@code installLicense(Path license)}.
  • + * + *
+ * + */ +public interface Library extends PassageLicenseCoverage { + + /** + * Library represents its own product. + */ + LicensedProduct product(); + + /** + * Request a library to perform full license coverage assessment. + */ + @Override + ServiceInvocationResult assess(); + + /** + *

+ * For a given {@code agreement} a library should perform an analysis if this + * agreement is demanded by it, and in this case supply an instance and + * {@linkplain AgreementAcceptanceService} for acceptance. + *

+ *

+ * If the {@code agreement} does not belong to the library, report empty result + * with bearable diagnostic of {@linkplain ForeignLicense} trouble code. + *

+ */ + ServiceInvocationResult agreementsService(AgreementToAccept agreement); + + /** + * Supply license reading service configured for the library to be used for + * imported license analysis. + */ + ServiceInvocationResult licenseReadingService(); + + /** + *

+ * If the given {@code license} relates to the library, it should install to the + * license residence, configured for this library's + * {@code access cycle configuration} + *

+ * + *

+ * If the {@code license} file does not belong to the library, report negative + * result with bearable diagnostic of {@linkplain ForeignLicense} trouble code. + *

+ *

+ * If the {@code license} file can be read, but was not imported for some + * reason, report negative result with severe trouble in diagnostic. + *

+ *

+ * In case the {@code license} has been actually installed, report positive + * result, optionally with whatever informative diagnostic. + *

+ * + * @return diagnosed result of installation: whether installation of the + * {@code license} has been actually performed or not + */ + ServiceInvocationResult installLicense(Path license); + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Access.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Access.java index b8457f078..a4bf0f924 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Access.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Access.java @@ -1,87 +1,87 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.access.GrantLockAttempt; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; -import org.eclipse.passage.lic.base.diagnostic.SumOfDiagnostics; -import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; -import org.eclipse.passage.lic.base.restrictions.CertificateIsRestrictive; - -/** - * Top-level access cycle - * - * @since 2.1 - */ -public final class Access { - - private final Framework framework; - - public Access(Framework framework) { - this.framework = framework; - } - - public boolean canUse(String feature) { - return new Allow(framework, feature).apply(); - } - - public ServiceInvocationResult assess() { - return new Assess(framework).apply(); - } - - public ServiceInvocationResult acquire(String feature) { - ServiceInvocationResult certificate = new Assess(framework, feature).apply(); - if (new CertificateIsRestrictive().test(certificate.data())) { - return failOnAccess(certificate); - } - if (empty(certificate.data().get())) { - return unknownFeature(feature, certificate.diagnostic()); - } - ServiceInvocationResult lock = new Lock(framework).lock(certificate.data().get()); - return new BaseServiceInvocationResult<>(// - new SumOfDiagnostics().apply(certificate.diagnostic(), lock.diagnostic()), // - lock.data()); - } - - public ServiceInvocationResult release(GrantLockAttempt lock) { - return new Lock(framework).unlock(lock); - } - - private ServiceInvocationResult failOnAccess( - ServiceInvocationResult assessment) { - if (assessment.data().isPresent()) { - return new BaseServiceInvocationResult<>(assessment.diagnostic(), - new BaseGrantLockAttempt.Failed(assessment.data().get())); - } - return new BaseServiceInvocationResult<>(assessment.diagnostic()); - } - - private ServiceInvocationResult unknownFeature(String feature, Diagnostic diagnostic) { - return new BaseServiceInvocationResult<>(// - new SumOfDiagnostics().apply(// - diagnostic, // - new BaseDiagnostic(new Trouble(new NoRequirements(), feature))// - )); - } - - private boolean empty(ExaminationCertificate certificate) { - return certificate.restrictions().isEmpty() && certificate.satisfied().isEmpty(); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.access.GrantLockAttempt; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; +import org.eclipse.passage.lic.base.diagnostic.SumOfDiagnostics; +import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; +import org.eclipse.passage.lic.base.restrictions.CertificateIsRestrictive; + +/** + * Top-level access cycle + * + * @since 2.1 + */ +public final class Access { + + private final Framework framework; + + public Access(Framework framework) { + this.framework = framework; + } + + public boolean canUse(String feature) { + return new Allow(framework, feature).apply(); + } + + public ServiceInvocationResult assess() { + return new Assess(framework).apply(); + } + + public ServiceInvocationResult acquire(String feature) { + ServiceInvocationResult certificate = new Assess(framework, feature).apply(); + if (new CertificateIsRestrictive().test(certificate.data())) { + return failOnAccess(certificate); + } + if (empty(certificate.data().get())) { + return unknownFeature(feature, certificate.diagnostic()); + } + ServiceInvocationResult lock = new Lock(framework).lock(certificate.data().get()); + return new BaseServiceInvocationResult<>(// + new SumOfDiagnostics().apply(certificate.diagnostic(), lock.diagnostic()), // + lock.data()); + } + + public ServiceInvocationResult release(GrantLockAttempt lock) { + return new Lock(framework).unlock(lock); + } + + private ServiceInvocationResult failOnAccess( + ServiceInvocationResult assessment) { + if (assessment.data().isPresent()) { + return new BaseServiceInvocationResult<>(assessment.diagnostic(), + new BaseGrantLockAttempt.Failed(assessment.data().get())); + } + return new BaseServiceInvocationResult<>(assessment.diagnostic()); + } + + private ServiceInvocationResult unknownFeature(String feature, Diagnostic diagnostic) { + return new BaseServiceInvocationResult<>(// + new SumOfDiagnostics().apply(// + diagnostic, // + new BaseDiagnostic(new Trouble(new NoRequirements(), feature))// + )); + } + + private boolean empty(ExaminationCertificate certificate) { + return certificate.restrictions().isEmpty() && certificate.satisfied().isEmpty(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Allow.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Allow.java index 175ebb47e..b954dcd7a 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Allow.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Allow.java @@ -1,43 +1,43 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; -import org.eclipse.passage.lic.base.restrictions.NoSevereRestrictions; - -final class Allow extends Cycle { - - Allow(Framework framework, String feature) { - super(framework, feature); - } - - @Override - protected Boolean stopOnError(Diagnostic diagnostic) { - return false; - } - - @Override - protected Boolean stopOnCertificate(ExaminationCertificate certificate, Diagnostic diagnostic) { - return new NoSevereErrors().test(diagnostic) && // - new NoSevereRestrictions().test(certificate); - } - - @Override - protected Boolean freeWayOut() { - return true; - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; +import org.eclipse.passage.lic.base.restrictions.NoSevereRestrictions; + +final class Allow extends Cycle { + + Allow(Framework framework, String feature) { + super(framework, feature); + } + + @Override + protected Boolean stopOnError(Diagnostic diagnostic) { + return false; + } + + @Override + protected Boolean stopOnCertificate(ExaminationCertificate certificate, Diagnostic diagnostic) { + return new NoSevereErrors().test(diagnostic) && // + new NoSevereRestrictions().test(certificate); + } + + @Override + protected Boolean freeWayOut() { + return true; + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Assess.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Assess.java index e8d3502b6..aeea5209c 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Assess.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Assess.java @@ -1,63 +1,63 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Collections; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; - -final class Assess extends Cycle> { - - Assess(Framework framework, String feature) { - super(framework, feature); - } - - Assess(Framework framework) { - super(framework); - } - - @Override - protected ServiceInvocationResult stopOnError(Diagnostic diagnostic) { - return new BaseServiceInvocationResult(diagnostic); - } - - @Override - protected ServiceInvocationResult stopOnCertificate(ExaminationCertificate certificate, - Diagnostic diagnostic) { - if (feature().isPresent()) { - return acquire(certificate, diagnostic); - } - return new BaseServiceInvocationResult(diagnostic, certificate); - } - - @Override - protected ServiceInvocationResult freeWayOut() { - return new BaseServiceInvocationResult(// - new BaseExaminationCertificate(// - Collections.emptyMap(), // - Collections.emptySet())); - } - - private ServiceInvocationResult acquire(ExaminationCertificate certificate, - Diagnostic diagnostic) { - - // TODO: YTBD - return new BaseServiceInvocationResult(diagnostic, certificate); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Collections; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; + +final class Assess extends Cycle> { + + Assess(Framework framework, String feature) { + super(framework, feature); + } + + Assess(Framework framework) { + super(framework); + } + + @Override + protected ServiceInvocationResult stopOnError(Diagnostic diagnostic) { + return new BaseServiceInvocationResult(diagnostic); + } + + @Override + protected ServiceInvocationResult stopOnCertificate(ExaminationCertificate certificate, + Diagnostic diagnostic) { + if (feature().isPresent()) { + return acquire(certificate, diagnostic); + } + return new BaseServiceInvocationResult(diagnostic, certificate); + } + + @Override + protected ServiceInvocationResult freeWayOut() { + return new BaseServiceInvocationResult(// + new BaseExaminationCertificate(// + Collections.emptyMap(), // + Collections.emptySet())); + } + + private ServiceInvocationResult acquire(ExaminationCertificate certificate, + Diagnostic diagnostic) { + + // TODO: YTBD + return new BaseServiceInvocationResult(diagnostic, certificate); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/BaseGrantLockAttempt.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/BaseGrantLockAttempt.java index 076ae8862..8baa33ff7 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/BaseGrantLockAttempt.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/BaseGrantLockAttempt.java @@ -1,75 +1,75 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Objects; - -import org.eclipse.passage.lic.api.access.GrantLockAttempt; -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; - -abstract class BaseGrantLockAttempt implements GrantLockAttempt { - - private final ExaminationCertificate certificate; - - protected BaseGrantLockAttempt(ExaminationCertificate certificate) { - Objects.requireNonNull(certificate, "BaseGrantLock::certificate"); //$NON-NLS-1$ - this.certificate = certificate; - } - - @Override - public ExaminationCertificate certificate() { - return certificate; - } - - final static class Successful extends BaseGrantLockAttempt { - - private final GrantAcquisition grant; - - Successful(ExaminationCertificate certificate, GrantAcquisition grant) { - super(certificate); - Objects.requireNonNull(grant, "BaseGrantLock::grant"); //$NON-NLS-1$ - this.grant = grant; - } - - @Override - public boolean successful() { - return true; - } - - @Override - public GrantAcquisition grant() { - return grant; - } - - } - - final static class Failed extends BaseGrantLockAttempt { - - protected Failed(ExaminationCertificate certificate) { - super(certificate); - } - - @Override - public boolean successful() { - return false; - } - - @Override - public GrantAcquisition grant() { - throw new IllegalStateException("Failed lock is not supposed to supply grant"); //$NON-NLS-1$ - } - - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Objects; + +import org.eclipse.passage.lic.api.access.GrantLockAttempt; +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; + +abstract class BaseGrantLockAttempt implements GrantLockAttempt { + + private final ExaminationCertificate certificate; + + protected BaseGrantLockAttempt(ExaminationCertificate certificate) { + Objects.requireNonNull(certificate, "BaseGrantLock::certificate"); //$NON-NLS-1$ + this.certificate = certificate; + } + + @Override + public ExaminationCertificate certificate() { + return certificate; + } + + final static class Successful extends BaseGrantLockAttempt { + + private final GrantAcquisition grant; + + Successful(ExaminationCertificate certificate, GrantAcquisition grant) { + super(certificate); + Objects.requireNonNull(grant, "BaseGrantLock::grant"); //$NON-NLS-1$ + this.grant = grant; + } + + @Override + public boolean successful() { + return true; + } + + @Override + public GrantAcquisition grant() { + return grant; + } + + } + + final static class Failed extends BaseGrantLockAttempt { + + protected Failed(ExaminationCertificate certificate) { + super(certificate); + } + + @Override + public boolean successful() { + return false; + } + + @Override + public GrantAcquisition grant() { + throw new IllegalStateException("Failed lock is not supposed to supply grant"); //$NON-NLS-1$ + } + + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Conditions.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Conditions.java index 98714ad15..cc25cf156 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Conditions.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Conditions.java @@ -1,80 +1,80 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Collection; -import java.util.Collections; -import java.util.Objects; -import java.util.function.Function; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.conditions.ConditionMiningTarget; -import org.eclipse.passage.lic.api.conditions.ConditionPack; -import org.eclipse.passage.lic.api.conditions.mining.MinedConditions; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.registry.Registry; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.SumOfCollections; -import org.eclipse.passage.lic.base.conditions.ConditionsFeatureFilter; -import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; -import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; - -/** - * @since 2.1 - */ -final class Conditions implements Supplier>> { - - private final Registry registry; - private final LicensedProduct product; - private final Function>, // - ServiceInvocationResult>> filter; - - public Conditions(Registry registry, LicensedProduct product, - String feature) { - this(registry, product, new ConditionsFeatureFilter(feature).get()); - } - - public Conditions(Registry registry, LicensedProduct product) { - this(registry, product, Function.identity()); - } - - public Conditions(Registry registry, LicensedProduct product, - Function>, ServiceInvocationResult>> filter) { - Objects.requireNonNull(registry, "Conditions::registry"); //$NON-NLS-1$ - Objects.requireNonNull(product, "Conditions::product"); //$NON-NLS-1$ - Objects.requireNonNull(filter, "Conditions::filter"); //$NON-NLS-1$ - this.registry = registry; - this.product = product; - this.filter = filter; - } - - @Override - public ServiceInvocationResult> get() { - if (registry.services().isEmpty()) { - return new BaseServiceInvocationResult>(// - new Trouble(// - new NoServicesOfType(AccessCycleMessages.getString("Conditions.servive_type")), // //$NON-NLS-1$ - AccessCycleMessages.getString("Conditions.no_miners"))); //$NON-NLS-1$ - } - return registry.services().stream() // - .map(miner -> miner.all(product)) // - .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// - .map(filter) // - .orElse(new BaseServiceInvocationResult<>(Collections.emptyList())); - - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Collection; +import java.util.Collections; +import java.util.Objects; +import java.util.function.Function; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.conditions.ConditionMiningTarget; +import org.eclipse.passage.lic.api.conditions.ConditionPack; +import org.eclipse.passage.lic.api.conditions.mining.MinedConditions; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.registry.Registry; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.SumOfCollections; +import org.eclipse.passage.lic.base.conditions.ConditionsFeatureFilter; +import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; +import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; + +/** + * @since 2.1 + */ +final class Conditions implements Supplier>> { + + private final Registry registry; + private final LicensedProduct product; + private final Function>, // + ServiceInvocationResult>> filter; + + public Conditions(Registry registry, LicensedProduct product, + String feature) { + this(registry, product, new ConditionsFeatureFilter(feature).get()); + } + + public Conditions(Registry registry, LicensedProduct product) { + this(registry, product, Function.identity()); + } + + public Conditions(Registry registry, LicensedProduct product, + Function>, ServiceInvocationResult>> filter) { + Objects.requireNonNull(registry, "Conditions::registry"); //$NON-NLS-1$ + Objects.requireNonNull(product, "Conditions::product"); //$NON-NLS-1$ + Objects.requireNonNull(filter, "Conditions::filter"); //$NON-NLS-1$ + this.registry = registry; + this.product = product; + this.filter = filter; + } + + @Override + public ServiceInvocationResult> get() { + if (registry.services().isEmpty()) { + return new BaseServiceInvocationResult>(// + new Trouble(// + new NoServicesOfType(AccessCycleMessages.getString("Conditions.servive_type")), // //$NON-NLS-1$ + AccessCycleMessages.getString("Conditions.no_miners"))); //$NON-NLS-1$ + } + return registry.services().stream() // + .map(miner -> miner.all(product)) // + .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// + .map(filter) // + .orElse(new BaseServiceInvocationResult<>(Collections.emptyList())); + + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Cycle.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Cycle.java index c63b42e33..ee648e42c 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Cycle.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Cycle.java @@ -1,164 +1,164 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.conditions.ConditionPack; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; -import org.eclipse.passage.lic.base.diagnostic.SumOfDiagnostics; -import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; - -abstract class Cycle { - - private final Framework framework; - private final CycleFilter filter; - private final List diagnostics; - private final Optional feature; - - Cycle(Framework framework) { - this(framework, new CycleFilter(), Optional.empty()); - } - - Cycle(Framework framework, String feature) { - this(framework, new CycleFilter(feature), Optional.of(feature)); - } - - private Cycle(Framework framework, CycleFilter filter, Optional feature) { - Objects.requireNonNull(framework, "Cycle::framework"); //$NON-NLS-1$ - Objects.requireNonNull(filter, "Cycle::filter"); //$NON-NLS-1$ - this.framework = framework; - this.filter = filter; - this.diagnostics = new ArrayList<>(); - this.feature = feature; - } - - T apply() { - return examine(this::requirements, this::permissions); - } - - protected Optional feature() { - return feature; - } - - private T examine(Supplier>> requirements, // - Supplier> permissions) { - ServiceInvocationResult> reqs = requirements.get(); - if (failed(reqs)) { - return stop(); - } - if (empty(reqs)) { - // no requirements means no restrictions anyway, which is always green light, - // we just want to avoid heavy operations below - return freeWayOut(); - } - ServiceInvocationResult perms = permissions.get(); - if (failed(perms)) { - return stop(); - } - ServiceInvocationResult examination = // - restrictions(reqs.data().get(), perms.data().get()); - if (failed(examination)) { - return stop(); - } - return stop(examination.data().get()); - } - - private T stop() { - return stopOnError(diagnostic()); - } - - private T stop(ExaminationCertificate certificate) { - return stopOnCertificate(certificate, diagnostic()); - } - - /** - * Severe error cannot be fixed by new data (say, imported license). It must - * cause unavoidable denial, but for user's sake we'd like to expose the state - * of affairs to support one with the failure reason information. - */ - protected abstract T stopOnError(Diagnostic diagnostic); - - /** - * We successfully made it to and through the examination, and even have got a - * certificate! - */ - protected abstract T stopOnCertificate(ExaminationCertificate certificate, Diagnostic diagnostic); - - protected abstract T freeWayOut(); - - private Diagnostic diagnostic() { - return diagnostics.stream().reduce(new BaseDiagnostic(), new SumOfDiagnostics()); - } - - private boolean failed(ServiceInvocationResult result) { - return !result.diagnostic().severe().isEmpty(); - } - - private boolean empty(ServiceInvocationResult> collection) { - return collection.data().map(Collection::isEmpty).orElse(true); - } - - private ServiceInvocationResult scan(ServiceInvocationResult result) { - diagnostics.add(result.diagnostic()); - return result; - } - - private ServiceInvocationResult> requirements() { - return scan(new Requirements(// - framework.accessCycleConfiguration().requirementResolvers().get(), // - filter.requiremental(), // - feature// - ).get()); - } - - private ServiceInvocationResult> conditions() { - return scan(new Conditions(// - framework.accessCycleConfiguration().conditionMiners().get(), // - framework.product(), // - filter.conditional()).get()); - } - - private ServiceInvocationResult permissions() { - ServiceInvocationResult> conditions = conditions(); - if (failed(conditions) || empty(conditions)) { - return new BaseServiceInvocationResult(conditions.diagnostic(), new AppliedLicenses()); - } - return scan(new Permissions(// - framework.accessCycleConfiguration().permissionEmitters().get(), // - conditions.data().get(), // - framework.product()).get()); - } - - private ServiceInvocationResult restrictions(Collection requirements, - AppliedLicenses permissions) { - return scan(new Restrictions(// - framework.product(), // - framework.accessCycleConfiguration().examinators().get(), // - framework.accessCycleConfiguration().acceptance(), // - requirements, // - permissions).get()); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.conditions.ConditionPack; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; +import org.eclipse.passage.lic.base.diagnostic.SumOfDiagnostics; +import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; + +abstract class Cycle { + + private final Framework framework; + private final CycleFilter filter; + private final List diagnostics; + private final Optional feature; + + Cycle(Framework framework) { + this(framework, new CycleFilter(), Optional.empty()); + } + + Cycle(Framework framework, String feature) { + this(framework, new CycleFilter(feature), Optional.of(feature)); + } + + private Cycle(Framework framework, CycleFilter filter, Optional feature) { + Objects.requireNonNull(framework, "Cycle::framework"); //$NON-NLS-1$ + Objects.requireNonNull(filter, "Cycle::filter"); //$NON-NLS-1$ + this.framework = framework; + this.filter = filter; + this.diagnostics = new ArrayList<>(); + this.feature = feature; + } + + T apply() { + return examine(this::requirements, this::permissions); + } + + protected Optional feature() { + return feature; + } + + private T examine(Supplier>> requirements, // + Supplier> permissions) { + ServiceInvocationResult> reqs = requirements.get(); + if (failed(reqs)) { + return stop(); + } + if (empty(reqs)) { + // no requirements means no restrictions anyway, which is always green light, + // we just want to avoid heavy operations below + return freeWayOut(); + } + ServiceInvocationResult perms = permissions.get(); + if (failed(perms)) { + return stop(); + } + ServiceInvocationResult examination = // + restrictions(reqs.data().get(), perms.data().get()); + if (failed(examination)) { + return stop(); + } + return stop(examination.data().get()); + } + + private T stop() { + return stopOnError(diagnostic()); + } + + private T stop(ExaminationCertificate certificate) { + return stopOnCertificate(certificate, diagnostic()); + } + + /** + * Severe error cannot be fixed by new data (say, imported license). It must + * cause unavoidable denial, but for user's sake we'd like to expose the state + * of affairs to support one with the failure reason information. + */ + protected abstract T stopOnError(Diagnostic diagnostic); + + /** + * We successfully made it to and through the examination, and even have got a + * certificate! + */ + protected abstract T stopOnCertificate(ExaminationCertificate certificate, Diagnostic diagnostic); + + protected abstract T freeWayOut(); + + private Diagnostic diagnostic() { + return diagnostics.stream().reduce(new BaseDiagnostic(), new SumOfDiagnostics()); + } + + private boolean failed(ServiceInvocationResult result) { + return !result.diagnostic().severe().isEmpty(); + } + + private boolean empty(ServiceInvocationResult> collection) { + return collection.data().map(Collection::isEmpty).orElse(true); + } + + private ServiceInvocationResult scan(ServiceInvocationResult result) { + diagnostics.add(result.diagnostic()); + return result; + } + + private ServiceInvocationResult> requirements() { + return scan(new Requirements(// + framework.accessCycleConfiguration().requirementResolvers().get(), // + filter.requiremental(), // + feature// + ).get()); + } + + private ServiceInvocationResult> conditions() { + return scan(new Conditions(// + framework.accessCycleConfiguration().conditionMiners().get(), // + framework.product(), // + filter.conditional()).get()); + } + + private ServiceInvocationResult permissions() { + ServiceInvocationResult> conditions = conditions(); + if (failed(conditions) || empty(conditions)) { + return new BaseServiceInvocationResult(conditions.diagnostic(), new AppliedLicenses()); + } + return scan(new Permissions(// + framework.accessCycleConfiguration().permissionEmitters().get(), // + conditions.data().get(), // + framework.product()).get()); + } + + private ServiceInvocationResult restrictions(Collection requirements, + AppliedLicenses permissions) { + return scan(new Restrictions(// + framework.product(), // + framework.accessCycleConfiguration().examinators().get(), // + framework.accessCycleConfiguration().acceptance(), // + requirements, // + permissions).get()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/CycleFilter.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/CycleFilter.java index ef38ba990..ae8a09b91 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/CycleFilter.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/CycleFilter.java @@ -1,56 +1,56 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Collection; -import java.util.function.Function; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.conditions.ConditionPack; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.base.conditions.ConditionsFeatureFilter; -import org.eclipse.passage.lic.base.requirements.RequirementsFeatureFilter; - -final class CycleFilter { - - private final Function>, // - ServiceInvocationResult>> requiremental; - private final Function>, // - ServiceInvocationResult>> conditional; - - CycleFilter() { - this(Function.identity(), Function.identity()); - } - - CycleFilter(String feature) { - this(new RequirementsFeatureFilter(feature).get(), new ConditionsFeatureFilter(feature).get()); - } - - private CycleFilter( - Function>, ServiceInvocationResult>> requiremental, - Function>, ServiceInvocationResult>> conditional) { - this.requiremental = requiremental; - this.conditional = conditional; - } - - Function>, ServiceInvocationResult>> requiremental() { - return requiremental; - } - - Function>, ServiceInvocationResult>> conditional() { - return conditional; - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Collection; +import java.util.function.Function; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.conditions.ConditionPack; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.base.conditions.ConditionsFeatureFilter; +import org.eclipse.passage.lic.base.requirements.RequirementsFeatureFilter; + +final class CycleFilter { + + private final Function>, // + ServiceInvocationResult>> requiremental; + private final Function>, // + ServiceInvocationResult>> conditional; + + CycleFilter() { + this(Function.identity(), Function.identity()); + } + + CycleFilter(String feature) { + this(new RequirementsFeatureFilter(feature).get(), new ConditionsFeatureFilter(feature).get()); + } + + private CycleFilter( + Function>, ServiceInvocationResult>> requiremental, + Function>, ServiceInvocationResult>> conditional) { + this.requiremental = requiremental; + this.conditional = conditional; + } + + Function>, ServiceInvocationResult>> requiremental() { + return requiremental; + } + + Function>, ServiceInvocationResult>> conditional() { + return conditional; + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Libraries.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Libraries.java index e7faf36a8..cc023b261 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Libraries.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Libraries.java @@ -1,101 +1,101 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.function.BinaryOperator; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; -import org.eclipse.passage.lic.api.agreements.AgreementToAccept; -import org.eclipse.passage.lic.api.conditions.mining.LicenseReadingService; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult.Sum; -import org.eclipse.passage.lic.base.access.Library; -import org.eclipse.passage.lic.base.diagnostic.SumOfLists; - -/** - * Set of libraries registered for the the product - * - * @see Library - */ -public final class Libraries { - - private final List libraries; - private final Supplier owner; - - public Libraries(Supplier> libraries, Supplier owner) { - this(libraries.get(), owner); - } - - public Libraries(List libraries, Supplier owner) { - this.libraries = libraries; - this.owner = owner; - } - - public boolean empty() { - return libraries.isEmpty(); - } - - public LicensedProduct product() { - return owner.get(); - } - - public Optional> assess() { - return libraries.stream()// - .map(Library::assess).reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCertificates())); - } - - public Optional>> agreementsServices( - AgreementToAccept agreement) { - return libraries.stream()// - .map(library -> library.agreementsService(agreement))// - .map(this::enlisted)// - .reduce(sum()); - } - - public Optional>> licenseReadingServices() { - return libraries.stream()// - .map(Library::licenseReadingService)// - .map(this::enlisted)// - .reduce(sum()); - } - - public Optional> installLicense(Path license) throws IOException { - return libraries.stream()// - .map(library -> library.installLicense(license))// - .reduce(new Sum(or())); - } - - private ServiceInvocationResult> enlisted(ServiceInvocationResult origin) { - List data = origin.data().isPresent() ? Arrays.asList(origin.data().get()) : Collections.emptyList(); - return new BaseServiceInvocationResult>(origin.diagnostic(), data); - } - - private Sum> sum() { - return new Sum>(new SumOfLists()); - } - - private BinaryOperator or() { - return (first, second) -> first || second; - } - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.function.BinaryOperator; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; +import org.eclipse.passage.lic.api.agreements.AgreementToAccept; +import org.eclipse.passage.lic.api.conditions.mining.LicenseReadingService; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult.Sum; +import org.eclipse.passage.lic.base.access.Library; +import org.eclipse.passage.lic.base.diagnostic.SumOfLists; + +/** + * Set of libraries registered for the the product + * + * @see Library + */ +public final class Libraries { + + private final List libraries; + private final Supplier owner; + + public Libraries(Supplier> libraries, Supplier owner) { + this(libraries.get(), owner); + } + + public Libraries(List libraries, Supplier owner) { + this.libraries = libraries; + this.owner = owner; + } + + public boolean empty() { + return libraries.isEmpty(); + } + + public LicensedProduct product() { + return owner.get(); + } + + public Optional> assess() { + return libraries.stream()// + .map(Library::assess).reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCertificates())); + } + + public Optional>> agreementsServices( + AgreementToAccept agreement) { + return libraries.stream()// + .map(library -> library.agreementsService(agreement))// + .map(this::enlisted)// + .reduce(sum()); + } + + public Optional>> licenseReadingServices() { + return libraries.stream()// + .map(Library::licenseReadingService)// + .map(this::enlisted)// + .reduce(sum()); + } + + public Optional> installLicense(Path license) throws IOException { + return libraries.stream()// + .map(library -> library.installLicense(license))// + .reduce(new Sum(or())); + } + + private ServiceInvocationResult> enlisted(ServiceInvocationResult origin) { + List data = origin.data().isPresent() ? Arrays.asList(origin.data().get()) : Collections.emptyList(); + return new BaseServiceInvocationResult>(origin.diagnostic(), data); + } + + private Sum> sum() { + return new Sum>(new SumOfLists()); + } + + private BinaryOperator or() { + return (first, second) -> first || second; + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Lock.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Lock.java index bdd405fae..a94111fb8 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Lock.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Lock.java @@ -1,199 +1,199 @@ -/******************************************************************************* - * Copyright (c) 2020, 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Collections; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.access.GrantLockAttempt; -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.eclipse.passage.lic.api.acquire.GrantsTraceService; -import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionService; -import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; -import org.eclipse.passage.lic.api.conditions.ConditionMiningTarget; -import org.eclipse.passage.lic.api.conditions.evaluation.Permission; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.api.restrictions.Restriction; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; -import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; -import org.eclipse.passage.lic.base.diagnostic.code.ServiceFailedOnMorsel; -import org.eclipse.passage.lic.base.diagnostic.code.TentativeAccess; -import org.eclipse.passage.lic.base.restrictions.CertificateIsRestrictive; -import org.eclipse.passage.lic.base.restrictions.RequirementDemandsExecutionStop; -import org.eclipse.passage.lic.internal.base.access.storage.GrantReleased; -import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; - -final class Lock { - - private final LicenseAcquisitionServicesRegistry acquirers; - private final GrantsTraceService traces; - - Lock(LicenseAcquisitionServicesRegistry acquirers, GrantsTraceService traces) { - this.acquirers = acquirers; - this.traces = traces; - } - - Lock(Framework framework) { - this(framework.accessCycleConfiguration().acquirers(), framework.accessCycleConfiguration().grantsTrace()); - } - - /** - * Appeals to a LicenseAcquisitionService in order to lock an actual grant for a - * requested feature - * - * @param valid, positive, not-restrictive certificate - * @see ExaminationCertificate - * @see CertificateIsRestrictive - * @see LicenseAcquisitionService - */ - ServiceInvocationResult lock(ExaminationCertificate certificate) { - if (notPermissive(certificate)) { - return tentativeGrant(certificate); - } - Permission permission = permission(certificate); - ConditionMiningTarget target = permission.conditionOrigin().miner(); - if (!acquirers.get().hasService(target)) { - return noService(new BaseGrantLockAttempt.Failed(certificate), target); - } - ServiceInvocationResult grant = acquirers.get().service(target)// - .acquire(permission.product(), permission.condition().feature()); - if (!grant.data().isPresent()) { - return canIssueTentativeGrant(certificate) // - ? tentativeGrant(certificate) // - : noGrant(certificate, grant); - } - traces.trace(grant.data().get()); - return grant(certificate, grant.data().get(), grant.diagnostic()); - } - - ServiceInvocationResult unlock(GrantLockAttempt lock) { - if (!lock.successful()) { - return wrongLockWarning(); // It's illegal state actually. Should we throw something? - } - if (new TentativeFeatureAccess().test(lock.grant())) { - return new BaseServiceInvocationResult<>(Boolean.TRUE); - } - Permission permission = permission(lock.certificate()); - ConditionMiningTarget target = permission.conditionOrigin().miner(); - if (!acquirers.get().hasService(target)) { - return noService(Boolean.FALSE, target); - } - ServiceInvocationResult response = acquirers.get().service(target)// - .release(permission.product(), lock.grant()); - if (new GrantReleased().test(response)) { - traces.forget(lock.grant()); - } - return response; - } - - private BaseServiceInvocationResult noGrant(ExaminationCertificate certificate, - ServiceInvocationResult grant) { - return new BaseServiceInvocationResult<>(// - grant.diagnostic(), // - new BaseGrantLockAttempt.Failed(certificate)); - } - - private ServiceInvocationResult grant(ExaminationCertificate certificate, GrantAcquisition grant, - Diagnostic diagnostic) { - return new BaseServiceInvocationResult<>(// - diagnostic, // - new BaseGrantLockAttempt.Successful(certificate, grant)); - } - - private ServiceInvocationResult wrongLockWarning() { - return new BaseServiceInvocationResult<>(fail("Lock.wrong_release")); //$NON-NLS-1$ - } - - private BaseDiagnostic fail(String details) { - return new BaseDiagnostic(// - Collections.emptyList(), // - Collections.singletonList(// - new Trouble(// - new ServiceFailedOnMorsel(), // - AccessCycleMessages.getString(details)))); - } - - private ServiceInvocationResult noService(T data, ConditionMiningTarget target) { - return new BaseServiceInvocationResult(// - new BaseDiagnostic(new Trouble(// - new NoServicesOfType(AccessCycleMessages.getString("Lock.service_type")), //$NON-NLS-1$ - String.format(// - AccessCycleMessages.getString("Lock.no_service_for_target"), //$NON-NLS-1$ - target.toString())// - )), // - data); - } - - /** - * {@code Warning} and {@code Info} {@code requirement}s can stay unsatisfied - * and still a feature must be accessible for usage - */ - private boolean notPermissive(ExaminationCertificate certificate) { - return certificate.satisfied().isEmpty(); - } - - /** - * Certificate must be permissive: must contain at least one properly satisfied - * requirement // #569004 - */ - private Permission permission(ExaminationCertificate certificate) { - Requirement any = certificate.satisfied().iterator().next(); // guaranteed to exist - return certificate.satisfaction(any); // guaranteed to exist and be not null - } - - private ServiceInvocationResult tentativeGrant(ExaminationCertificate certificate) { - return grant(certificate, new TentativeFeatureAccess(feature(certificate)).get(), tentativeReport(certificate)); - } - - private Diagnostic tentativeReport(ExaminationCertificate certificate) { - return new BaseDiagnostic(// - Collections.emptyList(), // - certificate.restrictions().stream()// - .map(this::explained)// - .collect(Collectors.toList())); - } - - private Trouble explained(Restriction restriction) { - return new Trouble(new TentativeAccess(), // - String.format(// - AccessCycleMessages.getString("Lock.temp_access"), //$NON-NLS-1$ - feature(restriction.unsatisfiedRequirement()))); - } - - /** - * Certificate is guaranteed to be not empty: either restrictions or - * satisfactions are present - */ - private String feature(ExaminationCertificate certificate) { - return feature(// - certificate.restrictions().isEmpty() // - ? certificate.satisfied().iterator().next()// - : certificate.restrictions().iterator().next().unsatisfiedRequirement()// - ); - } - - private String feature(Requirement requirement) { - return requirement.feature().identifier(); - } - - private boolean canIssueTentativeGrant(ExaminationCertificate certificate) { - return certificate.satisfied().stream().noneMatch(new RequirementDemandsExecutionStop()); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Collections; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.access.GrantLockAttempt; +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.eclipse.passage.lic.api.acquire.GrantsTraceService; +import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionService; +import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; +import org.eclipse.passage.lic.api.conditions.ConditionMiningTarget; +import org.eclipse.passage.lic.api.conditions.evaluation.Permission; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.api.restrictions.Restriction; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; +import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; +import org.eclipse.passage.lic.base.diagnostic.code.ServiceFailedOnMorsel; +import org.eclipse.passage.lic.base.diagnostic.code.TentativeAccess; +import org.eclipse.passage.lic.base.restrictions.CertificateIsRestrictive; +import org.eclipse.passage.lic.base.restrictions.RequirementDemandsExecutionStop; +import org.eclipse.passage.lic.internal.base.access.storage.GrantReleased; +import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; + +final class Lock { + + private final LicenseAcquisitionServicesRegistry acquirers; + private final GrantsTraceService traces; + + Lock(LicenseAcquisitionServicesRegistry acquirers, GrantsTraceService traces) { + this.acquirers = acquirers; + this.traces = traces; + } + + Lock(Framework framework) { + this(framework.accessCycleConfiguration().acquirers(), framework.accessCycleConfiguration().grantsTrace()); + } + + /** + * Appeals to a LicenseAcquisitionService in order to lock an actual grant for a + * requested feature + * + * @param valid, positive, not-restrictive certificate + * @see ExaminationCertificate + * @see CertificateIsRestrictive + * @see LicenseAcquisitionService + */ + ServiceInvocationResult lock(ExaminationCertificate certificate) { + if (notPermissive(certificate)) { + return tentativeGrant(certificate); + } + Permission permission = permission(certificate); + ConditionMiningTarget target = permission.conditionOrigin().miner(); + if (!acquirers.get().hasService(target)) { + return noService(new BaseGrantLockAttempt.Failed(certificate), target); + } + ServiceInvocationResult grant = acquirers.get().service(target)// + .acquire(permission.product(), permission.condition().feature()); + if (!grant.data().isPresent()) { + return canIssueTentativeGrant(certificate) // + ? tentativeGrant(certificate) // + : noGrant(certificate, grant); + } + traces.trace(grant.data().get()); + return grant(certificate, grant.data().get(), grant.diagnostic()); + } + + ServiceInvocationResult unlock(GrantLockAttempt lock) { + if (!lock.successful()) { + return wrongLockWarning(); // It's illegal state actually. Should we throw something? + } + if (new TentativeFeatureAccess().test(lock.grant())) { + return new BaseServiceInvocationResult<>(Boolean.TRUE); + } + Permission permission = permission(lock.certificate()); + ConditionMiningTarget target = permission.conditionOrigin().miner(); + if (!acquirers.get().hasService(target)) { + return noService(Boolean.FALSE, target); + } + ServiceInvocationResult response = acquirers.get().service(target)// + .release(permission.product(), lock.grant()); + if (new GrantReleased().test(response)) { + traces.forget(lock.grant()); + } + return response; + } + + private BaseServiceInvocationResult noGrant(ExaminationCertificate certificate, + ServiceInvocationResult grant) { + return new BaseServiceInvocationResult<>(// + grant.diagnostic(), // + new BaseGrantLockAttempt.Failed(certificate)); + } + + private ServiceInvocationResult grant(ExaminationCertificate certificate, GrantAcquisition grant, + Diagnostic diagnostic) { + return new BaseServiceInvocationResult<>(// + diagnostic, // + new BaseGrantLockAttempt.Successful(certificate, grant)); + } + + private ServiceInvocationResult wrongLockWarning() { + return new BaseServiceInvocationResult<>(fail("Lock.wrong_release")); //$NON-NLS-1$ + } + + private BaseDiagnostic fail(String details) { + return new BaseDiagnostic(// + Collections.emptyList(), // + Collections.singletonList(// + new Trouble(// + new ServiceFailedOnMorsel(), // + AccessCycleMessages.getString(details)))); + } + + private ServiceInvocationResult noService(T data, ConditionMiningTarget target) { + return new BaseServiceInvocationResult(// + new BaseDiagnostic(new Trouble(// + new NoServicesOfType(AccessCycleMessages.getString("Lock.service_type")), //$NON-NLS-1$ + String.format(// + AccessCycleMessages.getString("Lock.no_service_for_target"), //$NON-NLS-1$ + target.toString())// + )), // + data); + } + + /** + * {@code Warning} and {@code Info} {@code requirement}s can stay unsatisfied + * and still a feature must be accessible for usage + */ + private boolean notPermissive(ExaminationCertificate certificate) { + return certificate.satisfied().isEmpty(); + } + + /** + * Certificate must be permissive: must contain at least one properly satisfied + * requirement // #569004 + */ + private Permission permission(ExaminationCertificate certificate) { + Requirement any = certificate.satisfied().iterator().next(); // guaranteed to exist + return certificate.satisfaction(any); // guaranteed to exist and be not null + } + + private ServiceInvocationResult tentativeGrant(ExaminationCertificate certificate) { + return grant(certificate, new TentativeFeatureAccess(feature(certificate)).get(), tentativeReport(certificate)); + } + + private Diagnostic tentativeReport(ExaminationCertificate certificate) { + return new BaseDiagnostic(// + Collections.emptyList(), // + certificate.restrictions().stream()// + .map(this::explained)// + .collect(Collectors.toList())); + } + + private Trouble explained(Restriction restriction) { + return new Trouble(new TentativeAccess(), // + String.format(// + AccessCycleMessages.getString("Lock.temp_access"), //$NON-NLS-1$ + feature(restriction.unsatisfiedRequirement()))); + } + + /** + * Certificate is guaranteed to be not empty: either restrictions or + * satisfactions are present + */ + private String feature(ExaminationCertificate certificate) { + return feature(// + certificate.restrictions().isEmpty() // + ? certificate.satisfied().iterator().next()// + : certificate.restrictions().iterator().next().unsatisfiedRequirement()// + ); + } + + private String feature(Requirement requirement) { + return requirement.feature().identifier(); + } + + private boolean canIssueTentativeGrant(ExaminationCertificate certificate) { + return certificate.satisfied().stream().noneMatch(new RequirementDemandsExecutionStop()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Permissions.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Permissions.java index d6742a654..51e30d408 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Permissions.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Permissions.java @@ -1,131 +1,131 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; -import java.util.function.BiFunction; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.agreements.GlobalAgreement; -import org.eclipse.passage.lic.api.conditions.ConditionPack; -import org.eclipse.passage.lic.api.conditions.evaluation.Emission; -import org.eclipse.passage.lic.api.conditions.evaluation.Permission; -import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittingService; -import org.eclipse.passage.lic.api.registry.Registry; -import org.eclipse.passage.lic.api.registry.StringServiceId; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.SumOfCollections; -import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; - -/** - * FIXME: Has public visibility only for testing. - * - * @since 2.1 - */ -public final class Permissions implements Supplier> { - - private final Registry registry; - private final Collection conditions; - private final LicensedProduct product; - - public Permissions(Registry registry, - Collection conditions, LicensedProduct product) { - this.registry = registry; - this.conditions = conditions; - this.product = product; - } - - @Override - public ServiceInvocationResult get() { - BaseServiceInvocationResult> permissions = permissions(); - return new BaseServiceInvocationResult<>(// - permissions.diagnostic(), // - new AppliedLicenses(// - permissions.data().get(), // - agreements())// - ); - } - - private BaseServiceInvocationResult> permissions() { - return registry.services().stream() // - .map(service -> service.emit(conditions, product))// - .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// - .map(r -> new BaseServiceInvocationResult>(// - r.diagnostic(), // - allPermissions(r.data())))// - .orElse(new BaseServiceInvocationResult<>(Collections.emptyList())); - } - - private Collection allPermissions(Optional> emissions) { - if (!emissions.isPresent()) { - return Collections.emptyList(); - } - return emissions.get().stream() // - .reduce(// - new ArrayList(), // - new SumEmissionsToData(), // - new SumOfCollections()); - } - - private Collection agreements() { - return conditions.stream()// - .map(ConditionPack::agreements)// - .flatMap(Collection::stream)// - .collect(Collectors.toList()); - } - - /** - * Here we do not need `ConditionPack` granularity, thus unfold each one to - * amass all the permissions we have. - */ - private final static class SumEmissionsToData - implements BiFunction, Emission, Collection> { - - @Override - public Collection apply(Collection sum, Emission emission) { - sum.addAll(emission.permissions()); - return sum; - } - - } - - public static final class AppliedLicenses { - - private final Collection permissions; - private final Collection agreements; - - AppliedLicenses() { - this(Collections.emptyList(), Collections.emptyList()); - } - - AppliedLicenses(Collection permissions, Collection agreements) { - this.permissions = permissions; - this.agreements = agreements; - } - - Collection permissions() { - return permissions; - } - - Collection agreements() { - return agreements; - } - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.function.BiFunction; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.agreements.GlobalAgreement; +import org.eclipse.passage.lic.api.conditions.ConditionPack; +import org.eclipse.passage.lic.api.conditions.evaluation.Emission; +import org.eclipse.passage.lic.api.conditions.evaluation.Permission; +import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittingService; +import org.eclipse.passage.lic.api.registry.Registry; +import org.eclipse.passage.lic.api.registry.StringServiceId; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.SumOfCollections; +import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; + +/** + * FIXME: Has public visibility only for testing. + * + * @since 2.1 + */ +public final class Permissions implements Supplier> { + + private final Registry registry; + private final Collection conditions; + private final LicensedProduct product; + + public Permissions(Registry registry, + Collection conditions, LicensedProduct product) { + this.registry = registry; + this.conditions = conditions; + this.product = product; + } + + @Override + public ServiceInvocationResult get() { + BaseServiceInvocationResult> permissions = permissions(); + return new BaseServiceInvocationResult<>(// + permissions.diagnostic(), // + new AppliedLicenses(// + permissions.data().get(), // + agreements())// + ); + } + + private BaseServiceInvocationResult> permissions() { + return registry.services().stream() // + .map(service -> service.emit(conditions, product))// + .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// + .map(r -> new BaseServiceInvocationResult>(// + r.diagnostic(), // + allPermissions(r.data())))// + .orElse(new BaseServiceInvocationResult<>(Collections.emptyList())); + } + + private Collection allPermissions(Optional> emissions) { + if (!emissions.isPresent()) { + return Collections.emptyList(); + } + return emissions.get().stream() // + .reduce(// + new ArrayList(), // + new SumEmissionsToData(), // + new SumOfCollections()); + } + + private Collection agreements() { + return conditions.stream()// + .map(ConditionPack::agreements)// + .flatMap(Collection::stream)// + .collect(Collectors.toList()); + } + + /** + * Here we do not need `ConditionPack` granularity, thus unfold each one to + * amass all the permissions we have. + */ + private final static class SumEmissionsToData + implements BiFunction, Emission, Collection> { + + @Override + public Collection apply(Collection sum, Emission emission) { + sum.addAll(emission.permissions()); + return sum; + } + + } + + public static final class AppliedLicenses { + + private final Collection permissions; + private final Collection agreements; + + AppliedLicenses() { + this(Collections.emptyList(), Collections.emptyList()); + } + + AppliedLicenses(Collection permissions, Collection agreements) { + this.permissions = permissions; + this.agreements = agreements; + } + + Collection permissions() { + return permissions; + } + + Collection agreements() { + return agreements; + } + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Requirements.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Requirements.java index de3310815..bc8cdd92f 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Requirements.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Requirements.java @@ -1,116 +1,116 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Function; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.registry.Registry; -import org.eclipse.passage.lic.api.registry.StringServiceId; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.SumOfCollections; -import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; -import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; -import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; -import org.eclipse.passage.lic.base.requirements.RequirementsFeatureFilter; -import org.eclipse.passage.lic.internal.base.i18n.BaseMessages; - -/** - * @since 2.1 - */ -public final class Requirements implements Supplier>> { - - private final Registry registry; - private final Function>, // - ServiceInvocationResult>> filter; - private final Optional feature; - - public Requirements(Registry registry, String feature) { - this(registry, new RequirementsFeatureFilter(feature).get(), Optional.of(feature)); - } - - public Requirements(Registry registry) { - this(registry, Function.identity(), Optional.empty()); - } - - public Requirements(Registry registry, - Function>, ServiceInvocationResult>> filter, - Optional feature) { - Objects.requireNonNull(registry, "Requirements::registry"); //$NON-NLS-1$ - Objects.requireNonNull(filter, "Requirements::filter"); //$NON-NLS-1$ - this.registry = registry; - this.filter = filter; - this.feature = feature; - } - - @Override - public ServiceInvocationResult> get() { - if (registry.services().isEmpty()) { - return noServices(); - } - ServiceInvocationResult> result = filtered(); - if (empty(result)) { - return withNoRequirementsWarning(result); - } - return result; - - } - - private ServiceInvocationResult> filtered() { - return registry.services().stream() // - .map(ResolvedRequirements::all) // - .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// - .map(filter)// - .get(); // always exists - } - - private BaseServiceInvocationResult> noServices() { - return new BaseServiceInvocationResult>(// - new Trouble(// - new NoServicesOfType("requirement resolution"), //$NON-NLS-1$ - BaseMessages.getString("Requirements.failed"))); //$NON-NLS-1$ - } - - private boolean empty(ServiceInvocationResult> result) { - return result.data().map(Collection::isEmpty).orElse(false); - } - - private ServiceInvocationResult> withNoRequirementsWarning( - ServiceInvocationResult> original) { - return new BaseServiceInvocationResult<>(// - new BaseDiagnostic(// - original.diagnostic().severe(), // - withNoRequirementsWarning(original.diagnostic().bearable())), // - original.data()// - ); - } - - private List withNoRequirementsWarning(List original) { - List more = new ArrayList<>(original); - more.add(new Trouble(// - new NoRequirements(), // - feature.map(fe -> String.format(BaseMessages.getString("Requirements.no_requirements_for_feature"), fe))// //$NON-NLS-1$ - .orElse(BaseMessages.getString("Requirements.no_requirements_for_product")))); //$NON-NLS-1$ - return more; - } -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Function; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.registry.Registry; +import org.eclipse.passage.lic.api.registry.StringServiceId; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.SumOfCollections; +import org.eclipse.passage.lic.base.diagnostic.BaseDiagnostic; +import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; +import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; +import org.eclipse.passage.lic.base.requirements.RequirementsFeatureFilter; +import org.eclipse.passage.lic.internal.base.i18n.BaseMessages; + +/** + * @since 2.1 + */ +public final class Requirements implements Supplier>> { + + private final Registry registry; + private final Function>, // + ServiceInvocationResult>> filter; + private final Optional feature; + + public Requirements(Registry registry, String feature) { + this(registry, new RequirementsFeatureFilter(feature).get(), Optional.of(feature)); + } + + public Requirements(Registry registry) { + this(registry, Function.identity(), Optional.empty()); + } + + public Requirements(Registry registry, + Function>, ServiceInvocationResult>> filter, + Optional feature) { + Objects.requireNonNull(registry, "Requirements::registry"); //$NON-NLS-1$ + Objects.requireNonNull(filter, "Requirements::filter"); //$NON-NLS-1$ + this.registry = registry; + this.filter = filter; + this.feature = feature; + } + + @Override + public ServiceInvocationResult> get() { + if (registry.services().isEmpty()) { + return noServices(); + } + ServiceInvocationResult> result = filtered(); + if (empty(result)) { + return withNoRequirementsWarning(result); + } + return result; + + } + + private ServiceInvocationResult> filtered() { + return registry.services().stream() // + .map(ResolvedRequirements::all) // + .reduce(new BaseServiceInvocationResult.Sum<>(new SumOfCollections()))// + .map(filter)// + .get(); // always exists + } + + private BaseServiceInvocationResult> noServices() { + return new BaseServiceInvocationResult>(// + new Trouble(// + new NoServicesOfType("requirement resolution"), //$NON-NLS-1$ + BaseMessages.getString("Requirements.failed"))); //$NON-NLS-1$ + } + + private boolean empty(ServiceInvocationResult> result) { + return result.data().map(Collection::isEmpty).orElse(false); + } + + private ServiceInvocationResult> withNoRequirementsWarning( + ServiceInvocationResult> original) { + return new BaseServiceInvocationResult<>(// + new BaseDiagnostic(// + original.diagnostic().severe(), // + withNoRequirementsWarning(original.diagnostic().bearable())), // + original.data()// + ); + } + + private List withNoRequirementsWarning(List original) { + List more = new ArrayList<>(original); + more.add(new Trouble(// + new NoRequirements(), // + feature.map(fe -> String.format(BaseMessages.getString("Requirements.no_requirements_for_feature"), fe))// //$NON-NLS-1$ + .orElse(BaseMessages.getString("Requirements.no_requirements_for_product")))); //$NON-NLS-1$ + return more; + } +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Restrictions.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Restrictions.java index eca5f825e..d2586c092 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Restrictions.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/Restrictions.java @@ -1,113 +1,113 @@ -/******************************************************************************* - * Copyright (c) 2020, 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; -import org.eclipse.passage.lic.api.agreements.AgreementState; -import org.eclipse.passage.lic.api.agreements.AgreementToAccept; -import org.eclipse.passage.lic.api.agreements.GlobalAgreement; -import org.eclipse.passage.lic.api.agreements.ResolvedAgreement; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.registry.Registry; -import org.eclipse.passage.lic.api.registry.StringServiceId; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationService; -import org.eclipse.passage.lic.api.restrictions.Restriction; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.agreements.AgreementAcceptanceDemand; -import org.eclipse.passage.lic.base.agreements.BaseAgreementToAccept; -import org.eclipse.passage.lic.base.agreements.MinedAgreement; -import org.eclipse.passage.lic.base.agreements.UnacceptedAgreementRestriction; -import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; -import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; -import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; -import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; - -/** - * @since 2.1 - */ -public final class Restrictions implements Supplier> { - - private final Registry registry; - private final AgreementAcceptanceService acceptance; - private final Collection requirements; - private final AppliedLicenses permissions; - private final LicensedProduct product; - - public Restrictions(LicensedProduct product, Registry registry, - AgreementAcceptanceService acceptance, Collection requirements, AppliedLicenses permissions) { - this.product = product; - this.registry = registry; - this.acceptance = acceptance; - this.requirements = requirements; - this.permissions = permissions; - } - - @Override - public ServiceInvocationResult get() { - if (registry.services().isEmpty()) { - return new BaseServiceInvocationResult( // - new Trouble(// - new NoServicesOfType(AccessCycleMessages.getString("Restrictions.type")), // //$NON-NLS-1$ - AccessCycleMessages.getString("Restrictions.no_services"))); //$NON-NLS-1$ - } - return new BaseServiceInvocationResult(// - new SumOfCertificates().apply(// - permissionBasedCertificate(), // - agreementsBasedCertificate())// - ); - } - - private ExaminationCertificate permissionBasedCertificate() { - return registry.services().stream()// - .map(service -> service.examine(requirements, permissions.permissions())) // - .reduce(new SumOfCertificates())// - .get(); // guaranteed to exist as there is at least one service - } - - private ExaminationCertificate agreementsBasedCertificate() { - List agreements = permissions.agreements().stream()// - .map(this::agreementToAccept)// - .collect(Collectors.toList()); - return new BaseExaminationCertificate(Collections.emptyMap(), restrictions(agreements), agreements); - } - - private AgreementToAccept agreementToAccept(GlobalAgreement agreement) { - ResolvedAgreement definition = new MinedAgreement(agreement); - return new BaseAgreementToAccept(// - new AgreementAcceptanceDemand(definition, product), // - definition, // - acceptanceState(agreement)); - } - - private AgreementState acceptanceState(GlobalAgreement agreement) { - return acceptance.accepted(agreement.content(), agreement.name()); - } - - private Collection restrictions(List agreements) { - return agreements.stream()// - .filter(agreement -> !agreement.acceptance().accepted())// - .map(agreement -> new UnacceptedAgreementRestriction(product, agreement).get())// - .collect(Collectors.toList()); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; +import org.eclipse.passage.lic.api.agreements.AgreementState; +import org.eclipse.passage.lic.api.agreements.AgreementToAccept; +import org.eclipse.passage.lic.api.agreements.GlobalAgreement; +import org.eclipse.passage.lic.api.agreements.ResolvedAgreement; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.registry.Registry; +import org.eclipse.passage.lic.api.registry.StringServiceId; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationService; +import org.eclipse.passage.lic.api.restrictions.Restriction; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.agreements.AgreementAcceptanceDemand; +import org.eclipse.passage.lic.base.agreements.BaseAgreementToAccept; +import org.eclipse.passage.lic.base.agreements.MinedAgreement; +import org.eclipse.passage.lic.base.agreements.UnacceptedAgreementRestriction; +import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; +import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; +import org.eclipse.passage.lic.internal.base.access.Permissions.AppliedLicenses; +import org.eclipse.passage.lic.internal.base.i18n.AccessCycleMessages; + +/** + * @since 2.1 + */ +public final class Restrictions implements Supplier> { + + private final Registry registry; + private final AgreementAcceptanceService acceptance; + private final Collection requirements; + private final AppliedLicenses permissions; + private final LicensedProduct product; + + public Restrictions(LicensedProduct product, Registry registry, + AgreementAcceptanceService acceptance, Collection requirements, AppliedLicenses permissions) { + this.product = product; + this.registry = registry; + this.acceptance = acceptance; + this.requirements = requirements; + this.permissions = permissions; + } + + @Override + public ServiceInvocationResult get() { + if (registry.services().isEmpty()) { + return new BaseServiceInvocationResult( // + new Trouble(// + new NoServicesOfType(AccessCycleMessages.getString("Restrictions.type")), // //$NON-NLS-1$ + AccessCycleMessages.getString("Restrictions.no_services"))); //$NON-NLS-1$ + } + return new BaseServiceInvocationResult(// + new SumOfCertificates().apply(// + permissionBasedCertificate(), // + agreementsBasedCertificate())// + ); + } + + private ExaminationCertificate permissionBasedCertificate() { + return registry.services().stream()// + .map(service -> service.examine(requirements, permissions.permissions())) // + .reduce(new SumOfCertificates())// + .get(); // guaranteed to exist as there is at least one service + } + + private ExaminationCertificate agreementsBasedCertificate() { + List agreements = permissions.agreements().stream()// + .map(this::agreementToAccept)// + .collect(Collectors.toList()); + return new BaseExaminationCertificate(Collections.emptyMap(), restrictions(agreements), agreements); + } + + private AgreementToAccept agreementToAccept(GlobalAgreement agreement) { + ResolvedAgreement definition = new MinedAgreement(agreement); + return new BaseAgreementToAccept(// + new AgreementAcceptanceDemand(definition, product), // + definition, // + acceptanceState(agreement)); + } + + private AgreementState acceptanceState(GlobalAgreement agreement) { + return acceptance.accepted(agreement.content(), agreement.name()); + } + + private Collection restrictions(List agreements) { + return agreements.stream()// + .filter(agreement -> !agreement.acceptance().accepted())// + .map(agreement -> new UnacceptedAgreementRestriction(product, agreement).get())// + .collect(Collectors.toList()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/SumOfCertificates.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/SumOfCertificates.java index f74924ac1..b8de80c24 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/SumOfCertificates.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/SumOfCertificates.java @@ -1,50 +1,50 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Map; -import java.util.function.BinaryOperator; -import java.util.function.Function; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.agreements.AgreementToAccept; -import org.eclipse.passage.lic.api.conditions.evaluation.Permission; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.api.restrictions.Restriction; -import org.eclipse.passage.lic.base.SumOfCollections; -import org.eclipse.passage.lic.base.SumOfMaps; -import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; - -/** - * @since 2.1 - */ -public final class SumOfCertificates implements BinaryOperator { - - @Override - public ExaminationCertificate apply(ExaminationCertificate first, ExaminationCertificate second) { - - return new BaseExaminationCertificate(// - new SumOfMaps().apply(satisfied(first), satisfied(second)), // - new SumOfCollections().apply(first.restrictions(), second.restrictions()), // - new SumOfCollections().apply(first.agreements(), second.agreements())// - ); - - } - - private Map satisfied(ExaminationCertificate certificate) { - return certificate.satisfied().stream() // - .collect(Collectors.toMap(Function.identity(), certificate::satisfaction)); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Map; +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.agreements.AgreementToAccept; +import org.eclipse.passage.lic.api.conditions.evaluation.Permission; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.api.restrictions.Restriction; +import org.eclipse.passage.lic.base.SumOfCollections; +import org.eclipse.passage.lic.base.SumOfMaps; +import org.eclipse.passage.lic.base.restrictions.BaseExaminationCertificate; + +/** + * @since 2.1 + */ +public final class SumOfCertificates implements BinaryOperator { + + @Override + public ExaminationCertificate apply(ExaminationCertificate first, ExaminationCertificate second) { + + return new BaseExaminationCertificate(// + new SumOfMaps().apply(satisfied(first), satisfied(second)), // + new SumOfCollections().apply(first.restrictions(), second.restrictions()), // + new SumOfCollections().apply(first.agreements(), second.agreements())// + ); + + } + + private Map satisfied(ExaminationCertificate certificate) { + return certificate.satisfied().stream() // + .collect(Collectors.toMap(Function.identity(), certificate::satisfaction)); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/TentativeFeatureAccess.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/TentativeFeatureAccess.java index ac4015b20..287b67071 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/TentativeFeatureAccess.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/TentativeFeatureAccess.java @@ -1,52 +1,52 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access; - -import java.util.Date; -import java.util.function.Predicate; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.eclipse.passage.lic.base.acquire.BaseGrantAcquisition; - -final class TentativeFeatureAccess implements Supplier, Predicate { - - private final String feature; - private final String tentative = "tentative"; //$NON-NLS-1$ - - TentativeFeatureAccess(String feature) { - this.feature = feature; - } - - TentativeFeatureAccess() { - this("any"); //$NON-NLS-1$ - } - - @Override - public GrantAcquisition get() { - return new BaseGrantAcquisition(// - String.format("%s-id", tentative), //$NON-NLS-1$ - String.format("%s-grant", tentative), //$NON-NLS-1$ - feature, // - String.format("%s-user", tentative), //$NON-NLS-1$ - new Date()); - } - - @Override - public boolean test(GrantAcquisition grant) { - return grant.identifier().startsWith(tentative) // - && grant.grant().startsWith(tentative) // - && grant.user().startsWith(tentative); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access; + +import java.util.Date; +import java.util.function.Predicate; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.eclipse.passage.lic.base.acquire.BaseGrantAcquisition; + +final class TentativeFeatureAccess implements Supplier, Predicate { + + private final String feature; + private final String tentative = "tentative"; //$NON-NLS-1$ + + TentativeFeatureAccess(String feature) { + this.feature = feature; + } + + TentativeFeatureAccess() { + this("any"); //$NON-NLS-1$ + } + + @Override + public GrantAcquisition get() { + return new BaseGrantAcquisition(// + String.format("%s-id", tentative), //$NON-NLS-1$ + String.format("%s-grant", tentative), //$NON-NLS-1$ + feature, // + String.format("%s-user", tentative), //$NON-NLS-1$ + new Date()); + } + + @Override + public boolean test(GrantAcquisition grant) { + return grant.identifier().startsWith(tentative) // + && grant.grant().startsWith(tentative) // + && grant.user().startsWith(tentative); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/package-info.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/package-info.java index abaf0e84c..154f5cd3b 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/package-info.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/package-info.java @@ -1,16 +1,16 @@ -/** - *

- * Package contains persisting implementation for - * {@linkplain org.eclipse.passage.lic.api.acquire.GrantsTraceService} - *

- *

- * The implementation has the only entry point: - * {@linkplain org.eclipse.passage.lic.internal.base.access.storage.StoringGrantTraceService}. - *

- *

- * As the implementation is stateful by design, it is synchronized. All the - * synchronization is done by the StoringGrantTraceService. Take care on - * maintenance. - *

- */ +/** + *

+ * Package contains persisting implementation for + * {@linkplain org.eclipse.passage.lic.api.acquire.GrantsTraceService} + *

+ *

+ * The implementation has the only entry point: + * {@linkplain org.eclipse.passage.lic.internal.base.access.storage.StoringGrantTraceService}. + *

+ *

+ * As the implementation is stateful by design, it is synchronized. All the + * synchronization is done by the StoringGrantTraceService. Take care on + * maintenance. + *

+ */ package org.eclipse.passage.lic.internal.base.access; \ No newline at end of file diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Conduit.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Conduit.java index cea9fa86f..5d4914398 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Conduit.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Conduit.java @@ -1,59 +1,59 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access.storage; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionService; -import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; - -final class Conduit { - - private final Supplier product; - private final Supplier acquirers; - - Conduit(Supplier product, Supplier acquirers) { - this.product = product; - this.acquirers = acquirers; - } - - /** - * @return actually released grants - */ - List release(List grants) { - List released = new ArrayList<>(); - for (GrantAcquisition grant : grants) { - if (release(grant)) { - released.add(grant); - } - } - return released; - } - - private boolean release(GrantAcquisition grant) { - LicensedProduct licproduct = product.get(); - for (LicenseAcquisitionService service : acquirers.get().get().services()) { - ServiceInvocationResult result = service.release(licproduct, grant); - if (new GrantReleased().test(result)) { - return true; - } - } - return false; - } - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access.storage; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionService; +import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; + +final class Conduit { + + private final Supplier product; + private final Supplier acquirers; + + Conduit(Supplier product, Supplier acquirers) { + this.product = product; + this.acquirers = acquirers; + } + + /** + * @return actually released grants + */ + List release(List grants) { + List released = new ArrayList<>(); + for (GrantAcquisition grant : grants) { + if (release(grant)) { + released.add(grant); + } + } + return released; + } + + private boolean release(GrantAcquisition grant) { + LicensedProduct licproduct = product.get(); + for (LicenseAcquisitionService service : acquirers.get().get().services()) { + ServiceInvocationResult result = service.release(licproduct, grant); + if (new GrantReleased().test(result)) { + return true; + } + } + return false; + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/GrantReleased.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/GrantReleased.java index e69de4cfd..d996d14c5 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/GrantReleased.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/GrantReleased.java @@ -1,29 +1,29 @@ -/******************************************************************************* - * Copyright (c) 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access.storage; - -import java.util.function.Predicate; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; - -/** - * @since 2.3 - */ -public final class GrantReleased implements Predicate> { - - @Override - public boolean test(ServiceInvocationResult response) { - return response.data().isPresent() && response.data().get(); - } - -} +/******************************************************************************* + * Copyright (c) 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access.storage; + +import java.util.function.Predicate; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; + +/** + * @since 2.3 + */ +public final class GrantReleased implements Predicate> { + + @Override + public boolean test(ServiceInvocationResult response) { + return response.data().isPresent() && response.data().get(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Residence.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Residence.java index 40f08810c..da5c1ee36 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Residence.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Residence.java @@ -1,126 +1,126 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access.storage; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -final class Residence { - - private final Path file; - private final Logger log = LoggerFactory.getLogger(getClass()); - - Residence(Supplier srotage) { - this.file = srotage.get().resolve("forsaken-grants.bin"); //$NON-NLS-1$ - } - - List read() { - if (notWrittenYet()) { - return Collections.emptyList(); - } - List grants = new ArrayList<>(); - safelyAndSilently(() -> rawRead(grants)); - return grants; - } - - void write(List grants) { - checkFile(); - safelyAndSilently(() -> rawWrite(grants)); - } - - private void rawWrite(List grants) throws Exception { - checkFile(); - try (ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file.toFile()))) { - stream.writeInt(grants.size()); - for (GrantAcquisition grant : grants) { - stream.writeObject(grant); - } - stream.flush(); - } - } - - private void rawRead(List grants) throws Exception { - try (ObjectInputStream stream = new ObjectInputStream(new FileInputStream(file.toFile()))) { - int amount = stream.readInt(); - for (int i = 0; i < amount; i++) { - grants.add((GrantAcquisition) stream.readObject()); - } - } - } - - private void safelyAndSilently(Operation operation) { - String path = file.toFile().getAbsolutePath().intern(); - synchronized (path) { - try { - operation.run(); - } catch (Exception e) { - log.error("Forsaken grants residence operation fails", e); //$NON-NLS-1$ - } - } - } - - private boolean notWrittenYet() { - return !Files.exists(file) || !Files.isRegularFile(file); - } - - private void checkFile() { - if (Files.exists(file)) { - List message = new ArrayList<>(); - if (Files.isDirectory(file)) { - message.add("directory");//$NON-NLS-1$ - } - if (!Files.isReadable(file)) { - message.add("not readable");//$NON-NLS-1$ - } - if (!Files.isWritable(file)) { - message.add("not writable");//$NON-NLS-1$ - } - if (!message.isEmpty()) { - log.error(String.format( - "Forsaken grant residence will constantly fail to operate: residence file [%s] is %s", //$NON-NLS-1$ - file.toAbsolutePath(), message.stream().collect(Collectors.joining(", ")))); //$NON-NLS-1$ - } - } - Path owner = file.getParent(); - if (!Files.exists(owner)) { - boolean successful = file.toFile().mkdirs(); - if (!successful) { - log.error(String.format( - "Forsaken grant residence will constantly fail to operate: failed to create folder structure [%s]", //$NON-NLS-1$ - file.toAbsolutePath())); - } - } else if (!Files.isExecutable(owner)) { - log.error(String.format( - "Forsaken grant residence will constantly fail to operate: folder [%s] is not executable", //$NON-NLS-1$ - owner.toAbsolutePath())); - - } - } - - private interface Operation { - void run() throws Exception; - } -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access.storage; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +final class Residence { + + private final Path file; + private final Logger log = LoggerFactory.getLogger(getClass()); + + Residence(Supplier srotage) { + this.file = srotage.get().resolve("forsaken-grants.bin"); //$NON-NLS-1$ + } + + List read() { + if (notWrittenYet()) { + return Collections.emptyList(); + } + List grants = new ArrayList<>(); + safelyAndSilently(() -> rawRead(grants)); + return grants; + } + + void write(List grants) { + checkFile(); + safelyAndSilently(() -> rawWrite(grants)); + } + + private void rawWrite(List grants) throws Exception { + checkFile(); + try (ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file.toFile()))) { + stream.writeInt(grants.size()); + for (GrantAcquisition grant : grants) { + stream.writeObject(grant); + } + stream.flush(); + } + } + + private void rawRead(List grants) throws Exception { + try (ObjectInputStream stream = new ObjectInputStream(new FileInputStream(file.toFile()))) { + int amount = stream.readInt(); + for (int i = 0; i < amount; i++) { + grants.add((GrantAcquisition) stream.readObject()); + } + } + } + + private void safelyAndSilently(Operation operation) { + String path = file.toFile().getAbsolutePath().intern(); + synchronized (path) { + try { + operation.run(); + } catch (Exception e) { + log.error("Forsaken grants residence operation fails", e); //$NON-NLS-1$ + } + } + } + + private boolean notWrittenYet() { + return !Files.exists(file) || !Files.isRegularFile(file); + } + + private void checkFile() { + if (Files.exists(file)) { + List message = new ArrayList<>(); + if (Files.isDirectory(file)) { + message.add("directory");//$NON-NLS-1$ + } + if (!Files.isReadable(file)) { + message.add("not readable");//$NON-NLS-1$ + } + if (!Files.isWritable(file)) { + message.add("not writable");//$NON-NLS-1$ + } + if (!message.isEmpty()) { + log.error(String.format( + "Forsaken grant residence will constantly fail to operate: residence file [%s] is %s", //$NON-NLS-1$ + file.toAbsolutePath(), message.stream().collect(Collectors.joining(", ")))); //$NON-NLS-1$ + } + } + Path owner = file.getParent(); + if (!Files.exists(owner)) { + boolean successful = file.toFile().mkdirs(); + if (!successful) { + log.error(String.format( + "Forsaken grant residence will constantly fail to operate: failed to create folder structure [%s]", //$NON-NLS-1$ + file.toAbsolutePath())); + } + } else if (!Files.isExecutable(owner)) { + log.error(String.format( + "Forsaken grant residence will constantly fail to operate: folder [%s] is not executable", //$NON-NLS-1$ + owner.toAbsolutePath())); + + } + } + + private interface Operation { + void run() throws Exception; + } +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Storage.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Storage.java index 65715dae4..f6f3f4b6c 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Storage.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/Storage.java @@ -1,67 +1,67 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access.storage; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; - -/** - * Stateful - */ -final class Storage { - - private final List grants = new ArrayList<>(); - - Storage(List initial) { - synchronized (this.grants) { - this.grants.addAll(initial); - } - } - - void keep(GrantAcquisition grant) { - synchronized (grants) { - if (notYetSpotted(grant)) { - grants.add(grant); - } - } - } - - void forget(GrantAcquisition grant) { - synchronized (grants) { - grants.remove(grant); - } - } - - void forget(List bunch) { - synchronized (grants) { - grants.removeAll(bunch); - } - } - - List grants() { - List all = new ArrayList<>(); - synchronized (grants) { - all.addAll(grants); - } - return all; - } - - private boolean notYetSpotted(GrantAcquisition grant) { - return grants.stream()// - .map(GrantAcquisition::identifier)// - .noneMatch(grant.identifier()::equals); - } - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access.storage; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; + +/** + * Stateful + */ +final class Storage { + + private final List grants = new ArrayList<>(); + + Storage(List initial) { + synchronized (this.grants) { + this.grants.addAll(initial); + } + } + + void keep(GrantAcquisition grant) { + synchronized (grants) { + if (notYetSpotted(grant)) { + grants.add(grant); + } + } + } + + void forget(GrantAcquisition grant) { + synchronized (grants) { + grants.remove(grant); + } + } + + void forget(List bunch) { + synchronized (grants) { + grants.removeAll(bunch); + } + } + + List grants() { + List all = new ArrayList<>(); + synchronized (grants) { + all.addAll(grants); + } + return all; + } + + private boolean notYetSpotted(GrantAcquisition grant) { + return grants.stream()// + .map(GrantAcquisition::identifier)// + .noneMatch(grant.identifier()::equals); + } + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/StoringGrantTraceService.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/StoringGrantTraceService.java index 4d7ecdcc6..1bbbe187d 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/StoringGrantTraceService.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/internal/base/access/storage/StoringGrantTraceService.java @@ -1,57 +1,57 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.access.storage; - -import java.nio.file.Path; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.acquire.GrantAcquisition; -import org.eclipse.passage.lic.api.acquire.GrantsTraceService; -import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; - -public final class StoringGrantTraceService implements GrantsTraceService { - - private final Residence residence; - private final Storage storage; - private final Conduit conduit; - private volatile boolean fresh = true; - - public StoringGrantTraceService(Supplier product, Supplier srotage, - Supplier acquirers) { - this.residence = new Residence(srotage); - this.storage = new Storage(residence.read()); - this.conduit = new Conduit(product, acquirers); - } - - @Override - public synchronized void trace(GrantAcquisition grant) { - synchronized (storage) { - if (fresh) { - fresh = false; - storage.forget(conduit.release(storage.grants())); - } - storage.keep(grant); - residence.write(storage.grants()); - } - } - - @Override - public synchronized void forget(GrantAcquisition grant) { - synchronized (storage) { - storage.forget(grant); - residence.write(storage.grants()); - } - } - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.access.storage; + +import java.nio.file.Path; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; +import org.eclipse.passage.lic.api.acquire.GrantsTraceService; +import org.eclipse.passage.lic.api.acquire.LicenseAcquisitionServicesRegistry; + +public final class StoringGrantTraceService implements GrantsTraceService { + + private final Residence residence; + private final Storage storage; + private final Conduit conduit; + private volatile boolean fresh = true; + + public StoringGrantTraceService(Supplier product, Supplier srotage, + Supplier acquirers) { + this.residence = new Residence(srotage); + this.storage = new Storage(residence.read()); + this.conduit = new Conduit(product, acquirers); + } + + @Override + public synchronized void trace(GrantAcquisition grant) { + synchronized (storage) { + if (fresh) { + fresh = false; + storage.forget(conduit.release(storage.grants())); + } + storage.keep(grant); + residence.write(storage.grants()); + } + } + + @Override + public synchronized void forget(GrantAcquisition grant) { + synchronized (storage) { + storage.forget(grant); + residence.write(storage.grants()); + } + } + +} diff --git a/bundles/org.eclipse.passage.lic.bc/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.bc/META-INF/MANIFEST.MF index af811bfe2..78b21bccb 100644 --- a/bundles/org.eclipse.passage.lic.bc/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.bc/META-INF/MANIFEST.MF @@ -1,23 +1,23 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.bc -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.bc -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.bc;x-internal:=true -Import-Package: org.bouncycastle.bcpg;version="1.72.0", - org.bouncycastle.crypto.digests;version="1.72.0", - org.bouncycastle.jce;version="1.72.0", - org.bouncycastle.jce.provider;version="1.72.0", - org.bouncycastle.openpgp;version="1.72.0", - org.bouncycastle.openpgp.bc;version="1.72.0", - org.bouncycastle.openpgp.jcajce;version="1.72.0", - org.bouncycastle.openpgp.operator;version="1.72.0", - org.bouncycastle.openpgp.operator.jcajce;version="1.72.0" - +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.bc +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.bc +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.bc;x-internal:=true +Import-Package: org.bouncycastle.bcpg;version="1.72.0", + org.bouncycastle.crypto.digests;version="1.72.0", + org.bouncycastle.jce;version="1.72.0", + org.bouncycastle.jce.provider;version="1.72.0", + org.bouncycastle.openpgp;version="1.72.0", + org.bouncycastle.openpgp.bc;version="1.72.0", + org.bouncycastle.openpgp.jcajce;version="1.72.0", + org.bouncycastle.openpgp.operator;version="1.72.0", + org.bouncycastle.openpgp.operator.jcajce;version="1.72.0" + diff --git a/bundles/org.eclipse.passage.lic.e4.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.e4.ui/META-INF/MANIFEST.MF index b588aeaa4..df810ec1f 100644 --- a/bundles/org.eclipse.passage.lic.e4.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.e4.ui/META-INF/MANIFEST.MF @@ -1,24 +1,24 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.e4.ui -Bundle-ManifestVersion: 2 -Bundle-Name: %Bundle-Name -Bundle-SymbolicName: org.eclipse.passage.lic.e4.ui -Bundle-Version: 3.0.0.qualifier -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.jface;bundle-version="0.0.0", - org.eclipse.e4.core.di;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.jface;bundle-version="0.0.0" -Import-Package: javax.inject;version="1.0.0", - org.osgi.service.event;version="1.0.0" -Export-Package: org.eclipse.passage.lic.e4.ui.addons;x-internal:=true, - org.eclipse.passage.lic.internal.e4.ui.handlers;x-internal:=true, - org.eclipse.passage.lic.internal.e4.ui.restrictions;x-internal:=true -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.e4.ui +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: org.eclipse.passage.lic.e4.ui +Bundle-Version: 3.0.0.qualifier +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.jface;bundle-version="0.0.0", + org.eclipse.e4.core.di;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.jface;bundle-version="0.0.0" +Import-Package: javax.inject;version="1.0.0", + org.osgi.service.event;version="1.0.0" +Export-Package: org.eclipse.passage.lic.e4.ui.addons;x-internal:=true, + org.eclipse.passage.lic.internal.e4.ui.handlers;x-internal:=true, + org.eclipse.passage.lic.internal.e4.ui.restrictions;x-internal:=true +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.emf/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.emf/META-INF/MANIFEST.MF index 11ed2136d..c90d83eac 100644 --- a/bundles/org.eclipse.passage.lic.emf/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.emf/META-INF/MANIFEST.MF @@ -1,31 +1,31 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.emf.edit -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.emf -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.emf;x-internal:=true, - org.eclipse.passage.lic.emf.meta;x-internal:=true, - org.eclipse.passage.lic.emf.migration;x-internal:=true, - org.eclipse.passage.lic.emf.resource;x-internal:=true, - org.eclipse.passage.lic.emf.validation;x-internal:=true, - org.eclipse.passage.lic.emf.xmi;x-internal:=true, - org.eclipse.passage.lic.internal.emf; - x-friends:="org.eclipse.passage.lic.hc, - org.eclipse.passage.lbc.base, - org.eclipse.passage.lbc.base.tests, - org.eclipse.passage.lic.net", - org.eclipse.passage.lic.internal.emf.i18n;x-friends:="org.eclipse.passage.loc.equinox", - org.eclipse.passage.lic.internal.emf.migration; - x-friends:="org.eclipse.passage.lic.features.model, - org.eclipse.passage.lic.keys.model, - org.eclipse.passage.lic.licenses.model, - org.eclipse.passage.lic.products.model, - org.eclipse.passage.lic.users.model" -Bundle-ActivationPolicy: lazy -Import-Package: org.eclipse.osgi.util;version="1.0.0" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.emf.edit +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.emf +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.emf;x-internal:=true, + org.eclipse.passage.lic.emf.meta;x-internal:=true, + org.eclipse.passage.lic.emf.migration;x-internal:=true, + org.eclipse.passage.lic.emf.resource;x-internal:=true, + org.eclipse.passage.lic.emf.validation;x-internal:=true, + org.eclipse.passage.lic.emf.xmi;x-internal:=true, + org.eclipse.passage.lic.internal.emf; + x-friends:="org.eclipse.passage.lic.hc, + org.eclipse.passage.lbc.base, + org.eclipse.passage.lbc.base.tests, + org.eclipse.passage.lic.net", + org.eclipse.passage.lic.internal.emf.i18n;x-friends:="org.eclipse.passage.loc.equinox", + org.eclipse.passage.lic.internal.emf.migration; + x-friends:="org.eclipse.passage.lic.features.model, + org.eclipse.passage.lic.keys.model, + org.eclipse.passage.lic.licenses.model, + org.eclipse.passage.lic.products.model, + org.eclipse.passage.lic.users.model" +Bundle-ActivationPolicy: lazy +Import-Package: org.eclipse.osgi.util;version="1.0.0" diff --git a/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/emf/resource/BlindResourceFactory.java b/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/emf/resource/BlindResourceFactory.java index f3874a845..0836bf3e5 100644 --- a/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/emf/resource/BlindResourceFactory.java +++ b/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/emf/resource/BlindResourceFactory.java @@ -1,24 +1,24 @@ -/******************************************************************************* - * Copyright (c) 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.emf.resource; - -import org.eclipse.emf.ecore.resource.Resource; - -/** - * @since 3.0 - */ -public interface BlindResourceFactory { - - Resource createResource(); - -} +/******************************************************************************* + * Copyright (c) 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.emf.resource; + +import org.eclipse.emf.ecore.resource.Resource; + +/** + * @since 3.0 + */ +public interface BlindResourceFactory { + + Resource createResource(); + +} diff --git a/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/internal/emf/BlindResource.java b/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/internal/emf/BlindResource.java index f9539ea7c..a6daa9716 100644 --- a/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/internal/emf/BlindResource.java +++ b/bundles/org.eclipse.passage.lic.emf/src/org/eclipse/passage/lic/internal/emf/BlindResource.java @@ -1,51 +1,51 @@ -/******************************************************************************* - * Copyright (c) 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.emf; - -import java.util.Objects; -import java.util.function.Supplier; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.Resource.Factory.Descriptor; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; - -public final class BlindResource implements Supplier { - - private final EClass type; - - public BlindResource(EClass type) { - this.type = Objects.requireNonNull(type); - } - - public BlindResource(EObject source) { - this(Objects.requireNonNull(source).eClass()); - } - - @Override - public Resource get() { - String domain = type.getEPackage().getName(); - Object factory = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().get(domain); - if (factory instanceof Resource.Factory.Descriptor) { - Resource.Factory.Descriptor descriptor = (Descriptor) factory; - factory = descriptor.createFactory(); - } - if (factory instanceof BlindResourceFactory) { - return ((BlindResourceFactory) factory).createResource(); - } - return new XMIResourceImpl(); - } - -} +/******************************************************************************* + * Copyright (c) 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.emf; + +import java.util.Objects; +import java.util.function.Supplier; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.Resource.Factory.Descriptor; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; + +public final class BlindResource implements Supplier { + + private final EClass type; + + public BlindResource(EClass type) { + this.type = Objects.requireNonNull(type); + } + + public BlindResource(EObject source) { + this(Objects.requireNonNull(source).eClass()); + } + + @Override + public Resource get() { + String domain = type.getEPackage().getName(); + Object factory = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().get(domain); + if (factory instanceof Resource.Factory.Descriptor) { + Resource.Factory.Descriptor descriptor = (Descriptor) factory; + factory = descriptor.createFactory(); + } + if (factory instanceof BlindResourceFactory) { + return ((BlindResourceFactory) factory).createResource(); + } + return new XMIResourceImpl(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.equinox/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.equinox/META-INF/MANIFEST.MF index 9d4470abe..cd38e7859 100644 --- a/bundles/org.eclipse.passage.lic.equinox/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.equinox/META-INF/MANIFEST.MF @@ -1,33 +1,33 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.equinox -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.equinox -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.equinox.app;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.equinox.registry;bundle-version="0.0.0", - org.eclipse.osgi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.base;bundle-version="0.0.0";visibility:=reexport -Export-Package: org.eclipse.passage.lic.equinox;x-internal:=true, - org.eclipse.passage.lic.equinox.acquire;x-internal:=true, - org.eclipse.passage.lic.equinox.conditions;x-internal:=true, - org.eclipse.passage.lic.equinox.io;x-internal:=true, - org.eclipse.passage.lic.equinox.requirements;x-internal:=true, - org.eclipse.passage.lic.internal.equinox;x-friends:="org.eclipse.passage.loc.licenses.core,org.eclipse.passage.lic.jetty", - org.eclipse.passage.lic.internal.equinox.access;x-internal:=true, - org.eclipse.passage.lic.internal.equinox.events; - x-friends:="org.eclipse.passage.loc.features.core, - org.eclipse.passage.loc.products.core, - org.eclipse.passage.loc.licenses.core, - org.eclipse.passage.loc.users.core" -Import-Package: org.osgi.service.component.runtime;version="1.0.0", - org.osgi.service.component.runtime.dto;version="1.0.0", - org.osgi.service.event;version="1.0.0", - org.slf4j;version="1.7.36" -Bundle-ActivationPolicy: lazy -Provide-Capability: licensing.management;licensing.management="equinox";version="1.0.0" - +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.equinox +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.equinox +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.equinox.app;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.equinox.registry;bundle-version="0.0.0", + org.eclipse.osgi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.base;bundle-version="0.0.0";visibility:=reexport +Export-Package: org.eclipse.passage.lic.equinox;x-internal:=true, + org.eclipse.passage.lic.equinox.acquire;x-internal:=true, + org.eclipse.passage.lic.equinox.conditions;x-internal:=true, + org.eclipse.passage.lic.equinox.io;x-internal:=true, + org.eclipse.passage.lic.equinox.requirements;x-internal:=true, + org.eclipse.passage.lic.internal.equinox;x-friends:="org.eclipse.passage.loc.licenses.core,org.eclipse.passage.lic.jetty", + org.eclipse.passage.lic.internal.equinox.access;x-internal:=true, + org.eclipse.passage.lic.internal.equinox.events; + x-friends:="org.eclipse.passage.loc.features.core, + org.eclipse.passage.loc.products.core, + org.eclipse.passage.loc.licenses.core, + org.eclipse.passage.loc.users.core" +Import-Package: org.osgi.service.component.runtime;version="1.0.0", + org.osgi.service.component.runtime.dto;version="1.0.0", + org.osgi.service.event;version="1.0.0", + org.slf4j;version="1.7.36" +Bundle-ActivationPolicy: lazy +Provide-Capability: licensing.management;licensing.management="equinox";version="1.0.0" + diff --git a/bundles/org.eclipse.passage.lic.equinox/META-INF/p2.inf b/bundles/org.eclipse.passage.lic.equinox/META-INF/p2.inf index efc5b00c8..42aad0e88 100644 --- a/bundles/org.eclipse.passage.lic.equinox/META-INF/p2.inf +++ b/bundles/org.eclipse.passage.lic.equinox/META-INF/p2.inf @@ -1,16 +1,16 @@ -############################################################################### -# Copyright (c) 2018, 2024 ArSysOp and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# https://www.eclipse.org/legal/epl-2.0/. -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ArSysOp - initial API and implementation -############################################################################### - -provides.0.namespace = licensing.management -provides.0.name = equinox -provides.0.version = 3.0.0 +############################################################################### +# Copyright (c) 2018, 2024 ArSysOp and others +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/. +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# ArSysOp - initial API and implementation +############################################################################### + +provides.0.namespace = licensing.management +provides.0.name = equinox +provides.0.version = 3.0.0 diff --git a/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/equinox/EquinoxPassageLicenseCoverage.java b/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/equinox/EquinoxPassageLicenseCoverage.java index 7cb2c574e..b0f2f74be 100644 --- a/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/equinox/EquinoxPassageLicenseCoverage.java +++ b/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/equinox/EquinoxPassageLicenseCoverage.java @@ -1,78 +1,78 @@ -/******************************************************************************* - * Copyright (c) 2020, 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.equinox; - -import java.util.Optional; - -import org.eclipse.passage.lic.api.Framework; -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.PassageLicenseCoverage; -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.BaseServiceInvocationResult; -import org.eclipse.passage.lic.base.diagnostic.code.NoDataOfType; -import org.eclipse.passage.lic.internal.base.access.Access; -import org.eclipse.passage.lic.internal.base.access.Libraries; -import org.eclipse.passage.lic.internal.base.access.SumOfCertificates; -import org.eclipse.passage.lic.internal.equinox.access.RegisteredLibraries; - -/** - * @since 2.1 - */ -@SuppressWarnings("restriction") -public final class EquinoxPassageLicenseCoverage implements PassageLicenseCoverage { - - private final EquinoxFrameworkAware delegate; - - public EquinoxPassageLicenseCoverage() { - this(new SuppliedFrameworkAware()); - } - - public EquinoxPassageLicenseCoverage(EquinoxFrameworkAware delegate) { - this.delegate = delegate; - } - - @Override - public ServiceInvocationResult assess() { - return both(owner(), libraries()); - } - - private ServiceInvocationResult both(// - ServiceInvocationResult owner, // - Optional> libraries) { - if (!libraries.isPresent()) { - return owner; - } - return new BaseServiceInvocationResult.Sum<>(new SumOfCertificates())// - .apply(owner, libraries.get()); - } - - private Optional> libraries() { - Optional product = delegate.withFramework(Framework::product); - if (!product.isPresent()) { - return noOwningProduct(); - } - return new Libraries(new RegisteredLibraries(), product::get).assess(); - } - - private ServiceInvocationResult owner() { - return delegate.withFrameworkService(framework -> new Access(framework).assess()); - } - - private Optional> noOwningProduct() { - return Optional.of(new BaseServiceInvocationResult<>( - new Trouble(new NoDataOfType(), "License Product definition is absent"))); //$NON-NLS-1$ - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.equinox; + +import java.util.Optional; + +import org.eclipse.passage.lic.api.Framework; +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.PassageLicenseCoverage; +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.base.diagnostic.code.NoDataOfType; +import org.eclipse.passage.lic.internal.base.access.Access; +import org.eclipse.passage.lic.internal.base.access.Libraries; +import org.eclipse.passage.lic.internal.base.access.SumOfCertificates; +import org.eclipse.passage.lic.internal.equinox.access.RegisteredLibraries; + +/** + * @since 2.1 + */ +@SuppressWarnings("restriction") +public final class EquinoxPassageLicenseCoverage implements PassageLicenseCoverage { + + private final EquinoxFrameworkAware delegate; + + public EquinoxPassageLicenseCoverage() { + this(new SuppliedFrameworkAware()); + } + + public EquinoxPassageLicenseCoverage(EquinoxFrameworkAware delegate) { + this.delegate = delegate; + } + + @Override + public ServiceInvocationResult assess() { + return both(owner(), libraries()); + } + + private ServiceInvocationResult both(// + ServiceInvocationResult owner, // + Optional> libraries) { + if (!libraries.isPresent()) { + return owner; + } + return new BaseServiceInvocationResult.Sum<>(new SumOfCertificates())// + .apply(owner, libraries.get()); + } + + private Optional> libraries() { + Optional product = delegate.withFramework(Framework::product); + if (!product.isPresent()) { + return noOwningProduct(); + } + return new Libraries(new RegisteredLibraries(), product::get).assess(); + } + + private ServiceInvocationResult owner() { + return delegate.withFrameworkService(framework -> new Access(framework).assess()); + } + + private Optional> noOwningProduct() { + return Optional.of(new BaseServiceInvocationResult<>( + new Trouble(new NoDataOfType(), "License Product definition is absent"))); //$NON-NLS-1$ + } + +} diff --git a/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/internal/equinox/access/RegisteredLibraries.java b/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/internal/equinox/access/RegisteredLibraries.java index a2c9e981c..f562ec6c1 100644 --- a/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/internal/equinox/access/RegisteredLibraries.java +++ b/bundles/org.eclipse.passage.lic.equinox/src/org/eclipse/passage/lic/internal/equinox/access/RegisteredLibraries.java @@ -1,33 +1,33 @@ -/******************************************************************************* - * Copyright (c) 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.equinox.access; - -import java.util.List; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.base.access.Library; -import org.eclipse.passage.lic.internal.equinox.ServiceExtensions; - -@SuppressWarnings("restriction") -public final class RegisteredLibraries implements Supplier> { - - @Override - public List get() { - return new ServiceExtensions(// - "org.eclipse.passage.lic.base", //$NON-NLS-1$ - "library", //$NON-NLS-1$ - Library.class)// - .get(); - } - -} +/******************************************************************************* + * Copyright (c) 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.equinox.access; + +import java.util.List; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.base.access.Library; +import org.eclipse.passage.lic.internal.equinox.ServiceExtensions; + +@SuppressWarnings("restriction") +public final class RegisteredLibraries implements Supplier> { + + @Override + public List get() { + return new ServiceExtensions(// + "org.eclipse.passage.lic.base", //$NON-NLS-1$ + "library", //$NON-NLS-1$ + Library.class)// + .get(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.execute/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.execute/META-INF/MANIFEST.MF index 1ba40e96b..25b68a64d 100644 --- a/bundles/org.eclipse.passage.lic.execute/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.execute/META-INF/MANIFEST.MF @@ -1,22 +1,22 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.execute -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.execute -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.passage.lic.api;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0", - org.eclipse.passage.lic.bc;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.hc;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", - org.eclipse.passage.lic.oshi;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.execute;x-internal:=true, - org.eclipse.passage.lic.internal.execute;x-internal:=true -Import-Package: org.slf4j;version="1.7.36" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.execute +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.execute +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.passage.lic.api;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0", + org.eclipse.passage.lic.bc;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.hc;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", + org.eclipse.passage.lic.oshi;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.execute;x-internal:=true, + org.eclipse.passage.lic.internal.execute;x-internal:=true +Import-Package: org.slf4j;version="1.7.36" diff --git a/bundles/org.eclipse.passage.lic.execute/src/org/eclipse/passage/lic/execute/BaseAccessCycleConfiguration.java b/bundles/org.eclipse.passage.lic.execute/src/org/eclipse/passage/lic/execute/BaseAccessCycleConfiguration.java index bbaef5177..22ebbaf9c 100644 --- a/bundles/org.eclipse.passage.lic.execute/src/org/eclipse/passage/lic/execute/BaseAccessCycleConfiguration.java +++ b/bundles/org.eclipse.passage.lic.execute/src/org/eclipse/passage/lic/execute/BaseAccessCycleConfiguration.java @@ -1,193 +1,193 @@ -/******************************************************************************* - * Copyright (c) 2020, 2022 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.execute; - -import java.util.Arrays; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.AccessCycleConfiguration; -import org.eclipse.passage.lic.api.EvaluationType; -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.acquire.GrantsTraceService; -import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionEvaluationService; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionEvaluatorsRegistry; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionParsingService; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionPasringRegistry; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionProtocol; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionTokenAssessmentService; -import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionTokenAssessorsRegistry; -import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittersRegistry; -import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittingService; -import org.eclipse.passage.lic.api.conditions.mining.ConditionTransport; -import org.eclipse.passage.lic.api.conditions.mining.ConditionTransportRegistry; -import org.eclipse.passage.lic.api.conditions.mining.ContentType; -import org.eclipse.passage.lic.api.conditions.mining.MiningEquipment; -import org.eclipse.passage.lic.api.inspection.RuntimeEnvironment; -import org.eclipse.passage.lic.api.inspection.RuntimeEnvironmentRegistry; -import org.eclipse.passage.lic.api.io.Hashes; -import org.eclipse.passage.lic.api.io.HashesRegistry; -import org.eclipse.passage.lic.api.io.KeyKeeper; -import org.eclipse.passage.lic.api.io.KeyKeeperRegistry; -import org.eclipse.passage.lic.api.io.StreamCodec; -import org.eclipse.passage.lic.api.io.StreamCodecRegistry; -import org.eclipse.passage.lic.api.registry.Registry; -import org.eclipse.passage.lic.api.registry.StringServiceId; -import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; -import org.eclipse.passage.lic.api.requirements.ResolvedRequirementsRegistry; -import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationService; -import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationServicesRegistry; -import org.eclipse.passage.lic.base.agreements.BaseAgreementAcceptanceService; -import org.eclipse.passage.lic.base.conditions.evaluation.BasePermissionEmittingService; -import org.eclipse.passage.lic.base.conditions.evaluation.BerlinProtocolExpressionParseService; -import org.eclipse.passage.lic.base.conditions.evaluation.SimpleMapExpressionEvaluationService; -import org.eclipse.passage.lic.base.conditions.mining.PersonalLicenseMiningEquipment; -import org.eclipse.passage.lic.base.io.MD5Hashes; -import org.eclipse.passage.lic.base.registry.ReadOnlyRegistry; -import org.eclipse.passage.lic.base.restrictions.BasePermissionsExaminationService; -import org.eclipse.passage.lic.bc.BcStreamCodec; -import org.eclipse.passage.lic.equinox.io.BundleKeyKeeper; -import org.eclipse.passage.lic.equinox.requirements.BundleRequirements; -import org.eclipse.passage.lic.equinox.requirements.ComponentRequirements; -import org.eclipse.passage.lic.internal.base.access.storage.StoringGrantTraceService; -import org.eclipse.passage.lic.licenses.model.transport.XmiConditionTransport; -import org.eclipse.passage.lic.oshi.HardwareAssessmentService; -import org.eclipse.passage.lic.oshi.HardwareEnvironment; -import org.osgi.framework.Bundle; - -@SuppressWarnings("restriction") -public abstract class BaseAccessCycleConfiguration implements AccessCycleConfiguration { - - private final Registry requirements; - private final Registry transports; - private final Registry codecs; - private final Registry keys; - private final Registry hashes; - private final Registry emitters; - private final Registry expressionParsers; - private final Registry expressionEvaluators; - private final Registry tokenAssessors; - private final Registry environments; - private final Registry examinators; - private final AgreementAcceptanceService acceptance; - private final GrantsTraceService forsakenGrants; - - protected BaseAccessCycleConfiguration(Supplier product, Supplier bundle) { - requirements = new ReadOnlyRegistry<>(Arrays.asList(// - new BundleRequirements(), // - new ComponentRequirements() // - )); - transports = new ReadOnlyRegistry<>(Arrays.asList(// - new XmiConditionTransport() // - )); - codecs = new ReadOnlyRegistry<>(Arrays.asList(// - new BcStreamCodec(product) // - )); - keys = new ReadOnlyRegistry<>(Arrays.asList(// - new BundleKeyKeeper(product, bundle.get()) // - )); - hashes = new ReadOnlyRegistry<>(new MD5Hashes()); - emitters = new ReadOnlyRegistry<>(Arrays.asList(// - new BasePermissionEmittingService(// - expressionParsers(), // - expressionAssessors(), // - expressionEvaluators()) // - )); - expressionParsers = new ReadOnlyRegistry<>(Arrays.asList(// - new BerlinProtocolExpressionParseService() // - )); - expressionEvaluators = new ReadOnlyRegistry<>(Arrays.asList(// - new SimpleMapExpressionEvaluationService() // - )); - tokenAssessors = new ReadOnlyRegistry<>(Arrays.asList(// - new HardwareAssessmentService(environments())// - )); - environments = new ReadOnlyRegistry<>(Arrays.asList(// - new HardwareEnvironment() // - )); - acceptance = new BaseAgreementAcceptanceService(hashes(), product); - examinators = new ReadOnlyRegistry<>(new BasePermissionsExaminationService(acceptance, product)); - forsakenGrants = new StoringGrantTraceService(product, new ConfigurationPath(), this::acquirers); - } - - @Override - public final MiningEquipment miningEquipment() { - return new PersonalLicenseMiningEquipment(keyKeepers(), codecs(), transports()); - } - - @Override - public final ResolvedRequirementsRegistry requirementResolvers() { - return () -> requirements; - } - - @Override - public final StreamCodecRegistry codecs() { - return () -> codecs; - } - - @Override - public final KeyKeeperRegistry keyKeepers() { - return () -> keys; - } - - @Override - public final ConditionTransportRegistry transports() { - return () -> transports; - } - - @Override - public final PermissionEmittersRegistry permissionEmitters() { - return () -> emitters; - } - - @Override - public final ExpressionPasringRegistry expressionParsers() { - return () -> expressionParsers; - } - - @Override - public final ExpressionEvaluatorsRegistry expressionEvaluators() { - return () -> expressionEvaluators; - } - - @Override - public final ExpressionTokenAssessorsRegistry expressionAssessors() { - return () -> tokenAssessors; - } - - @Override - public final RuntimeEnvironmentRegistry environments() { - return () -> environments; - } - - @Override - public final PermissionsExaminationServicesRegistry examinators() { - return () -> examinators; - } - - @Override - public final HashesRegistry hashes() { - return () -> hashes; - } - - @Override - public AgreementAcceptanceService acceptance() { - return acceptance; - } - - @Override - public GrantsTraceService grantsTrace() { - return forsakenGrants; - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2022 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.execute; + +import java.util.Arrays; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.AccessCycleConfiguration; +import org.eclipse.passage.lic.api.EvaluationType; +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.acquire.GrantsTraceService; +import org.eclipse.passage.lic.api.agreements.AgreementAcceptanceService; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionEvaluationService; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionEvaluatorsRegistry; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionParsingService; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionPasringRegistry; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionProtocol; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionTokenAssessmentService; +import org.eclipse.passage.lic.api.conditions.evaluation.ExpressionTokenAssessorsRegistry; +import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittersRegistry; +import org.eclipse.passage.lic.api.conditions.evaluation.PermissionEmittingService; +import org.eclipse.passage.lic.api.conditions.mining.ConditionTransport; +import org.eclipse.passage.lic.api.conditions.mining.ConditionTransportRegistry; +import org.eclipse.passage.lic.api.conditions.mining.ContentType; +import org.eclipse.passage.lic.api.conditions.mining.MiningEquipment; +import org.eclipse.passage.lic.api.inspection.RuntimeEnvironment; +import org.eclipse.passage.lic.api.inspection.RuntimeEnvironmentRegistry; +import org.eclipse.passage.lic.api.io.Hashes; +import org.eclipse.passage.lic.api.io.HashesRegistry; +import org.eclipse.passage.lic.api.io.KeyKeeper; +import org.eclipse.passage.lic.api.io.KeyKeeperRegistry; +import org.eclipse.passage.lic.api.io.StreamCodec; +import org.eclipse.passage.lic.api.io.StreamCodecRegistry; +import org.eclipse.passage.lic.api.registry.Registry; +import org.eclipse.passage.lic.api.registry.StringServiceId; +import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; +import org.eclipse.passage.lic.api.requirements.ResolvedRequirementsRegistry; +import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationService; +import org.eclipse.passage.lic.api.restrictions.PermissionsExaminationServicesRegistry; +import org.eclipse.passage.lic.base.agreements.BaseAgreementAcceptanceService; +import org.eclipse.passage.lic.base.conditions.evaluation.BasePermissionEmittingService; +import org.eclipse.passage.lic.base.conditions.evaluation.BerlinProtocolExpressionParseService; +import org.eclipse.passage.lic.base.conditions.evaluation.SimpleMapExpressionEvaluationService; +import org.eclipse.passage.lic.base.conditions.mining.PersonalLicenseMiningEquipment; +import org.eclipse.passage.lic.base.io.MD5Hashes; +import org.eclipse.passage.lic.base.registry.ReadOnlyRegistry; +import org.eclipse.passage.lic.base.restrictions.BasePermissionsExaminationService; +import org.eclipse.passage.lic.bc.BcStreamCodec; +import org.eclipse.passage.lic.equinox.io.BundleKeyKeeper; +import org.eclipse.passage.lic.equinox.requirements.BundleRequirements; +import org.eclipse.passage.lic.equinox.requirements.ComponentRequirements; +import org.eclipse.passage.lic.internal.base.access.storage.StoringGrantTraceService; +import org.eclipse.passage.lic.licenses.model.transport.XmiConditionTransport; +import org.eclipse.passage.lic.oshi.HardwareAssessmentService; +import org.eclipse.passage.lic.oshi.HardwareEnvironment; +import org.osgi.framework.Bundle; + +@SuppressWarnings("restriction") +public abstract class BaseAccessCycleConfiguration implements AccessCycleConfiguration { + + private final Registry requirements; + private final Registry transports; + private final Registry codecs; + private final Registry keys; + private final Registry hashes; + private final Registry emitters; + private final Registry expressionParsers; + private final Registry expressionEvaluators; + private final Registry tokenAssessors; + private final Registry environments; + private final Registry examinators; + private final AgreementAcceptanceService acceptance; + private final GrantsTraceService forsakenGrants; + + protected BaseAccessCycleConfiguration(Supplier product, Supplier bundle) { + requirements = new ReadOnlyRegistry<>(Arrays.asList(// + new BundleRequirements(), // + new ComponentRequirements() // + )); + transports = new ReadOnlyRegistry<>(Arrays.asList(// + new XmiConditionTransport() // + )); + codecs = new ReadOnlyRegistry<>(Arrays.asList(// + new BcStreamCodec(product) // + )); + keys = new ReadOnlyRegistry<>(Arrays.asList(// + new BundleKeyKeeper(product, bundle.get()) // + )); + hashes = new ReadOnlyRegistry<>(new MD5Hashes()); + emitters = new ReadOnlyRegistry<>(Arrays.asList(// + new BasePermissionEmittingService(// + expressionParsers(), // + expressionAssessors(), // + expressionEvaluators()) // + )); + expressionParsers = new ReadOnlyRegistry<>(Arrays.asList(// + new BerlinProtocolExpressionParseService() // + )); + expressionEvaluators = new ReadOnlyRegistry<>(Arrays.asList(// + new SimpleMapExpressionEvaluationService() // + )); + tokenAssessors = new ReadOnlyRegistry<>(Arrays.asList(// + new HardwareAssessmentService(environments())// + )); + environments = new ReadOnlyRegistry<>(Arrays.asList(// + new HardwareEnvironment() // + )); + acceptance = new BaseAgreementAcceptanceService(hashes(), product); + examinators = new ReadOnlyRegistry<>(new BasePermissionsExaminationService(acceptance, product)); + forsakenGrants = new StoringGrantTraceService(product, new ConfigurationPath(), this::acquirers); + } + + @Override + public final MiningEquipment miningEquipment() { + return new PersonalLicenseMiningEquipment(keyKeepers(), codecs(), transports()); + } + + @Override + public final ResolvedRequirementsRegistry requirementResolvers() { + return () -> requirements; + } + + @Override + public final StreamCodecRegistry codecs() { + return () -> codecs; + } + + @Override + public final KeyKeeperRegistry keyKeepers() { + return () -> keys; + } + + @Override + public final ConditionTransportRegistry transports() { + return () -> transports; + } + + @Override + public final PermissionEmittersRegistry permissionEmitters() { + return () -> emitters; + } + + @Override + public final ExpressionPasringRegistry expressionParsers() { + return () -> expressionParsers; + } + + @Override + public final ExpressionEvaluatorsRegistry expressionEvaluators() { + return () -> expressionEvaluators; + } + + @Override + public final ExpressionTokenAssessorsRegistry expressionAssessors() { + return () -> tokenAssessors; + } + + @Override + public final RuntimeEnvironmentRegistry environments() { + return () -> environments; + } + + @Override + public final PermissionsExaminationServicesRegistry examinators() { + return () -> examinators; + } + + @Override + public final HashesRegistry hashes() { + return () -> hashes; + } + + @Override + public AgreementAcceptanceService acceptance() { + return acceptance; + } + + @Override + public GrantsTraceService grantsTrace() { + return forsakenGrants; + } + +} diff --git a/bundles/org.eclipse.passage.lic.features.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.features.model/META-INF/MANIFEST.MF index f5ff349c6..a2625e0e9 100644 --- a/bundles/org.eclipse.passage.lic.features.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.features.model/META-INF/MANIFEST.MF @@ -1,23 +1,23 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.features.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.features.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.features;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.features.model.api, - org.eclipse.passage.lic.features.model.impl;x-internal:=true, - org.eclipse.passage.lic.features.model.meta, - org.eclipse.passage.lic.features.model.util, - org.eclipse.passage.lic.internal.features.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.lic.internal.features.model.util;x-internal:=true -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.features.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.features.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.features;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.features.model.api, + org.eclipse.passage.lic.features.model.impl;x-internal:=true, + org.eclipse.passage.lic.features.model.meta, + org.eclipse.passage.lic.features.model.util, + org.eclipse.passage.lic.internal.features.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.lic.internal.features.model.util;x-internal:=true +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.features.model/plugin.xml b/bundles/org.eclipse.passage.lic.features.model/plugin.xml index a2051afed..9357936b3 100644 --- a/bundles/org.eclipse.passage.lic.features.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.features.model/plugin.xml @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceFactoryImpl.java index 3d0c098e8..d1e46e640 100644 --- a/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceFactoryImpl.java @@ -1,26 +1,26 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.features.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; - -public class FeaturesResourceFactoryImpl extends ResourceFactoryImpl { - - @Override - public Resource createResource(URI uri) { - return new FeaturesResourceImpl(uri); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.features.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; + +public class FeaturesResourceFactoryImpl extends ResourceFactoryImpl { + + @Override + public Resource createResource(URI uri) { + return new FeaturesResourceImpl(uri); + } + +} diff --git a/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceImpl.java b/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceImpl.java index 7a08f2a9a..ff0c76973 100644 --- a/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.features.model/src/org/eclipse/passage/lic/internal/features/model/util/FeaturesResourceImpl.java @@ -1,35 +1,35 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.features.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.features.model.migration.FeaturesResourceHandler; - -public class FeaturesResourceImpl extends XMIResourceImpl { - - public FeaturesResourceImpl(URI uri) { - super(uri); - } - - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new FeaturesResourceHandler()); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.features.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.features.model.migration.FeaturesResourceHandler; + +public class FeaturesResourceImpl extends XMIResourceImpl { + + public FeaturesResourceImpl(URI uri) { + super(uri); + } + + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new FeaturesResourceHandler()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.hc/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.hc/META-INF/MANIFEST.MF index b4e95713b..8b9b26a5f 100644 --- a/bundles/org.eclipse.passage.lic.hc/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.hc/META-INF/MANIFEST.MF @@ -1,22 +1,22 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.hc -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.hc -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", - org.eclipse.passage.lic.api;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.net;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.hc.internal.remote;x-internal:=true, - org.eclipse.passage.lic.hc.remote;x-internal:=true, - org.eclipse.passage.lic.hc.remote.impl;x-internal:=true, - org.eclipse.passage.lic.hc.remote.impl.acquire;x-internal:=true, - org.eclipse.passage.lic.hc.remote.impl.mine;x-internal:=true -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.hc +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.hc +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", + org.eclipse.passage.lic.api;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.net;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.hc.internal.remote;x-internal:=true, + org.eclipse.passage.lic.hc.remote;x-internal:=true, + org.eclipse.passage.lic.hc.remote.impl;x-internal:=true, + org.eclipse.passage.lic.hc.remote.impl.acquire;x-internal:=true, + org.eclipse.passage.lic.hc.remote.impl.mine;x-internal:=true +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.java b/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.java index 93208dfc2..dd9c01008 100644 --- a/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.java +++ b/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.java @@ -1,27 +1,27 @@ -/******************************************************************************* - * Copyright (c) 2019, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - * ArSysOp - further support - *******************************************************************************/ -package org.eclipse.passage.lic.internal.hc.i18n; - -import org.eclipse.osgi.util.NLS; - -public final class MineMessages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.passage.lic.internal.hc.i18n.MineMessages"; //$NON-NLS-1$ - - public static String DecryptedConditions_no_transport_for_content_type; - public static String DecryptedConditions_reading_error; - - static { - NLS.initializeMessages(BUNDLE_NAME, MineMessages.class); - } -} +/******************************************************************************* + * Copyright (c) 2019, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + * ArSysOp - further support + *******************************************************************************/ +package org.eclipse.passage.lic.internal.hc.i18n; + +import org.eclipse.osgi.util.NLS; + +public final class MineMessages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.passage.lic.internal.hc.i18n.MineMessages"; //$NON-NLS-1$ + + public static String DecryptedConditions_no_transport_for_content_type; + public static String DecryptedConditions_reading_error; + + static { + NLS.initializeMessages(BUNDLE_NAME, MineMessages.class); + } +} diff --git a/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.properties b/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.properties index 13af9cb2e..48492f77c 100644 --- a/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.properties +++ b/bundles/org.eclipse.passage.lic.hc/src/org/eclipse/passage/lic/internal/hc/i18n/MineMessages.properties @@ -1,15 +1,15 @@ -############################################################################### -# Copyright (c) 2019, 2020 ArSysOp and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# https://www.eclipse.org/legal/epl-2.0/. -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ArSysOp - initial API and implementation -############################################################################### - -DecryptedConditions_no_transport_for_content_type=Unknown content type: no registered transports for %s -DecryptedConditions_reading_error=Error reading remote condition data +############################################################################### +# Copyright (c) 2019, 2020 ArSysOp and others +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/. +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# ArSysOp - initial API and implementation +############################################################################### + +DecryptedConditions_no_transport_for_content_type=Unknown content type: no registered transports for %s +DecryptedConditions_reading_error=Error reading remote condition data diff --git a/bundles/org.eclipse.passage.lic.jface/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.jface/META-INF/MANIFEST.MF index dd53e3df6..41fa33a8c 100644 --- a/bundles/org.eclipse.passage.lic.jface/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.jface/META-INF/MANIFEST.MF @@ -1,36 +1,36 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.base.ui -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.jface -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.equinox.common;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.jface;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.base;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.equinox;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.internal.jface.dialogs.licensing;x-friends:="org.eclipse.passage.lic.e4.ui,org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui", - org.eclipse.passage.lic.jface;x-friends:="org.eclipse.passage.loc.workbench", - org.eclipse.passage.lic.jface.actions;x-internal:=true, - org.eclipse.passage.lic.jface.resource; - x-friends:="org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.workbench, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.lic.floating.e4.ui, - org.eclipse.passage.lic.licenses.e4.ui, - org.eclipse.passage.lic.e4.ui, - org.eclipse.passage.lic.features.e4.ui, - org.eclipse.passage.lic.products.e4.ui, - org.eclipse.passage.lic.users.e4.ui, - org.eclipse.passage.loc.workbench.emfforms, - org.eclipse.passage.loc.products.ui, - org.eclipse.passage.loc.licenses.ui, - org.eclipse.passage.loc.edit.ui, - org.eclipse.passage.lic.agreements.e4.ui", - org.eclipse.passage.lic.jface.widgets;x-friends:="org.eclipse.passage.loc.workbench" -Import-Package: org.slf4j;version="[1.7.0,3.0.0)" -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.base.ui +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.jface +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.equinox.common;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.jface;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.api;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.base;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.equinox;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.internal.jface.dialogs.licensing;x-friends:="org.eclipse.passage.lic.e4.ui,org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui", + org.eclipse.passage.lic.jface;x-friends:="org.eclipse.passage.loc.workbench", + org.eclipse.passage.lic.jface.actions;x-internal:=true, + org.eclipse.passage.lic.jface.resource; + x-friends:="org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.workbench, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.lic.floating.e4.ui, + org.eclipse.passage.lic.licenses.e4.ui, + org.eclipse.passage.lic.e4.ui, + org.eclipse.passage.lic.features.e4.ui, + org.eclipse.passage.lic.products.e4.ui, + org.eclipse.passage.lic.users.e4.ui, + org.eclipse.passage.loc.workbench.emfforms, + org.eclipse.passage.loc.products.ui, + org.eclipse.passage.loc.licenses.ui, + org.eclipse.passage.loc.edit.ui, + org.eclipse.passage.lic.agreements.e4.ui", + org.eclipse.passage.lic.jface.widgets;x-friends:="org.eclipse.passage.loc.workbench" +Import-Package: org.slf4j;version="[1.7.0,3.0.0)" +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.keys.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.keys.model/META-INF/MANIFEST.MF index e2a7ba60d..1b040eff3 100644 --- a/bundles/org.eclipse.passage.lic.keys.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.keys.model/META-INF/MANIFEST.MF @@ -1,22 +1,22 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.keys.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.keys.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";resolution:=optional;x-installation:=greedy, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.keys;bundle-version="0.0.0";visibility:=reexport -Export-Package: org.eclipse.passage.lic.internal.keys.model.util;x-internal:=true, - org.eclipse.passage.lic.keys.model.api, - org.eclipse.passage.lic.keys.model.impl;x-internal:=true, - org.eclipse.passage.lic.keys.model.meta, - org.eclipse.passage.lic.keys.model.util -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.keys.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.keys.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";resolution:=optional;x-installation:=greedy, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.keys;bundle-version="0.0.0";visibility:=reexport +Export-Package: org.eclipse.passage.lic.internal.keys.model.util;x-internal:=true, + org.eclipse.passage.lic.keys.model.api, + org.eclipse.passage.lic.keys.model.impl;x-internal:=true, + org.eclipse.passage.lic.keys.model.meta, + org.eclipse.passage.lic.keys.model.util +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.keys.model/plugin.xml b/bundles/org.eclipse.passage.lic.keys.model/plugin.xml index 38088af89..930ccc68f 100644 --- a/bundles/org.eclipse.passage.lic.keys.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.keys.model/plugin.xml @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/migration/KeysResourceHandler.java b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/migration/KeysResourceHandler.java index e168f9c72..6cd2d4935 100644 --- a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/migration/KeysResourceHandler.java +++ b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/migration/KeysResourceHandler.java @@ -1,46 +1,46 @@ -/******************************************************************************* - * Copyright (c) 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.keys.model.migration; - -import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.xmi.XMLResource; -import org.eclipse.passage.lic.emf.migration.MigrationRoutes; -import org.eclipse.passage.lic.emf.migration.SimpleMigrationRoutes; -import org.eclipse.passage.lic.emf.xmi.MigratingResourceHandler; -import org.eclipse.passage.lic.keys.model.meta.KeysPackage; - -@SuppressWarnings("restriction") -public final class KeysResourceHandler extends MigratingResourceHandler { - - @Override - protected void complete(XMLResource resource) { - // do nothing - } - - @Override - protected void register() { - migrate200(); - } - - @Override - protected MigrationRoutes attributes() { - return new SimpleMigrationRoutes(); - } - - private void migrate200() { - String uri = "http://www.eclipse.org/passage/lic/keys/2.0.0"; //$NON-NLS-1$ - KeysPackage delegate = KeysPackage.eINSTANCE; - EPackage.Registry.INSTANCE.computeIfAbsent(uri, ns -> delegate); - } - -} +/******************************************************************************* + * Copyright (c) 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.keys.model.migration; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.passage.lic.emf.migration.MigrationRoutes; +import org.eclipse.passage.lic.emf.migration.SimpleMigrationRoutes; +import org.eclipse.passage.lic.emf.xmi.MigratingResourceHandler; +import org.eclipse.passage.lic.keys.model.meta.KeysPackage; + +@SuppressWarnings("restriction") +public final class KeysResourceHandler extends MigratingResourceHandler { + + @Override + protected void complete(XMLResource resource) { + // do nothing + } + + @Override + protected void register() { + migrate200(); + } + + @Override + protected MigrationRoutes attributes() { + return new SimpleMigrationRoutes(); + } + + private void migrate200() { + String uri = "http://www.eclipse.org/passage/lic/keys/2.0.0"; //$NON-NLS-1$ + KeysPackage delegate = KeysPackage.eINSTANCE; + EPackage.Registry.INSTANCE.computeIfAbsent(uri, ns -> delegate); + } + +} diff --git a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceFactoryImpl.java index e5133317c..19e200706 100644 --- a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceFactoryImpl.java @@ -1,33 +1,33 @@ -/******************************************************************************* - * Copyright (c) 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.keys.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; -import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; - -@SuppressWarnings("restriction") -public final class KeysResourceFactoryImpl extends ResourceFactoryImpl implements BlindResourceFactory { - - @Override - public Resource createResource(URI uri) { - return new KeysResourceImpl(uri); - } - - @Override - public Resource createResource() { - return new KeysResourceImpl(); - } - -} +/******************************************************************************* + * Copyright (c) 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.keys.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; +import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; + +@SuppressWarnings("restriction") +public final class KeysResourceFactoryImpl extends ResourceFactoryImpl implements BlindResourceFactory { + + @Override + public Resource createResource(URI uri) { + return new KeysResourceImpl(uri); + } + + @Override + public Resource createResource() { + return new KeysResourceImpl(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceImpl.java b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceImpl.java index c58034b99..b5487a16d 100644 --- a/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.keys.model/src/org/eclipse/passage/lic/internal/keys/model/util/KeysResourceImpl.java @@ -1,39 +1,39 @@ -/******************************************************************************* - * Copyright (c) 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.keys.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.keys.model.migration.KeysResourceHandler; - -public class KeysResourceImpl extends XMIResourceImpl { - - public KeysResourceImpl(URI uri) { - super(uri); - } - - public KeysResourceImpl() { - super(); - } - - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new KeysResourceHandler()); - } - -} +/******************************************************************************* + * Copyright (c) 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.keys.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.keys.model.migration.KeysResourceHandler; + +public class KeysResourceImpl extends XMIResourceImpl { + + public KeysResourceImpl(URI uri) { + super(uri); + } + + public KeysResourceImpl() { + super(); + } + + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new KeysResourceHandler()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.licenses.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.licenses.model/META-INF/MANIFEST.MF index dfd869eac..a3f1d1967 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.licenses.model/META-INF/MANIFEST.MF @@ -1,28 +1,28 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.licenses.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.licenses.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.base;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.internal.licenses.convert;x-friends:="org.eclipse.passage.lic.hc", - org.eclipse.passage.lic.internal.licenses.model;x-friends:="org.eclipse.passage.lic.licenses.migration,org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.core", - org.eclipse.passage.lic.internal.licenses.model.signature;x-internal:=true, - org.eclipse.passage.lic.internal.licenses.model.util;x-internal:=true, - org.eclipse.passage.lic.licenses.model.api, - org.eclipse.passage.lic.licenses.model.described;x-internal:=true, - org.eclipse.passage.lic.licenses.model.impl;x-internal:=true, - org.eclipse.passage.lic.licenses.model.meta, - org.eclipse.passage.lic.licenses.model.transport;x-internal:=true, - org.eclipse.passage.lic.licenses.model.util -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.licenses.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.licenses.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.base;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.internal.licenses.convert;x-friends:="org.eclipse.passage.lic.hc", + org.eclipse.passage.lic.internal.licenses.model;x-friends:="org.eclipse.passage.lic.licenses.migration,org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.core", + org.eclipse.passage.lic.internal.licenses.model.signature;x-internal:=true, + org.eclipse.passage.lic.internal.licenses.model.util;x-internal:=true, + org.eclipse.passage.lic.licenses.model.api, + org.eclipse.passage.lic.licenses.model.described;x-internal:=true, + org.eclipse.passage.lic.licenses.model.impl;x-internal:=true, + org.eclipse.passage.lic.licenses.model.meta, + org.eclipse.passage.lic.licenses.model.transport;x-internal:=true, + org.eclipse.passage.lic.licenses.model.util +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.licenses.model/plugin.xml b/bundles/org.eclipse.passage.lic.licenses.model/plugin.xml index 2d11fdf58..8485b5c0a 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.licenses.model/plugin.xml @@ -1,43 +1,43 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceFactoryImpl.java index 429a45eec..5276faae8 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceFactoryImpl.java @@ -1,34 +1,34 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - * ArSysOp - further support - *******************************************************************************/ -package org.eclipse.passage.lic.internal.licenses.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; -import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; - -@SuppressWarnings("restriction") -public final class LicensesResourceFactoryImpl extends ResourceFactoryImpl implements BlindResourceFactory { - - @Override - public Resource createResource(URI uri) { - return new LicensesResourceImpl(uri); - } - - @Override - public Resource createResource() { - return new LicensesResourceImpl(); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + * ArSysOp - further support + *******************************************************************************/ +package org.eclipse.passage.lic.internal.licenses.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; +import org.eclipse.passage.lic.emf.resource.BlindResourceFactory; + +@SuppressWarnings("restriction") +public final class LicensesResourceFactoryImpl extends ResourceFactoryImpl implements BlindResourceFactory { + + @Override + public Resource createResource(URI uri) { + return new LicensesResourceImpl(uri); + } + + @Override + public Resource createResource() { + return new LicensesResourceImpl(); + } + +} diff --git a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceImpl.java b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceImpl.java index 7f22c0495..e1c623d4c 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/model/util/LicensesResourceImpl.java @@ -1,62 +1,62 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.licenses.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.licenses.model.migration.LicensesResourceHandler; - -/** - * The Resource associated with the package. - * - * - * @see org.eclipse.passage.lic.internal.licenses.model.util.LicensesResourceFactoryImpl - * @since 2.1 - * @generated NOT - */ -public class LicensesResourceImpl extends XMIResourceImpl { - /** - * Creates an instance of the resource. - * - * @param uri the URI of the new resource. - * @generated - */ - public LicensesResourceImpl(URI uri) { - super(uri); - } - - /** - * Creates an instance of the resource. - * - * @generated NOT - */ - public LicensesResourceImpl() { - super(); - } - - /** - * @generated NOT - */ - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new LicensesResourceHandler()); - } - -} // LicensesResourceImpl +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.licenses.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.licenses.model.migration.LicensesResourceHandler; + +/** + * The Resource associated with the package. + * + * + * @see org.eclipse.passage.lic.internal.licenses.model.util.LicensesResourceFactoryImpl + * @since 2.1 + * @generated NOT + */ +public class LicensesResourceImpl extends XMIResourceImpl { + /** + * Creates an instance of the resource. + * + * @param uri the URI of the new resource. + * @generated + */ + public LicensesResourceImpl(URI uri) { + super(uri); + } + + /** + * Creates an instance of the resource. + * + * @generated NOT + */ + public LicensesResourceImpl() { + super(); + } + + /** + * @generated NOT + */ + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new LicensesResourceHandler()); + } + +} // LicensesResourceImpl diff --git a/bundles/org.eclipse.passage.lic.oshi/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.oshi/META-INF/MANIFEST.MF index 10c2d6575..f61ca2440 100644 --- a/bundles/org.eclipse.passage.lic.oshi/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.oshi/META-INF/MANIFEST.MF @@ -1,17 +1,17 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.oshi -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.oshi -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.lic.oshi;x-internal:=true -Bundle-ActivationPolicy: lazy -Import-Package: org.eclipse.osgi.util;version="1.0.0", - oshi;version="[6.2.2,7.0.0)", - oshi.hardware;version="[6.2.2,7.0.0)", - oshi.software.os;version="[6.2.2,7.0.0)" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.oshi +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.oshi +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.api;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.lic.oshi;x-internal:=true +Bundle-ActivationPolicy: lazy +Import-Package: org.eclipse.osgi.util;version="1.0.0", + oshi;version="[6.2.2,7.0.0)", + oshi.hardware;version="[6.2.2,7.0.0)", + oshi.software.os;version="[6.2.2,7.0.0)" diff --git a/bundles/org.eclipse.passage.lic.products.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.products.model/META-INF/MANIFEST.MF index ddaad1e4a..d89c47873 100644 --- a/bundles/org.eclipse.passage.lic.products.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.products.model/META-INF/MANIFEST.MF @@ -1,23 +1,23 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.products.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.products.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.products;bundle-version="0.0.0";visibility:=reexport -Export-Package: org.eclipse.passage.lic.internal.products.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.lic.internal.products.model.util;x-internal:=true, - org.eclipse.passage.lic.products.model.api, - org.eclipse.passage.lic.products.model.impl;x-internal:=true, - org.eclipse.passage.lic.products.model.meta, - org.eclipse.passage.lic.products.model.util -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.products.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.products.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.products;bundle-version="0.0.0";visibility:=reexport +Export-Package: org.eclipse.passage.lic.internal.products.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.lic.internal.products.model.util;x-internal:=true, + org.eclipse.passage.lic.products.model.api, + org.eclipse.passage.lic.products.model.impl;x-internal:=true, + org.eclipse.passage.lic.products.model.meta, + org.eclipse.passage.lic.products.model.util +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.products.model/plugin.xml b/bundles/org.eclipse.passage.lic.products.model/plugin.xml index 945a8f3bf..6775f3437 100644 --- a/bundles/org.eclipse.passage.lic.products.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.products.model/plugin.xml @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceFactoryImpl.java index 693ddad81..f82640744 100644 --- a/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceFactoryImpl.java @@ -1,27 +1,27 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.products.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; - -public class ProductsResourceFactoryImpl extends ResourceFactoryImpl { - - @Override - public Resource createResource(URI uri) { - Resource result = new ProductsResourceImpl(uri); - return result; - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.products.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; + +public class ProductsResourceFactoryImpl extends ResourceFactoryImpl { + + @Override + public Resource createResource(URI uri) { + Resource result = new ProductsResourceImpl(uri); + return result; + } + +} diff --git a/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceImpl.java b/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceImpl.java index b2531b895..6069ba87d 100644 --- a/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.products.model/src/org/eclipse/passage/lic/internal/products/model/util/ProductsResourceImpl.java @@ -1,35 +1,35 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.products.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.products.model.migration.ProductsResourceHandler; - -public class ProductsResourceImpl extends XMIResourceImpl { - - public ProductsResourceImpl(URI uri) { - super(uri); - } - - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new ProductsResourceHandler()); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.products.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.products.model.migration.ProductsResourceHandler; + +public class ProductsResourceImpl extends XMIResourceImpl { + + public ProductsResourceImpl(URI uri) { + super(uri); + } + + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new ProductsResourceHandler()); + } + +} diff --git a/bundles/org.eclipse.passage.lic.users.model/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lic.users.model/META-INF/MANIFEST.MF index ade241fdb..66ac0c4bf 100644 --- a/bundles/org.eclipse.passage.lic.users.model/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lic.users.model/META-INF/MANIFEST.MF @@ -1,23 +1,23 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.users.model -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.users.model;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %pluginName -Bundle-Vendor: %providerName -Bundle-Copyright: %Bundle-Copyright -Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, - org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.users;bundle-version="0.0.0";visibility:=reexport -Export-Package: org.eclipse.passage.lic.internal.users.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.lic.internal.users.model.util;x-internal:=true, - org.eclipse.passage.lic.users.model.api, - org.eclipse.passage.lic.users.model.impl;x-internal:=true, - org.eclipse.passage.lic.users.model.meta, - org.eclipse.passage.lic.users.model.util -Bundle-ClassPath: . -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.users.model +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.users.model;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-Copyright: %Bundle-Copyright +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0";x-installation:=greedy;resolution:=optional, + org.eclipse.emf.ecore;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.users;bundle-version="0.0.0";visibility:=reexport +Export-Package: org.eclipse.passage.lic.internal.users.model;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.lic.internal.users.model.util;x-internal:=true, + org.eclipse.passage.lic.users.model.api, + org.eclipse.passage.lic.users.model.impl;x-internal:=true, + org.eclipse.passage.lic.users.model.meta, + org.eclipse.passage.lic.users.model.util +Bundle-ClassPath: . +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.lic.users.model/plugin.xml b/bundles/org.eclipse.passage.lic.users.model/plugin.xml index 1a7cf055c..5ffce098e 100644 --- a/bundles/org.eclipse.passage.lic.users.model/plugin.xml +++ b/bundles/org.eclipse.passage.lic.users.model/plugin.xml @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/UsersClassMetadata.java b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/UsersClassMetadata.java index 08e73013b..bc39b52d4 100644 --- a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/UsersClassMetadata.java +++ b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/UsersClassMetadata.java @@ -1,52 +1,52 @@ -/******************************************************************************* - * Copyright (c) 2020, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.users.model; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.passage.lic.emf.meta.ClassMetadata; -import org.eclipse.passage.lic.emf.meta.EntityMetadata; -import org.eclipse.passage.lic.emf.meta.PlainEntityMetadata; -import org.eclipse.passage.lic.users.model.api.User; -import org.eclipse.passage.lic.users.model.api.UserOrigin; -import org.eclipse.passage.lic.users.model.meta.UsersPackage; - -@SuppressWarnings("restriction") -public final class UsersClassMetadata implements ClassMetadata { - - private final UsersPackage meta; - private final Map, EntityMetadata> map; - - public UsersClassMetadata() { - meta = UsersPackage.eINSTANCE; - map = new HashMap, EntityMetadata>(); - map.put(UserOrigin.class, // - new PlainEntityMetadata(// - meta.getUserOrigin(), // - meta.getUserOrigin_Identifier(), // - meta.getUserOrigin_Name())); - map.put(User.class, // - new PlainEntityMetadata(// - meta.getUser(), // - meta.getLicenseOwner_Identifier(), // - meta.getLicenseOwner_Name())); - } - - @Override - public Optional find(Class clazz) { - return Optional.ofNullable(map.get(clazz)); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.users.model; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.passage.lic.emf.meta.ClassMetadata; +import org.eclipse.passage.lic.emf.meta.EntityMetadata; +import org.eclipse.passage.lic.emf.meta.PlainEntityMetadata; +import org.eclipse.passage.lic.users.model.api.User; +import org.eclipse.passage.lic.users.model.api.UserOrigin; +import org.eclipse.passage.lic.users.model.meta.UsersPackage; + +@SuppressWarnings("restriction") +public final class UsersClassMetadata implements ClassMetadata { + + private final UsersPackage meta; + private final Map, EntityMetadata> map; + + public UsersClassMetadata() { + meta = UsersPackage.eINSTANCE; + map = new HashMap, EntityMetadata>(); + map.put(UserOrigin.class, // + new PlainEntityMetadata(// + meta.getUserOrigin(), // + meta.getUserOrigin_Identifier(), // + meta.getUserOrigin_Name())); + map.put(User.class, // + new PlainEntityMetadata(// + meta.getUser(), // + meta.getLicenseOwner_Identifier(), // + meta.getLicenseOwner_Name())); + } + + @Override + public Optional find(Class clazz) { + return Optional.ofNullable(map.get(clazz)); + } + +} diff --git a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/migration/UsersResourceHandler.java b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/migration/UsersResourceHandler.java index 571d0cdea..d81e8bb84 100644 --- a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/migration/UsersResourceHandler.java +++ b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/migration/UsersResourceHandler.java @@ -1,118 +1,118 @@ -/******************************************************************************* - * Copyright (c) 2021, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.users.model.migration; - -import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.xmi.XMLResource; -import org.eclipse.passage.lic.emf.migration.DelegateClassifiers; -import org.eclipse.passage.lic.emf.migration.EClassRoutes; -import org.eclipse.passage.lic.emf.migration.MigrationRoutes; -import org.eclipse.passage.lic.emf.migration.SimpleAttributeRoute; -import org.eclipse.passage.lic.emf.migration.SimpleClassRoutes; -import org.eclipse.passage.lic.emf.migration.SimpleMigrationRoutes; -import org.eclipse.passage.lic.emf.xmi.MigratingResourceHandler; -import org.eclipse.passage.lic.users.model.api.Contact; -import org.eclipse.passage.lic.users.model.api.User; -import org.eclipse.passage.lic.users.model.api.UserOrigin; -import org.eclipse.passage.lic.users.model.meta.UsersPackage; - -@SuppressWarnings("restriction") -public final class UsersResourceHandler extends MigratingResourceHandler { - - @Override - protected void register() { - migrate033(); - migrate040(); - migrate050(); - migrate100(); - migrate110(); - migrate200(); - } - - @Override - protected void complete(XMLResource resource) { - resource.getContents().stream()// - .filter(UserOrigin.class::isInstance)// - .map(UserOrigin.class::cast) // - .forEach(this::complete); - } - - @Override - protected MigrationRoutes attributes() { - MigrationRoutes routes = new SimpleMigrationRoutes(); - UsersPackage users = UsersPackage.eINSTANCE; - routes.define("preferredConditionType", new SimpleAttributeRoute(users.getUser_PreferredEvaluationType())); //$NON-NLS-1$ - routes.define("preferredConditionExpression", //$NON-NLS-1$ - new SimpleAttributeRoute(users.getUser_PreferredEvaluationExpression())); - routes.define("email", //$NON-NLS-1$ - new SimpleAttributeRoute(users.getContact_Email(), users.getLicenseOwner_Contact())); - routes.define("fullName", //$NON-NLS-1$ - new SimpleAttributeRoute(users.getContact_Name(), users.getLicenseOwner_Contact())); - routes.ignore("userLicenses", users.getUser()); //$NON-NLS-1$ - return routes; - } - - private void migrate033() { - String uri = "http://www.eclipse.org/passage/lic/0.3.3"; //$NON-NLS-1$ - new DelegateClassifiers(uri).delegate(classRoutes200()); - } - - private void migrate040() { - String uri = "http://www.eclipse.org/passage/lic/users/0.4.0"; //$NON-NLS-1$ - new DelegateClassifiers(uri).delegate(classRoutes200()); - } - - private void migrate050() { - String uri = "http://www.eclipse.org/passage/lic/users/0.5.0"; //$NON-NLS-1$ - new DelegateClassifiers(uri).delegate(classRoutes200()); - } - - private void migrate100() { - String uri = "http://www.eclipse.org/passage/lic/users/1.0.0"; //$NON-NLS-1$ - new DelegateClassifiers(uri).delegate(classRoutes200()); - } - - private void migrate110() { - String uri = "http://www.eclipse.org/passage/lic/users/1.1.0"; //$NON-NLS-1$ - new DelegateClassifiers(uri).delegate(classRoutes200()); - } - - private void migrate200() { - String uri = "http://www.eclipse.org/passage/lic/users/2.0.0"; //$NON-NLS-1$ - UsersPackage delegate = UsersPackage.eINSTANCE; - EPackage.Registry.INSTANCE.computeIfAbsent(uri, ns -> delegate); - } - - private EClassRoutes classRoutes200() { - UsersPackage delegate = UsersPackage.eINSTANCE; - EClassRoutes.Smart routes = new EClassRoutes.Smart(new SimpleClassRoutes()); - routes.define(delegate.getUserOrigin()); - routes.define(delegate.getUser()); - return routes; - } - - private void complete(UserOrigin origin) { - origin.getUsers().forEach(this::complete); - } - - private void complete(User user) { - Contact contact = new EnsureLicenseOwnerContact().apply(user); - if (user.getIdentifier() == null) { - user.setIdentifier(contact.getEmail()); - } - if (user.getName() == null) { - user.setName(contact.getName()); - } - } - -} +/******************************************************************************* + * Copyright (c) 2021, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.users.model.migration; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.passage.lic.emf.migration.DelegateClassifiers; +import org.eclipse.passage.lic.emf.migration.EClassRoutes; +import org.eclipse.passage.lic.emf.migration.MigrationRoutes; +import org.eclipse.passage.lic.emf.migration.SimpleAttributeRoute; +import org.eclipse.passage.lic.emf.migration.SimpleClassRoutes; +import org.eclipse.passage.lic.emf.migration.SimpleMigrationRoutes; +import org.eclipse.passage.lic.emf.xmi.MigratingResourceHandler; +import org.eclipse.passage.lic.users.model.api.Contact; +import org.eclipse.passage.lic.users.model.api.User; +import org.eclipse.passage.lic.users.model.api.UserOrigin; +import org.eclipse.passage.lic.users.model.meta.UsersPackage; + +@SuppressWarnings("restriction") +public final class UsersResourceHandler extends MigratingResourceHandler { + + @Override + protected void register() { + migrate033(); + migrate040(); + migrate050(); + migrate100(); + migrate110(); + migrate200(); + } + + @Override + protected void complete(XMLResource resource) { + resource.getContents().stream()// + .filter(UserOrigin.class::isInstance)// + .map(UserOrigin.class::cast) // + .forEach(this::complete); + } + + @Override + protected MigrationRoutes attributes() { + MigrationRoutes routes = new SimpleMigrationRoutes(); + UsersPackage users = UsersPackage.eINSTANCE; + routes.define("preferredConditionType", new SimpleAttributeRoute(users.getUser_PreferredEvaluationType())); //$NON-NLS-1$ + routes.define("preferredConditionExpression", //$NON-NLS-1$ + new SimpleAttributeRoute(users.getUser_PreferredEvaluationExpression())); + routes.define("email", //$NON-NLS-1$ + new SimpleAttributeRoute(users.getContact_Email(), users.getLicenseOwner_Contact())); + routes.define("fullName", //$NON-NLS-1$ + new SimpleAttributeRoute(users.getContact_Name(), users.getLicenseOwner_Contact())); + routes.ignore("userLicenses", users.getUser()); //$NON-NLS-1$ + return routes; + } + + private void migrate033() { + String uri = "http://www.eclipse.org/passage/lic/0.3.3"; //$NON-NLS-1$ + new DelegateClassifiers(uri).delegate(classRoutes200()); + } + + private void migrate040() { + String uri = "http://www.eclipse.org/passage/lic/users/0.4.0"; //$NON-NLS-1$ + new DelegateClassifiers(uri).delegate(classRoutes200()); + } + + private void migrate050() { + String uri = "http://www.eclipse.org/passage/lic/users/0.5.0"; //$NON-NLS-1$ + new DelegateClassifiers(uri).delegate(classRoutes200()); + } + + private void migrate100() { + String uri = "http://www.eclipse.org/passage/lic/users/1.0.0"; //$NON-NLS-1$ + new DelegateClassifiers(uri).delegate(classRoutes200()); + } + + private void migrate110() { + String uri = "http://www.eclipse.org/passage/lic/users/1.1.0"; //$NON-NLS-1$ + new DelegateClassifiers(uri).delegate(classRoutes200()); + } + + private void migrate200() { + String uri = "http://www.eclipse.org/passage/lic/users/2.0.0"; //$NON-NLS-1$ + UsersPackage delegate = UsersPackage.eINSTANCE; + EPackage.Registry.INSTANCE.computeIfAbsent(uri, ns -> delegate); + } + + private EClassRoutes classRoutes200() { + UsersPackage delegate = UsersPackage.eINSTANCE; + EClassRoutes.Smart routes = new EClassRoutes.Smart(new SimpleClassRoutes()); + routes.define(delegate.getUserOrigin()); + routes.define(delegate.getUser()); + return routes; + } + + private void complete(UserOrigin origin) { + origin.getUsers().forEach(this::complete); + } + + private void complete(User user) { + Contact contact = new EnsureLicenseOwnerContact().apply(user); + if (user.getIdentifier() == null) { + user.setIdentifier(contact.getEmail()); + } + if (user.getName() == null) { + user.setName(contact.getName()); + } + } + +} diff --git a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceFactoryImpl.java b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceFactoryImpl.java index a330f7ae4..d2bdfcdbc 100644 --- a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceFactoryImpl.java +++ b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceFactoryImpl.java @@ -1,27 +1,27 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.users.model.util; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; - -public class UsersResourceFactoryImpl extends ResourceFactoryImpl { - - @Override - public Resource createResource(URI uri) { - Resource result = new UsersResourceImpl(uri); - return result; - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.users.model.util; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; + +public class UsersResourceFactoryImpl extends ResourceFactoryImpl { + + @Override + public Resource createResource(URI uri) { + Resource result = new UsersResourceImpl(uri); + return result; + } + +} diff --git a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceImpl.java b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceImpl.java index fedc9dd21..1eecd0dfc 100644 --- a/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceImpl.java +++ b/bundles/org.eclipse.passage.lic.users.model/src/org/eclipse/passage/lic/internal/users/model/util/UsersResourceImpl.java @@ -1,39 +1,39 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.users.model.util; - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; -import org.eclipse.passage.lic.internal.users.model.migration.UsersResourceHandler; - -public class UsersResourceImpl extends XMIResourceImpl { - - public UsersResourceImpl(URI uri) { - super(uri); - } - - public UsersResourceImpl() { - super(); - } - - @Override - protected void init() { - super.init(); - Map options = getDefaultLoadOptions(); - options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); - options.put(OPTION_RESOURCE_HANDLER, new UsersResourceHandler()); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.users.model.util; + +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.passage.lic.internal.users.model.migration.UsersResourceHandler; + +public class UsersResourceImpl extends XMIResourceImpl { + + public UsersResourceImpl(URI uri) { + super(uri); + } + + public UsersResourceImpl() { + super(); + } + + @Override + protected void init() { + super.init(); + Map options = getDefaultLoadOptions(); + options.put(OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE); + options.put(OPTION_RESOURCE_HANDLER, new UsersResourceHandler()); + } + +} diff --git a/bundles/org.eclipse.passage.loc.agreements.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.agreements.core/META-INF/MANIFEST.MF index 0f0036fd3..5f8397a7b 100644 --- a/bundles/org.eclipse.passage.loc.agreements.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.agreements.core/META-INF/MANIFEST.MF @@ -1,23 +1,23 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.agreements.core -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.agreements.core -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.agreements.model;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.agreements;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.loc.internal.agreements; - x-friends:="org.eclipse.passage.loc.agreements.emfforms, - org.eclipse.passage.loc.agreements.ui, - org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.licenses.core", - org.eclipse.passage.loc.internal.agreements.core;x-internal:=true -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/*.xml -Import-Package: org.osgi.service.event;version="1.0.0" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.agreements.core +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.agreements.core +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.agreements.model;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.agreements;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.loc.internal.agreements; + x-friends:="org.eclipse.passage.loc.agreements.emfforms, + org.eclipse.passage.loc.agreements.ui, + org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.licenses.core", + org.eclipse.passage.loc.internal.agreements.core;x-internal:=true +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/*.xml +Import-Package: org.osgi.service.event;version="1.0.0" diff --git a/bundles/org.eclipse.passage.loc.agreements.core/src/org/eclipse/passage/loc/internal/agreements/core/AgreementDomainRegistry.java b/bundles/org.eclipse.passage.loc.agreements.core/src/org/eclipse/passage/loc/internal/agreements/core/AgreementDomainRegistry.java index 6fbff8227..c2754710e 100644 --- a/bundles/org.eclipse.passage.loc.agreements.core/src/org/eclipse/passage/loc/internal/agreements/core/AgreementDomainRegistry.java +++ b/bundles/org.eclipse.passage.loc.agreements.core/src/org/eclipse/passage/loc/internal/agreements/core/AgreementDomainRegistry.java @@ -1,230 +1,230 @@ -/******************************************************************************* - * Copyright (c) 2021, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.agreements.core; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.emf.common.util.BasicEList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.agreements.model.api.Agreement; -import org.eclipse.passage.lic.agreements.model.api.AgreementGroup; -import org.eclipse.passage.lic.agreements.model.meta.AgreementsPackage; -import org.eclipse.passage.lic.internal.agreements.model.util.AgreementsResourceImpl; -import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; -import org.eclipse.passage.loc.internal.agreements.AgreementRegistry; -import org.eclipse.passage.loc.internal.agreements.AgreementRegistryEvents; -import org.eclipse.passage.loc.internal.agreements.core.i18n.AgreementsCoreMessages; -import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; -import org.eclipse.passage.loc.internal.api.workspace.Agreements; -import org.eclipse.passage.loc.internal.api.workspace.KnownResources; -import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; -import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; -import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; -import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.event.EventAdmin; - -@SuppressWarnings("restriction") -@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + AgreementsPackage.eNAME, - EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "agreements_xmi" }) -public final class AgreementDomainRegistry extends BaseDomainRegistry - implements AgreementRegistry, EditingDomainRegistry { - - private final Map groups = new HashMap<>(); - private final Map agreements = new HashMap<>(); - - private final List events = new ArrayList<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public void bindEventAdmin(EventAdmin admin) { - this.events.add(admin); - } - - public void unbindEventAdmin(EventAdmin admin) { - this.events.remove(admin); - } - - @Activate - public void load(Map properties) { - super.activate(properties); - } - - @Deactivate - public void unload(Map properties) { - agreements.clear(); - groups.clear(); - super.deactivate(properties); - } - - @Override - @Reference - public void bindGear(OperatorGearSupplier supplier) { - super.bindGear(supplier); - } - - @Override - public void unbindGear(OperatorGearSupplier supplier) { - super.unbindGear(supplier); - } - - @Override - public String getFileExtension() { - return "agreements_xmi"; //$NON-NLS-1$ - } - - @Override - public Class getContentClass() { - return AgreementGroup.class; - } - - @Override - public String resolveIdentifier(AgreementGroup content) { - return content.getIdentifier(); - } - - @Override - public Collection groups() { - return new ArrayList<>(groups.values()); - } - - @Override - public Optional group(String identifier) { - return Optional.ofNullable(groups.get(identifier)); - } - - @Override - public Collection agreements() { - return new ArrayList<>(agreements.values()); - } - - public Collection agreements(String id) { - return group(id)// - .map(AgreementGroup::getAgreements)// - .orElseGet(BasicEList::new)// - .stream().toList(); - } - - @Override - public Optional agreement(String identifier) { - return Optional.ofNullable(agreements.get(identifier)); - } - - @Override - protected DomainContentAdapter createContentAdapter() { - return new AgreementsDomainRegistryTracker(this); - } - - public void registerAgreementGroup(AgreementGroup group) { - AgreementGroup existing = groups.put(group.getIdentifier(), group); - if ((existing != null) && (existing != group)) { - String msg = NLS.bind(AgreementsCoreMessages.AgreementDomain_instance_duplication_message, existing, group); - Platform.getLog(getClass()).warn(msg); - } - brush(group); - events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_GROUP_CREATE, group).get()); - group.getAgreements().forEach(u -> registerAgreement(u)); - } - - private void brush(AgreementGroup group) { - if (group.getDescription() == null) { - group.setDescription(""); //$NON-NLS-1$ - } - } - - public void registerAgreement(Agreement agreement) { - String identifier = agreement.getIdentifier(); - Agreement existing = agreements.put(identifier, agreement); - if ((existing != null) && (existing != agreement)) { - String msg = NLS.bind(AgreementsCoreMessages.AgreementDomain_instance_duplication_message, existing, - agreement); - Platform.getLog(getClass()).warn(msg); - } - events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_CREATE, agreement).get()); - } - - public void unregisterAgreementGroup(String id) { - AgreementGroup removed = groups.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_GROUP_DELETE, removed).get()); - removed.getAgreements().forEach(u -> unregisterAgreement(u.getIdentifier())); - } - } - - public void unregisterAgreement(String id) { - Agreement removed = agreements.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_DELETE, removed).get()); - } - } - - private EventAdmin events() { - return events.stream().findAny().get(); - } - - @Override - public EClass getContentClassifier() { - return AgreementsPackage.eINSTANCE.getAgreementGroup(); - } - - @Override - public EStructuralFeature getContentIdentifierAttribute() { - return AgreementsPackage.eINSTANCE.getAgreementGroup_Identifier(); - } - - @Override - public EStructuralFeature getContentNameAttribute() { - return AgreementsPackage.eINSTANCE.getAgreementGroup_Name(); - } - - @Override - public void registerContent(AgreementGroup content) { - registerAgreementGroup(content); - } - - @Override - public void unregisterContent(String identifier) { - unregisterAgreementGroup(identifier); - } - - @Override - protected final Resource createResource(URI uri) { - return new AgreementsResourceImpl(uri); - } - - @Override - protected boolean emfResource(ResourceHandle handle) { - return Agreements.xmi.equals(handle.type()); - } - - @Override - protected KnownResources knownResources(OperatorWorkspace workspace) { - return workspace.agreements(); - } - -} +/******************************************************************************* + * Copyright (c) 2021, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.agreements.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.agreements.model.api.Agreement; +import org.eclipse.passage.lic.agreements.model.api.AgreementGroup; +import org.eclipse.passage.lic.agreements.model.meta.AgreementsPackage; +import org.eclipse.passage.lic.internal.agreements.model.util.AgreementsResourceImpl; +import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; +import org.eclipse.passage.loc.internal.agreements.AgreementRegistry; +import org.eclipse.passage.loc.internal.agreements.AgreementRegistryEvents; +import org.eclipse.passage.loc.internal.agreements.core.i18n.AgreementsCoreMessages; +import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; +import org.eclipse.passage.loc.internal.api.workspace.Agreements; +import org.eclipse.passage.loc.internal.api.workspace.KnownResources; +import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; +import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; +import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; +import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.event.EventAdmin; + +@SuppressWarnings("restriction") +@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + AgreementsPackage.eNAME, + EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "agreements_xmi" }) +public final class AgreementDomainRegistry extends BaseDomainRegistry + implements AgreementRegistry, EditingDomainRegistry { + + private final Map groups = new HashMap<>(); + private final Map agreements = new HashMap<>(); + + private final List events = new ArrayList<>(); + + @Reference(cardinality = ReferenceCardinality.MANDATORY) + public void bindEventAdmin(EventAdmin admin) { + this.events.add(admin); + } + + public void unbindEventAdmin(EventAdmin admin) { + this.events.remove(admin); + } + + @Activate + public void load(Map properties) { + super.activate(properties); + } + + @Deactivate + public void unload(Map properties) { + agreements.clear(); + groups.clear(); + super.deactivate(properties); + } + + @Override + @Reference + public void bindGear(OperatorGearSupplier supplier) { + super.bindGear(supplier); + } + + @Override + public void unbindGear(OperatorGearSupplier supplier) { + super.unbindGear(supplier); + } + + @Override + public String getFileExtension() { + return "agreements_xmi"; //$NON-NLS-1$ + } + + @Override + public Class getContentClass() { + return AgreementGroup.class; + } + + @Override + public String resolveIdentifier(AgreementGroup content) { + return content.getIdentifier(); + } + + @Override + public Collection groups() { + return new ArrayList<>(groups.values()); + } + + @Override + public Optional group(String identifier) { + return Optional.ofNullable(groups.get(identifier)); + } + + @Override + public Collection agreements() { + return new ArrayList<>(agreements.values()); + } + + public Collection agreements(String id) { + return group(id)// + .map(AgreementGroup::getAgreements)// + .orElseGet(BasicEList::new)// + .stream().toList(); + } + + @Override + public Optional agreement(String identifier) { + return Optional.ofNullable(agreements.get(identifier)); + } + + @Override + protected DomainContentAdapter createContentAdapter() { + return new AgreementsDomainRegistryTracker(this); + } + + public void registerAgreementGroup(AgreementGroup group) { + AgreementGroup existing = groups.put(group.getIdentifier(), group); + if ((existing != null) && (existing != group)) { + String msg = NLS.bind(AgreementsCoreMessages.AgreementDomain_instance_duplication_message, existing, group); + Platform.getLog(getClass()).warn(msg); + } + brush(group); + events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_GROUP_CREATE, group).get()); + group.getAgreements().forEach(u -> registerAgreement(u)); + } + + private void brush(AgreementGroup group) { + if (group.getDescription() == null) { + group.setDescription(""); //$NON-NLS-1$ + } + } + + public void registerAgreement(Agreement agreement) { + String identifier = agreement.getIdentifier(); + Agreement existing = agreements.put(identifier, agreement); + if ((existing != null) && (existing != agreement)) { + String msg = NLS.bind(AgreementsCoreMessages.AgreementDomain_instance_duplication_message, existing, + agreement); + Platform.getLog(getClass()).warn(msg); + } + events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_CREATE, agreement).get()); + } + + public void unregisterAgreementGroup(String id) { + AgreementGroup removed = groups.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_GROUP_DELETE, removed).get()); + removed.getAgreements().forEach(u -> unregisterAgreement(u.getIdentifier())); + } + } + + public void unregisterAgreement(String id) { + Agreement removed = agreements.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(AgreementRegistryEvents.AGREEMENT_DELETE, removed).get()); + } + } + + private EventAdmin events() { + return events.stream().findAny().get(); + } + + @Override + public EClass getContentClassifier() { + return AgreementsPackage.eINSTANCE.getAgreementGroup(); + } + + @Override + public EStructuralFeature getContentIdentifierAttribute() { + return AgreementsPackage.eINSTANCE.getAgreementGroup_Identifier(); + } + + @Override + public EStructuralFeature getContentNameAttribute() { + return AgreementsPackage.eINSTANCE.getAgreementGroup_Name(); + } + + @Override + public void registerContent(AgreementGroup content) { + registerAgreementGroup(content); + } + + @Override + public void unregisterContent(String identifier) { + unregisterAgreementGroup(identifier); + } + + @Override + protected final Resource createResource(URI uri) { + return new AgreementsResourceImpl(uri); + } + + @Override + protected boolean emfResource(ResourceHandle handle) { + return Agreements.xmi.equals(handle.type()); + } + + @Override + protected KnownResources knownResources(OperatorWorkspace workspace) { + return workspace.agreements(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.dashboard.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.dashboard.ui/META-INF/MANIFEST.MF index 4739df837..404bf8469 100644 --- a/bundles/org.eclipse.passage.loc.dashboard.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.dashboard.ui/META-INF/MANIFEST.MF @@ -1,37 +1,37 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.dashboard.ui -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.dashboard.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.emf.ecp.ui.view.swt;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.e4.core;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", - org.eclipse.passage.loc.agreements.core;bundle-version="0.1.0", - org.eclipse.passage.loc.agreements.ui;bundle-version="0.1.0", - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.loc.features.core;bundle-version="0.0.0", - org.eclipse.passage.loc.features.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.licenses.core;bundle-version="0.0.0", - org.eclipse.passage.loc.licenses.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.products.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.users.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.workbench.emfforms;bundle-version="0.0.0" -Import-Package: javax.annotation;version="1.0.0";resolution:=optional, - javax.inject;version="1.0.0" -Export-Package: org.eclipse.passage.loc.dashboard.ui;x-internal:=true, - org.eclipse.passage.loc.dashboard.ui.details;x-internal:=true, - org.eclipse.passage.loc.dashboard.ui.handlers;x-internal:=true, - org.eclipse.passage.loc.dashboard.ui.panel;x-internal:=true, - org.eclipse.passage.loc.dashboard.ui.wizards;x-internal:=true, - org.eclipse.passage.loc.dashboard.ui.wizards.floating;x-internal:=true -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.dashboard.ui +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.dashboard.ui;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.emf.ecp.ui.view.swt;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.e4.core;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", + org.eclipse.passage.loc.agreements.core;bundle-version="0.1.0", + org.eclipse.passage.loc.agreements.ui;bundle-version="0.1.0", + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.loc.features.core;bundle-version="0.0.0", + org.eclipse.passage.loc.features.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.licenses.core;bundle-version="0.0.0", + org.eclipse.passage.loc.licenses.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.products.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.users.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.workbench.emfforms;bundle-version="0.0.0" +Import-Package: javax.annotation;version="1.0.0";resolution:=optional, + javax.inject;version="1.0.0" +Export-Package: org.eclipse.passage.loc.dashboard.ui;x-internal:=true, + org.eclipse.passage.loc.dashboard.ui.details;x-internal:=true, + org.eclipse.passage.loc.dashboard.ui.handlers;x-internal:=true, + org.eclipse.passage.loc.dashboard.ui.panel;x-internal:=true, + org.eclipse.passage.loc.dashboard.ui.wizards;x-internal:=true, + org.eclipse.passage.loc.dashboard.ui.wizards.floating;x-internal:=true +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.loc.features.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.features.core/META-INF/MANIFEST.MF index 1b27dad39..126576532 100644 --- a/bundles/org.eclipse.passage.loc.features.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.features.core/META-INF/MANIFEST.MF @@ -1,18 +1,18 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.features.core -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.features.core -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.features.model;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.loc.equinox;bundle-version="0.0.0" -Bundle-ActivationPolicy: lazy -Export-Package: org.eclipse.passage.loc.internal.features;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.features.emfforms,org.eclipse.passage.loc.features.ui", - org.eclipse.passage.loc.internal.features.core;x-internal:=true -Service-Component: OSGI-INF/*.xml -Import-Package: org.osgi.service.event;version="1.0.0" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.features.core +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.features.core +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.features.model;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.loc.equinox;bundle-version="0.0.0" +Bundle-ActivationPolicy: lazy +Export-Package: org.eclipse.passage.loc.internal.features;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.features.emfforms,org.eclipse.passage.loc.features.ui", + org.eclipse.passage.loc.internal.features.core;x-internal:=true +Service-Component: OSGI-INF/*.xml +Import-Package: org.osgi.service.event;version="1.0.0" diff --git a/bundles/org.eclipse.passage.loc.features.core/src/org/eclipse/passage/loc/internal/features/core/FeatureDomainRegistry.java b/bundles/org.eclipse.passage.loc.features.core/src/org/eclipse/passage/loc/internal/features/core/FeatureDomainRegistry.java index 3362c5444..e9636fbae 100644 --- a/bundles/org.eclipse.passage.loc.features.core/src/org/eclipse/passage/loc/internal/features/core/FeatureDomainRegistry.java +++ b/bundles/org.eclipse.passage.loc.features.core/src/org/eclipse/passage/loc/internal/features/core/FeatureDomainRegistry.java @@ -1,253 +1,253 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.features.core; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.features.model.api.Feature; -import org.eclipse.passage.lic.features.model.api.FeatureSet; -import org.eclipse.passage.lic.features.model.api.FeatureVersion; -import org.eclipse.passage.lic.features.model.meta.FeaturesPackage; -import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; -import org.eclipse.passage.lic.internal.features.model.util.FeaturesResourceImpl; -import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; -import org.eclipse.passage.loc.internal.api.workspace.Features; -import org.eclipse.passage.loc.internal.api.workspace.KnownResources; -import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; -import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; -import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; -import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; -import org.eclipse.passage.loc.internal.features.FeatureRegistry; -import org.eclipse.passage.loc.internal.features.FeatureRegistryEvents; -import org.eclipse.passage.loc.internal.features.core.i18n.FeaturesCoreMessages; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.event.EventAdmin; - -@SuppressWarnings("restriction") -@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + FeaturesPackage.eNAME, - EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "features_xmi" }) -public final class FeatureDomainRegistry extends BaseDomainRegistry - implements FeatureRegistry, EditingDomainRegistry { - - private final Map sets = new HashMap<>(); - private final Map features = new HashMap<>(); - private final Map> versions = new HashMap<>(); - - private final List events = new ArrayList<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public void bindEventAdmin(EventAdmin admin) { - this.events.add(admin); - } - - public void unbindEventAdmin(EventAdmin admin) { - this.events.remove(admin); - } - - @Override - @Reference - public void bindGear(OperatorGearSupplier supplier) { - super.bindGear(supplier); - } - - @Override - public void unbindGear(OperatorGearSupplier supplier) { - super.unbindGear(supplier); - } - - @Activate - public void load(Map properties) { - super.activate(properties); - } - - @Deactivate - public void unload(Map properties) { - versions.values().forEach(Map::clear); - versions.clear(); - features.clear(); - sets.clear(); - super.deactivate(properties); - } - - @Override - public String getFileExtension() { - return "features_xmi"; //$NON-NLS-1$ - } - - @Override - public Class getContentClass() { - return FeatureSet.class; - } - - @Override - public String resolveIdentifier(FeatureSet content) { - return content.getIdentifier(); - } - - @Override - public Collection featureSets() { - return new ArrayList<>(sets.values()); - } - - @Override - public Optional featureSet(String identifier) { - return Optional.ofNullable(sets.get(identifier)); - } - - @Override - public Collection features() { - return new ArrayList<>(features.values()); - } - - @Override - public Optional feature(String id) { - return Optional.ofNullable(features.get(id)); - } - - @Override - public Collection featureVersions() { - List list = new ArrayList<>(); - Collection> values = versions.values(); - for (Map map : values) { - list.addAll(map.values()); - } - return list; - } - - @Override - protected DomainContentAdapter createContentAdapter() { - return new FeaturesDomainRegistryTracker(this); - } - - void registerFeatureSet(FeatureSet fs) { - FeatureSet existing = sets.put(fs.getIdentifier(), fs); - if ((existing != null) && (existing != fs)) { - Platform.getLog(getClass()) - .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, fs)); - } - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_SET_CREATE, fs).get()); - fs.getFeatures().forEach(this::registerFeature); - } - - void registerFeature(Feature feature) { - Feature existing = features.put(feature.getIdentifier(), feature); - if ((existing != null) && (existing != feature)) { - Platform.getLog(getClass()) - .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, feature)); - } - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_CREATE, feature).get()); - feature.getFeatureVersions().forEach(fv -> registerFeatureVersion(feature, fv)); - } - - void registerFeatureVersion(Feature feature, FeatureVersion version) { - String identifier = feature.getIdentifier(); - Map map = versions.computeIfAbsent(identifier, key -> new HashMap<>()); - FeatureVersion existing = map.put(version.getVersion(), version); - if ((existing != null) && (existing != version)) { - Platform.getLog(getClass()) - .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, version)); - } - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_VERSION_CREATE, version).get()); - } - - void unregisterFeatureSet(String id) { - FeatureSet removed = sets.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_SET_DELETE, removed).get()); - removed.getFeatures().stream().map(Feature::getIdentifier).forEach(this::unregisterFeature); - } - } - - void unregisterFeature(String id) { - Feature removed = features.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_DELETE, removed).get()); - removed.getFeatureVersions().forEach(fv -> unregisterFeatureVersion(id, fv.getVersion())); - } - } - - void unregisterFeatureVersion(String featureId, String version) { - Map map = versions.get(featureId); - if (map != null) { - FeatureVersion removed = map.remove(version); - if (removed != null) { - events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_VERSION_DELETE, removed).get()); - } - if (map.isEmpty()) { - versions.remove(version); - } - } - } - - private EventAdmin events() { - return events.stream().findAny().get(); - } - - @Override - public EClass getContentClassifier() { - return FeaturesPackage.eINSTANCE.getFeatureSet(); - } - - @Override - public EStructuralFeature getContentIdentifierAttribute() { - return FeaturesPackage.eINSTANCE.getFeatureSet_Identifier(); - } - - @Override - public EStructuralFeature getContentNameAttribute() { - return FeaturesPackage.eINSTANCE.getFeatureSet_Name(); - } - - @Override - public void registerContent(FeatureSet content) { - registerFeatureSet(content); - } - - @Override - public void unregisterContent(String identifier) { - unregisterFeatureSet(identifier); - } - - @Override - protected final Resource createResource(URI uri) { - return new FeaturesResourceImpl(uri); - } - - @Override - protected boolean emfResource(ResourceHandle handle) { - return Features.xmi.equals(handle.type()) || Features.xmi033.equals(handle.type()); - } - - @Override - protected KnownResources knownResources(OperatorWorkspace workspace) { - return workspace.features(); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.features.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.features.model.api.Feature; +import org.eclipse.passage.lic.features.model.api.FeatureSet; +import org.eclipse.passage.lic.features.model.api.FeatureVersion; +import org.eclipse.passage.lic.features.model.meta.FeaturesPackage; +import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; +import org.eclipse.passage.lic.internal.features.model.util.FeaturesResourceImpl; +import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; +import org.eclipse.passage.loc.internal.api.workspace.Features; +import org.eclipse.passage.loc.internal.api.workspace.KnownResources; +import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; +import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; +import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; +import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; +import org.eclipse.passage.loc.internal.features.FeatureRegistry; +import org.eclipse.passage.loc.internal.features.FeatureRegistryEvents; +import org.eclipse.passage.loc.internal.features.core.i18n.FeaturesCoreMessages; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.event.EventAdmin; + +@SuppressWarnings("restriction") +@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + FeaturesPackage.eNAME, + EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "features_xmi" }) +public final class FeatureDomainRegistry extends BaseDomainRegistry + implements FeatureRegistry, EditingDomainRegistry { + + private final Map sets = new HashMap<>(); + private final Map features = new HashMap<>(); + private final Map> versions = new HashMap<>(); + + private final List events = new ArrayList<>(); + + @Reference(cardinality = ReferenceCardinality.MANDATORY) + public void bindEventAdmin(EventAdmin admin) { + this.events.add(admin); + } + + public void unbindEventAdmin(EventAdmin admin) { + this.events.remove(admin); + } + + @Override + @Reference + public void bindGear(OperatorGearSupplier supplier) { + super.bindGear(supplier); + } + + @Override + public void unbindGear(OperatorGearSupplier supplier) { + super.unbindGear(supplier); + } + + @Activate + public void load(Map properties) { + super.activate(properties); + } + + @Deactivate + public void unload(Map properties) { + versions.values().forEach(Map::clear); + versions.clear(); + features.clear(); + sets.clear(); + super.deactivate(properties); + } + + @Override + public String getFileExtension() { + return "features_xmi"; //$NON-NLS-1$ + } + + @Override + public Class getContentClass() { + return FeatureSet.class; + } + + @Override + public String resolveIdentifier(FeatureSet content) { + return content.getIdentifier(); + } + + @Override + public Collection featureSets() { + return new ArrayList<>(sets.values()); + } + + @Override + public Optional featureSet(String identifier) { + return Optional.ofNullable(sets.get(identifier)); + } + + @Override + public Collection features() { + return new ArrayList<>(features.values()); + } + + @Override + public Optional feature(String id) { + return Optional.ofNullable(features.get(id)); + } + + @Override + public Collection featureVersions() { + List list = new ArrayList<>(); + Collection> values = versions.values(); + for (Map map : values) { + list.addAll(map.values()); + } + return list; + } + + @Override + protected DomainContentAdapter createContentAdapter() { + return new FeaturesDomainRegistryTracker(this); + } + + void registerFeatureSet(FeatureSet fs) { + FeatureSet existing = sets.put(fs.getIdentifier(), fs); + if ((existing != null) && (existing != fs)) { + Platform.getLog(getClass()) + .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, fs)); + } + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_SET_CREATE, fs).get()); + fs.getFeatures().forEach(this::registerFeature); + } + + void registerFeature(Feature feature) { + Feature existing = features.put(feature.getIdentifier(), feature); + if ((existing != null) && (existing != feature)) { + Platform.getLog(getClass()) + .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, feature)); + } + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_CREATE, feature).get()); + feature.getFeatureVersions().forEach(fv -> registerFeatureVersion(feature, fv)); + } + + void registerFeatureVersion(Feature feature, FeatureVersion version) { + String identifier = feature.getIdentifier(); + Map map = versions.computeIfAbsent(identifier, key -> new HashMap<>()); + FeatureVersion existing = map.put(version.getVersion(), version); + if ((existing != null) && (existing != version)) { + Platform.getLog(getClass()) + .warn(NLS.bind(FeaturesCoreMessages.FeatureDomain_instance_duplication_message, existing, version)); + } + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_VERSION_CREATE, version).get()); + } + + void unregisterFeatureSet(String id) { + FeatureSet removed = sets.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_SET_DELETE, removed).get()); + removed.getFeatures().stream().map(Feature::getIdentifier).forEach(this::unregisterFeature); + } + } + + void unregisterFeature(String id) { + Feature removed = features.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_DELETE, removed).get()); + removed.getFeatureVersions().forEach(fv -> unregisterFeatureVersion(id, fv.getVersion())); + } + } + + void unregisterFeatureVersion(String featureId, String version) { + Map map = versions.get(featureId); + if (map != null) { + FeatureVersion removed = map.remove(version); + if (removed != null) { + events().postEvent(new EquinoxEvent(FeatureRegistryEvents.FEATURE_VERSION_DELETE, removed).get()); + } + if (map.isEmpty()) { + versions.remove(version); + } + } + } + + private EventAdmin events() { + return events.stream().findAny().get(); + } + + @Override + public EClass getContentClassifier() { + return FeaturesPackage.eINSTANCE.getFeatureSet(); + } + + @Override + public EStructuralFeature getContentIdentifierAttribute() { + return FeaturesPackage.eINSTANCE.getFeatureSet_Identifier(); + } + + @Override + public EStructuralFeature getContentNameAttribute() { + return FeaturesPackage.eINSTANCE.getFeatureSet_Name(); + } + + @Override + public void registerContent(FeatureSet content) { + registerFeatureSet(content); + } + + @Override + public void unregisterContent(String identifier) { + unregisterFeatureSet(identifier); + } + + @Override + protected final Resource createResource(URI uri) { + return new FeaturesResourceImpl(uri); + } + + @Override + protected boolean emfResource(ResourceHandle handle) { + return Features.xmi.equals(handle.type()) || Features.xmi033.equals(handle.type()); + } + + @Override + protected KnownResources knownResources(OperatorWorkspace workspace) { + return workspace.features(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.licenses.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.licenses.core/META-INF/MANIFEST.MF index 112670ddd..419c8a114 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.licenses.core/META-INF/MANIFEST.MF @@ -1,32 +1,32 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.licenses.core -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.licenses.core;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.base;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.users.model;bundle-version="0.0.0", - org.eclipse.passage.loc.agreements.core;bundle-version="0.0.0", - org.eclipse.passage.loc.e4;bundle-version="0.0.0", - org.eclipse.passage.loc.products.core;bundle-version="0.0.0", - org.eclipse.passage.loc.users.core;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.loc.internal.licenses; - x-friends:="org.eclipse.passage.loc.licenses.emfforms, - org.eclipse.passage.loc.licenses.ui, - org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.report.core, - org.eclipse.passage.loc.report.core.tests", - org.eclipse.passage.loc.internal.licenses.core;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.loc.internal.licenses.core.request;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui" -Import-Package: org.osgi.service.event;version="1.0.0", - org.slf4j;version="1.7.36" -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/*.xml +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.licenses.core +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.licenses.core;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.base;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.users.model;bundle-version="0.0.0", + org.eclipse.passage.loc.agreements.core;bundle-version="0.0.0", + org.eclipse.passage.loc.e4;bundle-version="0.0.0", + org.eclipse.passage.loc.products.core;bundle-version="0.0.0", + org.eclipse.passage.loc.users.core;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.loc.internal.licenses; + x-friends:="org.eclipse.passage.loc.licenses.emfforms, + org.eclipse.passage.loc.licenses.ui, + org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.report.core, + org.eclipse.passage.loc.report.core.tests", + org.eclipse.passage.loc.internal.licenses.core;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.loc.internal.licenses.core.request;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui" +Import-Package: org.osgi.service.event;version="1.0.0", + org.slf4j;version="1.7.36" +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/*.xml diff --git a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseAgreements.java b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseAgreements.java index 08996e836..fb429dee4 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseAgreements.java +++ b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseAgreements.java @@ -1,102 +1,102 @@ -/******************************************************************************* - * Copyright (c) 2021, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - * ArSysOp - further support - *******************************************************************************/ -package org.eclipse.passage.loc.internal.licenses.core; - -import java.util.Collection; -import java.util.Optional; - -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.agreements.model.api.Agreement; -import org.eclipse.passage.lic.api.LicensingException; -import org.eclipse.passage.lic.api.io.Hashes; -import org.eclipse.passage.lic.api.io.HashesRegistry; -import org.eclipse.passage.lic.licenses.model.api.AgreementData; -import org.eclipse.passage.lic.licenses.model.api.LicensePlan; -import org.eclipse.passage.lic.licenses.model.api.LicenseRequisites; -import org.eclipse.passage.lic.licenses.model.meta.LicensesFactory; -import org.eclipse.passage.loc.internal.agreements.AgreementRegistry; -import org.eclipse.passage.loc.internal.api.workspace.Agreements; -import org.eclipse.passage.loc.internal.equinox.AgreementsService; -import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; -import org.eclipse.passage.loc.internal.licenses.core.i18n.LicensesCoreMessages; - -final class LicenseAgreements { - - private final AgreementRegistry registry; - - LicenseAgreements(AgreementRegistry registry) { - this.registry = registry; - } - - void install(LicensePlan plan, LicenseRequisites license) throws LicensingException { - Agreements service = new AgreementsService().get(); // TODO: cashed field - Hashes hashes = hashes();// TODO: cashed field - for (String identifier : plan.getAgreements()) { - installAgreement(license, registry.agreement(identifier) - .orElseThrow(() -> new LicensingException( - NLS.bind(LicensesCoreMessages.LicenseAgreements_e_agreement_not_found, identifier))), - service, hashes); - } - - } - - private void installAgreement(LicenseRequisites license, Agreement agreement, Agreements service, Hashes hashes) - throws LicensingException { - if (!service.exists(agreement.getFile(), agreement)) { - throw new LicensingException(String.format(// - LicensesCoreMessages.LicenseOperatorServiceImpl_failed_to_find_agreement_file, // - service.located(agreement.getFile(), agreement).info(), // - agreement.getName())); - } - license.getAgreements().add(data(agreement, service, hashes)); - } - - private AgreementData data(Agreement agreement, Agreements service, Hashes hashes) throws LicensingException { - AgreementData data = LicensesFactory.eINSTANCE.createAgreementData(); - data.setIdentifier(agreement.getIdentifier()); - data.setName(agreement.getName()); - data.setFile(agreement.getFile()); - data.setContentType(agreement.getMime()); - byte[] content = content(agreement, service); - data.setContent(content); - data.setHashAlgo(hashes.id().toString()); - data.setHash(hashes.get(content)); - return data; - } - - private byte[] content(Agreement agreement, Agreements service) throws LicensingException { - try { - return service.located(agreement.getFile(), agreement).content(); - } catch (Exception e) { - throw new LicensingException(String.format(// - LicensesCoreMessages.LicenseOperatorServiceImpl_failed_to_attach_agreement, // - agreement.getName(), // - service.located(agreement.getFile(), agreement).info(), // - e)); - } - } - - @SuppressWarnings("restriction") - private Hashes hashes() throws LicensingException { - Optional service = new OperatorGearAware().withGear(gear -> Optional.of(gear.hashes())); - if (!service.isPresent()) { - throw new LicensingException("There is no HashesRegistry service supplied by Operator Gear"); //$NON-NLS-1$ - } - Collection all = service.get().get().services(); - if (all.isEmpty()) { - throw new LicensingException("There is no Hashes service supplied by Operator Gear"); //$NON-NLS-1$ - } - return all.iterator().next(); - } -} +/******************************************************************************* + * Copyright (c) 2021, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + * ArSysOp - further support + *******************************************************************************/ +package org.eclipse.passage.loc.internal.licenses.core; + +import java.util.Collection; +import java.util.Optional; + +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.agreements.model.api.Agreement; +import org.eclipse.passage.lic.api.LicensingException; +import org.eclipse.passage.lic.api.io.Hashes; +import org.eclipse.passage.lic.api.io.HashesRegistry; +import org.eclipse.passage.lic.licenses.model.api.AgreementData; +import org.eclipse.passage.lic.licenses.model.api.LicensePlan; +import org.eclipse.passage.lic.licenses.model.api.LicenseRequisites; +import org.eclipse.passage.lic.licenses.model.meta.LicensesFactory; +import org.eclipse.passage.loc.internal.agreements.AgreementRegistry; +import org.eclipse.passage.loc.internal.api.workspace.Agreements; +import org.eclipse.passage.loc.internal.equinox.AgreementsService; +import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; +import org.eclipse.passage.loc.internal.licenses.core.i18n.LicensesCoreMessages; + +final class LicenseAgreements { + + private final AgreementRegistry registry; + + LicenseAgreements(AgreementRegistry registry) { + this.registry = registry; + } + + void install(LicensePlan plan, LicenseRequisites license) throws LicensingException { + Agreements service = new AgreementsService().get(); // TODO: cashed field + Hashes hashes = hashes();// TODO: cashed field + for (String identifier : plan.getAgreements()) { + installAgreement(license, registry.agreement(identifier) + .orElseThrow(() -> new LicensingException( + NLS.bind(LicensesCoreMessages.LicenseAgreements_e_agreement_not_found, identifier))), + service, hashes); + } + + } + + private void installAgreement(LicenseRequisites license, Agreement agreement, Agreements service, Hashes hashes) + throws LicensingException { + if (!service.exists(agreement.getFile(), agreement)) { + throw new LicensingException(String.format(// + LicensesCoreMessages.LicenseOperatorServiceImpl_failed_to_find_agreement_file, // + service.located(agreement.getFile(), agreement).info(), // + agreement.getName())); + } + license.getAgreements().add(data(agreement, service, hashes)); + } + + private AgreementData data(Agreement agreement, Agreements service, Hashes hashes) throws LicensingException { + AgreementData data = LicensesFactory.eINSTANCE.createAgreementData(); + data.setIdentifier(agreement.getIdentifier()); + data.setName(agreement.getName()); + data.setFile(agreement.getFile()); + data.setContentType(agreement.getMime()); + byte[] content = content(agreement, service); + data.setContent(content); + data.setHashAlgo(hashes.id().toString()); + data.setHash(hashes.get(content)); + return data; + } + + private byte[] content(Agreement agreement, Agreements service) throws LicensingException { + try { + return service.located(agreement.getFile(), agreement).content(); + } catch (Exception e) { + throw new LicensingException(String.format(// + LicensesCoreMessages.LicenseOperatorServiceImpl_failed_to_attach_agreement, // + agreement.getName(), // + service.located(agreement.getFile(), agreement).info(), // + e)); + } + } + + @SuppressWarnings("restriction") + private Hashes hashes() throws LicensingException { + Optional service = new OperatorGearAware().withGear(gear -> Optional.of(gear.hashes())); + if (!service.isPresent()) { + throw new LicensingException("There is no HashesRegistry service supplied by Operator Gear"); //$NON-NLS-1$ + } + Collection all = service.get().get().services(); + if (all.isEmpty()) { + throw new LicensingException("There is no Hashes service supplied by Operator Gear"); //$NON-NLS-1$ + } + return all.iterator().next(); + } +} diff --git a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseDomainRegistry.java b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseDomainRegistry.java index e74378969..db62b74cd 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseDomainRegistry.java +++ b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicenseDomainRegistry.java @@ -1,184 +1,184 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.licenses.core; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; -import org.eclipse.passage.lic.internal.licenses.model.util.LicensesResourceImpl; -import org.eclipse.passage.lic.licenses.model.api.LicensePlan; -import org.eclipse.passage.lic.licenses.model.meta.LicensesPackage; -import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; -import org.eclipse.passage.loc.internal.api.workspace.KnownResources; -import org.eclipse.passage.loc.internal.api.workspace.Licenses; -import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; -import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; -import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; -import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; -import org.eclipse.passage.loc.internal.licenses.LicenseRegistry; -import org.eclipse.passage.loc.internal.licenses.LicenseRegistryEvents; -import org.eclipse.passage.loc.internal.licenses.core.i18n.LicensesCoreMessages; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.event.EventAdmin; - -@SuppressWarnings("restriction") -@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + LicensesPackage.eNAME, - EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "licenses_xmi" }) -public final class LicenseDomainRegistry extends BaseDomainRegistry - implements LicenseRegistry, EditingDomainRegistry { - - private final Map plans = new HashMap<>(); - - private final List events = new ArrayList<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public void bindEventAdmin(EventAdmin admin) { - this.events.add(admin); - } - - public void unbindEventAdmin(EventAdmin admin) { - this.events.remove(admin); - } - - @Override - @Reference - public void bindGear(OperatorGearSupplier supplier) { - super.bindGear(supplier); - } - - @Override - public void unbindGear(OperatorGearSupplier supplier) { - super.unbindGear(supplier); - } - - @Activate - public void load(Map properties) { - super.activate(properties); - } - - @Deactivate - public void unload(Map properties) { - plans.clear(); - super.deactivate(properties); - } - - @Override - public String getFileExtension() { - return "licenses_xmi"; //$NON-NLS-1$ - } - - @Override - public Class getContentClass() { - return LicensePlan.class; - } - - @Override - public String resolveIdentifier(LicensePlan content) { - return content.getIdentifier(); - } - - @Override - public Collection plans() { - return new ArrayList<>(plans.values()); - } - - @Override - public Optional plan(String identifier) { - return Optional.ofNullable(plans.get(identifier)); - } - - void registerLicensePlan(LicensePlan licensePlan) { - String identifier = licensePlan.getIdentifier(); - LicensePlan existing = plans.put(identifier, licensePlan); - if ((existing != null) && (existing != licensePlan)) { - String msg = NLS.bind(LicensesCoreMessages.LicenseDomain_instance_duplication_message, existing, - licensePlan); - Platform.getLog(getClass()).warn(msg); - } - events().postEvent(new EquinoxEvent(LicenseRegistryEvents.LICENSE_PLAN_CREATE, licensePlan).get()); - } - - void unregisterLicensePlan(String identifier) { - LicensePlan removed = plans.remove(identifier); - if (removed != null) { - events().postEvent(new EquinoxEvent(LicenseRegistryEvents.LICENSE_PLAN_DELETE, removed).get()); - } - } - - private EventAdmin events() { - return events.stream().findAny().get(); - } - - @Override - protected DomainContentAdapter createContentAdapter() { - return new LicensesDomainRegistryTracker(this); - } - - @Override - public EClass getContentClassifier() { - return LicensesPackage.eINSTANCE.getLicensePlan(); - } - - @Override - public EStructuralFeature getContentIdentifierAttribute() { - return LicensesPackage.eINSTANCE.getLicensePlan_Identifier(); - } - - @Override - public EStructuralFeature getContentNameAttribute() { - return LicensesPackage.eINSTANCE.getLicensePlan_Name(); - } - - @Override - public void registerContent(LicensePlan content) { - registerLicensePlan(content); - } - - @Override - public void unregisterContent(String identifier) { - unregisterLicensePlan(identifier); - } - - @Override - protected final Resource createResource(URI uri) { - return new LicensesResourceImpl(uri); - } - - @Override - protected boolean emfResource(ResourceHandle handle) { - return Licenses.xmi.equals(handle.type()) || Licenses.xmi033.equals(handle.type()); - } - - @Override - protected KnownResources knownResources(OperatorWorkspace workspace) { - return workspace.licenses(); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.licenses.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; +import org.eclipse.passage.lic.internal.licenses.model.util.LicensesResourceImpl; +import org.eclipse.passage.lic.licenses.model.api.LicensePlan; +import org.eclipse.passage.lic.licenses.model.meta.LicensesPackage; +import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; +import org.eclipse.passage.loc.internal.api.workspace.KnownResources; +import org.eclipse.passage.loc.internal.api.workspace.Licenses; +import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; +import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; +import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; +import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; +import org.eclipse.passage.loc.internal.licenses.LicenseRegistry; +import org.eclipse.passage.loc.internal.licenses.LicenseRegistryEvents; +import org.eclipse.passage.loc.internal.licenses.core.i18n.LicensesCoreMessages; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.event.EventAdmin; + +@SuppressWarnings("restriction") +@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + LicensesPackage.eNAME, + EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "licenses_xmi" }) +public final class LicenseDomainRegistry extends BaseDomainRegistry + implements LicenseRegistry, EditingDomainRegistry { + + private final Map plans = new HashMap<>(); + + private final List events = new ArrayList<>(); + + @Reference(cardinality = ReferenceCardinality.MANDATORY) + public void bindEventAdmin(EventAdmin admin) { + this.events.add(admin); + } + + public void unbindEventAdmin(EventAdmin admin) { + this.events.remove(admin); + } + + @Override + @Reference + public void bindGear(OperatorGearSupplier supplier) { + super.bindGear(supplier); + } + + @Override + public void unbindGear(OperatorGearSupplier supplier) { + super.unbindGear(supplier); + } + + @Activate + public void load(Map properties) { + super.activate(properties); + } + + @Deactivate + public void unload(Map properties) { + plans.clear(); + super.deactivate(properties); + } + + @Override + public String getFileExtension() { + return "licenses_xmi"; //$NON-NLS-1$ + } + + @Override + public Class getContentClass() { + return LicensePlan.class; + } + + @Override + public String resolveIdentifier(LicensePlan content) { + return content.getIdentifier(); + } + + @Override + public Collection plans() { + return new ArrayList<>(plans.values()); + } + + @Override + public Optional plan(String identifier) { + return Optional.ofNullable(plans.get(identifier)); + } + + void registerLicensePlan(LicensePlan licensePlan) { + String identifier = licensePlan.getIdentifier(); + LicensePlan existing = plans.put(identifier, licensePlan); + if ((existing != null) && (existing != licensePlan)) { + String msg = NLS.bind(LicensesCoreMessages.LicenseDomain_instance_duplication_message, existing, + licensePlan); + Platform.getLog(getClass()).warn(msg); + } + events().postEvent(new EquinoxEvent(LicenseRegistryEvents.LICENSE_PLAN_CREATE, licensePlan).get()); + } + + void unregisterLicensePlan(String identifier) { + LicensePlan removed = plans.remove(identifier); + if (removed != null) { + events().postEvent(new EquinoxEvent(LicenseRegistryEvents.LICENSE_PLAN_DELETE, removed).get()); + } + } + + private EventAdmin events() { + return events.stream().findAny().get(); + } + + @Override + protected DomainContentAdapter createContentAdapter() { + return new LicensesDomainRegistryTracker(this); + } + + @Override + public EClass getContentClassifier() { + return LicensesPackage.eINSTANCE.getLicensePlan(); + } + + @Override + public EStructuralFeature getContentIdentifierAttribute() { + return LicensesPackage.eINSTANCE.getLicensePlan_Identifier(); + } + + @Override + public EStructuralFeature getContentNameAttribute() { + return LicensesPackage.eINSTANCE.getLicensePlan_Name(); + } + + @Override + public void registerContent(LicensePlan content) { + registerLicensePlan(content); + } + + @Override + public void unregisterContent(String identifier) { + unregisterLicensePlan(identifier); + } + + @Override + protected final Resource createResource(URI uri) { + return new LicensesResourceImpl(uri); + } + + @Override + protected boolean emfResource(ResourceHandle handle) { + return Licenses.xmi.equals(handle.type()) || Licenses.xmi033.equals(handle.type()); + } + + @Override + protected KnownResources knownResources(OperatorWorkspace workspace) { + return workspace.licenses(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicensePackResidence.java b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicensePackResidence.java index baed9c633..6b27a7f76 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicensePackResidence.java +++ b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/LicensePackResidence.java @@ -1,74 +1,74 @@ -/******************************************************************************* - * Copyright (c) 2022, 2023 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.licenses.core; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Optional; -import java.util.function.Supplier; - -import org.eclipse.passage.lic.api.LicensingException; -import org.eclipse.passage.lic.base.io.UserHomeProductResidence; -import org.eclipse.passage.lic.licenses.model.api.LicenseRequisites; -import org.eclipse.passage.loc.internal.api.workspace.LicensePacks; -import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; - -@SuppressWarnings("restriction") -final class LicensePackResidence implements Supplier { - - private final LicenseRequisites license; - - LicensePackResidence(LicenseRequisites license) { - this.license = license; - } - - @Override - public Path get() { - return existing(residence()); - } - - private Path residence() { - return fromWorkspace().orElseGet(this::userHomeResidence); - } - - private Path userHomeResidence() { - return new UserHomeProductResidence(// - license.getProduct().getIdentifier(), // - license.getProduct().getVersion())// - .get()// - .resolve(license.getIdentifier()); - } - - private Optional fromWorkspace() { - try { - return new OperatorGearAware() - .withGear(gear -> Optional.of(fromWorkspace(gear.workspace().licensePacks()))); - } catch (LicensingException e) { - return Optional.empty(); - } - } - - private Path fromWorkspace(LicensePacks service) { - return Paths.get(service.packResidence(// - license.getIdentifier(), // - license.getProduct().getIdentifier(), // - license.getProduct().getVersion()// - ).uri()); - } - - private Path existing(Path folder) { - folder.toFile().mkdirs(); - return folder; - } - -} +/******************************************************************************* + * Copyright (c) 2022, 2023 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.licenses.core; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Optional; +import java.util.function.Supplier; + +import org.eclipse.passage.lic.api.LicensingException; +import org.eclipse.passage.lic.base.io.UserHomeProductResidence; +import org.eclipse.passage.lic.licenses.model.api.LicenseRequisites; +import org.eclipse.passage.loc.internal.api.workspace.LicensePacks; +import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; + +@SuppressWarnings("restriction") +final class LicensePackResidence implements Supplier { + + private final LicenseRequisites license; + + LicensePackResidence(LicenseRequisites license) { + this.license = license; + } + + @Override + public Path get() { + return existing(residence()); + } + + private Path residence() { + return fromWorkspace().orElseGet(this::userHomeResidence); + } + + private Path userHomeResidence() { + return new UserHomeProductResidence(// + license.getProduct().getIdentifier(), // + license.getProduct().getVersion())// + .get()// + .resolve(license.getIdentifier()); + } + + private Optional fromWorkspace() { + try { + return new OperatorGearAware() + .withGear(gear -> Optional.of(fromWorkspace(gear.workspace().licensePacks()))); + } catch (LicensingException e) { + return Optional.empty(); + } + } + + private Path fromWorkspace(LicensePacks service) { + return Paths.get(service.packResidence(// + license.getIdentifier(), // + license.getProduct().getIdentifier(), // + license.getProduct().getVersion()// + ).uri()); + } + + private Path existing(Path folder) { + folder.toFile().mkdirs(); + return folder; + } + +} diff --git a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/FloatingLicenseIssuingProtection.java b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/FloatingLicenseIssuingProtection.java index ceca60ced..c76ec22fd 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/FloatingLicenseIssuingProtection.java +++ b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/FloatingLicenseIssuingProtection.java @@ -1,110 +1,110 @@ -/******************************************************************************* - * Copyright (c) 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.licenses.core.issue; - -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; - -import org.eclipse.passage.lic.base.conditions.BaseValidityPeriodClosed; -import org.eclipse.passage.lic.equinox.EquinoxPassage; -import org.eclipse.passage.lic.licenses.model.api.FeatureGrant; -import org.eclipse.passage.lic.licenses.model.api.FloatingLicensePack; -import org.eclipse.passage.lic.licenses.model.api.ValidityPeriod; -import org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed; -import org.eclipse.passage.lic.licenses.model.meta.LicensesFactory; - -@SuppressWarnings("restriction") -public final class FloatingLicenseIssuingProtection implements Consumer { - - private final String feature = "org.eclipse.passage.loc.operator.issue.floating.full"; //$NON-NLS-1$ - private final List> featureReductions; - private final List> licReductions; - - public FloatingLicenseIssuingProtection() { - this.featureReductions = Arrays.asList(// - new ClosedValidityPeriodReduction(this::validGet, this::validSet), // - new FeatureGrantCapacityReduction()// - ); - this.licReductions = Arrays.asList(// - new ClosedValidityPeriodReduction(this::validGet, this::validSet), // - new UserGrantsAmountReduction()// - ); - } - - @Override - public void accept(FloatingLicensePack license) { - if (new EquinoxPassage().canUse(feature)) { - return; - } - diminish(license); - } - - private void diminish(FloatingLicensePack license) { - diminishFeatureGrants(license); - diminishLicense(license); - } - - private void diminishFeatureGrants(FloatingLicensePack license) { - license.getFeatures().forEach(this::diminishGrant); - } - - private void diminishLicense(FloatingLicensePack lic) { - licReductions.forEach(r -> r.accept(lic)); - } - - private void diminishGrant(FeatureGrant grant) { - featureReductions.forEach(r -> r.accept(grant)); - } - - private Optional validGet(FloatingLicensePack lic) { - return validGet(lic.getLicense().getValid()); - } - - private Optional validGet(FeatureGrant grant) { - return validGet(grant.getValid()); - } - - private Optional validGet(ValidityPeriod period) { - if (!(period instanceof ValidityPeriodClosed)) { - return Optional.empty(); // nothing we can reduce for now - } - ValidityPeriodClosed closed = (ValidityPeriodClosed) period; - return Optional.of(new BaseValidityPeriodClosed(date(closed.getFrom()), date(closed.getUntil()))); - } - - private void validSet(FloatingLicensePack lic, org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { - lic.getLicense().setValid(convert(period)); - } - - private void validSet(FeatureGrant grant, org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { - grant.setValid(convert(period)); - } - - private ValidityPeriodClosed convert(org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { - org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed valid = LicensesFactory.eINSTANCE - .createValidityPeriodClosed(); - valid.setFrom(Date.from(period.from().toInstant())); - valid.setUntil(Date.from(period.to().toInstant())); - return valid; - } - - private ZonedDateTime date(Date date) { - return ZonedDateTime.from(date.toInstant().atZone(ZoneId.systemDefault())); - } - -} +/******************************************************************************* + * Copyright (c) 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.licenses.core.issue; + +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; + +import org.eclipse.passage.lic.base.conditions.BaseValidityPeriodClosed; +import org.eclipse.passage.lic.equinox.EquinoxPassage; +import org.eclipse.passage.lic.licenses.model.api.FeatureGrant; +import org.eclipse.passage.lic.licenses.model.api.FloatingLicensePack; +import org.eclipse.passage.lic.licenses.model.api.ValidityPeriod; +import org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed; +import org.eclipse.passage.lic.licenses.model.meta.LicensesFactory; + +@SuppressWarnings("restriction") +public final class FloatingLicenseIssuingProtection implements Consumer { + + private final String feature = "org.eclipse.passage.loc.operator.issue.floating.full"; //$NON-NLS-1$ + private final List> featureReductions; + private final List> licReductions; + + public FloatingLicenseIssuingProtection() { + this.featureReductions = Arrays.asList(// + new ClosedValidityPeriodReduction(this::validGet, this::validSet), // + new FeatureGrantCapacityReduction()// + ); + this.licReductions = Arrays.asList(// + new ClosedValidityPeriodReduction(this::validGet, this::validSet), // + new UserGrantsAmountReduction()// + ); + } + + @Override + public void accept(FloatingLicensePack license) { + if (new EquinoxPassage().canUse(feature)) { + return; + } + diminish(license); + } + + private void diminish(FloatingLicensePack license) { + diminishFeatureGrants(license); + diminishLicense(license); + } + + private void diminishFeatureGrants(FloatingLicensePack license) { + license.getFeatures().forEach(this::diminishGrant); + } + + private void diminishLicense(FloatingLicensePack lic) { + licReductions.forEach(r -> r.accept(lic)); + } + + private void diminishGrant(FeatureGrant grant) { + featureReductions.forEach(r -> r.accept(grant)); + } + + private Optional validGet(FloatingLicensePack lic) { + return validGet(lic.getLicense().getValid()); + } + + private Optional validGet(FeatureGrant grant) { + return validGet(grant.getValid()); + } + + private Optional validGet(ValidityPeriod period) { + if (!(period instanceof ValidityPeriodClosed)) { + return Optional.empty(); // nothing we can reduce for now + } + ValidityPeriodClosed closed = (ValidityPeriodClosed) period; + return Optional.of(new BaseValidityPeriodClosed(date(closed.getFrom()), date(closed.getUntil()))); + } + + private void validSet(FloatingLicensePack lic, org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { + lic.getLicense().setValid(convert(period)); + } + + private void validSet(FeatureGrant grant, org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { + grant.setValid(convert(period)); + } + + private ValidityPeriodClosed convert(org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed period) { + org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed valid = LicensesFactory.eINSTANCE + .createValidityPeriodClosed(); + valid.setFrom(Date.from(period.from().toInstant())); + valid.setUntil(Date.from(period.to().toInstant())); + return valid; + } + + private ZonedDateTime date(Date date) { + return ZonedDateTime.from(date.toInstant().atZone(ZoneId.systemDefault())); + } + +} diff --git a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/PersonalLicenseIssuingProtection.java b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/PersonalLicenseIssuingProtection.java index feaecfbdf..c6a5a049d 100644 --- a/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/PersonalLicenseIssuingProtection.java +++ b/bundles/org.eclipse.passage.loc.licenses.core/src/org/eclipse/passage/loc/internal/licenses/core/issue/PersonalLicenseIssuingProtection.java @@ -1,74 +1,74 @@ -/******************************************************************************* - * Copyright (c) 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.licenses.core.issue; - -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; - -import org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed; -import org.eclipse.passage.lic.base.conditions.BaseValidityPeriodClosed; -import org.eclipse.passage.lic.equinox.EquinoxPassage; -import org.eclipse.passage.lic.licenses.model.api.PersonalFeatureGrant; -import org.eclipse.passage.lic.licenses.model.api.PersonalLicensePack; - -@SuppressWarnings("restriction") -public final class PersonalLicenseIssuingProtection implements Consumer { - - private final String feature = "org.eclipse.passage.loc.operator.issue.personal.full"; //$NON-NLS-1$ - private final List> reductions; - - public PersonalLicenseIssuingProtection() { - this.reductions = Arrays.asList(// - new ClosedValidityPeriodReduction(this::validGet, this::validSet)// - ); - } - - @Override - public void accept(PersonalLicensePack license) { - if (new EquinoxPassage().canUse(feature)) { - return; - } - diminish(license); - } - - private void diminish(PersonalLicensePack license) { - license.getGrants().forEach(this::diminishGrant); - } - - private void diminishGrant(PersonalFeatureGrant grant) { - reductions.forEach(r -> r.accept(grant)); - } - - private Optional validGet(PersonalFeatureGrant grant) { - return Optional.of(new BaseValidityPeriodClosed(// - date(((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()).getFrom()), // - date(((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()).getUntil()))); - } - - private void validSet(PersonalFeatureGrant grant, ValidityPeriodClosed period) { - ((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()) - .setFrom(Date.from(period.from().toInstant())); - ((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()) - .setUntil(Date.from(period.to().toInstant())); - } - - private ZonedDateTime date(Date date) { - return ZonedDateTime.from(date.toInstant().atZone(ZoneId.systemDefault())); - } - -} +/******************************************************************************* + * Copyright (c) 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.licenses.core.issue; + +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; + +import org.eclipse.passage.lic.api.conditions.ValidityPeriodClosed; +import org.eclipse.passage.lic.base.conditions.BaseValidityPeriodClosed; +import org.eclipse.passage.lic.equinox.EquinoxPassage; +import org.eclipse.passage.lic.licenses.model.api.PersonalFeatureGrant; +import org.eclipse.passage.lic.licenses.model.api.PersonalLicensePack; + +@SuppressWarnings("restriction") +public final class PersonalLicenseIssuingProtection implements Consumer { + + private final String feature = "org.eclipse.passage.loc.operator.issue.personal.full"; //$NON-NLS-1$ + private final List> reductions; + + public PersonalLicenseIssuingProtection() { + this.reductions = Arrays.asList(// + new ClosedValidityPeriodReduction(this::validGet, this::validSet)// + ); + } + + @Override + public void accept(PersonalLicensePack license) { + if (new EquinoxPassage().canUse(feature)) { + return; + } + diminish(license); + } + + private void diminish(PersonalLicensePack license) { + license.getGrants().forEach(this::diminishGrant); + } + + private void diminishGrant(PersonalFeatureGrant grant) { + reductions.forEach(r -> r.accept(grant)); + } + + private Optional validGet(PersonalFeatureGrant grant) { + return Optional.of(new BaseValidityPeriodClosed(// + date(((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()).getFrom()), // + date(((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()).getUntil()))); + } + + private void validSet(PersonalFeatureGrant grant, ValidityPeriodClosed period) { + ((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()) + .setFrom(Date.from(period.from().toInstant())); + ((org.eclipse.passage.lic.licenses.model.api.ValidityPeriodClosed) grant.getValid()) + .setUntil(Date.from(period.to().toInstant())); + } + + private ZonedDateTime date(Date date) { + return ZonedDateTime.from(date.toInstant().atZone(ZoneId.systemDefault())); + } + +} diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/AgreementData.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/AgreementData.view index 6e54a8326..a7e75cadb 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/AgreementData.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/AgreementData.view @@ -1,30 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/EvaluationInstructions.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/EvaluationInstructions.view index 9fa6da328..5a55a315d 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/EvaluationInstructions.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/EvaluationInstructions.view @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FeatureGrant.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FeatureGrant.view index 54b95e130..c136ad5c3 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FeatureGrant.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FeatureGrant.view @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseAccess.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseAccess.view index 7d6beec8e..626604859 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseAccess.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseAccess.view @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseRequisites.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseRequisites.view index 81e3460ba..b4b889b43 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseRequisites.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingLicenseRequisites.view @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServer.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServer.view index 737f7337b..27d812022 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServer.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServer.view @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServerConnection.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServerConnection.view index 4acae8b11..3a851a6ed 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServerConnection.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/FloatingServerConnection.view @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlan.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlan.view index 5d2c0e5ba..4e11846b6 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlan.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlan.view @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlanFeature.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlanFeature.view index 734c83334..847f5fa74 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlanFeature.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/LicensePlanFeature.view @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalFeatureGrant.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalFeatureGrant.view index e93efcd8e..07e6f9322 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalFeatureGrant.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalFeatureGrant.view @@ -1,71 +1,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalLicensePack.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalLicensePack.view index 9287a71a3..d450ef8da 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalLicensePack.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/PersonalLicensePack.view @@ -1,96 +1,96 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ProductRef.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ProductRef.view index 36df192b5..976da1d93 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ProductRef.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ProductRef.view @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/UserGrant.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/UserGrant.view index d2051babf..61134fb6b 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/UserGrant.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/UserGrant.view @@ -1,26 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ValidityPeriodClosed.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ValidityPeriodClosed.view index 20d40df96..30112bbfc 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ValidityPeriodClosed.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/ValidityPeriodClosed.view @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/VersionMatch.view b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/VersionMatch.view index 14c0127fd..09e5838cb 100644 --- a/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/VersionMatch.view +++ b/bundles/org.eclipse.passage.loc.licenses.emfforms/viewmodels/VersionMatch.view @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore - + + + + + + + + + + + + + + /org.eclipse.passage.lic.licenses.ecore/model/licenses.ecore + diff --git a/bundles/org.eclipse.passage.loc.licenses.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.licenses.ui/META-INF/MANIFEST.MF index 156d7d687..e31ac5628 100644 --- a/bundles/org.eclipse.passage.loc.licenses.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.licenses.ui/META-INF/MANIFEST.MF @@ -1,34 +1,34 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.licenses.ui -Bundle-ManifestVersion: 2 -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-SymbolicName: org.eclipse.passage.loc.licenses.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.di;bundle-version="0.0.0", - org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0", - org.eclipse.jface;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.e4.ui;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.loc.licenses.core;bundle-version="0.0.0", - org.eclipse.passage.loc.products.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.users.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.workbench;bundle-version="0.0.0", - org.eclipse.passage.loc.report.core;bundle-version="0.0.0", - org.eclipse.passage.loc.report.ui;bundle-version="0.0.0" -Import-Package: javax.inject;version="1.0.0" -Export-Package: org.eclipse.passage.loc.internal.licenses.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.loc.licenses.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui" -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.licenses.ui +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-SymbolicName: org.eclipse.passage.loc.licenses.ui;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.di;bundle-version="0.0.0", + org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0", + org.eclipse.jface;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.e4.ui;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.loc.licenses.core;bundle-version="0.0.0", + org.eclipse.passage.loc.products.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.users.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.workbench;bundle-version="0.0.0", + org.eclipse.passage.loc.report.core;bundle-version="0.0.0", + org.eclipse.passage.loc.report.ui;bundle-version="0.0.0" +Import-Package: javax.inject;version="1.0.0" +Export-Package: org.eclipse.passage.loc.internal.licenses.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.loc.licenses.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui" +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF index 8ac7404cb..87c5c35e5 100644 --- a/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF @@ -1,30 +1,30 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.products.core -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.products.core -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", - org.eclipse.passage.lic.products.edit;bundle-version="0.0.0", - org.eclipse.passage.lic.products.model;bundle-version="0.0.0", - org.eclipse.passage.loc.e4;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0" -Bundle-ActivationPolicy: lazy -Export-Package: org.eclipse.passage.loc.internal.products; - x-friends:="org.eclipse.passage.loc.products.emfforms, - org.eclipse.passage.loc.products.ui, - org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.report.ui, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.loc.licenses.core, - org.eclipse.passage.loc.licenses.ui", - org.eclipse.passage.loc.internal.products.core;x-internal:=true -Import-Package: org.osgi.service.event;version="1.0.0", - org.slf4j;version="1.7.36" -Service-Component: OSGI-INF/*.xml +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.products.core +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.products.core +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", + org.eclipse.passage.lic.products.edit;bundle-version="0.0.0", + org.eclipse.passage.lic.products.model;bundle-version="0.0.0", + org.eclipse.passage.loc.e4;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0" +Bundle-ActivationPolicy: lazy +Export-Package: org.eclipse.passage.loc.internal.products; + x-friends:="org.eclipse.passage.loc.products.emfforms, + org.eclipse.passage.loc.products.ui, + org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.report.ui, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.loc.licenses.core, + org.eclipse.passage.loc.licenses.ui", + org.eclipse.passage.loc.internal.products.core;x-internal:=true +Import-Package: org.osgi.service.event;version="1.0.0", + org.slf4j;version="1.7.36" +Service-Component: OSGI-INF/*.xml diff --git a/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductDomainRegistry.java b/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductDomainRegistry.java index 3b7f75aa1..f7c5dc4ac 100644 --- a/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductDomainRegistry.java +++ b/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductDomainRegistry.java @@ -1,307 +1,307 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.products.core; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; -import org.eclipse.passage.lic.internal.products.model.util.ProductsResourceImpl; -import org.eclipse.passage.lic.products.model.api.Product; -import org.eclipse.passage.lic.products.model.api.ProductLine; -import org.eclipse.passage.lic.products.model.api.ProductVersion; -import org.eclipse.passage.lic.products.model.api.ProductVersionFeature; -import org.eclipse.passage.lic.products.model.meta.ProductsPackage; -import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; -import org.eclipse.passage.loc.internal.api.workspace.KnownResources; -import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; -import org.eclipse.passage.loc.internal.api.workspace.Products; -import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; -import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; -import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; -import org.eclipse.passage.loc.internal.products.ProductRegistry; -import org.eclipse.passage.loc.internal.products.ProductRegistryEvents; -import org.eclipse.passage.loc.internal.products.core.i18n.ProductsCoreMessages; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.event.EventAdmin; - -@SuppressWarnings("restriction") -@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + ProductsPackage.eNAME, - EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "products_xmi" }) -public final class ProductDomainRegistry extends BaseDomainRegistry - implements ProductRegistry, EditingDomainRegistry { - - private final Map lines = new HashMap<>(); - private final Map products = new HashMap<>(); - private final Map> versions = new HashMap<>(); - private final Map>> features = new HashMap<>(); - - private final List events = new ArrayList<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public void bindEventAdmin(EventAdmin admin) { - this.events.add(admin); - } - - public void unbindEventAdmin(EventAdmin admin) { - this.events.remove(admin); - } - - @Override - @Reference - public void bindGear(OperatorGearSupplier supplier) { - super.bindGear(supplier); - } - - @Override - public void unbindGear(OperatorGearSupplier supplier) { - super.unbindGear(supplier); - } - - @Activate - public void load(Map properties) { - super.activate(properties); - } - - @Deactivate - public void unload(Map properties) { - for (Map> map : features.values()) { - map.clear(); - } - versions.values().forEach(Map::clear); - products.clear(); - lines.clear(); - super.deactivate(properties); - } - - @Override - public String getFileExtension() { - return "products_xmi"; //$NON-NLS-1$ - } - - @Override - public Class getContentClass() { - return ProductLine.class; - } - - @Override - public String resolveIdentifier(ProductLine content) { - return content.getIdentifier(); - } - - @Override - public Collection productLines() { - return new ArrayList<>(lines.values()); - } - - @Override - public Optional productLine(String identifier) { - return Optional.ofNullable(lines.get(identifier)); - } - - @Override - public Collection products() { - return new ArrayList<>(products.values()); - } - - @Override - public Optional product(String id) { - return Optional.ofNullable(products.get(id)); - } - - @Override - public Collection productVersions() { - List list = new ArrayList<>(); - Collection> values = versions.values(); - for (Map map : values) { - list.addAll(map.values()); - } - return list; - } - - @Override - public Optional productVersion(String product, String version) { - return Optional.ofNullable(versions.get(product)).map(m -> m.get(version)); - } - - @Override - public Collection productVersionFeatures() { - List result = new ArrayList<>(); - for (Map> maps : features.values()) { - for (Map map : maps.values()) { - result.addAll(map.values()); - } - } - return result; - } - - @Override - protected DomainContentAdapter createContentAdapter() { - return new ProductsDomainRegistryTracker(this); - } - - void registerProductLine(ProductLine line) { - ProductLine existing = lines.put(line.getIdentifier(), line); - if ((existing != null) && (existing != line)) { - Platform.getLog(getClass()) - .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, line)); - } - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_LINE_CREATE, line).get()); - line.getProducts().forEach(p -> registerProduct(p)); - } - - void registerProduct(Product product) { - String identifier = product.getIdentifier(); - Product existing = products.put(identifier, product); - if ((existing != null) && (existing != product)) { - String msg = NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, product); - Platform.getLog(getClass()).warn(msg); - } - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_CREATE, product).get()); - product.getProductVersions().forEach(pv -> registerProductVersion(product, pv)); - } - - void registerProductVersion(Product product, ProductVersion version) { - ProductVersion existing = versions.computeIfAbsent(product.getIdentifier(), key -> new HashMap<>()) - .put(version.getVersion(), version); - if ((existing != null) && (existing != version)) { - Platform.getLog(getClass()) - .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, version)); - } - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_CREATE, version).get()); - } - - void registerProductVersionFeature(Product product, ProductVersion version, ProductVersionFeature feature) { - ProductVersionFeature existing = features// - .computeIfAbsent(product.getIdentifier(), key -> new HashMap<>())// - .computeIfAbsent(version.getVersion(), key -> new HashMap<>())// - .put(feature.getFeatureIdentifier(), feature); - if ((existing != null) && (existing != feature)) { - Platform.getLog(getClass()) - .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, feature)); - } - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_FEATURE_CREATE, feature).get()); - } - - void unregisterProductLine(String id) { - ProductLine removed = lines.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_LINE_DELETE, removed).get()); - removed.getProducts().forEach(p -> unregisterProduct(p.getIdentifier())); - } - } - - void unregisterProduct(String id) { - Product removed = products.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_DELETE, removed).get()); - removed.getProductVersions().forEach(pv -> unregisterProductVersion(id, pv.getVersion())); - } - } - - void unregisterProductVersion(String product, String version) { - Map found = versions.get(product); - if (found != null) { - ProductVersion removed = found.remove(version); - if (removed != null) { - events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_DELETE, removed).get()); - removed.getProductVersionFeatures() - .forEach(pvf -> unregisterProductVersionFeature(product, version, pvf.getFeatureIdentifier())); - } - if (found.isEmpty()) { - found.remove(product); - } - } - } - - void unregisterProductVersionFeature(String product, String version, String feature) { - Map> maps = features.get(product); - if (maps != null) { - Map map = maps.get(version); - if (map != null) { - ProductVersionFeature removed = map.remove(feature); - if (removed != null) { - events().postEvent( - new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_FEATURE_DELETE, removed).get()); - } - if (map.isEmpty()) { - maps.remove(version); - } - } - if (maps.isEmpty()) { - features.remove(product); - } - } - } - - private EventAdmin events() { - return events.stream().findAny().get(); - } - - @Override - public EClass getContentClassifier() { - return ProductsPackage.eINSTANCE.getProductLine(); - } - - @Override - public EStructuralFeature getContentIdentifierAttribute() { - return ProductsPackage.eINSTANCE.getProductLine_Identifier(); - } - - @Override - public EStructuralFeature getContentNameAttribute() { - return ProductsPackage.eINSTANCE.getProductLine_Name(); - } - - @Override - public void registerContent(ProductLine content) { - registerProductLine(content); - } - - @Override - public void unregisterContent(String identifier) { - unregisterProductLine(identifier); - } - - @Override - protected final Resource createResource(URI uri) { - return new ProductsResourceImpl(uri); - } - - @Override - protected boolean emfResource(ResourceHandle handle) { - return Products.xmi.equals(handle.type()) || Products.xmi033.equals(handle.type()); - } - - @Override - protected KnownResources knownResources(OperatorWorkspace workspace) { - return workspace.products(); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.products.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; +import org.eclipse.passage.lic.internal.products.model.util.ProductsResourceImpl; +import org.eclipse.passage.lic.products.model.api.Product; +import org.eclipse.passage.lic.products.model.api.ProductLine; +import org.eclipse.passage.lic.products.model.api.ProductVersion; +import org.eclipse.passage.lic.products.model.api.ProductVersionFeature; +import org.eclipse.passage.lic.products.model.meta.ProductsPackage; +import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; +import org.eclipse.passage.loc.internal.api.workspace.KnownResources; +import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; +import org.eclipse.passage.loc.internal.api.workspace.Products; +import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; +import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; +import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; +import org.eclipse.passage.loc.internal.products.ProductRegistry; +import org.eclipse.passage.loc.internal.products.ProductRegistryEvents; +import org.eclipse.passage.loc.internal.products.core.i18n.ProductsCoreMessages; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.event.EventAdmin; + +@SuppressWarnings("restriction") +@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + ProductsPackage.eNAME, + EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "products_xmi" }) +public final class ProductDomainRegistry extends BaseDomainRegistry + implements ProductRegistry, EditingDomainRegistry { + + private final Map lines = new HashMap<>(); + private final Map products = new HashMap<>(); + private final Map> versions = new HashMap<>(); + private final Map>> features = new HashMap<>(); + + private final List events = new ArrayList<>(); + + @Reference(cardinality = ReferenceCardinality.MANDATORY) + public void bindEventAdmin(EventAdmin admin) { + this.events.add(admin); + } + + public void unbindEventAdmin(EventAdmin admin) { + this.events.remove(admin); + } + + @Override + @Reference + public void bindGear(OperatorGearSupplier supplier) { + super.bindGear(supplier); + } + + @Override + public void unbindGear(OperatorGearSupplier supplier) { + super.unbindGear(supplier); + } + + @Activate + public void load(Map properties) { + super.activate(properties); + } + + @Deactivate + public void unload(Map properties) { + for (Map> map : features.values()) { + map.clear(); + } + versions.values().forEach(Map::clear); + products.clear(); + lines.clear(); + super.deactivate(properties); + } + + @Override + public String getFileExtension() { + return "products_xmi"; //$NON-NLS-1$ + } + + @Override + public Class getContentClass() { + return ProductLine.class; + } + + @Override + public String resolveIdentifier(ProductLine content) { + return content.getIdentifier(); + } + + @Override + public Collection productLines() { + return new ArrayList<>(lines.values()); + } + + @Override + public Optional productLine(String identifier) { + return Optional.ofNullable(lines.get(identifier)); + } + + @Override + public Collection products() { + return new ArrayList<>(products.values()); + } + + @Override + public Optional product(String id) { + return Optional.ofNullable(products.get(id)); + } + + @Override + public Collection productVersions() { + List list = new ArrayList<>(); + Collection> values = versions.values(); + for (Map map : values) { + list.addAll(map.values()); + } + return list; + } + + @Override + public Optional productVersion(String product, String version) { + return Optional.ofNullable(versions.get(product)).map(m -> m.get(version)); + } + + @Override + public Collection productVersionFeatures() { + List result = new ArrayList<>(); + for (Map> maps : features.values()) { + for (Map map : maps.values()) { + result.addAll(map.values()); + } + } + return result; + } + + @Override + protected DomainContentAdapter createContentAdapter() { + return new ProductsDomainRegistryTracker(this); + } + + void registerProductLine(ProductLine line) { + ProductLine existing = lines.put(line.getIdentifier(), line); + if ((existing != null) && (existing != line)) { + Platform.getLog(getClass()) + .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, line)); + } + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_LINE_CREATE, line).get()); + line.getProducts().forEach(p -> registerProduct(p)); + } + + void registerProduct(Product product) { + String identifier = product.getIdentifier(); + Product existing = products.put(identifier, product); + if ((existing != null) && (existing != product)) { + String msg = NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, product); + Platform.getLog(getClass()).warn(msg); + } + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_CREATE, product).get()); + product.getProductVersions().forEach(pv -> registerProductVersion(product, pv)); + } + + void registerProductVersion(Product product, ProductVersion version) { + ProductVersion existing = versions.computeIfAbsent(product.getIdentifier(), key -> new HashMap<>()) + .put(version.getVersion(), version); + if ((existing != null) && (existing != version)) { + Platform.getLog(getClass()) + .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, version)); + } + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_CREATE, version).get()); + } + + void registerProductVersionFeature(Product product, ProductVersion version, ProductVersionFeature feature) { + ProductVersionFeature existing = features// + .computeIfAbsent(product.getIdentifier(), key -> new HashMap<>())// + .computeIfAbsent(version.getVersion(), key -> new HashMap<>())// + .put(feature.getFeatureIdentifier(), feature); + if ((existing != null) && (existing != feature)) { + Platform.getLog(getClass()) + .warn(NLS.bind(ProductsCoreMessages.ProductDomain_instance_duplication_message, existing, feature)); + } + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_FEATURE_CREATE, feature).get()); + } + + void unregisterProductLine(String id) { + ProductLine removed = lines.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_LINE_DELETE, removed).get()); + removed.getProducts().forEach(p -> unregisterProduct(p.getIdentifier())); + } + } + + void unregisterProduct(String id) { + Product removed = products.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_DELETE, removed).get()); + removed.getProductVersions().forEach(pv -> unregisterProductVersion(id, pv.getVersion())); + } + } + + void unregisterProductVersion(String product, String version) { + Map found = versions.get(product); + if (found != null) { + ProductVersion removed = found.remove(version); + if (removed != null) { + events().postEvent(new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_DELETE, removed).get()); + removed.getProductVersionFeatures() + .forEach(pvf -> unregisterProductVersionFeature(product, version, pvf.getFeatureIdentifier())); + } + if (found.isEmpty()) { + found.remove(product); + } + } + } + + void unregisterProductVersionFeature(String product, String version, String feature) { + Map> maps = features.get(product); + if (maps != null) { + Map map = maps.get(version); + if (map != null) { + ProductVersionFeature removed = map.remove(feature); + if (removed != null) { + events().postEvent( + new EquinoxEvent(ProductRegistryEvents.PRODUCT_VERSION_FEATURE_DELETE, removed).get()); + } + if (map.isEmpty()) { + maps.remove(version); + } + } + if (maps.isEmpty()) { + features.remove(product); + } + } + } + + private EventAdmin events() { + return events.stream().findAny().get(); + } + + @Override + public EClass getContentClassifier() { + return ProductsPackage.eINSTANCE.getProductLine(); + } + + @Override + public EStructuralFeature getContentIdentifierAttribute() { + return ProductsPackage.eINSTANCE.getProductLine_Identifier(); + } + + @Override + public EStructuralFeature getContentNameAttribute() { + return ProductsPackage.eINSTANCE.getProductLine_Name(); + } + + @Override + public void registerContent(ProductLine content) { + registerProductLine(content); + } + + @Override + public void unregisterContent(String identifier) { + unregisterProductLine(identifier); + } + + @Override + protected final Resource createResource(URI uri) { + return new ProductsResourceImpl(uri); + } + + @Override + protected boolean emfResource(ResourceHandle handle) { + return Products.xmi.equals(handle.type()) || Products.xmi033.equals(handle.type()); + } + + @Override + protected KnownResources knownResources(OperatorWorkspace workspace) { + return workspace.products(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductVersionKeys.java b/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductVersionKeys.java index 70290c892..c785aa684 100644 --- a/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductVersionKeys.java +++ b/bundles/org.eclipse.passage.loc.products.core/src/org/eclipse/passage/loc/internal/products/core/ProductVersionKeys.java @@ -1,140 +1,140 @@ -/******************************************************************************* - * Copyright (c) 2021, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.products.core; - -import java.io.ByteArrayOutputStream; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Consumer; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.passage.lic.api.LicensedProduct; -import org.eclipse.passage.lic.api.LicensingException; -import org.eclipse.passage.lic.api.io.StreamCodec; -import org.eclipse.passage.lic.base.BaseLicensedProduct; -import org.eclipse.passage.lic.keys.model.api.KeyPair; -import org.eclipse.passage.lic.products.model.api.ProductVersion; -import org.eclipse.passage.loc.internal.api.workspace.Keys; -import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; -import org.eclipse.passage.loc.internal.products.core.i18n.ProductsCoreMessages; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("restriction") -final class ProductVersionKeys { - - private final String plugin; - private final Consumer notify; - private final Logger log = LoggerFactory.getLogger(getClass()); - - ProductVersionKeys(String plugin, Consumer notify) { - Objects.requireNonNull(plugin, "ProductVersionPassword::plugin"); //$NON-NLS-1$ - Objects.requireNonNull(notify, "ProductVersionPassword::notify"); //$NON-NLS-1$ - this.plugin = plugin; - this.notify = notify; - } - - ProductVersionKeys(String plugin) { - this(plugin, p -> { - }); - } - - public IStatus createKeys(ProductVersion target) { - LicensedProduct product = product(target); - Optional existing; - try { - existing = keyIsPresent(product); - } catch (LicensingException e) { - return failed(e); - } - if (existing.isPresent()) { - return error(existing.get()); - } - Optional codec; - try { - codec = codec(product); - } catch (LicensingException e) { - return failed(e); - } - if (codec.isEmpty()) { - return noCodec(target, product); - } - try { - return createKeyPair(target, product, codec.get()); - } catch (Exception e) { - return failed(e); - } - } - - private BaseLicensedProduct product(ProductVersion target) { - return new BaseLicensedProduct(// - target.getProduct().getIdentifier(), // - target.getVersion()); - } - - private Optional codec(LicensedProduct product) throws LicensingException { - return new OperatorGearAware().withGear(gear -> gear.codec(product)); - } - - private Optional keyIsPresent(LicensedProduct target) throws LicensingException { - Keys service = new OperatorGearAware().withGear(gear -> Optional.of(gear.workspace().keys())).get(); - Optional exists = service.existing(target.identifier(), target.version()); - return exists.map( - path -> String.format(ProductsCoreMessages.ProductOperatorServiceImpl_e_key_already_defined, path)); - } - - private IStatus createKeyPair(ProductVersion target, LicensedProduct product, StreamCodec codec) - throws LicensingException { - Optional stored = store(generate(target, product, codec)); - if (!stored.isPresent()) { - notify.accept(stored.get()); - } - return created(stored); - } - - private Optional store(KeyPair pair) throws LicensingException { - return new KeyPairStored(pair).store(); - } - - private KeyPair generate(ProductVersion target, LicensedProduct product, StreamCodec codec) - throws LicensingException { - try (ByteArrayOutputStream open = new ByteArrayOutputStream(); - ByteArrayOutputStream secret = new ByteArrayOutputStream()) { - codec.createKeyPair(open, secret, product.identifier(), new ProductVersionPassword(target).get()); - return new KeyPairGeneraged(codec, open.toByteArray(), secret.toByteArray()).get(); - } catch (Exception e) { - throw new LicensingException("failed to generate keys", e); //$NON-NLS-1$ // TODO: l10n - } - } - - private Status error(String errors) { - return new Status(IStatus.ERROR, plugin, errors); - } - - private Status noCodec(ProductVersion target, LicensedProduct product) { - return error(String.format(ProductsCoreMessages.ProductOperatorServiceImpl_e_unable_to_create_keys, - product.version(), target.getProduct().getName())); - } - - private Status failed(Exception e) { - log.error("", e); //$NON-NLS-1$ - return new Status(IStatus.ERROR, plugin, ProductsCoreMessages.ProductOperatorServiceImpl_e_export_error, e); - } - - private Status created(Optional persisted) { - return new Status(IStatus.OK, plugin, String - .format(ProductsCoreMessages.ProductOperatorServiceImpl_ok_keys_exported, persisted.orElse("unknown"))); //$NON-NLS-1$ - } - +/******************************************************************************* + * Copyright (c) 2021, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.products.core; + +import java.io.ByteArrayOutputStream; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.passage.lic.api.LicensedProduct; +import org.eclipse.passage.lic.api.LicensingException; +import org.eclipse.passage.lic.api.io.StreamCodec; +import org.eclipse.passage.lic.base.BaseLicensedProduct; +import org.eclipse.passage.lic.keys.model.api.KeyPair; +import org.eclipse.passage.lic.products.model.api.ProductVersion; +import org.eclipse.passage.loc.internal.api.workspace.Keys; +import org.eclipse.passage.loc.internal.equinox.OperatorGearAware; +import org.eclipse.passage.loc.internal.products.core.i18n.ProductsCoreMessages; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SuppressWarnings("restriction") +final class ProductVersionKeys { + + private final String plugin; + private final Consumer notify; + private final Logger log = LoggerFactory.getLogger(getClass()); + + ProductVersionKeys(String plugin, Consumer notify) { + Objects.requireNonNull(plugin, "ProductVersionPassword::plugin"); //$NON-NLS-1$ + Objects.requireNonNull(notify, "ProductVersionPassword::notify"); //$NON-NLS-1$ + this.plugin = plugin; + this.notify = notify; + } + + ProductVersionKeys(String plugin) { + this(plugin, p -> { + }); + } + + public IStatus createKeys(ProductVersion target) { + LicensedProduct product = product(target); + Optional existing; + try { + existing = keyIsPresent(product); + } catch (LicensingException e) { + return failed(e); + } + if (existing.isPresent()) { + return error(existing.get()); + } + Optional codec; + try { + codec = codec(product); + } catch (LicensingException e) { + return failed(e); + } + if (codec.isEmpty()) { + return noCodec(target, product); + } + try { + return createKeyPair(target, product, codec.get()); + } catch (Exception e) { + return failed(e); + } + } + + private BaseLicensedProduct product(ProductVersion target) { + return new BaseLicensedProduct(// + target.getProduct().getIdentifier(), // + target.getVersion()); + } + + private Optional codec(LicensedProduct product) throws LicensingException { + return new OperatorGearAware().withGear(gear -> gear.codec(product)); + } + + private Optional keyIsPresent(LicensedProduct target) throws LicensingException { + Keys service = new OperatorGearAware().withGear(gear -> Optional.of(gear.workspace().keys())).get(); + Optional exists = service.existing(target.identifier(), target.version()); + return exists.map( + path -> String.format(ProductsCoreMessages.ProductOperatorServiceImpl_e_key_already_defined, path)); + } + + private IStatus createKeyPair(ProductVersion target, LicensedProduct product, StreamCodec codec) + throws LicensingException { + Optional stored = store(generate(target, product, codec)); + if (!stored.isPresent()) { + notify.accept(stored.get()); + } + return created(stored); + } + + private Optional store(KeyPair pair) throws LicensingException { + return new KeyPairStored(pair).store(); + } + + private KeyPair generate(ProductVersion target, LicensedProduct product, StreamCodec codec) + throws LicensingException { + try (ByteArrayOutputStream open = new ByteArrayOutputStream(); + ByteArrayOutputStream secret = new ByteArrayOutputStream()) { + codec.createKeyPair(open, secret, product.identifier(), new ProductVersionPassword(target).get()); + return new KeyPairGeneraged(codec, open.toByteArray(), secret.toByteArray()).get(); + } catch (Exception e) { + throw new LicensingException("failed to generate keys", e); //$NON-NLS-1$ // TODO: l10n + } + } + + private Status error(String errors) { + return new Status(IStatus.ERROR, plugin, errors); + } + + private Status noCodec(ProductVersion target, LicensedProduct product) { + return error(String.format(ProductsCoreMessages.ProductOperatorServiceImpl_e_unable_to_create_keys, + product.version(), target.getProduct().getName())); + } + + private Status failed(Exception e) { + log.error("", e); //$NON-NLS-1$ + return new Status(IStatus.ERROR, plugin, ProductsCoreMessages.ProductOperatorServiceImpl_e_export_error, e); + } + + private Status created(Optional persisted) { + return new Status(IStatus.OK, plugin, String + .format(ProductsCoreMessages.ProductOperatorServiceImpl_ok_keys_exported, persisted.orElse("unknown"))); //$NON-NLS-1$ + } + } \ No newline at end of file diff --git a/bundles/org.eclipse.passage.loc.products.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.products.ui/META-INF/MANIFEST.MF index 287aaee9e..6e0f2205e 100644 --- a/bundles/org.eclipse.passage.loc.products.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.products.ui/META-INF/MANIFEST.MF @@ -1,32 +1,32 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.products.ui -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.products.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", - org.eclipse.e4.core.di;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0", - org.eclipse.jface;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", - org.eclipse.passage.lic.products.e4.ui;bundle-version="0.0.0", - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0", - org.eclipse.passage.loc.products.core;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.loc.workbench;bundle-version="0.0.0" -Import-Package: javax.inject;version="1.0.0" -Export-Package: org.eclipse.passage.loc.internal.products.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.loc.products.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui,org.eclipse.passage.loc.products.emfforms", - org.eclipse.passage.loc.products.ui.handlers;x-internal:=true -Service-Component: OSGI-INF/org.eclipse.passage.loc.internal.products.ui.ProductsInstanceSupply.xml -Bundle-ActivationPolicy: lazy +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.products.ui +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.products.ui;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", + org.eclipse.e4.core.di;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0", + org.eclipse.jface;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.keys.model;bundle-version="0.0.0", + org.eclipse.passage.lic.products.e4.ui;bundle-version="0.0.0", + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0", + org.eclipse.passage.loc.products.core;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.loc.workbench;bundle-version="0.0.0" +Import-Package: javax.inject;version="1.0.0" +Export-Package: org.eclipse.passage.loc.internal.products.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.loc.products.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui,org.eclipse.passage.loc.products.emfforms", + org.eclipse.passage.loc.products.ui.handlers;x-internal:=true +Service-Component: OSGI-INF/org.eclipse.passage.loc.internal.products.ui.ProductsInstanceSupply.xml +Bundle-ActivationPolicy: lazy diff --git a/bundles/org.eclipse.passage.loc.users.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.users.core/META-INF/MANIFEST.MF index 1d3534928..ae0c1a2f7 100644 --- a/bundles/org.eclipse.passage.loc.users.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.users.core/META-INF/MANIFEST.MF @@ -1,25 +1,25 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.users.core -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.users.core -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.equinox;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.users.model;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0" -Export-Package: org.eclipse.passage.loc.internal.users; - x-friends:="org.eclipse.passage.loc.users.emfforms, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.licenses.core, - org.eclipse.passage.loc.report.core, - org.eclipse.passage.loc.report.core.tests", - org.eclipse.passage.loc.internal.users.core;x-internal:=true -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/*.xml -Import-Package: org.osgi.service.event;version="1.0.0" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.users.core +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.users.core +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.users.model;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0" +Export-Package: org.eclipse.passage.loc.internal.users; + x-friends:="org.eclipse.passage.loc.users.emfforms, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.licenses.core, + org.eclipse.passage.loc.report.core, + org.eclipse.passage.loc.report.core.tests", + org.eclipse.passage.loc.internal.users.core;x-internal:=true +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/*.xml +Import-Package: org.osgi.service.event;version="1.0.0" diff --git a/bundles/org.eclipse.passage.loc.users.core/src/org/eclipse/passage/loc/internal/users/core/UserDomainRegistry.java b/bundles/org.eclipse.passage.loc.users.core/src/org/eclipse/passage/loc/internal/users/core/UserDomainRegistry.java index c021a2d5a..88792c289 100644 --- a/bundles/org.eclipse.passage.loc.users.core/src/org/eclipse/passage/loc/internal/users/core/UserDomainRegistry.java +++ b/bundles/org.eclipse.passage.loc.users.core/src/org/eclipse/passage/loc/internal/users/core/UserDomainRegistry.java @@ -1,213 +1,213 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.loc.internal.users.core; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.osgi.util.NLS; -import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; -import org.eclipse.passage.lic.internal.users.model.util.UsersResourceImpl; -import org.eclipse.passage.lic.users.model.api.User; -import org.eclipse.passage.lic.users.model.api.UserOrigin; -import org.eclipse.passage.lic.users.model.meta.UsersPackage; -import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; -import org.eclipse.passage.loc.internal.api.workspace.KnownResources; -import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; -import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; -import org.eclipse.passage.loc.internal.api.workspace.Users; -import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; -import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; -import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; -import org.eclipse.passage.loc.internal.users.UserRegistry; -import org.eclipse.passage.loc.internal.users.UserRegistryEvents; -import org.eclipse.passage.loc.internal.users.core.i18n.UsersCoreMessages; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.event.EventAdmin; - -@SuppressWarnings("restriction") -@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + UsersPackage.eNAME, - EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "users_xmi" }) -public final class UserDomainRegistry extends BaseDomainRegistry - implements UserRegistry, EditingDomainRegistry { - - private final Map origins = new HashMap<>(); - private final Map users = new HashMap<>(); - - private final List events = new ArrayList<>(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public void bindEventAdmin(EventAdmin admin) { - this.events.add(admin); - } - - public void unbindEventAdmin(EventAdmin admin) { - this.events.remove(admin); - } - - @Override - @Reference - public void bindGear(OperatorGearSupplier supplier) { - super.bindGear(supplier); - } - - @Override - public void unbindGear(OperatorGearSupplier supplier) { - super.unbindGear(supplier); - } - - @Activate - public void load(Map properties) { - super.activate(properties); - } - - @Deactivate - public void unload(Map properties) { - users.clear(); - origins.clear(); - super.deactivate(properties); - } - - @Override - public String getFileExtension() { - return "users_xmi"; //$NON-NLS-1$ - } - - @Override - public Class getContentClass() { - return UserOrigin.class; - } - - @Override - public String resolveIdentifier(UserOrigin content) { - return content.getIdentifier(); - } - - @Override - public Collection userOrigins() { - return new ArrayList<>(origins.values()); - } - - @Override - public Optional userOrigin(String identifier) { - return Optional.ofNullable(origins.get(identifier)); - } - - @Override - public Collection users() { - return new ArrayList<>(users.values()); - } - - @Override - public Optional user(String identifier) { - return Optional.ofNullable(users.get(identifier)); - } - - @Override - protected DomainContentAdapter createContentAdapter() { - return new UsersDomainRegistryTracker(this); - } - - void registerUserOrigin(UserOrigin origin) { - UserOrigin existing = origins.put(origin.getIdentifier(), origin); - if ((existing != null) && (existing != origin)) { - Platform.getLog(getClass()) - .warn(NLS.bind(UsersCoreMessages.UserDomain_instance_duplication_message, existing, origin)); - } - events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_ORIGIN_CREATE, origin).get()); - origin.getUsers().forEach(u -> registerUser(u)); - } - - void registerUser(User user) { - User existing = users.put(user.getContact().getEmail(), user); - if ((existing != null) && (existing != user)) { - Platform.getLog(getClass()) - .warn(NLS.bind(UsersCoreMessages.UserDomain_instance_duplication_message, existing, user)); - } - events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_CREATE, user).get()); - } - - void unregisterUserOrigin(String id) { - UserOrigin removed = origins.remove(id); - if (removed != null) { - events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_ORIGIN_DELETE, removed).get()); - removed.getUsers().forEach(u -> unregisterUser(u.getContact().getEmail())); - } - } - - void unregisterUser(String userId) { - User removed = users.remove(userId); - if (removed != null) { - events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_DELETE, removed).get()); - } - } - - private EventAdmin events() { - return events.stream().findAny().get(); - } - - @Override - public EClass getContentClassifier() { - return UsersPackage.eINSTANCE.getUserOrigin(); - } - - @Override - public EStructuralFeature getContentIdentifierAttribute() { - return UsersPackage.eINSTANCE.getUserOrigin_Identifier(); - } - - @Override - public EStructuralFeature getContentNameAttribute() { - return UsersPackage.eINSTANCE.getUserOrigin_Name(); - } - - @Override - public void registerContent(UserOrigin content) { - registerUserOrigin(content); - } - - @Override - public void unregisterContent(String identifier) { - unregisterUserOrigin(identifier); - } - - @Override - protected final Resource createResource(URI uri) { - return new UsersResourceImpl(uri); - } - - @Override - protected boolean emfResource(ResourceHandle handle) { - return Users.xmi.equals(handle.type()) || Users.xmi033.equals(handle.type()); - } - - @Override - protected KnownResources knownResources(OperatorWorkspace workspace) { - return workspace.users(); - } - -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.loc.internal.users.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.lic.internal.equinox.events.EquinoxEvent; +import org.eclipse.passage.lic.internal.users.model.util.UsersResourceImpl; +import org.eclipse.passage.lic.users.model.api.User; +import org.eclipse.passage.lic.users.model.api.UserOrigin; +import org.eclipse.passage.lic.users.model.meta.UsersPackage; +import org.eclipse.passage.loc.internal.api.OperatorGearSupplier; +import org.eclipse.passage.loc.internal.api.workspace.KnownResources; +import org.eclipse.passage.loc.internal.api.workspace.OperatorWorkspace; +import org.eclipse.passage.loc.internal.api.workspace.ResourceHandle; +import org.eclipse.passage.loc.internal.api.workspace.Users; +import org.eclipse.passage.loc.internal.emf.DomainContentAdapter; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistry; +import org.eclipse.passage.loc.internal.emf.EditingDomainRegistryAccess; +import org.eclipse.passage.loc.internal.equinox.BaseDomainRegistry; +import org.eclipse.passage.loc.internal.users.UserRegistry; +import org.eclipse.passage.loc.internal.users.UserRegistryEvents; +import org.eclipse.passage.loc.internal.users.core.i18n.UsersCoreMessages; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.event.EventAdmin; + +@SuppressWarnings("restriction") +@Component(property = { EditingDomainRegistryAccess.PROPERTY_DOMAIN_NAME + '=' + UsersPackage.eNAME, + EditingDomainRegistryAccess.PROPERTY_FILE_EXTENSION + '=' + "users_xmi" }) +public final class UserDomainRegistry extends BaseDomainRegistry + implements UserRegistry, EditingDomainRegistry { + + private final Map origins = new HashMap<>(); + private final Map users = new HashMap<>(); + + private final List events = new ArrayList<>(); + + @Reference(cardinality = ReferenceCardinality.MANDATORY) + public void bindEventAdmin(EventAdmin admin) { + this.events.add(admin); + } + + public void unbindEventAdmin(EventAdmin admin) { + this.events.remove(admin); + } + + @Override + @Reference + public void bindGear(OperatorGearSupplier supplier) { + super.bindGear(supplier); + } + + @Override + public void unbindGear(OperatorGearSupplier supplier) { + super.unbindGear(supplier); + } + + @Activate + public void load(Map properties) { + super.activate(properties); + } + + @Deactivate + public void unload(Map properties) { + users.clear(); + origins.clear(); + super.deactivate(properties); + } + + @Override + public String getFileExtension() { + return "users_xmi"; //$NON-NLS-1$ + } + + @Override + public Class getContentClass() { + return UserOrigin.class; + } + + @Override + public String resolveIdentifier(UserOrigin content) { + return content.getIdentifier(); + } + + @Override + public Collection userOrigins() { + return new ArrayList<>(origins.values()); + } + + @Override + public Optional userOrigin(String identifier) { + return Optional.ofNullable(origins.get(identifier)); + } + + @Override + public Collection users() { + return new ArrayList<>(users.values()); + } + + @Override + public Optional user(String identifier) { + return Optional.ofNullable(users.get(identifier)); + } + + @Override + protected DomainContentAdapter createContentAdapter() { + return new UsersDomainRegistryTracker(this); + } + + void registerUserOrigin(UserOrigin origin) { + UserOrigin existing = origins.put(origin.getIdentifier(), origin); + if ((existing != null) && (existing != origin)) { + Platform.getLog(getClass()) + .warn(NLS.bind(UsersCoreMessages.UserDomain_instance_duplication_message, existing, origin)); + } + events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_ORIGIN_CREATE, origin).get()); + origin.getUsers().forEach(u -> registerUser(u)); + } + + void registerUser(User user) { + User existing = users.put(user.getContact().getEmail(), user); + if ((existing != null) && (existing != user)) { + Platform.getLog(getClass()) + .warn(NLS.bind(UsersCoreMessages.UserDomain_instance_duplication_message, existing, user)); + } + events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_CREATE, user).get()); + } + + void unregisterUserOrigin(String id) { + UserOrigin removed = origins.remove(id); + if (removed != null) { + events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_ORIGIN_DELETE, removed).get()); + removed.getUsers().forEach(u -> unregisterUser(u.getContact().getEmail())); + } + } + + void unregisterUser(String userId) { + User removed = users.remove(userId); + if (removed != null) { + events().postEvent(new EquinoxEvent(UserRegistryEvents.USER_DELETE, removed).get()); + } + } + + private EventAdmin events() { + return events.stream().findAny().get(); + } + + @Override + public EClass getContentClassifier() { + return UsersPackage.eINSTANCE.getUserOrigin(); + } + + @Override + public EStructuralFeature getContentIdentifierAttribute() { + return UsersPackage.eINSTANCE.getUserOrigin_Identifier(); + } + + @Override + public EStructuralFeature getContentNameAttribute() { + return UsersPackage.eINSTANCE.getUserOrigin_Name(); + } + + @Override + public void registerContent(UserOrigin content) { + registerUserOrigin(content); + } + + @Override + public void unregisterContent(String identifier) { + unregisterUserOrigin(identifier); + } + + @Override + protected final Resource createResource(URI uri) { + return new UsersResourceImpl(uri); + } + + @Override + protected boolean emfResource(ResourceHandle handle) { + return Users.xmi.equals(handle.type()) || Users.xmi033.equals(handle.type()); + } + + @Override + protected KnownResources knownResources(OperatorWorkspace workspace) { + return workspace.users(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.users.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.users.ui/META-INF/MANIFEST.MF index 45862561d..44a11b740 100644 --- a/bundles/org.eclipse.passage.loc.users.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.users.ui/META-INF/MANIFEST.MF @@ -1,35 +1,35 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.users.ui -Bundle-ManifestVersion: 2 -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-SymbolicName: org.eclipse.passage.loc.users.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", - org.eclipse.e4.core.di;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0", - org.eclipse.jface;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.5.200", - org.eclipse.passage.lic.jface;bundle-version="0.6.100", - org.eclipse.passage.lic.users.e4.ui;bundle-version="0.5.201", - org.eclipse.passage.loc.api;bundle-version="0.6.0", - org.eclipse.passage.loc.products.core;bundle-version="0.6.0", - org.eclipse.passage.loc.report.core;bundle-version="0.1.0", - org.eclipse.passage.loc.report.ui;bundle-version="0.1.0", - org.eclipse.passage.loc.users.core;bundle-version="0.5.0";visibility:=reexport, - org.eclipse.passage.loc.workbench;bundle-version="0.0.0" -Import-Package: javax.inject;version="1.0.0" -Export-Package: org.eclipse.passage.loc.internal.users.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui", - org.eclipse.passage.loc.internal.users.ui.handlers;x-internal:=true, - org.eclipse.passage.loc.users.ui;x-friends:="org.eclipse.passage.loc.licenses.ui,org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.loc.users.ui.handlers;x-internal:=true -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/org.eclipse.passage.loc.internal.users.ui.UsersInstanceSupply.xml +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.users.ui +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-SymbolicName: org.eclipse.passage.loc.users.ui;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", + org.eclipse.e4.core.di;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0", + org.eclipse.jface;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.5.200", + org.eclipse.passage.lic.jface;bundle-version="0.6.100", + org.eclipse.passage.lic.users.e4.ui;bundle-version="0.5.201", + org.eclipse.passage.loc.api;bundle-version="0.6.0", + org.eclipse.passage.loc.products.core;bundle-version="0.6.0", + org.eclipse.passage.loc.report.core;bundle-version="0.1.0", + org.eclipse.passage.loc.report.ui;bundle-version="0.1.0", + org.eclipse.passage.loc.users.core;bundle-version="0.5.0";visibility:=reexport, + org.eclipse.passage.loc.workbench;bundle-version="0.0.0" +Import-Package: javax.inject;version="1.0.0" +Export-Package: org.eclipse.passage.loc.internal.users.ui;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.licenses.ui", + org.eclipse.passage.loc.internal.users.ui.handlers;x-internal:=true, + org.eclipse.passage.loc.users.ui;x-friends:="org.eclipse.passage.loc.licenses.ui,org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.loc.users.ui.handlers;x-internal:=true +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/org.eclipse.passage.loc.internal.users.ui.UsersInstanceSupply.xml diff --git a/bundles/org.eclipse.passage.loc.workbench.emfforms/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.workbench.emfforms/META-INF/MANIFEST.MF index 49a3bf184..9dae062a6 100644 --- a/bundles/org.eclipse.passage.loc.workbench.emfforms/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.workbench.emfforms/META-INF/MANIFEST.MF @@ -1,57 +1,57 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.workbench.emfforms -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.workbench.emfforms;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Import-Package: javax.annotation;version="1.2.0", - javax.inject, - org.slf4j;version="1.7.36" -Require-Bundle: org.eclipse.core.databinding;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.emf.databinding;bundle-version="0.0.0", - org.eclipse.emf.ecp.edit.swt;bundle-version="0.0.0", - org.eclipse.emf.ecp.ui.view.swt;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.control.multireference;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.core.swt;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.template.model;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.util.swt;bundle-version="0.0.0", - org.eclipse.emf.ecp.view.validation;bundle-version="0.0.0", - org.eclipse.emfforms.core.bazaar;bundle-version="0.0.0", - org.eclipse.emfforms.swt.core.di;bundle-version="0.0.0", - org.eclipse.emfforms.swt.treemasterdetail;bundle-version="0.0.0", - org.eclipse.jface.databinding;bundle-version="0.0.0", - org.eclipse.jface;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.api;bundle-version="0.0.0", - org.eclipse.passage.lic.base;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.loc.equinox;bundle-version="0.0.0", - org.eclipse.passage.loc.workbench;bundle-version="0.0.0";visibility:=reexport -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Export-Package: org.eclipse.passage.loc.internal.workbench.emfforms;x-internal:=true, - org.eclipse.passage.loc.internal.workbench.emfforms.renderers;x-internal:=true, - org.eclipse.passage.loc.workbench.emfforms.parts; - x-friends:="org.eclipse.passage.loc.features.emfforms, - org.eclipse.passage.loc.floating.emfforms, - org.eclipse.passage.loc.licenses.emfforms, - org.eclipse.passage.loc.products.emfforms, - org.eclipse.passage.loc.users.emfforms, - org.eclipse.passage.loc.agreements.emfforms", - org.eclipse.passage.loc.workbench.emfforms.renderers; - x-friends:="org.eclipse.passage.loc.floating.emfforms, - org.eclipse.passage.loc.licenses.emfforms, - org.eclipse.passage.loc.products.emfforms, - org.eclipse.passage.loc.users.emfforms, - org.eclipse.passage.loc.features.emfforms, - org.eclipse.passage.loc.agreements.emfforms" -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/*.xml +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.workbench.emfforms +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.workbench.emfforms;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Import-Package: javax.annotation;version="1.2.0", + javax.inject, + org.slf4j;version="1.7.36" +Require-Bundle: org.eclipse.core.databinding;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.di.annotations;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.emf.databinding;bundle-version="0.0.0", + org.eclipse.emf.ecp.edit.swt;bundle-version="0.0.0", + org.eclipse.emf.ecp.ui.view.swt;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.control.multireference;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.core.swt;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.model.provider.generator;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.template.model;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.util.swt;bundle-version="0.0.0", + org.eclipse.emf.ecp.view.validation;bundle-version="0.0.0", + org.eclipse.emfforms.core.bazaar;bundle-version="0.0.0", + org.eclipse.emfforms.swt.core.di;bundle-version="0.0.0", + org.eclipse.emfforms.swt.treemasterdetail;bundle-version="0.0.0", + org.eclipse.jface.databinding;bundle-version="0.0.0", + org.eclipse.jface;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.api;bundle-version="0.0.0", + org.eclipse.passage.lic.base;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.loc.equinox;bundle-version="0.0.0", + org.eclipse.passage.loc.workbench;bundle-version="0.0.0";visibility:=reexport +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Export-Package: org.eclipse.passage.loc.internal.workbench.emfforms;x-internal:=true, + org.eclipse.passage.loc.internal.workbench.emfforms.renderers;x-internal:=true, + org.eclipse.passage.loc.workbench.emfforms.parts; + x-friends:="org.eclipse.passage.loc.features.emfforms, + org.eclipse.passage.loc.floating.emfforms, + org.eclipse.passage.loc.licenses.emfforms, + org.eclipse.passage.loc.products.emfforms, + org.eclipse.passage.loc.users.emfforms, + org.eclipse.passage.loc.agreements.emfforms", + org.eclipse.passage.loc.workbench.emfforms.renderers; + x-friends:="org.eclipse.passage.loc.floating.emfforms, + org.eclipse.passage.loc.licenses.emfforms, + org.eclipse.passage.loc.products.emfforms, + org.eclipse.passage.loc.users.emfforms, + org.eclipse.passage.loc.features.emfforms, + org.eclipse.passage.loc.agreements.emfforms" +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/*.xml diff --git a/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF index ca8c02b36..2dc217cfd 100644 --- a/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF @@ -1,59 +1,59 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.loc.workbench -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.loc.workbench;singleton:=true -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", - org.eclipse.jface;bundle-version="0.0.0", - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", - org.eclipse.emf.edit.ui;bundle-version="0.0.0", - org.eclipse.e4.core.contexts;bundle-version="0.0.0", - org.eclipse.e4.core.commands;bundle-version="0.0.0", - org.eclipse.e4.core.di;bundle-version="0.0.0", - org.eclipse.e4.core.di.extensions;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.workbench.swt;bundle-version="0.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", - org.eclipse.e4.ui.services;bundle-version="0.0.0", - org.eclipse.e4.ui.di;bundle-version="0.0.0", - org.eclipse.passage.lic.emf;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.jface;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.lic.products.model;bundle-version="0.0.0";visibility:=reexport, - org.eclipse.passage.loc.api;bundle-version="0.0.0", - org.eclipse.passage.lic.e4.ui;bundle-version="0.0.0" -Import-Package: javax.annotation;version="1.0.0";resolution:=optional, - javax.inject;version="1.0.0", - org.slf4j;version="1.7.36" -Export-Package: org.eclipse.passage.loc.internal.workbench; - x-friends:="org.eclipse.passage.loc.licenses.ui, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.products.ui, - org.eclipse.passage.loc.edit.ui", - org.eclipse.passage.loc.internal.workbench.registry;x-friends:="org.eclipse.passage.loc.edit.ui", - org.eclipse.passage.loc.jface;x-friends:="org.eclipse.passage.loc.workbench.emfforms", - org.eclipse.passage.loc.jface.dialogs; - x-friends:="org.eclipse.passage.loc.licenses.ui, - org.eclipse.passage.loc.products.ui, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.loc.dashboard.ui", - org.eclipse.passage.loc.workbench; - x-friends:="org.eclipse.passage.loc.dashboard.ui, - org.eclipse.passage.loc.features.ui, - org.eclipse.passage.loc.licenses.ui, - org.eclipse.passage.loc.products.ui, - org.eclipse.passage.loc.users.ui, - org.eclipse.passage.loc.workbench.emfforms, - org.eclipse.passage.loc.agreements.ui", - org.eclipse.passage.loc.workbench.dialogs;x-friends:="org.eclipse.passage.loc.workbench.emfforms", - org.eclipse.passage.loc.workbench.handlers;x-internal:=true, - org.eclipse.passage.loc.workbench.viewers;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.workbench.emfforms", - org.eclipse.passage.moveto.lic.emf.edit;x-internal:=true -Bundle-ActivationPolicy: lazy -Service-Component: OSGI-INF/*.xml +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.loc.workbench +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.loc.workbench;singleton:=true +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime;bundle-version="0.0.0", + org.eclipse.jface;bundle-version="0.0.0", + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", + org.eclipse.emf.edit.ui;bundle-version="0.0.0", + org.eclipse.e4.core.contexts;bundle-version="0.0.0", + org.eclipse.e4.core.commands;bundle-version="0.0.0", + org.eclipse.e4.core.di;bundle-version="0.0.0", + org.eclipse.e4.core.di.extensions;bundle-version="0.0.0", + org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.workbench.swt;bundle-version="0.0.0", + org.eclipse.e4.ui.model.workbench;bundle-version="0.0.0", + org.eclipse.e4.ui.services;bundle-version="0.0.0", + org.eclipse.e4.ui.di;bundle-version="0.0.0", + org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.jface;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.lic.products.model;bundle-version="0.0.0";visibility:=reexport, + org.eclipse.passage.loc.api;bundle-version="0.0.0", + org.eclipse.passage.lic.e4.ui;bundle-version="0.0.0" +Import-Package: javax.annotation;version="1.0.0";resolution:=optional, + javax.inject;version="1.0.0", + org.slf4j;version="1.7.36" +Export-Package: org.eclipse.passage.loc.internal.workbench; + x-friends:="org.eclipse.passage.loc.licenses.ui, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.products.ui, + org.eclipse.passage.loc.edit.ui", + org.eclipse.passage.loc.internal.workbench.registry;x-friends:="org.eclipse.passage.loc.edit.ui", + org.eclipse.passage.loc.jface;x-friends:="org.eclipse.passage.loc.workbench.emfforms", + org.eclipse.passage.loc.jface.dialogs; + x-friends:="org.eclipse.passage.loc.licenses.ui, + org.eclipse.passage.loc.products.ui, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.loc.dashboard.ui", + org.eclipse.passage.loc.workbench; + x-friends:="org.eclipse.passage.loc.dashboard.ui, + org.eclipse.passage.loc.features.ui, + org.eclipse.passage.loc.licenses.ui, + org.eclipse.passage.loc.products.ui, + org.eclipse.passage.loc.users.ui, + org.eclipse.passage.loc.workbench.emfforms, + org.eclipse.passage.loc.agreements.ui", + org.eclipse.passage.loc.workbench.dialogs;x-friends:="org.eclipse.passage.loc.workbench.emfforms", + org.eclipse.passage.loc.workbench.handlers;x-internal:=true, + org.eclipse.passage.loc.workbench.viewers;x-friends:="org.eclipse.passage.loc.dashboard.ui,org.eclipse.passage.loc.workbench.emfforms", + org.eclipse.passage.moveto.lic.emf.edit;x-internal:=true +Bundle-ActivationPolicy: lazy +Service-Component: OSGI-INF/*.xml diff --git a/products/org.eclipse.passage.lbc.fls.product/org.eclipse.passage.lbc.fls.product b/products/org.eclipse.passage.lbc.fls.product/org.eclipse.passage.lbc.fls.product index d97d633b4..d5cd318f3 100644 --- a/products/org.eclipse.passage.lbc.fls.product/org.eclipse.passage.lbc.fls.product +++ b/products/org.eclipse.passage.lbc.fls.product/org.eclipse.passage.lbc.fls.product @@ -1,70 +1,70 @@ - - - - - - - - - - - -os ${target.os} -ws ${target.ws} -arch ${target.arch} -consoleLog -console -server.port=8090 - - -Declipse.ignoreApp=true -Dosgi.noShutdown=true - - -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + -os ${target.os} -ws ${target.ws} -arch ${target.arch} -consoleLog -console -server.port=8090 + + -Declipse.ignoreApp=true -Dosgi.noShutdown=true + + -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/products/org.eclipse.passage.loc.operator.product/org.eclipse.passage.loc.operator.product.product b/products/org.eclipse.passage.loc.operator.product/org.eclipse.passage.loc.operator.product.product index e960e78a2..cde362087 100644 --- a/products/org.eclipse.passage.loc.operator.product/org.eclipse.passage.loc.operator.product.product +++ b/products/org.eclipse.passage.loc.operator.product/org.eclipse.passage.loc.operator.product.product @@ -1,6 +1,6 @@ - - - + + + - - - - - - - -clearPersistedState - - -Dosgi.requiredJavaVersion=11 - - -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +--> + + + + + + + -clearPersistedState + + -Dosgi.requiredJavaVersion=11 + + -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/org.eclipse.passage.lic.api.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.lic.api.tests/META-INF/MANIFEST.MF index b6016a82a..a07b59580 100644 --- a/tests/org.eclipse.passage.lic.api.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.lic.api.tests/META-INF/MANIFEST.MF @@ -1,27 +1,27 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.api.tests -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.api.tests -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.passage.lic.api;bundle-version="1.0.0" -Export-Package: org.eclipse.passage.lic.api.tests;x-friends:="org.eclipse.passage.seal.demo.tests", - org.eclipse.passage.lic.api.tests.conditions;x-internal:=true, - org.eclipse.passage.lic.api.tests.conditions.evaluation;x-internal:=true, - org.eclipse.passage.lic.api.tests.conditions.mining;x-friends:="org.eclipse.passage.lic.json.tests", - org.eclipse.passage.lic.api.tests.fakes.agreements;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.conditions;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.conditions.evaluation;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.conditions.mining;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.diagnostic;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.inspection;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.io;x-internal:=true, - org.eclipse.passage.lic.api.tests.fakes.requirements;x-internal:=true, - org.eclipse.passage.lic.api.tests.inspection;x-internal:=true, - org.eclipse.passage.lic.api.tests.registry;x-internal:=true, - org.eclipse.passage.lic.api.tests.resrictions;x-internal:=true, - org.eclipse.passage.lic.api.tests.version;x-internal:=true -Import-Package: org.junit +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.api.tests +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.api.tests +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.passage.lic.api;bundle-version="1.0.0" +Export-Package: org.eclipse.passage.lic.api.tests;x-friends:="org.eclipse.passage.seal.demo.tests", + org.eclipse.passage.lic.api.tests.conditions;x-internal:=true, + org.eclipse.passage.lic.api.tests.conditions.evaluation;x-internal:=true, + org.eclipse.passage.lic.api.tests.conditions.mining;x-friends:="org.eclipse.passage.lic.json.tests", + org.eclipse.passage.lic.api.tests.fakes.agreements;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.conditions;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.conditions.evaluation;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.conditions.mining;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.diagnostic;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.inspection;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.io;x-internal:=true, + org.eclipse.passage.lic.api.tests.fakes.requirements;x-internal:=true, + org.eclipse.passage.lic.api.tests.inspection;x-internal:=true, + org.eclipse.passage.lic.api.tests.registry;x-internal:=true, + org.eclipse.passage.lic.api.tests.resrictions;x-internal:=true, + org.eclipse.passage.lic.api.tests.version;x-internal:=true +Import-Package: org.junit diff --git a/tests/org.eclipse.passage.lic.base.tests/src/org/eclipse/passage/lic/internal/base/tests/requirements/RequirementsTest.java b/tests/org.eclipse.passage.lic.base.tests/src/org/eclipse/passage/lic/internal/base/tests/requirements/RequirementsTest.java index 8c3dac29a..576fc81b2 100644 --- a/tests/org.eclipse.passage.lic.base.tests/src/org/eclipse/passage/lic/internal/base/tests/requirements/RequirementsTest.java +++ b/tests/org.eclipse.passage.lic.base.tests/src/org/eclipse/passage/lic/internal/base/tests/requirements/RequirementsTest.java @@ -1,61 +1,61 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.internal.base.tests.requirements; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.util.Collection; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.registry.StringServiceId; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; -import org.eclipse.passage.lic.api.tests.fakes.requirements.FakeResolvedRequirements; -import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; -import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; -import org.eclipse.passage.lic.base.registry.ReadOnlyRegistry; -import org.eclipse.passage.lic.internal.base.access.Requirements; -import org.junit.Test; - -@SuppressWarnings("restriction") -public final class RequirementsTest { - - @Test - public void noResolversMeansNoAccess() { - ServiceInvocationResult> result = new Requirements(// - new SabotagedFramework().accessCycleConfiguration().requirementResolvers().get(), // - "feature0" //$NON-NLS-1$ - ).get(); - assertFalse(result.diagnostic().severe().isEmpty()); - assertFalse(result.data().isPresent()); - assertEquals(// - new NoServicesOfType("resolvers"), //$NON-NLS-1$ - result.diagnostic().severe().get(0).code()); - } - - @Test - public void noRequirementsIsSuspicious() { - ServiceInvocationResult> result = new Requirements(// - new ReadOnlyRegistry(new FakeResolvedRequirements()), "feature0" //$NON-NLS-1$ - ).get(); - assertTrue(result.diagnostic().severe().isEmpty()); - assertFalse(result.diagnostic().bearable().isEmpty()); - assertTrue(result.data().isPresent()); - assertEquals(// - new NoRequirements(), // - result.diagnostic().bearable().get(0).code()); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.internal.base.tests.requirements; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Collection; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.registry.StringServiceId; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.requirements.ResolvedRequirements; +import org.eclipse.passage.lic.api.tests.fakes.requirements.FakeResolvedRequirements; +import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; +import org.eclipse.passage.lic.base.diagnostic.code.NoServicesOfType; +import org.eclipse.passage.lic.base.registry.ReadOnlyRegistry; +import org.eclipse.passage.lic.internal.base.access.Requirements; +import org.junit.Test; + +@SuppressWarnings("restriction") +public final class RequirementsTest { + + @Test + public void noResolversMeansNoAccess() { + ServiceInvocationResult> result = new Requirements(// + new SabotagedFramework().accessCycleConfiguration().requirementResolvers().get(), // + "feature0" //$NON-NLS-1$ + ).get(); + assertFalse(result.diagnostic().severe().isEmpty()); + assertFalse(result.data().isPresent()); + assertEquals(// + new NoServicesOfType("resolvers"), //$NON-NLS-1$ + result.diagnostic().severe().get(0).code()); + } + + @Test + public void noRequirementsIsSuspicious() { + ServiceInvocationResult> result = new Requirements(// + new ReadOnlyRegistry(new FakeResolvedRequirements()), "feature0" //$NON-NLS-1$ + ).get(); + assertTrue(result.diagnostic().severe().isEmpty()); + assertFalse(result.diagnostic().bearable().isEmpty()); + assertTrue(result.data().isPresent()); + assertEquals(// + new NoRequirements(), // + result.diagnostic().bearable().get(0).code()); + } + +} diff --git a/tests/org.eclipse.passage.lic.emf.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.lic.emf.tests/META-INF/MANIFEST.MF index dee9422c1..69d6ad324 100644 --- a/tests/org.eclipse.passage.lic.emf.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.lic.emf.tests/META-INF/MANIFEST.MF @@ -1,12 +1,12 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.jface.tests -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.emf.tests -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Fragment-Host: org.eclipse.passage.lic.emf -Import-Package: org.junit -Export-Package: org.eclipse.passage.lic.emf.meta;x-internal:=true +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.jface.tests +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.emf.tests +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Fragment-Host: org.eclipse.passage.lic.emf +Import-Package: org.junit +Export-Package: org.eclipse.passage.lic.emf.meta;x-internal:=true diff --git a/tests/org.eclipse.passage.lic.jface.tests/.classpath b/tests/org.eclipse.passage.lic.jface.tests/.classpath index 0cbb32310..675a5e296 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/.classpath +++ b/tests/org.eclipse.passage.lic.jface.tests/.classpath @@ -1,11 +1,11 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/tests/org.eclipse.passage.lic.jface.tests/.project b/tests/org.eclipse.passage.lic.jface.tests/.project index 8995ad861..a5c94f7a5 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/.project +++ b/tests/org.eclipse.passage.lic.jface.tests/.project @@ -1,34 +1,34 @@ - - - org.eclipse.passage.lic.jface.tests - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - + + + org.eclipse.passage.lic.jface.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.pde.api.tools.apiAnalysisBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.pde.api.tools.apiAnalysisNature + + diff --git a/tests/org.eclipse.passage.lic.jface.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.passage.lic.jface.tests/.settings/org.eclipse.jdt.core.prefs index f28e30ab0..23398539f 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/.settings/org.eclipse.jdt.core.prefs +++ b/tests/org.eclipse.passage.lic.jface.tests/.settings/org.eclipse.jdt.core.prefs @@ -1,115 +1,115 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=11 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=11 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=warning +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/tests/org.eclipse.passage.lic.jface.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.lic.jface.tests/META-INF/MANIFEST.MF index 0133faf75..f09ad44b1 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.lic.jface.tests/META-INF/MANIFEST.MF @@ -1,12 +1,12 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.jface.tests -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.jface.tests -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Require-Bundle: org.eclipse.equinox.preferences;bundle-version="0.0.0" -Fragment-Host: org.eclipse.passage.lic.jface -Import-Package: org.junit +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.jface.tests +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.jface.tests +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.equinox.preferences;bundle-version="0.0.0" +Fragment-Host: org.eclipse.passage.lic.jface +Import-Package: org.junit diff --git a/tests/org.eclipse.passage.lic.jface.tests/OSGI-INF/l10n/bundle.properties b/tests/org.eclipse.passage.lic.jface.tests/OSGI-INF/l10n/bundle.properties index 4de0f6360..ebf16410a 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/OSGI-INF/l10n/bundle.properties +++ b/tests/org.eclipse.passage.lic.jface.tests/OSGI-INF/l10n/bundle.properties @@ -1,22 +1,22 @@ -############################################################################### -# Copyright (c) 2018, 2024 ArSysOp and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# https://www.eclipse.org/legal/epl-2.0/. -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ArSysOp - initial API and implementation -############################################################################### - -Bundle-Name = Passage LIC JFace Tests -Bundle-Vendor = Eclipse Passage -Bundle-Copyright = Copyright (c) 2018, 2024 ArSysOp and others.\n\ -\n\ -This program and the accompanying materials are made\n\ -available under the terms of the Eclipse Public License 2.0\n\ -which is available at https://www.eclipse.org/legal/epl-2.0/\n\ -\n\ -SPDX-License-Identifier: EPL-2.0\n\ +############################################################################### +# Copyright (c) 2018, 2024 ArSysOp and others +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/. +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# ArSysOp - initial API and implementation +############################################################################### + +Bundle-Name = Passage LIC JFace Tests +Bundle-Vendor = Eclipse Passage +Bundle-Copyright = Copyright (c) 2018, 2024 ArSysOp and others.\n\ +\n\ +This program and the accompanying materials are made\n\ +available under the terms of the Eclipse Public License 2.0\n\ +which is available at https://www.eclipse.org/legal/epl-2.0/\n\ +\n\ +SPDX-License-Identifier: EPL-2.0\n\ diff --git a/tests/org.eclipse.passage.lic.jface.tests/build.properties b/tests/org.eclipse.passage.lic.jface.tests/build.properties index ba8b8ee22..44565f399 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/build.properties +++ b/tests/org.eclipse.passage.lic.jface.tests/build.properties @@ -1,18 +1,18 @@ -############################################################################### -# Copyright (c) 2019, 2020 ArSysOp and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# https://www.eclipse.org/legal/epl-2.0/. -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ArSysOp - initial API and implementation -############################################################################### - -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - OSGI-INF/ +############################################################################### +# Copyright (c) 2019, 2020 ArSysOp and others +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/. +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# ArSysOp - initial API and implementation +############################################################################### + +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + OSGI-INF/ diff --git a/tests/org.eclipse.passage.lic.jface.tests/src/org/eclipse/passage/lic/jface/tests/LicensingColorTest.java b/tests/org.eclipse.passage.lic.jface.tests/src/org/eclipse/passage/lic/jface/tests/LicensingColorTest.java index f5c1f4c87..a7e939d9d 100644 --- a/tests/org.eclipse.passage.lic.jface.tests/src/org/eclipse/passage/lic/jface/tests/LicensingColorTest.java +++ b/tests/org.eclipse.passage.lic.jface.tests/src/org/eclipse/passage/lic/jface/tests/LicensingColorTest.java @@ -1,66 +1,66 @@ -/******************************************************************************* - * Copyright (c) 2019, 2020 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.lic.jface.tests; - -import static org.junit.Assert.assertTrue; - -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.passage.lic.jface.resource.LicensingColors; -import org.junit.Test; - -public class LicensingColorTest { - - /** - * excluded due swt dependency private static final RGB RGB_1_TEST = new RGB(1, - * 1, 1); - */ - - @Test - public void getLicenseColorTest() { - // value for color not defined - IEclipsePreferences preferences = LicensingColors.getPreferences(); - String colorValue = preferences.get(LicensingColors.COLOR_LEVEL_ERROR, ""); //$NON-NLS-1$ - assertTrue(colorValue.isEmpty()); - - // value for color matches with definition in code - String colorErrorDefaultValue = LicensingColors.getLicensingColor(LicensingColors.COLOR_LEVEL_ERROR); - String colorError = LicensingColors.RGB_LEVEL_ERROR.toString(); - assertTrue(colorError.equals(colorErrorDefaultValue)); - - // value for color matches with definition from registry - - /** - * excluded due swt dependency - * - * - * Color colorErrorColor = - * LicensingColors.getColor(LicensingColors.COLOR_LEVEL_ERROR); - * assertTrue(colorError.equals(colorErrorColor.getRGB().toString())); - * - * - * - * // applying change error color Map mapColorsChange = new - * HashMap(); - * mapColorsChange.put(LicensingColors.COLOR_LEVEL_ERROR, RGB_1_TEST); - * LicensingColors.acceptColors(mapColorsChange); - * - * // changed value retrieved via preferences matches with new value String - * colorErrorChangedValue = - * LicensingColors.getLicensingColor(LicensingColors.COLOR_LEVEL_ERROR); - * assertTrue(colorErrorChangedValue.equals(RGB_1_TEST.toString())); - * - * // changed value retrieved via preferences matches with old value - * assertFalse(colorErrorChangedValue.equals(colorError)); - */ - } -} +/******************************************************************************* + * Copyright (c) 2019, 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.lic.jface.tests; + +import static org.junit.Assert.assertTrue; + +import org.eclipse.core.runtime.preferences.IEclipsePreferences; +import org.eclipse.passage.lic.jface.resource.LicensingColors; +import org.junit.Test; + +public class LicensingColorTest { + + /** + * excluded due swt dependency private static final RGB RGB_1_TEST = new RGB(1, + * 1, 1); + */ + + @Test + public void getLicenseColorTest() { + // value for color not defined + IEclipsePreferences preferences = LicensingColors.getPreferences(); + String colorValue = preferences.get(LicensingColors.COLOR_LEVEL_ERROR, ""); //$NON-NLS-1$ + assertTrue(colorValue.isEmpty()); + + // value for color matches with definition in code + String colorErrorDefaultValue = LicensingColors.getLicensingColor(LicensingColors.COLOR_LEVEL_ERROR); + String colorError = LicensingColors.RGB_LEVEL_ERROR.toString(); + assertTrue(colorError.equals(colorErrorDefaultValue)); + + // value for color matches with definition from registry + + /** + * excluded due swt dependency + * + * + * Color colorErrorColor = + * LicensingColors.getColor(LicensingColors.COLOR_LEVEL_ERROR); + * assertTrue(colorError.equals(colorErrorColor.getRGB().toString())); + * + * + * + * // applying change error color Map mapColorsChange = new + * HashMap(); + * mapColorsChange.put(LicensingColors.COLOR_LEVEL_ERROR, RGB_1_TEST); + * LicensingColors.acceptColors(mapColorsChange); + * + * // changed value retrieved via preferences matches with new value String + * colorErrorChangedValue = + * LicensingColors.getLicensingColor(LicensingColors.COLOR_LEVEL_ERROR); + * assertTrue(colorErrorChangedValue.equals(RGB_1_TEST.toString())); + * + * // changed value retrieved via preferences matches with old value + * assertFalse(colorErrorChangedValue.equals(colorError)); + */ + } +} diff --git a/tests/org.eclipse.passage.lic.json.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.lic.json.tests/META-INF/MANIFEST.MF index aef996e16..6e6dd8dd4 100644 --- a/tests/org.eclipse.passage.lic.json.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.lic.json.tests/META-INF/MANIFEST.MF @@ -1,12 +1,12 @@ -Manifest-Version: 1.0 -Automatic-Module-Name: org.eclipse.passage.lic.json.tests -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.passage.lic.json.tests -Bundle-Version: 3.0.0.qualifier -Bundle-Name: %Bundle-Name -Bundle-Vendor: %Bundle-Vendor -Bundle-Copyright: %Bundle-Copyright -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Fragment-Host: org.eclipse.passage.lic.json -Import-Package: org.junit -Require-Bundle: org.eclipse.passage.lic.api.tests;bundle-version="0.1.0" +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.passage.lic.json.tests +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: org.eclipse.passage.lic.json.tests +Bundle-Version: 3.0.0.qualifier +Bundle-Name: %Bundle-Name +Bundle-Vendor: %Bundle-Vendor +Bundle-Copyright: %Bundle-Copyright +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Fragment-Host: org.eclipse.passage.lic.json +Import-Package: org.junit +Require-Bundle: org.eclipse.passage.lic.api.tests;bundle-version="0.1.0" diff --git a/tests/org.eclipse.passage.lic.products.model.tests/src/org/eclipse/passage/lic/products/model/migration/tests/ProductsMigratorTest.java b/tests/org.eclipse.passage.lic.products.model.tests/src/org/eclipse/passage/lic/products/model/migration/tests/ProductsMigratorTest.java index 640be9bf5..1e60473ff 100644 --- a/tests/org.eclipse.passage.lic.products.model.tests/src/org/eclipse/passage/lic/products/model/migration/tests/ProductsMigratorTest.java +++ b/tests/org.eclipse.passage.lic.products.model.tests/src/org/eclipse/passage/lic/products/model/migration/tests/ProductsMigratorTest.java @@ -1,84 +1,84 @@ -/******************************************************************************* - * Copyright (c) 2018, 2024 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - * ArSysOp - further support - *******************************************************************************/ -package org.eclipse.passage.lic.products.model.migration.tests; - -import static org.junit.Assert.assertEquals; - -import java.io.File; - -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.passage.lic.internal.products.model.util.ProductsResourceImpl; -import org.eclipse.passage.lic.products.model.api.Product; -import org.eclipse.passage.lic.products.model.api.ProductLine; -import org.eclipse.passage.lic.products.model.api.ProductVersion; -import org.eclipse.passage.lic.products.model.api.ProductVersionFeature; -import org.junit.Test; - -public final class ProductsMigratorTest { - - @Test - public void testMigratorPositive() throws Exception { - File legacy = new File( - System.getProperty("user.dir") + File.separator + "model/org.eclipse.passage.lic.lic_products"); //$NON-NLS-1$//$NON-NLS-2$ - URI uri = URI.createFileURI(legacy.getPath()); - Resource resource = new ProductsResourceImpl(uri); - resource.load(null); - EList contents = resource.getContents(); - EObject eObject = contents.get(0); - - ProductLine productLine = ProductLine.class.cast(eObject); - assertEquals("org.eclipse.passage.lic", productLine.getIdentifier()); //$NON-NLS-1$ - assertEquals("Eclipse Passage LIC", productLine.getName()); //$NON-NLS-1$ - assertEquals("Eclipse Passage Licensing Integration Components", productLine.getDescription()); //$NON-NLS-1$ - - EList products = productLine.getProducts(); - assertEquals(1, products.size()); - - Product p0 = products.get(0); - assertEquals("org.eclipse.passage.lic.product", p0.getIdentifier()); //$NON-NLS-1$ - assertEquals("Eclipse Passage LIC", p0.getName()); //$NON-NLS-1$ - assertEquals("Eclipse Passage Licensing Integration Components product", p0.getDescription()); //$NON-NLS-1$ - - EList p0vs = p0.getProductVersions(); - assertEquals(2, p0vs.size()); - ProductVersion p0v0 = p0vs.get(0); - assertEquals("0.3.3", p0v0.getVersion()); //$NON-NLS-1$ - assertEquals("./.passage/org.eclipse.passage.lic.product/0.3.3/org.eclipse.passage.lic.product_0.3.3.pub", //$NON-NLS-1$ - p0v0.getInstallationToken()); - assertEquals("./.passage/org.eclipse.passage.lic.product/0.3.3/org.eclipse.passage.lic.product_0.3.3.scr", //$NON-NLS-1$ - p0v0.getSecureToken()); - EList p0v0pvfs = p0v0.getProductVersionFeatures(); - assertEquals(1, p0v0pvfs.size()); - ProductVersionFeature p0v0pvf0 = p0v0pvfs.get(0); - assertEquals("org.eclipse.passage.lic.launch", p0v0pvf0.getFeatureIdentifier()); //$NON-NLS-1$ - assertEquals("0.3.3", p0v0pvf0.getFeatureVersion()); //$NON-NLS-1$ - assertEquals("error", p0v0pvf0.getRestrictionLevel()); //$NON-NLS-1$ - - ProductVersion p0v1 = p0vs.get(1); - assertEquals("0.4.0", p0v1.getVersion()); //$NON-NLS-1$ - assertEquals("./.passage/org.eclipse.passage.lic.product/0.4.0/org.eclipse.passage.lic.product_0.4.0.pub", //$NON-NLS-1$ - p0v1.getInstallationToken()); - assertEquals("./.passage/org.eclipse.passage.lic.product/0.4.0/org.eclipse.passage.lic.product_0.4.0.scr", //$NON-NLS-1$ - p0v1.getSecureToken()); - EList p1v0pvfs = p0v1.getProductVersionFeatures(); - assertEquals(1, p1v0pvfs.size()); - ProductVersionFeature p1v0pvf0 = p1v0pvfs.get(0); - assertEquals("org.eclipse.passage.lic.product", p1v0pvf0.getFeatureIdentifier()); //$NON-NLS-1$ - assertEquals("0.4.0", p1v0pvf0.getFeatureVersion()); //$NON-NLS-1$ - assertEquals("error", p1v0pvf0.getRestrictionLevel()); //$NON-NLS-1$ - } -} +/******************************************************************************* + * Copyright (c) 2018, 2024 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + * ArSysOp - further support + *******************************************************************************/ +package org.eclipse.passage.lic.products.model.migration.tests; + +import static org.junit.Assert.assertEquals; + +import java.io.File; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.passage.lic.internal.products.model.util.ProductsResourceImpl; +import org.eclipse.passage.lic.products.model.api.Product; +import org.eclipse.passage.lic.products.model.api.ProductLine; +import org.eclipse.passage.lic.products.model.api.ProductVersion; +import org.eclipse.passage.lic.products.model.api.ProductVersionFeature; +import org.junit.Test; + +public final class ProductsMigratorTest { + + @Test + public void testMigratorPositive() throws Exception { + File legacy = new File( + System.getProperty("user.dir") + File.separator + "model/org.eclipse.passage.lic.lic_products"); //$NON-NLS-1$//$NON-NLS-2$ + URI uri = URI.createFileURI(legacy.getPath()); + Resource resource = new ProductsResourceImpl(uri); + resource.load(null); + EList contents = resource.getContents(); + EObject eObject = contents.get(0); + + ProductLine productLine = ProductLine.class.cast(eObject); + assertEquals("org.eclipse.passage.lic", productLine.getIdentifier()); //$NON-NLS-1$ + assertEquals("Eclipse Passage LIC", productLine.getName()); //$NON-NLS-1$ + assertEquals("Eclipse Passage Licensing Integration Components", productLine.getDescription()); //$NON-NLS-1$ + + EList products = productLine.getProducts(); + assertEquals(1, products.size()); + + Product p0 = products.get(0); + assertEquals("org.eclipse.passage.lic.product", p0.getIdentifier()); //$NON-NLS-1$ + assertEquals("Eclipse Passage LIC", p0.getName()); //$NON-NLS-1$ + assertEquals("Eclipse Passage Licensing Integration Components product", p0.getDescription()); //$NON-NLS-1$ + + EList p0vs = p0.getProductVersions(); + assertEquals(2, p0vs.size()); + ProductVersion p0v0 = p0vs.get(0); + assertEquals("0.3.3", p0v0.getVersion()); //$NON-NLS-1$ + assertEquals("./.passage/org.eclipse.passage.lic.product/0.3.3/org.eclipse.passage.lic.product_0.3.3.pub", //$NON-NLS-1$ + p0v0.getInstallationToken()); + assertEquals("./.passage/org.eclipse.passage.lic.product/0.3.3/org.eclipse.passage.lic.product_0.3.3.scr", //$NON-NLS-1$ + p0v0.getSecureToken()); + EList p0v0pvfs = p0v0.getProductVersionFeatures(); + assertEquals(1, p0v0pvfs.size()); + ProductVersionFeature p0v0pvf0 = p0v0pvfs.get(0); + assertEquals("org.eclipse.passage.lic.launch", p0v0pvf0.getFeatureIdentifier()); //$NON-NLS-1$ + assertEquals("0.3.3", p0v0pvf0.getFeatureVersion()); //$NON-NLS-1$ + assertEquals("error", p0v0pvf0.getRestrictionLevel()); //$NON-NLS-1$ + + ProductVersion p0v1 = p0vs.get(1); + assertEquals("0.4.0", p0v1.getVersion()); //$NON-NLS-1$ + assertEquals("./.passage/org.eclipse.passage.lic.product/0.4.0/org.eclipse.passage.lic.product_0.4.0.pub", //$NON-NLS-1$ + p0v1.getInstallationToken()); + assertEquals("./.passage/org.eclipse.passage.lic.product/0.4.0/org.eclipse.passage.lic.product_0.4.0.scr", //$NON-NLS-1$ + p0v1.getSecureToken()); + EList p1v0pvfs = p0v1.getProductVersionFeatures(); + assertEquals(1, p1v0pvfs.size()); + ProductVersionFeature p1v0pvf0 = p1v0pvfs.get(0); + assertEquals("org.eclipse.passage.lic.product", p1v0pvf0.getFeatureIdentifier()); //$NON-NLS-1$ + assertEquals("0.4.0", p1v0pvf0.getFeatureVersion()); //$NON-NLS-1$ + assertEquals("error", p1v0pvf0.getRestrictionLevel()); //$NON-NLS-1$ + } +} diff --git a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAcquireTest.java b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAcquireTest.java index 818e33639..8f305058f 100644 --- a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAcquireTest.java +++ b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAcquireTest.java @@ -1,151 +1,151 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.seal.demo.tests.access; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.util.List; -import java.util.function.Consumer; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.access.GrantLockAttempt; -import org.eclipse.passage.lic.api.diagnostic.Diagnostic; -import org.eclipse.passage.lic.api.diagnostic.Trouble; -import org.eclipse.passage.lic.api.diagnostic.TroubleCode; -import org.eclipse.passage.lic.base.diagnostic.DiagnosticExplained; -import org.eclipse.passage.lic.base.diagnostic.NoErrors; -import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; -import org.eclipse.passage.lic.base.diagnostic.code.LicenseExpired; -import org.eclipse.passage.lic.base.diagnostic.code.LicenseNotStarted; -import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; -import org.eclipse.passage.lic.base.diagnostic.code.TentativeAccess; -import org.eclipse.passage.lic.internal.base.access.Access; -import org.junit.Test; - -/** - * Integration test: demands OSGi running - */ -public final class AccessAcquireTest { - - @Test - /** - * Is not covered by license, but has {@code info} restriction - */ - public void acquireTentativeGrant() { - successfullyAcquireAndRelease(// - new TestFramework.Everlasting(), // - "frog-to-prince", //$NON-NLS-1$ - diagnostic -> { - assertTrue(diagnostic.bearable().size() > 0); - assertContainsCode(new TentativeAccess(), diagnostic.bearable()); - }); - } - - @Test - /** - * Is covered by license, has {@code error} restriction - */ - public void acquireLicenseGrant() { - successfullyAcquireAndRelease(// - new TestFramework.Everlasting(), // - "prince-to-frog", //$NON-NLS-1$ - diagnostic -> System.out.println(new DiagnosticExplained(diagnostic).get())); - } - - @Test - /** - * No licensing requirement is declared for this feature: severe error is - * expected - */ - public void denyUnknownFeatureAcquisition() { - ServiceInvocationResult acquire = new Access(new TestFramework.Everlasting()) - .acquire("unknown"); //$NON-NLS-1$ - assertFalse(new NoSevereErrors().test(acquire.diagnostic())); - assertFalse(acquire.data().isPresent()); - assertTrue(acquire.diagnostic().severe().size() > 0); - assertContainsCode(new NoRequirements(), acquire.diagnostic().severe()); - } - - @Test - /** - * License is expired. For warn feature tentative access must be granted, but - * license expiration must be reported on a morsel failure level - */ - public void denyFromExpiredLicense() { - ServiceInvocationResult acquire = new Access(new TestFramework.Expired()) - .acquire("anti-human-magic.product"); //$NON-NLS-1$ - assertTrue(new NoSevereErrors().test(acquire.diagnostic())); - assertTrue(acquire.data().isPresent()); - assertContainsCode(new LicenseExpired(), acquire.diagnostic().bearable()); - } - - @Test - /** - * License not started. For warn feature tentative access must be granted, but - * license-not-started must be reported on a morsel failure level - */ - public void denyFromNotStartedLicense() { - ServiceInvocationResult acquire = new Access(new TestFramework.NotStarted()) - .acquire("anti-human-magic.product"); //$NON-NLS-1$ - assertTrue(new NoSevereErrors().test(acquire.diagnostic())); - assertTrue(acquire.data().isPresent()); - assertContainsCode(new LicenseNotStarted(), acquire.diagnostic().bearable()); - } - - private void assertContainsCode(TroubleCode expected, List actual) { - assertTrue(actual.stream()// - .map(Trouble::code)// - .anyMatch(trouble -> trouble.code() == expected.code())); - } - - @Test - /** - * Required and error-restricted feature is not covered by license: supply - * assessment and deny acquisition - */ - public void denyUnlicensedFeatureAcquisition() { - ServiceInvocationResult acquire = new Access(new TestFramework.Everlasting()) - .acquire("frog-firework"); //$NON-NLS-1$ - assertTrue(// - new DiagnosticExplained(acquire.diagnostic()).get(), // - new NoSevereErrors().test(acquire.diagnostic())); - assertTrue(acquire.data().isPresent()); - assertFalse(acquire.data().get().successful()); - } - - private void successfullyAcquireAndRelease(TestFramework framework, String feature, Consumer report) { - Access access = new Access(framework); - GrantLockAttempt lock = successfullyAcquire(feature, access, report); - successfullyRelease(lock, access); - } - - private void successfullyRelease(GrantLockAttempt lock, Access access) { - ServiceInvocationResult release = access.release(lock); - assertTrue(new NoErrors().test(release.diagnostic())); - assertTrue(release.data().isPresent()); - assertTrue(release.data().get()); - } - - private GrantLockAttempt successfullyAcquire(String feature, Access access, Consumer onDiagnostic) { - ServiceInvocationResult acquire = access.acquire(feature); - assertTrue(// - new DiagnosticExplained(acquire.diagnostic()).get(), // - new NoSevereErrors().test(acquire.diagnostic())); - onDiagnostic.accept(acquire.diagnostic()); - assertTrue(acquire.data().isPresent()); - assertTrue(acquire.data().get().successful()); - return acquire.data().get(); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.seal.demo.tests.access; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.List; +import java.util.function.Consumer; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.access.GrantLockAttempt; +import org.eclipse.passage.lic.api.diagnostic.Diagnostic; +import org.eclipse.passage.lic.api.diagnostic.Trouble; +import org.eclipse.passage.lic.api.diagnostic.TroubleCode; +import org.eclipse.passage.lic.base.diagnostic.DiagnosticExplained; +import org.eclipse.passage.lic.base.diagnostic.NoErrors; +import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; +import org.eclipse.passage.lic.base.diagnostic.code.LicenseExpired; +import org.eclipse.passage.lic.base.diagnostic.code.LicenseNotStarted; +import org.eclipse.passage.lic.base.diagnostic.code.NoRequirements; +import org.eclipse.passage.lic.base.diagnostic.code.TentativeAccess; +import org.eclipse.passage.lic.internal.base.access.Access; +import org.junit.Test; + +/** + * Integration test: demands OSGi running + */ +public final class AccessAcquireTest { + + @Test + /** + * Is not covered by license, but has {@code info} restriction + */ + public void acquireTentativeGrant() { + successfullyAcquireAndRelease(// + new TestFramework.Everlasting(), // + "frog-to-prince", //$NON-NLS-1$ + diagnostic -> { + assertTrue(diagnostic.bearable().size() > 0); + assertContainsCode(new TentativeAccess(), diagnostic.bearable()); + }); + } + + @Test + /** + * Is covered by license, has {@code error} restriction + */ + public void acquireLicenseGrant() { + successfullyAcquireAndRelease(// + new TestFramework.Everlasting(), // + "prince-to-frog", //$NON-NLS-1$ + diagnostic -> System.out.println(new DiagnosticExplained(diagnostic).get())); + } + + @Test + /** + * No licensing requirement is declared for this feature: severe error is + * expected + */ + public void denyUnknownFeatureAcquisition() { + ServiceInvocationResult acquire = new Access(new TestFramework.Everlasting()) + .acquire("unknown"); //$NON-NLS-1$ + assertFalse(new NoSevereErrors().test(acquire.diagnostic())); + assertFalse(acquire.data().isPresent()); + assertTrue(acquire.diagnostic().severe().size() > 0); + assertContainsCode(new NoRequirements(), acquire.diagnostic().severe()); + } + + @Test + /** + * License is expired. For warn feature tentative access must be granted, but + * license expiration must be reported on a morsel failure level + */ + public void denyFromExpiredLicense() { + ServiceInvocationResult acquire = new Access(new TestFramework.Expired()) + .acquire("anti-human-magic.product"); //$NON-NLS-1$ + assertTrue(new NoSevereErrors().test(acquire.diagnostic())); + assertTrue(acquire.data().isPresent()); + assertContainsCode(new LicenseExpired(), acquire.diagnostic().bearable()); + } + + @Test + /** + * License not started. For warn feature tentative access must be granted, but + * license-not-started must be reported on a morsel failure level + */ + public void denyFromNotStartedLicense() { + ServiceInvocationResult acquire = new Access(new TestFramework.NotStarted()) + .acquire("anti-human-magic.product"); //$NON-NLS-1$ + assertTrue(new NoSevereErrors().test(acquire.diagnostic())); + assertTrue(acquire.data().isPresent()); + assertContainsCode(new LicenseNotStarted(), acquire.diagnostic().bearable()); + } + + private void assertContainsCode(TroubleCode expected, List actual) { + assertTrue(actual.stream()// + .map(Trouble::code)// + .anyMatch(trouble -> trouble.code() == expected.code())); + } + + @Test + /** + * Required and error-restricted feature is not covered by license: supply + * assessment and deny acquisition + */ + public void denyUnlicensedFeatureAcquisition() { + ServiceInvocationResult acquire = new Access(new TestFramework.Everlasting()) + .acquire("frog-firework"); //$NON-NLS-1$ + assertTrue(// + new DiagnosticExplained(acquire.diagnostic()).get(), // + new NoSevereErrors().test(acquire.diagnostic())); + assertTrue(acquire.data().isPresent()); + assertFalse(acquire.data().get().successful()); + } + + private void successfullyAcquireAndRelease(TestFramework framework, String feature, Consumer report) { + Access access = new Access(framework); + GrantLockAttempt lock = successfullyAcquire(feature, access, report); + successfullyRelease(lock, access); + } + + private void successfullyRelease(GrantLockAttempt lock, Access access) { + ServiceInvocationResult release = access.release(lock); + assertTrue(new NoErrors().test(release.diagnostic())); + assertTrue(release.data().isPresent()); + assertTrue(release.data().get()); + } + + private GrantLockAttempt successfullyAcquire(String feature, Access access, Consumer onDiagnostic) { + ServiceInvocationResult acquire = access.acquire(feature); + assertTrue(// + new DiagnosticExplained(acquire.diagnostic()).get(), // + new NoSevereErrors().test(acquire.diagnostic())); + onDiagnostic.accept(acquire.diagnostic()); + assertTrue(acquire.data().isPresent()); + assertTrue(acquire.data().get().successful()); + return acquire.data().get(); + } + +} diff --git a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAssessmentTest.java b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAssessmentTest.java index ed1ecd52f..6a8887ad6 100644 --- a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAssessmentTest.java +++ b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessAssessmentTest.java @@ -1,76 +1,76 @@ -/******************************************************************************* - * Copyright (c) 2020, 2021 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.seal.demo.tests.access; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Collectors; - -import org.eclipse.passage.lic.api.ServiceInvocationResult; -import org.eclipse.passage.lic.api.requirements.Feature; -import org.eclipse.passage.lic.api.requirements.Requirement; -import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; -import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; -import org.eclipse.passage.lic.internal.base.access.Access; -import org.junit.Test; - -/** - * Integration test: demands OSGi running - */ -public final class AccessAssessmentTest { - - @Test - public void assessWithValidLicense() { - assess(// - new TestFramework.Everlasting(), // - new HashSet<>(Arrays.asList(// - "prince-to-frog", //$NON-NLS-1$ - "anti-human-magic.product")) //$NON-NLS-1$ - ); - } - - @Test - public void assessWithExpiredLicense() { - assess(// - new TestFramework.Expired(), // - new HashSet<>()); - } - - @Test - public void assessWithNotStartedLicense() { - assess(// - new TestFramework.NotStarted(), // - new HashSet<>()); - } - - private void assess(TestFramework framework, Set expected) { - ServiceInvocationResult result = new Access(framework).assess(); - assertTrue(new NoSevereErrors().test(result.diagnostic())); - assertTrue(result.data().isPresent()); - assertEquals(// - expected, // - new HashSet<>(coveredFeatures(result.data().get()))); - } - - private Set coveredFeatures(ExaminationCertificate certificate) { - return certificate.satisfied().stream() // - .map(Requirement::feature)// - .map(Feature::identifier)// - .collect(Collectors.toSet()); - } - -} +/******************************************************************************* + * Copyright (c) 2020, 2021 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.seal.demo.tests.access; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + +import org.eclipse.passage.lic.api.ServiceInvocationResult; +import org.eclipse.passage.lic.api.requirements.Feature; +import org.eclipse.passage.lic.api.requirements.Requirement; +import org.eclipse.passage.lic.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.base.diagnostic.NoSevereErrors; +import org.eclipse.passage.lic.internal.base.access.Access; +import org.junit.Test; + +/** + * Integration test: demands OSGi running + */ +public final class AccessAssessmentTest { + + @Test + public void assessWithValidLicense() { + assess(// + new TestFramework.Everlasting(), // + new HashSet<>(Arrays.asList(// + "prince-to-frog", //$NON-NLS-1$ + "anti-human-magic.product")) //$NON-NLS-1$ + ); + } + + @Test + public void assessWithExpiredLicense() { + assess(// + new TestFramework.Expired(), // + new HashSet<>()); + } + + @Test + public void assessWithNotStartedLicense() { + assess(// + new TestFramework.NotStarted(), // + new HashSet<>()); + } + + private void assess(TestFramework framework, Set expected) { + ServiceInvocationResult result = new Access(framework).assess(); + assertTrue(new NoSevereErrors().test(result.diagnostic())); + assertTrue(result.data().isPresent()); + assertEquals(// + expected, // + new HashSet<>(coveredFeatures(result.data().get()))); + } + + private Set coveredFeatures(ExaminationCertificate certificate) { + return certificate.satisfied().stream() // + .map(Requirement::feature)// + .map(Feature::identifier)// + .collect(Collectors.toSet()); + } + +} diff --git a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessCanUseTest.java b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessCanUseTest.java index 4acb82cc6..5f49148ee 100644 --- a/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessCanUseTest.java +++ b/tests/org.eclipse.passage.seal.demo.tests/src/org/eclipse/passage/seal/demo/tests/access/AccessCanUseTest.java @@ -1,56 +1,56 @@ -/******************************************************************************* - * Copyright (c) 2020 ArSysOp - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * https://www.eclipse.org/legal/epl-2.0/. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ArSysOp - initial API and implementation - *******************************************************************************/ -package org.eclipse.passage.seal.demo.tests.access; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.eclipse.passage.lic.internal.base.access.Access; -import org.junit.Test; - -/** - * Integration test: demands OSGi running - */ -public final class AccessCanUseTest { - - @Test - public void allowUnknownFeature() { - assertTrue(new Access(new TestFramework.Expired()).canUse("unkonwn-feature")); //$NON-NLS-1$ - } - - @Test - public void allowKnownFeatureUnderLicense() { - assertTrue(new Access(new TestFramework.Everlasting()).canUse("prince-to-frog")); //$NON-NLS-1$ - } - - @Test - public void forbidKnownFeatureUnderExpiredLicense() { - assertFalse(new Access(new TestFramework.Expired()).canUse("prince-to-frog")); //$NON-NLS-1$ - } - - @Test - public void forbidKnownFeatureUnderNotStartedLicense() { - assertFalse(new Access(new TestFramework.NotStarted()).canUse("prince-to-frog")); //$NON-NLS-1$ - } - - @Test - public void forbidKnownFeatureErrorRestrictedWithoutLicense() { - assertFalse(new Access(new TestFramework.Expired()).canUse("frog-firework")); //$NON-NLS-1$ - } - - @Test - public void allowKnownFeatureInfoRestrictedWithoutLicense() { - assertTrue(new Access(new TestFramework.Expired()).canUse("frog-to-prince")); //$NON-NLS-1$ - } - -} +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.seal.demo.tests.access; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.eclipse.passage.lic.internal.base.access.Access; +import org.junit.Test; + +/** + * Integration test: demands OSGi running + */ +public final class AccessCanUseTest { + + @Test + public void allowUnknownFeature() { + assertTrue(new Access(new TestFramework.Expired()).canUse("unkonwn-feature")); //$NON-NLS-1$ + } + + @Test + public void allowKnownFeatureUnderLicense() { + assertTrue(new Access(new TestFramework.Everlasting()).canUse("prince-to-frog")); //$NON-NLS-1$ + } + + @Test + public void forbidKnownFeatureUnderExpiredLicense() { + assertFalse(new Access(new TestFramework.Expired()).canUse("prince-to-frog")); //$NON-NLS-1$ + } + + @Test + public void forbidKnownFeatureUnderNotStartedLicense() { + assertFalse(new Access(new TestFramework.NotStarted()).canUse("prince-to-frog")); //$NON-NLS-1$ + } + + @Test + public void forbidKnownFeatureErrorRestrictedWithoutLicense() { + assertFalse(new Access(new TestFramework.Expired()).canUse("frog-firework")); //$NON-NLS-1$ + } + + @Test + public void allowKnownFeatureInfoRestrictedWithoutLicense() { + assertTrue(new Access(new TestFramework.Expired()).canUse("frog-to-prince")); //$NON-NLS-1$ + } + +}