diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendFloatingServer.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendFloatingServer.java index 8eaa21a76..b23980ba8 100644 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendFloatingServer.java +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendFloatingServer.java @@ -22,10 +22,10 @@ */ public interface BackendFloatingServer { - ServiceInvocationResult canTake(CheckRequest request); + ServiceInvocationResult canTake(BackendRequestData request); - ServiceInvocationResult take(TakeRequest request); + ServiceInvocationResult take(BackendRequestData request); - ServiceInvocationResult release(ReleaseRequest request); + ServiceInvocationResult release(BackendRequestData request); } diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicenseVault.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicenseVault.java index 273a872c3..987844494 100644 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicenseVault.java +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicenseVault.java @@ -18,8 +18,6 @@ import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; /** - * A class operating persistable license state storage - * * @since 1.0 */ public interface BackendLicenseVault { diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicensingRequest.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicensingRequest.java index 5ea9052f9..54908fb17 100644 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicensingRequest.java +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendLicensingRequest.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.passage.lbc.internal.api; +import java.io.IOException; import java.util.Optional; import java.util.function.Supplier; @@ -26,5 +27,7 @@ public interface BackendLicensingRequest { String parameter(String key); + String body() throws IOException; + Requester requester(); } diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/CheckRequest.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendRequestData.java similarity index 85% rename from bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/CheckRequest.java rename to bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendRequestData.java index 5d34c15bd..22f3b3628 100644 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/CheckRequest.java +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendRequestData.java @@ -12,15 +12,17 @@ *******************************************************************************/ package org.eclipse.passage.lbc.internal.api; +import java.util.Optional; + import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; /** * @since 1.0 */ -public interface CheckRequest { +public interface BackendRequestData { Requester requester(); - ExaminationCertificate certificate(); + Optional certificate(); } diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendServerConfiguration.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendServerConfiguration.java index a096e0ba3..287b0b980 100644 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendServerConfiguration.java +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BackendServerConfiguration.java @@ -13,7 +13,6 @@ package org.eclipse.passage.lbc.internal.api; import org.eclipse.passage.lic.internal.api.conditions.mining.ConditionTransportRegistry; -import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditionsRegistry; import org.eclipse.passage.lic.internal.api.io.KeyKeeperRegistry; import org.eclipse.passage.lic.internal.api.io.StreamCodecRegistry; @@ -22,8 +21,6 @@ */ public interface BackendServerConfiguration { - MinedConditionsRegistry conditionMiners(); - StreamCodecRegistry codecs(); KeyKeeperRegistry keyKeepers(); diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BoundLicense.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BoundLicense.java new file mode 100644 index 000000000..7a90d7468 --- /dev/null +++ b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/BoundLicense.java @@ -0,0 +1,22 @@ +package org.eclipse.passage.lbc.internal.api; + +/** + * Represents a license that was loaded to the floating server to be operated. + * + * @since 1.0 + */ +public interface BoundLicense { + + // Condition identifier + String identifier(); + + // Grant's capacity + int capacity(); + + // How many times it was taken + int taken(); + + // returns true if it is takeable and false if it is not. + boolean takeable(); + +} diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/ReleaseRequest.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/ReleaseRequest.java deleted file mode 100644 index 9878b6689..000000000 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/ReleaseRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * 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.lbc.internal.api; - -import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; - -/** - * @since 1.0 - */ -public interface ReleaseRequest { - - ExaminationCertificate certificate(); - - Requester requester(); - -} diff --git a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/TakeRequest.java b/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/TakeRequest.java deleted file mode 100644 index 8dabeff06..000000000 --- a/bundles/org.eclipse.passage.lbc.api/src/org/eclipse/passage/lbc/internal/api/TakeRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * 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.lbc.internal.api; - -import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; - -/** - * @since 1.0 - */ -public interface TakeRequest { - - Requester requester(); - - ExaminationCertificate certificate(); - -} diff --git a/bundles/org.eclipse.passage.lbc.base/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.lbc.base/META-INF/MANIFEST.MF index 1be5009d5..9224806d2 100644 --- a/bundles/org.eclipse.passage.lbc.base/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.lbc.base/META-INF/MANIFEST.MF @@ -13,7 +13,10 @@ Require-Bundle: javax.servlet;bundle-version="0.0.0", org.eclipse.passage.lic.net;bundle-version="0.0.0", org.eclipse.passage.lbc.api;bundle-version="0.0.0";visibility:=reexport, org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", - org.eclipse.emf.ecore.xmi;bundle-version="0.0.0" + org.eclipse.emf.ecore.xmi;bundle-version="0.0.0", + org.eclipse.passage.lic.json;bundle-version="0.0.0", + com.fasterxml.jackson.core.jackson-databind;bundle-version="0.0.0", + com.fasterxml.jackson.core.jackson-core;bundle-version="0.0.0" Export-Package: org.eclipse.passage.lbc.base, org.eclipse.passage.lbc.internal.base;x-internal=true, org.eclipse.passage.lbc.internal.base.chains;x-internal:=true, diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseLicensingRequest.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseLicensingRequest.java index 85b2adf67..4fa2b925f 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseLicensingRequest.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseLicensingRequest.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.passage.lbc.internal.base; +import java.io.IOException; import java.util.Optional; import java.util.function.Supplier; @@ -38,6 +39,13 @@ public Supplier> action() { return new LicensingAction(key -> new ConditionAction.Of(parameter(key))); } + @Override + public String body() throws IOException { + StringBuilder builder = new StringBuilder(); + httpRequest.getReader().lines().map(builder::append); + return builder.toString(); + } + @Override public String parameter(String key) { return httpRequest.getParameter(key); diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseReleaseRequest.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseRequestData.java similarity index 57% rename from bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseReleaseRequest.java rename to bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseRequestData.java index df3b710ce..b0cc8f72b 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseReleaseRequest.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseRequestData.java @@ -10,18 +10,25 @@ * Contributors: * ArSysOp - initial API and implementation *******************************************************************************/ -package org.eclipse.passage.lbc.internal.base.requests; +package org.eclipse.passage.lbc.internal.base; + +import java.io.IOException; +import java.util.Optional; import org.eclipse.passage.lbc.internal.api.BackendLicensingRequest; -import org.eclipse.passage.lbc.internal.api.ReleaseRequest; +import org.eclipse.passage.lbc.internal.api.BackendRequestData; import org.eclipse.passage.lbc.internal.api.Requester; import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; +import org.eclipse.passage.lic.internal.json.JsonObjectMapper; -public final class BaseReleaseRequest implements ReleaseRequest { +/** + * @since 1.0 + */ +public final class BaseRequestData implements BackendRequestData { private final BackendLicensingRequest request; - public BaseReleaseRequest(BackendLicensingRequest request) { + public BaseRequestData(BackendLicensingRequest request) { this.request = request; } @@ -31,8 +38,13 @@ public Requester requester() { } @Override - public ExaminationCertificate certificate() { - throw new UnsupportedOperationException(); + public Optional certificate() { + try { + return Optional.of(new JsonObjectMapper().get().readValue(request.body(), ExaminationCertificate.class)); + } catch (IOException e) { + e.printStackTrace(); + return Optional.empty(); + } } } diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseServerConfiguration.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseServerConfiguration.java new file mode 100644 index 000000000..dd743bb31 --- /dev/null +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/BaseServerConfiguration.java @@ -0,0 +1,48 @@ +package org.eclipse.passage.lbc.internal.base; + +import java.util.Collection; + +import org.eclipse.passage.lbc.internal.api.BackendServerConfiguration; +import org.eclipse.passage.lic.internal.api.LicensedProduct; +import org.eclipse.passage.lic.internal.api.conditions.mining.ConditionTransport; +import org.eclipse.passage.lic.internal.api.conditions.mining.ConditionTransportRegistry; +import org.eclipse.passage.lic.internal.api.conditions.mining.ContentType; +import org.eclipse.passage.lic.internal.api.io.KeyKeeper; +import org.eclipse.passage.lic.internal.api.io.KeyKeeperRegistry; +import org.eclipse.passage.lic.internal.api.io.StreamCodec; +import org.eclipse.passage.lic.internal.api.io.StreamCodecRegistry; +import org.eclipse.passage.lic.internal.api.registry.Registry; +import org.eclipse.passage.lic.internal.base.registry.ReadOnlyRegistry; + +/** + * @since 1.0 + */ +public class BaseServerConfiguration implements BackendServerConfiguration { + + private final Registry codecs; + private final Registry keys; + private final Registry transports; + + public BaseServerConfiguration(Collection codecs, Collection keys, + Collection transports) { + this.codecs = new ReadOnlyRegistry<>(codecs); + this.keys = new ReadOnlyRegistry<>(keys); + this.transports = new ReadOnlyRegistry<>(transports); + } + + @Override + public StreamCodecRegistry codecs() { + return () -> codecs; + } + + @Override + public KeyKeeperRegistry keyKeepers() { + return () -> keys; + } + + @Override + public ConditionTransportRegistry transports() { + return () -> transports; + } + +} diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/EmptyServerConfiguration.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/EmptyServerConfiguration.java index 873b9fd43..fb9ae5bf8 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/EmptyServerConfiguration.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/EmptyServerConfiguration.java @@ -16,7 +16,6 @@ import org.eclipse.passage.lbc.internal.api.BackendServerConfiguration; import org.eclipse.passage.lic.internal.api.conditions.mining.ConditionTransportRegistry; -import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditionsRegistry; import org.eclipse.passage.lic.internal.api.io.KeyKeeperRegistry; import org.eclipse.passage.lic.internal.api.io.StreamCodecRegistry; import org.eclipse.passage.lic.internal.base.registry.ReadOnlyRegistry; @@ -26,11 +25,6 @@ */ public class EmptyServerConfiguration implements BackendServerConfiguration { - @Override - public MinedConditionsRegistry conditionMiners() { - return () -> new ReadOnlyRegistry<>(Collections.emptyList()); - } - @Override public StreamCodecRegistry codecs() { return () -> new ReadOnlyRegistry<>(Collections.emptyList()); diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/PassageFloatingServer.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/PassageFloatingServer.java index 1f91bb244..96f6566a8 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/PassageFloatingServer.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/PassageFloatingServer.java @@ -13,10 +13,8 @@ package org.eclipse.passage.lbc.internal.base; import org.eclipse.passage.lbc.internal.api.BackendFloatingServer; +import org.eclipse.passage.lbc.internal.api.BackendRequestData; import org.eclipse.passage.lbc.internal.api.BackendServerConfiguration; -import org.eclipse.passage.lbc.internal.api.CheckRequest; -import org.eclipse.passage.lbc.internal.api.ReleaseRequest; -import org.eclipse.passage.lbc.internal.api.TakeRequest; import org.eclipse.passage.lbc.internal.base.chains.AcquireConditionChain; import org.eclipse.passage.lbc.internal.base.chains.CanTakeConditionChain; import org.eclipse.passage.lbc.internal.base.chains.ReleaseConditionChain; @@ -35,17 +33,17 @@ public PassageFloatingServer(BackendServerConfiguration configuration) { } @Override - public ServiceInvocationResult canTake(CheckRequest request) { + public ServiceInvocationResult canTake(BackendRequestData request) { return new CanTakeConditionChain().apply(request); } @Override - public ServiceInvocationResult take(TakeRequest request) { + public ServiceInvocationResult take(BackendRequestData request) { return new AcquireConditionChain().apply(request); } @Override - public ServiceInvocationResult release(ReleaseRequest request) { + public ServiceInvocationResult release(BackendRequestData request) { return new ReleaseConditionChain().apply(request); } diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/AcquireConditionChain.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/AcquireConditionChain.java index 70105c5db..46cd98581 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/AcquireConditionChain.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/AcquireConditionChain.java @@ -15,17 +15,17 @@ import java.util.Collections; import java.util.function.Function; -import org.eclipse.passage.lbc.internal.api.TakeRequest; +import org.eclipse.passage.lbc.internal.api.BackendRequestData; import org.eclipse.passage.lic.internal.api.ServiceInvocationResult; import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult; import org.eclipse.passage.lic.internal.base.restrictions.BaseExaminationCertificate; public final class AcquireConditionChain - implements Function> { + implements Function> { @Override - public ServiceInvocationResult apply(TakeRequest t) { + public ServiceInvocationResult apply(BackendRequestData t) { return new BaseServiceInvocationResult<>( new BaseExaminationCertificate(Collections.emptyList(), Collections.emptyList())); } diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/CanTakeConditionChain.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/CanTakeConditionChain.java index 6ba9c488e..7d792de38 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/CanTakeConditionChain.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/CanTakeConditionChain.java @@ -14,14 +14,14 @@ import java.util.function.Function; -import org.eclipse.passage.lbc.internal.api.CheckRequest; +import org.eclipse.passage.lbc.internal.api.BackendRequestData; import org.eclipse.passage.lic.internal.api.ServiceInvocationResult; import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult; -public final class CanTakeConditionChain implements Function> { +public final class CanTakeConditionChain implements Function> { @Override - public ServiceInvocationResult apply(CheckRequest t) { + public ServiceInvocationResult apply(BackendRequestData t) { return new BaseServiceInvocationResult(true); } diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/ReleaseConditionChain.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/ReleaseConditionChain.java index be7ea5331..7fb00ca51 100644 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/ReleaseConditionChain.java +++ b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/chains/ReleaseConditionChain.java @@ -14,14 +14,14 @@ import java.util.function.Function; -import org.eclipse.passage.lbc.internal.api.ReleaseRequest; +import org.eclipse.passage.lbc.internal.api.BackendRequestData; import org.eclipse.passage.lic.internal.api.ServiceInvocationResult; import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult; -public final class ReleaseConditionChain implements Function> { +public final class ReleaseConditionChain implements Function> { @Override - public ServiceInvocationResult apply(ReleaseRequest t) { + public ServiceInvocationResult apply(BackendRequestData t) { return new BaseServiceInvocationResult(true); } diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseCheckRequest.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseCheckRequest.java deleted file mode 100644 index 70999a4ed..000000000 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseCheckRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * 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.lbc.internal.base.requests; - -import org.eclipse.passage.lbc.internal.api.BackendLicensingRequest; -import org.eclipse.passage.lbc.internal.api.CheckRequest; -import org.eclipse.passage.lbc.internal.api.Requester; -import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; - -public final class BaseCheckRequest implements CheckRequest { - - private final BackendLicensingRequest request; - - public BaseCheckRequest(BackendLicensingRequest request) { - this.request = request; - } - - @Override - public Requester requester() { - return request.requester(); - } - - @Override - public ExaminationCertificate certificate() { - return null; - } - -} diff --git a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseTakeRequest.java b/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseTakeRequest.java deleted file mode 100644 index 5c71aae46..000000000 --- a/bundles/org.eclipse.passage.lbc.base/src/org/eclipse/passage/lbc/internal/base/requests/BaseTakeRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * 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.lbc.internal.base.requests; - -import org.eclipse.passage.lbc.internal.api.BackendLicensingRequest; -import org.eclipse.passage.lbc.internal.api.Requester; -import org.eclipse.passage.lbc.internal.api.TakeRequest; -import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate; - -public final class BaseTakeRequest implements TakeRequest { - - private final BackendLicensingRequest request; - - public BaseTakeRequest(BackendLicensingRequest request) { - this.request = request; - } - - @Override - public Requester requester() { - return request.requester(); - } - - @Override - public ExaminationCertificate certificate() { - return null; - } - -} diff --git a/tests/org.eclipse.passage.lbc.base.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.lbc.base.tests/META-INF/MANIFEST.MF index f106fe61b..e773f1156 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.lbc.base.tests/META-INF/MANIFEST.MF @@ -9,5 +9,7 @@ Bundle-Copyright: %Bundle-Copyright Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.junit;bundle-version="4.12.0", org.eclipse.passage.lic.base;bundle-version="0.0.0", - org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0" + org.eclipse.passage.lic.licenses.model;bundle-version="0.0.0", + org.eclipse.passage.lic.bc;bundle-version="0.0.0", + org.eclipse.passage.lic.licenses.migration Fragment-Host: org.eclipse.passage.lbc.base diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeLicensingRequest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeLicensingRequest.java index 988f4822b..f84ff474a 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeLicensingRequest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeLicensingRequest.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.passage.lbc.base.tests; +import java.io.IOException; import java.util.Map; import java.util.Optional; import java.util.function.Supplier; @@ -24,9 +25,11 @@ public class FakeLicensingRequest implements BackendLicensingRequest { private final Map params; + private final String body; - public FakeLicensingRequest(Map params) { + public FakeLicensingRequest(Map params, String body) { this.params = params; + this.body = body; } @Override @@ -44,4 +47,9 @@ public Requester requester() { return new BaseRequester("process", "hardware", "feature"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ } + @Override + public String body() throws IOException { + return body; + } + } diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeMiningRequest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeMiningRequest.java index 5d9d57a19..3c44b7c9b 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeMiningRequest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeMiningRequest.java @@ -16,11 +16,16 @@ import org.eclipse.passage.lbc.internal.api.Requester; import org.eclipse.passage.lbc.internal.base.BaseRequester; import org.eclipse.passage.lic.internal.api.LicensedProduct; -import org.eclipse.passage.lic.internal.base.BaseLicensedProduct; @SuppressWarnings("restriction") public final class FakeMiningRequest implements ProductLicensesRequest { + private final LicensedProduct product; + + public FakeMiningRequest(LicensedProduct product) { + this.product = product; + } + @Override public Requester requester() { return new BaseRequester("process", "hardware", "feature");//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ @@ -28,7 +33,7 @@ public Requester requester() { @Override public LicensedProduct product() { - return new BaseLicensedProduct("product", "version"); //$NON-NLS-1$ //$NON-NLS-2$ + return product; } } diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeVault.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeVault.java new file mode 100644 index 000000000..edac9d462 --- /dev/null +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/FakeVault.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * 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.lbc.base.tests; + +import java.util.Collection; +import java.util.Collections; + +import org.eclipse.passage.lbc.internal.api.BackendLicenseVault; +import org.eclipse.passage.lbc.internal.api.ProductLicensesRequest; +import org.eclipse.passage.lic.internal.api.ServiceInvocationResult; +import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; +import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult; +import org.eclipse.passage.lic.internal.base.conditions.BaseConditionPack; + +public class FakeVault implements BackendLicenseVault { + + @Override + public ServiceInvocationResult> availableLicenses(ProductLicensesRequest request) { + return new BaseServiceInvocationResult>( + Collections.singleton(new BaseConditionPack("floating", Collections.emptyList()))); //$NON-NLS-1$ + } + +} diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LbcTestsBase.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LbcTestsBase.java index 30ee07ca6..8be274248 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LbcTestsBase.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LbcTestsBase.java @@ -18,11 +18,13 @@ import org.eclipse.passage.lbc.internal.api.Requester; import org.eclipse.passage.lbc.internal.base.BaseRequester; +import org.eclipse.passage.lic.internal.api.LicensedProduct; import org.eclipse.passage.lic.internal.api.conditions.Condition; import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; import org.eclipse.passage.lic.internal.api.conditions.EvaluationType; import org.eclipse.passage.lic.internal.api.conditions.ValidityPeriod; import org.eclipse.passage.lic.internal.api.conditions.VersionMatch; +import org.eclipse.passage.lic.internal.base.BaseLicensedProduct; import org.eclipse.passage.lic.internal.base.ProductIdentifier; import org.eclipse.passage.lic.internal.base.ProductVersion; import org.eclipse.passage.lic.internal.base.conditions.BaseCondition; @@ -35,12 +37,16 @@ @SuppressWarnings("restriction") public abstract class LbcTestsBase { + protected LicensedProduct product() { + return new BaseLicensedProduct(identifierValue(), versionValue()); + } + protected ProductIdentifier identifier() { - return new ProductIdentifier("identifier"); //$NON-NLS-1$ + return new ProductIdentifier(identifierValue()); } protected ProductVersion version() { - return new ProductVersion("version"); //$NON-NLS-1$ + return new ProductVersion(versionValue()); } protected Requester requester() { diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LicenseVaultTest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LicenseVaultTest.java index 2ea877d91..fb80ea257 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LicenseVaultTest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/LicenseVaultTest.java @@ -18,18 +18,16 @@ import java.util.LinkedList; import java.util.List; -import org.eclipse.passage.lbc.internal.base.BaseLicenseVault; -import org.eclipse.passage.lbc.internal.base.EmptyServerConfiguration; import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; import org.junit.Test; @SuppressWarnings("restriction") -public final class LicenseVaultTest { +public final class LicenseVaultTest extends LbcTestsBase { @Test public void availableLicenses() { - List pack = new LinkedList(new BaseLicenseVault(new EmptyServerConfiguration()) - .availableLicenses(new FakeMiningRequest()).data().get()); + List pack = new LinkedList( + new FakeVault().availableLicenses(new FakeMiningRequest(product())).data().get()); assertEquals("floating", pack.get(0).origin()); //$NON-NLS-1$ assertEquals(Collections.emptyList(), pack.get(0).conditions()); } diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MinedConditionPacksTest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MinedConditionPacksTest.java index dc802dbc6..68bf35692 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MinedConditionPacksTest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MinedConditionPacksTest.java @@ -20,9 +20,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import org.eclipse.passage.lbc.internal.base.BaseLicenseVault; import org.eclipse.passage.lbc.internal.base.BaseMiningRequest; -import org.eclipse.passage.lbc.internal.base.EmptyServerConfiguration; import org.eclipse.passage.lbc.internal.base.MinedConditionPacks; import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; import org.junit.Test; @@ -33,7 +31,7 @@ public final class MinedConditionPacksTest extends LbcTestsBase { @Test public void positive() { List mined = Stream.of(new BaseMiningRequest(identifier(), version(), requester())) // - .map(new MinedConditionPacks(new BaseLicenseVault(new EmptyServerConfiguration()))) // + .map(new MinedConditionPacks(new FakeVault())) // .flatMap(packs -> packs.stream()) // .collect(Collectors.toList()); assertFalse(mined.isEmpty()); diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MiningTest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MiningTest.java new file mode 100644 index 000000000..8ebd66116 --- /dev/null +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/MiningTest.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * 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.lbc.base.tests; + +import static org.junit.Assert.assertTrue; + +import java.util.Collection; +import java.util.Collections; + +import org.eclipse.passage.lbc.internal.api.BackendLicenseVault; +import org.eclipse.passage.lbc.internal.base.BaseLicenseVault; +import org.eclipse.passage.lbc.internal.base.BaseServerConfiguration; +import org.eclipse.passage.lbc.internal.base.ServerKeyKeeper; +import org.eclipse.passage.lic.internal.api.ServiceInvocationResult; +import org.eclipse.passage.lic.internal.api.conditions.ConditionPack; +import org.eclipse.passage.lic.internal.bc.BcStreamCodec; +import org.eclipse.passage.lic.internal.licenses.migration.tobemoved.XmiConditionTransport; +import org.junit.Test; + +public class MiningTest extends LbcTestsBase { + + @Test + public void positive() { + BackendLicenseVault vault = new BaseLicenseVault( + new BaseServerConfiguration(Collections.singleton(new BcStreamCodec(() -> product())), + Collections.singleton(new ServerKeyKeeper(() -> product())), + Collections.singleton(new XmiConditionTransport()))); + ServiceInvocationResult> result = vault + .availableLicenses(new FakeMiningRequest(product())); + assertTrue(result.diagnostic().bearable().isEmpty()); + assertTrue(result.diagnostic().severe().isEmpty()); + } + +} diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ParsedRequestTest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ParsedRequestTest.java index f3bd0cf96..5d05e0e32 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ParsedRequestTest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ParsedRequestTest.java @@ -28,7 +28,7 @@ public final class ParsedRequestTest extends LbcTestsBase { @Test public void positive() { - BackendLicensingRequest request = new FakeLicensingRequest(params()); + BackendLicensingRequest request = new FakeLicensingRequest(params(), ""); //$NON-NLS-1$ ProductLicensesRequest miningRequest = Stream.of(request).map(new ParsedRequest()).collect(Collectors.toList()) .get(0); assertEquals(userValue(), miningRequest.requester().hardware()); diff --git a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ServerKeyKeeperTest.java b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ServerKeyKeeperTest.java index ab46aa7fa..124ee9671 100644 --- a/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ServerKeyKeeperTest.java +++ b/tests/org.eclipse.passage.lbc.base.tests/src/org/eclipse/passage/lbc/base/tests/ServerKeyKeeperTest.java @@ -27,7 +27,6 @@ import org.eclipse.passage.lbc.internal.base.ServerKeyKeeper; import org.eclipse.passage.lic.internal.api.LicensingException; -import org.eclipse.passage.lic.internal.base.BaseLicensedProduct; import org.eclipse.passage.lic.internal.base.io.FileNameFromLicensedProduct; import org.eclipse.passage.lic.internal.base.io.LicensingFolder; import org.eclipse.passage.lic.internal.base.io.PassageFileExtension; @@ -84,10 +83,6 @@ private void createFile() throws IOException { new OpenOption[] { StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.APPEND }); } - private BaseLicensedProduct product() { - return new BaseLicensedProduct(identifierValue(), versionValue()); - } - private ServerKeyKeeper keyKeeper() { return new ServerKeyKeeper(() -> product()); }