Skip to content

Commit 970ce0a

Browse files
feat!(scalasdk): Move Service and ComponentOptions to impl.
Review procesed.
1 parent c570bdc commit 970ce0a

16 files changed

Lines changed: 112 additions & 100 deletions

File tree

sdk/java-sdk/src/main/java/com/akkaserverless/javasdk/AkkaServerless.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.akkaserverless.javasdk.impl.eventsourcedentity.ResolvedEventSourcedEntityFactory;
3535
import com.akkaserverless.javasdk.impl.replicatedentity.ReplicatedEntityService;
3636
import com.akkaserverless.javasdk.impl.replicatedentity.ResolvedReplicatedEntityFactory;
37+
import com.akkaserverless.javasdk.impl.Service;
3738
import com.akkaserverless.javasdk.impl.valueentity.ResolvedValueEntityFactory;
3839
import com.akkaserverless.javasdk.impl.valueentity.ValueEntityService;
3940
import com.akkaserverless.javasdk.impl.view.ViewService;

sdk/java-sdk/src/main/java/com/akkaserverless/javasdk/ComponentOptions.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

sdk/java-sdk/src/main/java/com/akkaserverless/javasdk/EntityOptions.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.akkaserverless.javasdk;
1818

19+
import com.akkaserverless.javasdk.impl.ComponentOptions;
1920
/** Options used for configuring an entity. */
2021
public interface EntityOptions extends ComponentOptions {
2122

@@ -29,4 +30,16 @@ public interface EntityOptions extends ComponentOptions {
2930
* @return the entity option
3031
*/
3132
EntityOptions withPassivationStrategy(PassivationStrategy strategy);
33+
34+
/**
35+
* @return the headers requested to be forwarded as metadata (cannot be mutated, use
36+
* withForwardHeaders)
37+
*/
38+
java.util.Set<String> forwardHeaders();
39+
40+
/**
41+
* Ask Akka Serverless to forward these headers from the incoming request as metadata headers for
42+
* the incoming commands. By default no headers except "X-Server-Timing" are forwarded.
43+
*/
44+
ComponentOptions withForwardHeaders(java.util.Set<String> headers);
3245
}

sdk/java-sdk/src/main/java/com/akkaserverless/javasdk/action/ActionOptions.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.akkaserverless.javasdk.action;
1818

19-
import com.akkaserverless.javasdk.ComponentOptions;
19+
import com.akkaserverless.javasdk.impl.ComponentOptions;
2020
import com.akkaserverless.javasdk.PassivationStrategy;
2121
import com.akkaserverless.javasdk.eventsourcedentity.EventSourcedEntityOptions;
2222
import com.akkaserverless.javasdk.impl.action.ActionOptionsImpl;
@@ -31,4 +31,16 @@ public interface ActionOptions extends ComponentOptions {
3131
static ActionOptions defaults() {
3232
return new ActionOptionsImpl(Collections.emptySet());
3333
}
34+
35+
/**
36+
* @return the headers requested to be forwarded as metadata (cannot be mutated, use
37+
* withForwardHeaders)
38+
*/
39+
java.util.Set<String> forwardHeaders();
40+
41+
/**
42+
* Ask Akka Serverless to forward these headers from the incoming request as metadata headers for
43+
* the incoming commands. By default no headers except "X-Server-Timing" are forwarded.
44+
*/
45+
ComponentOptions withForwardHeaders(java.util.Set<String> headers);
3446
}

sdk/java-sdk/src/main/scala/com/akkaserverless/javasdk/AkkaServerlessRunner.scala

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ import com.akkaserverless.javasdk.impl.action.{ ActionService, ActionsImpl }
2626
import com.akkaserverless.javasdk.impl.replicatedentity.{ ReplicatedEntitiesImpl, ReplicatedEntityService }
2727
import com.akkaserverless.javasdk.impl.valueentity.{ ValueEntitiesImpl, ValueEntityService }
2828
import com.akkaserverless.javasdk.impl.eventsourcedentity.{ EventSourcedEntitiesImpl, EventSourcedEntityService }
29-
import com.akkaserverless.javasdk.impl.{ DiscoveryImpl, ResolvedServiceCallFactory, ResolvedServiceMethod }
29+
import com.akkaserverless.javasdk.impl.{
30+
ComponentOptions,
31+
DiscoveryImpl,
32+
ResolvedServiceCallFactory,
33+
ResolvedServiceMethod,
34+
Service
35+
}
3036
import com.akkaserverless.protocol.action.ActionsHandler
3137
import com.akkaserverless.protocol.discovery.DiscoveryHandler
3238
import com.akkaserverless.protocol.event_sourced_entity.EventSourcedEntitiesHandler
@@ -213,41 +219,3 @@ final class AkkaServerlessRunner private[this] (
213219
osMBean.getAvailableProcessors)
214220
}
215221
}
216-
217-
/**
218-
* Service describes a component type in a way which makes it possible to deploy.
219-
*/
220-
trait Service {
221-
222-
/**
223-
* @return
224-
* a Protobuf ServiceDescriptor of its externally accessible gRPC API
225-
*/
226-
def descriptor: Descriptors.ServiceDescriptor
227-
228-
/**
229-
* @return
230-
* the type of component represented by this service
231-
*/
232-
def componentType: String
233-
234-
/**
235-
* @return
236-
* the entity type name used for the entities represented by this service
237-
*/
238-
def entityType: String = descriptor.getName
239-
240-
/**
241-
* @return
242-
* the options [[ComponentOptions]] or [[EntityOptions]] used by this service
243-
*/
244-
def componentOptions: Option[ComponentOptions] = None
245-
246-
/**
247-
* @return
248-
* a dictionary of service methods (Protobuf Descriptors.MethodDescriptor) classified by method name. The dictionary
249-
* values represent a mapping of Protobuf Descriptors.MethodDescriptor with its input and output types (see
250-
* [[com.akkaserverless.javasdk.impl.ResolvedServiceMethod]])
251-
*/
252-
def resolvedMethods: Option[Map[String, ResolvedServiceMethod[_, _]]]
253-
}

