Skip to content

Commit cea58d1

Browse files
fallback
1 parent e598be6 commit cea58d1

File tree

3 files changed

+46
-14
lines changed

3 files changed

+46
-14
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package my.bookshop.handlers.hierarchy;
2+
3+
import org.springframework.context.annotation.Profile;
4+
import org.springframework.stereotype.Component;
5+
6+
import com.sap.cds.ql.Select;
7+
import com.sap.cds.services.cds.CdsReadEventContext;
8+
import com.sap.cds.services.cds.CqnService;
9+
import com.sap.cds.services.handler.EventHandler;
10+
import com.sap.cds.services.handler.annotations.Before;
11+
import com.sap.cds.services.handler.annotations.ServiceName;
12+
import com.sap.cds.services.persistence.PersistenceService;
13+
14+
import cds.gen.adminservice.AdminService_;
15+
import cds.gen.adminservice.GenreHierarchy_;
16+
17+
@Component
18+
@Profile("default") // non-HANA
19+
@ServiceName(AdminService_.CDS_NAME)
20+
/**
21+
* Fallback to plain representation
22+
*/
23+
public class HierarchyFallbackHandler implements EventHandler {
24+
25+
private final PersistenceService db;
26+
27+
HierarchyFallbackHandler(PersistenceService db) {
28+
this.db = db;
29+
}
30+
31+
@Before(event = CqnService.EVENT_READ, entity = GenreHierarchy_.CDS_NAME)
32+
public void readGenreHierarchy(CdsReadEventContext event) {
33+
if (event.getCqn().transformations().size() < 1) {
34+
return;
35+
}
36+
event.setResult(db.run(Select.from(cds.gen.adminservice.GenreHierarchy_.class)));
37+
}
38+
39+
}

srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java renamed to srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyReadOnlyHandler.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package my.bookshop.handlers;
1+
package my.bookshop.handlers.hierarchy;
22

33
import static cds.gen.catalogservice.CatalogService_.GENRE_HIERARCHY;
44

@@ -37,14 +37,13 @@
3737
import com.sap.cds.services.handler.annotations.ServiceName;
3838
import com.sap.cds.services.persistence.PersistenceService;
3939

40-
import cds.gen.adminservice.AdminService_;
4140
import cds.gen.catalogservice.CatalogService_;
4241
import cds.gen.catalogservice.GenreHierarchy;
4342
import cds.gen.catalogservice.GenreHierarchy_;
4443

4544
@Component
4645
@Profile("default") // non-HANA
47-
@ServiceName({ CatalogService_.CDS_NAME, AdminService_.CDS_NAME })
46+
@ServiceName(CatalogService_.CDS_NAME)
4847
/**
4948
* On HANA, requests for GenreHierarchy are handled generically.
5049
*
@@ -55,15 +54,15 @@
5554
* The handler is neither functionally complete nor correct for all requests. It
5655
* is not intended as a blue-print for custom code.
5756
*/
58-
public class HierarchyHandler implements EventHandler {
57+
public class HierarchyReadOnlyHandler implements EventHandler {
5958

6059
private final PersistenceService db;
6160

62-
HierarchyHandler(PersistenceService db) {
61+
HierarchyReadOnlyHandler(PersistenceService db) {
6362
this.db = db;
6463
}
6564

66-
@Before(event = CqnService.EVENT_READ)
65+
@Before(event = CqnService.EVENT_READ, entity = GenreHierarchy_.CDS_NAME)
6766
public void readGenreHierarchy(CdsReadEventContext event) {
6867
List<CqnTransformation> trafos = event.getCqn().transformations();
6968
List<GenreHierarchy> result = null;
@@ -72,12 +71,6 @@ public void readGenreHierarchy(CdsReadEventContext event) {
7271
return;
7372
}
7473

75-
// Fallback for draft-enabled scenario: plain table
76-
if (cds.gen.adminservice.GenreHierarchy_.CDS_NAME.equals(event.getTarget().getQualifiedName())) {
77-
event.setResult(db.run(Select.from(cds.gen.adminservice.GenreHierarchy_.class)));
78-
return;
79-
}
80-
8174
if (getTopLevels(trafos) instanceof CqnTopLevelsTransformation topLevels) {
8275
result = topLevels(topLevels, CQL.TRUE);
8376
} else if (trafos.get(0) instanceof CqnDescendantsTransformation descendants) {

srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java renamed to srv/src/test/java/my/bookshop/handlers/hierarchy/HierarchyHandlerSorterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package my.bookshop.handlers;
1+
package my.bookshop.handlers.hierarchy;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import java.util.List;
55
import org.junit.jupiter.api.Test;
66

77
import cds.gen.catalogservice.GenreHierarchy;
8-
import my.bookshop.handlers.HierarchyHandler.Sorter;
8+
import my.bookshop.handlers.hierarchy.HierarchyReadOnlyHandler.Sorter;
99

1010
public class HierarchyHandlerSorterTest {
1111

0 commit comments

Comments
 (0)