Skip to content

Commit

Permalink
Bug 565143 - [Passage] floating licensing
Browse files Browse the repository at this point in the history
added tests for mining chain at all.

Signed-off-by: Nikifor Fedorov <zelenyhleb@gmail.com>
  • Loading branch information
zelenyhleb committed Aug 24, 2020
1 parent 7f1429b commit aa96429
Show file tree
Hide file tree
Showing 29 changed files with 232 additions and 186 deletions.
Expand Up @@ -22,10 +22,10 @@
*/
public interface BackendFloatingServer {

ServiceInvocationResult<Boolean> canTake(CheckRequest request);
ServiceInvocationResult<Boolean> canTake(BackendRequestData request);

ServiceInvocationResult<ExaminationCertificate> take(TakeRequest request);
ServiceInvocationResult<ExaminationCertificate> take(BackendRequestData request);

ServiceInvocationResult<Boolean> release(ReleaseRequest request);
ServiceInvocationResult<Boolean> release(BackendRequestData request);

}
Expand Up @@ -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 {
Expand Down
Expand Up @@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.api;

import java.io.IOException;
import java.util.Optional;
import java.util.function.Supplier;

Expand All @@ -26,5 +27,7 @@ public interface BackendLicensingRequest {

String parameter(String key);

String body() throws IOException;

Requester requester();
}
Expand Up @@ -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<ExaminationCertificate> certificate();

}
Expand Up @@ -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;

Expand All @@ -22,8 +21,6 @@
*/
public interface BackendServerConfiguration {

MinedConditionsRegistry conditionMiners();

StreamCodecRegistry codecs();

KeyKeeperRegistry keyKeepers();
Expand Down
@@ -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();

}

This file was deleted.

This file was deleted.

5 changes: 4 additions & 1 deletion bundles/org.eclipse.passage.lbc.base/META-INF/MANIFEST.MF
Expand Up @@ -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,
Expand Down
Expand Up @@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.base;

import java.io.IOException;
import java.util.Optional;
import java.util.function.Supplier;

Expand All @@ -38,6 +39,13 @@ public Supplier<Optional<ConditionAction>> 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);
Expand Down
Expand Up @@ -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;
}

Expand All @@ -31,8 +38,13 @@ public Requester requester() {
}

@Override
public ExaminationCertificate certificate() {
throw new UnsupportedOperationException();
public Optional<ExaminationCertificate> certificate() {
try {
return Optional.of(new JsonObjectMapper().get().readValue(request.body(), ExaminationCertificate.class));
} catch (IOException e) {
e.printStackTrace();
return Optional.empty();
}
}

}
@@ -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<LicensedProduct, StreamCodec> codecs;
private final Registry<LicensedProduct, KeyKeeper> keys;
private final Registry<ContentType, ConditionTransport> transports;

public BaseServerConfiguration(Collection<StreamCodec> codecs, Collection<KeyKeeper> keys,
Collection<ConditionTransport> 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;
}

}
Expand Up @@ -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;
Expand All @@ -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());
Expand Down
Expand Up @@ -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;
Expand All @@ -35,17 +33,17 @@ public PassageFloatingServer(BackendServerConfiguration configuration) {
}

@Override
public ServiceInvocationResult<Boolean> canTake(CheckRequest request) {
public ServiceInvocationResult<Boolean> canTake(BackendRequestData request) {
return new CanTakeConditionChain().apply(request);
}

@Override
public ServiceInvocationResult<ExaminationCertificate> take(TakeRequest request) {
public ServiceInvocationResult<ExaminationCertificate> take(BackendRequestData request) {
return new AcquireConditionChain().apply(request);
}

@Override
public ServiceInvocationResult<Boolean> release(ReleaseRequest request) {
public ServiceInvocationResult<Boolean> release(BackendRequestData request) {
return new ReleaseConditionChain().apply(request);
}

Expand Down
Expand Up @@ -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<TakeRequest, ServiceInvocationResult<ExaminationCertificate>> {
implements Function<BackendRequestData, ServiceInvocationResult<ExaminationCertificate>> {

@Override
public ServiceInvocationResult<ExaminationCertificate> apply(TakeRequest t) {
public ServiceInvocationResult<ExaminationCertificate> apply(BackendRequestData t) {
return new BaseServiceInvocationResult<>(
new BaseExaminationCertificate(Collections.emptyList(), Collections.emptyList()));
}
Expand Down
Expand Up @@ -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<CheckRequest, ServiceInvocationResult<Boolean>> {
public final class CanTakeConditionChain implements Function<BackendRequestData, ServiceInvocationResult<Boolean>> {

@Override
public ServiceInvocationResult<Boolean> apply(CheckRequest t) {
public ServiceInvocationResult<Boolean> apply(BackendRequestData t) {
return new BaseServiceInvocationResult<Boolean>(true);
}

Expand Down
Expand Up @@ -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<ReleaseRequest, ServiceInvocationResult<Boolean>> {
public final class ReleaseConditionChain implements Function<BackendRequestData, ServiceInvocationResult<Boolean>> {

@Override
public ServiceInvocationResult<Boolean> apply(ReleaseRequest t) {
public ServiceInvocationResult<Boolean> apply(BackendRequestData t) {
return new BaseServiceInvocationResult<Boolean>(true);
}

Expand Down

0 comments on commit aa96429

Please sign in to comment.