sdk/scala-sdk/src/main/scala/com/akkaserverless/scalasdk/ComponentOptions.scala renamed to sdk/java-sdk/src/main/scala/com/akkaserverless/javasdk/impl/ComponentOptions.scala

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,19 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.akkaserverless.scalasdk
17+
package com.akkaserverless.javasdk.impl
1818

19-
//FIXME see if needed
20-
trait ComponentOptions extends com.akkaserverless.javasdk.ComponentOptions
19+
trait ComponentOptions {
20+
21+
/**
22+
* @return
23+
* the headers requested to be forwarded as metadata (cannot be mutated, use withForwardHeaders)
24+
*/
25+
def forwardHeaders(): java.util.Set[String]
26+
27+
/**
28+
* Ask Akka Serverless to forward these headers from the incoming request as metadata headers for the incoming
29+
* commands. By default no headers except "X-Server-Timing" are forwarded.
30+
*/
31+
def withForwardHeaders(headers: java.util.Set[String]): ComponentOptions
32+
}

sdk/java-sdk/src/main/scala/com/akkaserverless/javasdk/impl/ComponentOptionsImpl.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.akkaserverless.javasdk.impl
1818

19-
import com.akkaserverless.javasdk.ComponentOptions
20-
2119
import java.util
2220
import java.util.Collections
2321

sdk/java-sdk/src/main/scala/com/akkaserverless/javasdk/impl/DiscoveryImpl.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package com.akkaserverless.javasdk.impl
1919
import akka.Done
2020
import akka.actor.{ ActorSystem, CoordinatedShutdown }
2121
import com.akkaserverless.javasdk.replicatedentity.{ ReplicatedEntityOptions, WriteConsistency }
22-
import com.akkaserverless.javasdk.{ BuildInfo, EntityOptions, Service }
22+
import com.akkaserverless.javasdk.{ BuildInfo, EntityOptions }
2323
import com.akkaserverless.protocol.action.Actions
2424
import com.akkaserverless.protocol.discovery.PassivationStrategy.Strategy
2525
import com.akkaserverless.protocol.discovery._

sdk/java-sdk/src/main/scala/com/akkaserverless/javasdk/impl/ResolvedServiceCallFactory.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.akkaserverless.javasdk.impl
1818

19-
import com.akkaserverless.javasdk.{ Service, ServiceCallFactory, ServiceCallRef }
19+
import com.akkaserverless.javasdk.{ ServiceCallFactory, ServiceCallRef }
2020

2121
class ResolvedServiceCallFactory(services: Map[String, Service]) extends ServiceCallFactory {
2222
override def lookup[T](serviceName: String, methodName: String, methodType: Class[T]): ServiceCallRef[T] =
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright 2021 Lightbend Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.akkaserverless.javasdk.impl
18+
import com.google.protobuf.Descriptors
19+
20+
/**
21+
* Service describes a component type in a way which makes it possible to deploy.
22+
*/
23+
trait Service {
24+
25+
/**
26+
* @return
27+
* a Protobuf ServiceDescriptor of its externally accessible gRPC API
28+
*/
29+
def descriptor: Descriptors.ServiceDescriptor
30+
31+
/**
32+
* @return
33+
* the type of component represented by this service
34+
*/
35+
def componentType: String
36+
37+
/**
38+
* @return
39+
* the entity type name used for the entities represented by this service
40+
*/
41+
def entityType: String = descriptor.getName
42+
43+
/**
44+
* @return
45+
* the options [[ComponentOptions]] or [[EntityOptions]] used by this service
46+
*/
47+
def componentOptions: Option[ComponentOptions] = None
48+
49+
/**
50+
* @return
51+
* a dictionary of service methods (Protobuf Descriptors.MethodDescriptor) classified by method name. The dictionary
52+
* values represent a mapping of Protobuf Descriptors.MethodDescriptor with its input and output types (see
53+
* [[com.akkaserverless.javasdk.impl.ResolvedServiceMethod]])
54+
*/
55+
def resolvedMethods: Option[Map[String, ResolvedServiceMethod[_, _]]]
56+
}

0 commit comments

Comments
 (0)