From 7eb19f01c74d433814e69d48b9d926c09cc23824 Mon Sep 17 00:00:00 2001 From: Alexander Fedorov Date: Wed, 13 Nov 2024 22:06:43 +0300 Subject: [PATCH] [#1453] Evolve raw string identifier to semantic entity Rework `String` grant identifier to a dedicated type `GrantIdentifier` --- .../passage/lic/api/GrantIdentifier.java | 28 +++++++++++++++++++ .../lic/api/acquire/GrantAcquisition.java | 6 +++- .../passage/lic/base/BaseGrantIdentifier.java | 24 ++++++++++++++++ .../base/acquire/BaseGrantAcquisition.java | 8 ++++-- .../LocalLicenseAcquisitionService.java | 3 +- .../base/access/TentativeFeatureAccess.java | 5 ++-- .../licenses/convert/EGrantAcquisition.java | 2 +- .../licenses/convert/PGrantAcquisition.java | 3 +- 8 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/GrantIdentifier.java create mode 100644 bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BaseGrantIdentifier.java diff --git a/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/GrantIdentifier.java b/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/GrantIdentifier.java new file mode 100644 index 000000000..5b5c786a5 --- /dev/null +++ b/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/GrantIdentifier.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * 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.api; + +import org.eclipse.passage.lic.api.acquire.GrantAcquisition; + +/** + * Identifies a grant acquired to use a feature under license protection + * + * @see GrantAcquisition#grant() + * + * @since 4.0 + */ +public interface GrantIdentifier { + + String identifier(); + +} diff --git a/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/acquire/GrantAcquisition.java b/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/acquire/GrantAcquisition.java index d69b8488d..bdeddefb4 100644 --- a/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/acquire/GrantAcquisition.java +++ b/bundles/org.eclipse.passage.lic.api/src/org/eclipse/passage/lic/api/acquire/GrantAcquisition.java @@ -16,6 +16,7 @@ import java.util.Date; import org.eclipse.passage.lic.api.FeatureIdentifier; +import org.eclipse.passage.lic.api.GrantIdentifier; /** * @@ -25,7 +26,10 @@ public interface GrantAcquisition { String identifier(); - String grant(); + /** + * @since 4.0 + */ + GrantIdentifier grant(); /** * @since 4.0 diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BaseGrantIdentifier.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BaseGrantIdentifier.java new file mode 100644 index 000000000..6591c4866 --- /dev/null +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/BaseGrantIdentifier.java @@ -0,0 +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.base; + +import org.eclipse.passage.lic.api.GrantIdentifier; + +/** + * Base implementation for {@link GrantIdentifier} + * + * @since 4.0 + */ +public record BaseGrantIdentifier(String identifier) implements GrantIdentifier { + +} diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/BaseGrantAcquisition.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/BaseGrantAcquisition.java index 2d2993be9..cb7635fb3 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/BaseGrantAcquisition.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/BaseGrantAcquisition.java @@ -18,6 +18,7 @@ import java.util.Objects; import org.eclipse.passage.lic.api.FeatureIdentifier; +import org.eclipse.passage.lic.api.GrantIdentifier; import org.eclipse.passage.lic.api.acquire.GrantAcquisition; /** @@ -28,7 +29,7 @@ public final class BaseGrantAcquisition implements GrantAcquisition, Serializabl private static final long serialVersionUID = 2755031536488685673L; private final String id; - private final String grant; + private final GrantIdentifier grant; private final FeatureIdentifier feature; private final String user; private final Date created; @@ -36,7 +37,8 @@ public final class BaseGrantAcquisition implements GrantAcquisition, Serializabl /** * @since 4.0 */ - public BaseGrantAcquisition(String id, String grant, FeatureIdentifier feature, String user, Date created) { + public BaseGrantAcquisition(String id, GrantIdentifier grant, FeatureIdentifier feature, String user, + Date created) { this.id = Objects.requireNonNull(id); this.grant = Objects.requireNonNull(grant); this.feature = Objects.requireNonNull(feature); @@ -50,7 +52,7 @@ public String identifier() { } @Override - public String grant() { + public GrantIdentifier grant() { return grant; } diff --git a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/LocalLicenseAcquisitionService.java b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/LocalLicenseAcquisitionService.java index dec83e3d7..34b714ed4 100644 --- a/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/LocalLicenseAcquisitionService.java +++ b/bundles/org.eclipse.passage.lic.base/src/org/eclipse/passage/lic/base/acquire/LocalLicenseAcquisitionService.java @@ -20,6 +20,7 @@ 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.base.BaseGrantIdentifier; import org.eclipse.passage.lic.base.BaseServiceInvocationResult; // FIXME: just stub for now. Implement properly. #568791 @@ -34,7 +35,7 @@ public final ServiceInvocationResult acquire(LicensedProduct p return new BaseServiceInvocationResult<>(// new BaseGrantAcquisition(// "local", //$NON-NLS-1$ - "temp", //$NON-NLS-1$ + new BaseGrantIdentifier("temp"), //$NON-NLS-1$ feature, // "user", //$NON-NLS-1$ new Date())// 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 11ebf61a3..1bdd57c20 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 @@ -21,6 +21,7 @@ import org.eclipse.passage.lic.api.FeatureIdentifier; import org.eclipse.passage.lic.api.acquire.GrantAcquisition; import org.eclipse.passage.lic.base.BaseFeatureIdentifier; +import org.eclipse.passage.lic.base.BaseGrantIdentifier; import org.eclipse.passage.lic.base.acquire.BaseGrantAcquisition; final class TentativeFeatureAccess implements Supplier, Predicate { @@ -40,7 +41,7 @@ final class TentativeFeatureAccess implements Supplier, Predic public GrantAcquisition get() { return new BaseGrantAcquisition(// String.format("%s-id", tentative), //$NON-NLS-1$ - String.format("%s-grant", tentative), //$NON-NLS-1$ + new BaseGrantIdentifier(String.format("%s-grant", tentative)), //$NON-NLS-1$ feature, // String.format("%s-user", tentative), //$NON-NLS-1$ new Date()); @@ -49,7 +50,7 @@ public GrantAcquisition get() { @Override public boolean test(GrantAcquisition grant) { return grant.identifier().startsWith(tentative) // - && grant.grant().startsWith(tentative) // + && grant.grant().identifier().startsWith(tentative) // && grant.user().startsWith(tentative); } diff --git a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/EGrantAcquisition.java b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/EGrantAcquisition.java index 557a79ce7..dc05a674d 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/EGrantAcquisition.java +++ b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/EGrantAcquisition.java @@ -30,7 +30,7 @@ public EGrantAcquisition(org.eclipse.passage.lic.api.acquire.GrantAcquisition so public GrantAcqisition get() { GrantAcqisition grant = LicensesFactory.eINSTANCE.createGrantAcqisition(); grant.setIdentifier(source.identifier()); - grant.setGrant(source.grant()); + grant.setGrant(source.grant().identifier()); grant.setFeature(source.feature().identifier()); grant.setUser(source.user()); grant.setCreated(source.created()); diff --git a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/PGrantAcquisition.java b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/PGrantAcquisition.java index 6bd5fe865..c616e7948 100644 --- a/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/PGrantAcquisition.java +++ b/bundles/org.eclipse.passage.lic.licenses.model/src/org/eclipse/passage/lic/internal/licenses/convert/PGrantAcquisition.java @@ -17,6 +17,7 @@ import java.util.function.Supplier; import org.eclipse.passage.lic.base.BaseFeatureIdentifier; +import org.eclipse.passage.lic.base.BaseGrantIdentifier; import org.eclipse.passage.lic.base.acquire.BaseGrantAcquisition; import org.eclipse.passage.lic.licenses.model.api.GrantAcqisition; @@ -32,7 +33,7 @@ public PGrantAcquisition(GrantAcqisition source) { public org.eclipse.passage.lic.api.acquire.GrantAcquisition get() { return new BaseGrantAcquisition(// source.getIdentifier(), // - source.getGrant(), // + new BaseGrantIdentifier(source.getGrant()), // new BaseFeatureIdentifier(source.getFeature()), // source.getUser(), // source.getCreated());