Skip to content

Commit

Permalink
Bug 564328 API revision | conditions | rethink key interfaces
Browse files Browse the repository at this point in the history
side work:
  - revised versions of `ConditionMiner` and registry  are added
  - `Framework` interface is extended with the corresponding supplier
  - `Framework` implementations follow the changes
  - `ResolvedRequirements` interface license header is fixed

Signed-off-by: elena.parovyshnaya <elena.parovyshnaya@gmail.com>
  • Loading branch information
eparovyshnaya committed Jun 18, 2020
1 parent a579471 commit d3a173a
Show file tree
Hide file tree
Showing 9 changed files with 95 additions and 9 deletions.
1 change: 1 addition & 0 deletions bundles/org.eclipse.passage.lic.api/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Export-Package: org.eclipse.passage.lic.api,
org.eclipse.passage.loc.users.ui,
org.eclipse.passage.loc.api",
org.eclipse.passage.lic.internal.api.conditions;x-internal:=true,
org.eclipse.passage.lic.internal.api.conditions.mining;x-internal:=true,
org.eclipse.passage.lic.internal.api.registry;x-internal:=true,
org.eclipse.passage.lic.internal.api.requirements;x-internal:=true,
org.eclipse.passage.lic.internal.api.restrictions;x-internal:=true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,28 @@
import org.eclipse.passage.lic.api.LicensingConfiguration;

/**
* <p>The miner to extract {@link LicensingCondition}s from different sources like</p>
* <p>
* The miner to extract {@link LicensingCondition}s from different sources like
* </p>
* <ul>
* <li>local file system</li>
* <li>network server</li>
* <li>etc</li>
* </ul>
* <p>The service is intended to implement the third phase of <i>access cycle</i>.</p>
* <p>
* The service is intended to implement the third phase of <i>access cycle</i>.
* </p>
*
* @see LicensingCondition
* @see org.eclipse.passage.lic.api
* @deprecated use MinedConditions
* @since 0.4.0
*/
@Deprecated
public interface ConditionMiner {

/**
* Extracts {@link LicensingCondition}s for given
* {@link LicensingConfiguration}
* Extracts {@link LicensingCondition}s for given {@link LicensingConfiguration}
*
* @param configuration the {@link LicensingConfiguration}
* @return the {@link Iterable}<{@link LicensingCondition}>, may be empty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.passage.lic.internal.api;

import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditionsRegistry;
import org.eclipse.passage.lic.internal.api.requirements.ResolvedRequirementsRegistry;

/**
Expand All @@ -38,4 +39,6 @@ public interface Framework {

ResolvedRequirementsRegistry requirementsRegistry();

MinedConditionsRegistry conditionsRegistry();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.eclipse.passage.lic.internal.api.conditions.mining;

import java.util.Collection;

import org.eclipse.passage.lic.internal.api.conditions.Condition;
import org.eclipse.passage.lic.internal.api.registry.Service;
import org.eclipse.passage.lic.internal.api.registry.StringServiceId;

/**
* <p>
* The miner to extract {@link Condition}s from different sources like
* </p>
* <ul>
* <li>local file system</li>
* <li>network server</li>
* <li>etc</li>
* </ul>
* <p>
* The service is intended to implement the third phase of <i>access cycle</i>.
* </p>
*/
public interface MinedConditions extends Service<StringServiceId> {

Collection<Condition> all();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*******************************************************************************
* 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.lic.internal.api.conditions.mining;

import java.util.function.Supplier;

import org.eclipse.passage.lic.internal.api.registry.Registry;
import org.eclipse.passage.lic.internal.api.registry.StringServiceId;

public interface MinedConditionsRegistry extends Supplier<Registry<StringServiceId, MinedConditions>> {

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2018, 2020 ArSysOp
* 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import java.util.Arrays;

import org.eclipse.passage.lic.internal.api.Framework;
import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditions;
import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditionsRegistry;
import org.eclipse.passage.lic.internal.api.registry.Registry;
import org.eclipse.passage.lic.internal.api.registry.StringServiceId;
import org.eclipse.passage.lic.internal.api.requirements.ResolvedRequirements;
Expand All @@ -25,21 +27,31 @@

@SuppressWarnings("restriction")
final class DemoFramework implements Framework {

private final Registry<StringServiceId, ResolvedRequirements> requirements;
private final Registry<StringServiceId, MinedConditions> conditions;
static final Framework demo = new DemoFramework();

private DemoFramework() {
requirements = //
new ReadOnlyRegistry<StringServiceId, ResolvedRequirements>(Arrays.asList(//
new ReadOnlyRegistry<>(Arrays.asList(//
new BundleRequirements(), //
new ComponentRequirements()) //
);
conditions = //
new ReadOnlyRegistry<>(Arrays.asList(//
)//
);
}

@Override
public ResolvedRequirementsRegistry requirementsRegistry() {
return () -> requirements;
}

@Override
public MinedConditionsRegistry conditionsRegistry() {
return () -> conditions;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import org.junit.Test;

// fully covered
public class LicensingVersionsTest {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import java.util.ArrayList;

import org.eclipse.passage.lic.internal.api.Framework;
import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditions;
import org.eclipse.passage.lic.internal.api.conditions.mining.MinedConditionsRegistry;
import org.eclipse.passage.lic.internal.api.registry.Registry;
import org.eclipse.passage.lic.internal.api.registry.StringServiceId;
import org.eclipse.passage.lic.internal.api.requirements.ResolvedRequirements;
Expand All @@ -26,10 +28,15 @@ final class SabotagedFramework implements Framework {

@Override
public ResolvedRequirementsRegistry requirementsRegistry() {
return new NoResolvers();
return new NoRequirementResolvers();
}

private static class NoResolvers implements ResolvedRequirementsRegistry {
@Override
public MinedConditionsRegistry conditionsRegistry() {
return new NoConditionMiners();
}

private static class NoRequirementResolvers implements ResolvedRequirementsRegistry {

@Override
public Registry<StringServiceId, ResolvedRequirements> get() {
Expand All @@ -38,4 +45,13 @@ public Registry<StringServiceId, ResolvedRequirements> get() {

}

private static class NoConditionMiners implements MinedConditionsRegistry {

@Override
public Registry<StringServiceId, MinedConditions> get() {
return new ReadOnlyRegistry<StringServiceId, MinedConditions>(new ArrayList<>());
}

}

}

0 comments on commit d3a173a

Please sign in to comment.