Skip to content

Commit

Permalink
Bug 565143 - [Passage] floating licensing
Browse files Browse the repository at this point in the history
ConditionIdentifier packed to a type, added licenses, renamed data
classes

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

ServiceInvocationResult<Boolean> canTake(ConditionRequestData request);
ServiceInvocationResult<Boolean> canTake(RequestedCondition request);

ServiceInvocationResult<ExaminationCertificate> take(CertificateRequestData request);
ServiceInvocationResult<ExaminationCertificate> take(RequestedCertificate request);

ServiceInvocationResult<Boolean> release(CertificateRequestData request);
ServiceInvocationResult<Boolean> release(RequestedCertificate request);

}
Expand Up @@ -12,7 +12,6 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.api;

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

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

String parameter(String key);

String body() throws IOException;
String body();

Requester requester();
}
@@ -1,3 +1,15 @@
/*******************************************************************************
* 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;

/**
Expand All @@ -8,7 +20,7 @@
public interface BoundLicense {

// Condition identifier
String identifier();
ConditionIdentifier identifier();

// Grant's capacity
int capacity();
Expand Down
@@ -0,0 +1,21 @@
/*******************************************************************************
* 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;

/**
* @since 1.0
*/
public interface ConditionIdentifier {

String identifier();
}
Expand Up @@ -12,17 +12,15 @@
*******************************************************************************/
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 CertificateRequestData {
public interface RequestedCertificate {

Requester requester();

Optional<ExaminationCertificate> certificate();
ExaminationCertificate certificate();

}
Expand Up @@ -15,10 +15,10 @@
/**
* @since 1.0
*/
public interface ConditionRequestData {
public interface RequestedCondition {

Requester requester();

String condition();
ConditionIdentifier condition();

}

This file was deleted.

Expand Up @@ -29,9 +29,11 @@
public final class BaseLicensingRequest implements BackendLicensingRequest {

private final HttpServletRequest httpRequest;
private final String body;

public BaseLicensingRequest(HttpServletRequest httpRequest) {
public BaseLicensingRequest(HttpServletRequest httpRequest) throws IOException {
this.httpRequest = httpRequest;
this.body = body(httpRequest);
}

@Override
Expand All @@ -40,10 +42,8 @@ public Supplier<Optional<ConditionAction>> action() {
}

@Override
public String body() throws IOException {
StringBuilder builder = new StringBuilder();
httpRequest.getReader().lines().map(builder::append);
return builder.toString();
public String body() {
return body;
}

@Override
Expand All @@ -56,4 +56,11 @@ public Requester requester() {
return new BaseRequester(parameter("process"), parameter("hardware"), parameter("feature")); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}

private String body(HttpServletRequest httpRequest) throws IOException {
StringBuilder builder = new StringBuilder();
httpRequest.getReader().lines().forEachOrdered(builder::append);
String string = builder.toString();
return string;
}

}
@@ -0,0 +1,42 @@
/*******************************************************************************
* 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;

import org.eclipse.passage.lbc.internal.api.RequestedCertificate;
import org.eclipse.passage.lbc.internal.api.Requester;
import org.eclipse.passage.lic.internal.api.restrictions.ExaminationCertificate;

/**
* @since 1.0
*/
public final class BaseRequestedCertificate implements RequestedCertificate {

private final Requester requester;
private final ExaminationCertificate certificate;

public BaseRequestedCertificate(ExaminationCertificate certificate, Requester requester) {
this.requester = requester;
this.certificate = certificate;
}

@Override
public Requester requester() {
return requester;
}

@Override
public ExaminationCertificate certificate() {
return certificate;
}

}
@@ -1,3 +1,15 @@
/*******************************************************************************
* 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;

import org.eclipse.passage.lbc.internal.api.Requester;
Expand Down
@@ -1,3 +1,15 @@
/*******************************************************************************
* 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;

import java.util.Collection;
Expand Down
Expand Up @@ -13,8 +13,8 @@
package org.eclipse.passage.lbc.internal.base;

import org.eclipse.passage.lbc.internal.api.BackendFloatingServer;
import org.eclipse.passage.lbc.internal.api.CertificateRequestData;
import org.eclipse.passage.lbc.internal.api.ConditionRequestData;
import org.eclipse.passage.lbc.internal.api.RequestedCertificate;
import org.eclipse.passage.lbc.internal.api.RequestedCondition;
import org.eclipse.passage.lbc.internal.base.chains.Acquire;
import org.eclipse.passage.lbc.internal.base.chains.CanTake;
import org.eclipse.passage.lbc.internal.base.chains.Release;
Expand All @@ -27,17 +27,17 @@
public final class PassageFloatingServer implements BackendFloatingServer {

@Override
public ServiceInvocationResult<Boolean> canTake(ConditionRequestData request) {
public ServiceInvocationResult<Boolean> canTake(RequestedCondition request) {
return new CanTake().apply(request);
}

@Override
public ServiceInvocationResult<ExaminationCertificate> take(CertificateRequestData request) {
public ServiceInvocationResult<ExaminationCertificate> take(RequestedCertificate request) {
return new Acquire().apply(request);
}

@Override
public ServiceInvocationResult<Boolean> release(CertificateRequestData request) {
public ServiceInvocationResult<Boolean> release(RequestedCertificate request) {
return new Release().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.CertificateRequestData;
import org.eclipse.passage.lbc.internal.api.RequestedCertificate;
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 Acquire
implements Function<CertificateRequestData, ServiceInvocationResult<ExaminationCertificate>> {
implements Function<RequestedCertificate, ServiceInvocationResult<ExaminationCertificate>> {

@Override
public ServiceInvocationResult<ExaminationCertificate> apply(CertificateRequestData t) {
public ServiceInvocationResult<ExaminationCertificate> apply(RequestedCertificate 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.ConditionRequestData;
import org.eclipse.passage.lbc.internal.api.RequestedCondition;
import org.eclipse.passage.lic.internal.api.ServiceInvocationResult;
import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult;

public final class CanTake implements Function<ConditionRequestData, ServiceInvocationResult<Boolean>> {
public final class CanTake implements Function<RequestedCondition, ServiceInvocationResult<Boolean>> {

@Override
public ServiceInvocationResult<Boolean> apply(ConditionRequestData t) {
public ServiceInvocationResult<Boolean> apply(RequestedCondition 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.CertificateRequestData;
import org.eclipse.passage.lbc.internal.api.RequestedCertificate;
import org.eclipse.passage.lic.internal.api.ServiceInvocationResult;
import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult;

public final class Release implements Function<CertificateRequestData, ServiceInvocationResult<Boolean>> {
public final class Release implements Function<RequestedCertificate, ServiceInvocationResult<Boolean>> {

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

Expand Down
Expand Up @@ -13,6 +13,7 @@
package org.eclipse.passage.lbc.internal.equinox.conditions;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

Expand Down Expand Up @@ -51,8 +52,12 @@ public LicensingResult executeAction(HttpServletRequest request, HttpServletResp
}

private List<Resource> loadConditions(HttpServletRequest request) {
return new Mine(BaseServerConfiguration.empty())
.apply(new ParsedRequest().apply(new BaseLicensingRequest(request))).data().get();
try {
return new Mine(BaseServerConfiguration.empty())
.apply(new ParsedRequest().apply(new BaseLicensingRequest(request))).data().get();
} catch (IOException e) {
return Collections.emptyList();
}
}

private void send(HttpServletResponse response, List<Resource> conditions) throws IOException {
Expand Down

0 comments on commit 00a2fef

Please sign in to comment.