Loading src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; public interface ContextGateway { // Context related methods Uni<Service> getService(ServiceId serviceId); Uni<ServiceId> setService(Service service); Uni<Device> getDevice(String deviceId); // Context-policy related methods Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); } src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import context.MutinyContextServiceGrpc.MutinyContextServiceStub; import context_policy.MutinyContextPolicyServiceGrpc.MutinyContextPolicyServiceStub; import eu.teraflow.policy.Serializer; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.quarkus.grpc.GrpcClient; import io.smallrye.mutiny.Uni; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @ApplicationScoped public class ContextGatewayImpl implements ContextGateway { @GrpcClient("context") MutinyContextServiceStub streamingDelegateContext; // TODO remove client when RPCs declared in context-policy.proto are moved in context.proto // and use streamingDelegateContext for all methods @GrpcClient("context_policy") MutinyContextPolicyServiceStub streamingDelegateContextPolicy; private final Serializer serializer; @Inject public ContextGatewayImpl(Serializer serializer) { this.serializer = serializer; } @Override public Uni<Service> getService(ServiceId serviceId) { final var serializedServiceId = serializer.serialize(serviceId); return streamingDelegateContext .getService(serializedServiceId) .onItem() .transform(serializer::deserialize); } @Override public Uni<ServiceId> setService(Service service) { final var serializedService = serializer.serialize(service); return streamingDelegateContext .setService(serializedService) .onItem() .transform(serializer::deserialize); } @Override public Uni<Device> getDevice(String deviceId) { final var serializedDeviceId = serializer.serializeDeviceId(deviceId); return streamingDelegateContext .getDevice(serializedDeviceId) .onItem() .transform(serializer::deserialize); } @Override public Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId) { final var serializedPolicyRuleId = serializer.serializePolicyRuleId(policyRuleId); return streamingDelegateContextPolicy .getPolicyRule(serializedPolicyRuleId) .onItem() .transform(serializer::deserialize); } @Override public Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic) { final var serializedPolicyRuleBasic = serializer.serialize(policyRuleBasic); return streamingDelegateContextPolicy .setPolicyRule(serializedPolicyRuleBasic) .onItem() .transform(serializer::deserialize); } } src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java +18 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,21 @@ package eu.teraflow.policy.context; public interface ContextService {} import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; public interface ContextService { Uni<Service> getService(ServiceId serviceId); Uni<ServiceId> setService(Service service); Uni<Device> getDevice(String deviceId); Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); } src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @ApplicationScoped public class ContextServiceImpl implements ContextService { private final ContextGateway contextGateway; @Inject public ContextServiceImpl(ContextGateway contextGateway) { this.contextGateway = contextGateway; } @Override public Uni<Service> getService(ServiceId serviceId) { return contextGateway.getService(serviceId); } @Override public Uni<ServiceId> setService(Service service) { return contextGateway.setService(service); } @Override public Uni<Device> getDevice(String deviceId) { return contextGateway.getDevice(deviceId); } @Override public Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId) { return contextGateway.getPolicyRule(policyRuleId); } @Override public Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic) { return contextGateway.setPolicyRule(policyRuleBasic); } } src/policy/src/main/proto/context-policy.proto 0 → 120000 +1 −0 Original line number Diff line number Diff line ../../../../../proto/context-policy.proto No newline at end of file Loading
src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; public interface ContextGateway { // Context related methods Uni<Service> getService(ServiceId serviceId); Uni<ServiceId> setService(Service service); Uni<Device> getDevice(String deviceId); // Context-policy related methods Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); }
src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import context.MutinyContextServiceGrpc.MutinyContextServiceStub; import context_policy.MutinyContextPolicyServiceGrpc.MutinyContextPolicyServiceStub; import eu.teraflow.policy.Serializer; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.quarkus.grpc.GrpcClient; import io.smallrye.mutiny.Uni; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @ApplicationScoped public class ContextGatewayImpl implements ContextGateway { @GrpcClient("context") MutinyContextServiceStub streamingDelegateContext; // TODO remove client when RPCs declared in context-policy.proto are moved in context.proto // and use streamingDelegateContext for all methods @GrpcClient("context_policy") MutinyContextPolicyServiceStub streamingDelegateContextPolicy; private final Serializer serializer; @Inject public ContextGatewayImpl(Serializer serializer) { this.serializer = serializer; } @Override public Uni<Service> getService(ServiceId serviceId) { final var serializedServiceId = serializer.serialize(serviceId); return streamingDelegateContext .getService(serializedServiceId) .onItem() .transform(serializer::deserialize); } @Override public Uni<ServiceId> setService(Service service) { final var serializedService = serializer.serialize(service); return streamingDelegateContext .setService(serializedService) .onItem() .transform(serializer::deserialize); } @Override public Uni<Device> getDevice(String deviceId) { final var serializedDeviceId = serializer.serializeDeviceId(deviceId); return streamingDelegateContext .getDevice(serializedDeviceId) .onItem() .transform(serializer::deserialize); } @Override public Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId) { final var serializedPolicyRuleId = serializer.serializePolicyRuleId(policyRuleId); return streamingDelegateContextPolicy .getPolicyRule(serializedPolicyRuleId) .onItem() .transform(serializer::deserialize); } @Override public Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic) { final var serializedPolicyRuleBasic = serializer.serialize(policyRuleBasic); return streamingDelegateContextPolicy .setPolicyRule(serializedPolicyRuleBasic) .onItem() .transform(serializer::deserialize); } }
src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java +18 −1 Original line number Diff line number Diff line Loading @@ -16,4 +16,21 @@ package eu.teraflow.policy.context; public interface ContextService {} import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; public interface ContextService { Uni<Service> getService(ServiceId serviceId); Uni<ServiceId> setService(Service service); Uni<Device> getDevice(String deviceId); Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); }
src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; import io.smallrye.mutiny.Uni; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @ApplicationScoped public class ContextServiceImpl implements ContextService { private final ContextGateway contextGateway; @Inject public ContextServiceImpl(ContextGateway contextGateway) { this.contextGateway = contextGateway; } @Override public Uni<Service> getService(ServiceId serviceId) { return contextGateway.getService(serviceId); } @Override public Uni<ServiceId> setService(Service service) { return contextGateway.setService(service); } @Override public Uni<Device> getDevice(String deviceId) { return contextGateway.getDevice(deviceId); } @Override public Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId) { return contextGateway.getPolicyRule(policyRuleId); } @Override public Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic) { return contextGateway.setPolicyRule(policyRuleBasic); } }
src/policy/src/main/proto/context-policy.proto 0 → 120000 +1 −0 Original line number Diff line number Diff line ../../../../../proto/context-policy.proto No newline at end of file