Skip to content

Commit

Permalink
Bug 566311 - [Passage] implement BoundLicense storage
Browse files Browse the repository at this point in the history
canTake chain is now working

Signed-off-by: Nikifor Fedorov <zelenyhleb@gmail.com>
  • Loading branch information
zelenyhleb committed Aug 25, 2020
1 parent 518b8ea commit dbd1228
Show file tree
Hide file tree
Showing 15 changed files with 229 additions and 138 deletions.
41 changes: 3 additions & 38 deletions bundles/org.eclipse.passage.lbc.api/.settings/.api_filters
Original file line number Diff line number Diff line change
@@ -1,46 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.passage.lbc.api" version="2">
<resource path="src/org/eclipse/passage/lbc/internal/api/BackendLicenseLock.java" type="org.eclipse.passage.lbc.internal.api.BackendLicenseLock">
<resource path="src/org/eclipse/passage/lbc/internal/api/RequestedCondition.java" type="org.eclipse.passage.lbc.internal.api.RequestedCondition">
<filter id="643842064">
<message_arguments>
<message_argument value="ServiceInvocationResult&lt;T&gt;"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="canTake(Condition)"/>
</message_arguments>
</filter>
<filter id="643842064">
<message_arguments>
<message_argument value="ServiceInvocationResult&lt;T&gt;"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="release(Condition)"/>
</message_arguments>
</filter>
<filter id="643842064">
<message_arguments>
<message_argument value="ServiceInvocationResult&lt;T&gt;"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="take(Condition)"/>
</message_arguments>
</filter>
<filter id="643846161">
<message_arguments>
<message_argument value="Condition"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="canTake(Condition)"/>
</message_arguments>
</filter>
<filter id="643846161">
<message_arguments>
<message_argument value="Condition"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="release(Condition)"/>
</message_arguments>
</filter>
<filter id="643846161">
<message_arguments>
<message_argument value="Condition"/>
<message_argument value="BackendLicenseLock"/>
<message_argument value="take(Condition)"/>
<message_argument value="RequestedCondition"/>
<message_argument value="condition()"/>
</message_arguments>
</filter>
</resource>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.api;

import java.util.Optional;
import java.util.function.Supplier;
import org.eclipse.passage.lic.internal.api.conditions.Condition;

/**
* @since 1.0
Expand All @@ -22,6 +21,6 @@ public interface RequestedCondition {

Requester requester();

Supplier<Optional<String>> condition();
Condition condition();

}
19 changes: 19 additions & 0 deletions bundles/org.eclipse.passage.lbc.base/.settings/.api_filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.passage.lbc.base" version="2">
<resource path="src/org/eclipse/passage/lbc/internal/base/BaseRequestedCondition.java" type="org.eclipse.passage.lbc.internal.base.BaseRequestedCondition">
<filter id="643842064">
<message_arguments>
<message_argument value="Condition"/>
<message_argument value="BaseRequestedCondition"/>
<message_argument value="condition()"/>
</message_arguments>
</filter>
<filter id="643850349">
<message_arguments>
<message_argument value="Condition"/>
<message_argument value="BaseRequestedCondition"/>
<message_argument value="BaseRequestedCondition(Condition, Requester)"/>
</message_arguments>
</filter>
</resource>
</component>
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*******************************************************************************
* 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.Objects;

import org.eclipse.passage.lbc.internal.api.RequestedCondition;
import org.eclipse.passage.lbc.internal.api.Requester;
import org.eclipse.passage.lic.internal.api.conditions.Condition;

/**
* @since 1.0
*/
public final class BaseRequestedCondition implements RequestedCondition {

private final Requester requester;
private final Condition condition;

public BaseRequestedCondition(Condition condition, Requester requester) {
Objects.requireNonNull(condition, "BaseRequestedCondition::condition"); //$NON-NLS-1$
Objects.requireNonNull(requester, "BaseRequestedCondition::requester"); //$NON-NLS-1$
this.requester = requester;
this.condition = condition;
}

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

@Override
public Condition condition() {
return condition;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.base;

import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;

import org.eclipse.passage.lic.internal.base.StringNamedData;

Expand All @@ -29,6 +31,10 @@ public ConditionIdentifier(Function<String, String> retrieve) {
super(retrieve);
}

public ConditionIdentifier(Supplier<Optional<String>> existing) {
this(existing.get().get());
}

@Override
public final String key() {
return "identifier"; //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.base;

import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;

import org.eclipse.passage.lic.internal.base.BaseNamedData;

Expand All @@ -25,6 +27,14 @@ public LicenseCapacity(Function<String, Integer> retrieve) {
super(retrieve);
}

public LicenseCapacity(int value) {
super((key) -> value);
}

public LicenseCapacity(Supplier<Optional<Integer>> existing) {
this(existing.get().get());
}

@Override
public String key() {
return "capacity"; //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.base;

import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;

import org.eclipse.passage.lic.internal.base.BaseNamedData;

Expand All @@ -25,6 +27,14 @@ public LicenseTaken(Function<String, Integer> retrieve) {
super(retrieve);
}

public LicenseTaken(int value) {
super((key) -> value);
}

public LicenseTaken(Supplier<Optional<Integer>> existing) {
this(existing.get().get());
}

@Override
public String key() {
return "taken"; //$NON-NLS-1$
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,42 @@
*******************************************************************************/
package org.eclipse.passage.lbc.internal.base.chains;

import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Stream;

import org.eclipse.passage.lbc.internal.api.RequestedCondition;
import org.eclipse.passage.lbc.internal.api.persistence.PersistableLicense;
import org.eclipse.passage.lbc.internal.base.troubles.ConditionEntryNotFound;
import org.eclipse.passage.lic.internal.api.ServiceInvocationResult;
import org.eclipse.passage.lic.internal.api.conditions.Condition;
import org.eclipse.passage.lic.internal.api.diagnostic.Trouble;
import org.eclipse.passage.lic.internal.base.BaseServiceInvocationResult;

@SuppressWarnings("restriction")
public final class CanTake implements Function<RequestedCondition, ServiceInvocationResult<Boolean>> {

private final Function<Condition, Optional<PersistableLicense>> find;

public CanTake(Function<Condition, Optional<PersistableLicense>> find) {
this.find = find;
}

@Override
public ServiceInvocationResult<Boolean> apply(RequestedCondition t) {
return new BaseServiceInvocationResult<Boolean>(true);
public ServiceInvocationResult<Boolean> apply(RequestedCondition request) {
Optional<PersistableLicense> license = license(request.condition());
if (license.isPresent()) {
return new BaseServiceInvocationResult<Boolean>(license.get().get().takeable());
} else {
return new BaseServiceInvocationResult<>(
new Trouble(new ConditionEntryNotFound(), request.condition().identifier()));
}
}

private Optional<PersistableLicense> license(Condition request) {
return Stream.of(request) //
.map(find) //
.findAny().get();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*******************************************************************************
* 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.troubles;

import org.eclipse.passage.lic.internal.api.diagnostic.TroubleCode;

/**
* @since 1.0
*/
@SuppressWarnings("restriction")
public final class ConditionEntryNotFound extends TroubleCode {

public ConditionEntryNotFound() {
super(601, "No bound license found for specified condition."); //$NON-NLS-1$
}

}
Loading

0 comments on commit dbd1228

Please sign in to comment.