Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 0531b82

Browse files
committed
#87 - replaces examples/alias with tests from estatio
1 parent 51e4dc3 commit 0531b82

28 files changed

+904
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
*
3+
* Copyright 2012-2014 Eurocommercial Properties NV
4+
*
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package org.incode.extended.integtests.examples.alias;
20+
21+
import javax.inject.Inject;
22+
23+
import org.junit.Test;
24+
25+
import org.apache.isis.applib.Module;
26+
import org.apache.isis.applib.services.jaxb.JaxbService;
27+
import org.apache.isis.applib.services.metamodel.MetaModelService4;
28+
29+
public class AliasModuleBootstrapIntegTest extends
30+
org.incode.extended.integtests.examples.alias.AliasModuleIntegTestAbstract {
31+
32+
@Test
33+
public void serializes_module() throws Exception {
34+
35+
final Module module = metaModelService4.getAppManifest2().getModule();
36+
37+
final String s = jaxbService.toXml(module);
38+
System.out.println(s);
39+
}
40+
41+
@Inject
42+
MetaModelService4 metaModelService4;
43+
44+
@Inject
45+
JaxbService jaxbService;
46+
}
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,43 @@
11
package org.incode.extended.integtests.examples.alias;
22

3+
import java.util.Set;
4+
35
import javax.inject.Inject;
6+
import javax.xml.bind.annotation.XmlRootElement;
47

5-
import org.junit.BeforeClass;
8+
import com.google.common.collect.Sets;
69

7-
import org.apache.isis.core.integtestsupport.IntegrationTestAbstract2;
10+
import org.apache.isis.applib.ModuleAbstract;
11+
import org.apache.isis.core.integtestsupport.IntegrationTestAbstract3;
812

913
import org.isisaddons.module.fakedata.FakeDataModule;
1014
import org.isisaddons.module.fakedata.dom.FakeDataService;
1115

12-
import org.incode.domainapp.extended.module.fixtures.per_cpt.examples.alias.dom.AliasForDemoObject;
13-
import org.incode.domainapp.extended.module.fixtures.shared.ExampleDomDemoDomSubmodule;
14-
import org.incode.extended.integtests.examples.alias.app.AliasModuleAppManifest;
15-
16-
public abstract class AliasModuleIntegTestAbstract extends IntegrationTestAbstract2 {
17-
18-
@BeforeClass
19-
public static void initClass() {
20-
bootstrapUsing(
21-
AliasModuleAppManifest.BUILDER.
22-
withAdditionalModules(
23-
ExampleDomDemoDomSubmodule.class,
24-
AliasModuleIntegTestAbstract.class,
25-
FakeDataModule.class
26-
)
27-
.build());
16+
import org.incode.extended.integtests.examples.alias.dom.alias.AliasModuleIntegrationSubmodule;
17+
import org.incode.extended.integtests.examples.alias.dom.alias.dom.AliasForDemoObject;
18+
19+
public abstract class AliasModuleIntegTestAbstract extends IntegrationTestAbstract3 {
20+
21+
@XmlRootElement(name = "module")
22+
public static class MyModule extends AliasModuleIntegrationSubmodule {
23+
@Override
24+
public Set<org.apache.isis.applib.Module> getDependencies() {
25+
final Set<org.apache.isis.applib.Module> dependencies = super.getDependencies();
26+
dependencies.addAll(Sets.newHashSet(
27+
new FakeDataModule()
28+
));
29+
return dependencies;
30+
// TODO: reinstate if we ever bring in alias. For now, having to comment out this subscriber because it is causing the 'isis.reflector.validator.checkModuleExtent' check to fail.
31+
// .withAdditionalServices(T_addAlias_IntegTest.DomainEventIntegTest.Subscriber.class)
32+
}
33+
}
34+
35+
public static ModuleAbstract module() {
36+
return new MyModule();
37+
}
38+
39+
protected AliasModuleIntegTestAbstract() {
40+
super(module());
2841
}
2942

3043
@Inject
@@ -41,5 +54,4 @@ protected AliasForDemoObject._aliases mixinAliases(final Object aliased) {
4154
return mixin(AliasForDemoObject._aliases.class, aliased);
4255
}
4356

44-
4557
}

ex/app/extended/integtests/src/test/java/org/incode/extended/integtests/examples/alias/app/AliasModuleAppManifest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import org.apache.isis.applib.AppManifestAbstract;
44

5-
import org.incode.domainapp.extended.module.fixtures.per_cpt.examples.alias.ExampleDomModuleAliasModule;
65
import org.incode.example.alias.dom.AliasModule;
7-
6+
import org.incode.extended.integtests.examples.alias.dom.alias.AliasModuleIntegrationSubmodule;
87

98
/**
109
* Bootstrap the application.
@@ -13,7 +12,7 @@ public class AliasModuleAppManifest extends AppManifestAbstract {
1312

1413
public static final Builder BUILDER = Builder.forModules(
1514
AliasModule.class, // dom module
16-
ExampleDomModuleAliasModule.class,
15+
AliasModuleIntegrationSubmodule.class,
1716
AliasAppModule.class
1817
);
1918

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.incode.extended.integtests.examples.alias.demo;
2+
3+
import javax.xml.bind.annotation.XmlRootElement;
4+
5+
import org.apache.isis.applib.ModuleAbstract;
6+
import org.apache.isis.applib.fixturescripts.FixtureScript;
7+
import org.apache.isis.applib.fixturescripts.teardown.TeardownFixtureAbstract2;
8+
9+
import org.incode.extended.integtests.examples.alias.demo.dom.demo.DemoObject;
10+
11+
@XmlRootElement(name = "module")
12+
public class AliasModuleDemoDomSubmodule extends ModuleAbstract {
13+
14+
@Override
15+
public FixtureScript getTeardownFixture() {
16+
return new TeardownFixtureAbstract2() {
17+
18+
@Override
19+
protected void execute(final FixtureScript.ExecutionContext executionContext) {
20+
deleteFrom(DemoObject.class);
21+
}
22+
};
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.incode.extended.integtests.examples.alias.demo;
2+
3+
import org.apache.isis.applib.AppManifestAbstract;
4+
5+
/**
6+
* Used by <code>isis-maven-plugin</code> (build-time validation of the module) and also by module-level integration tests.
7+
*/
8+
public class ExampleDomDemoManifest extends AppManifestAbstract {
9+
10+
public static final Builder BUILDER = Builder.forModules(
11+
AliasModuleDemoDomSubmodule.class
12+
);
13+
14+
public ExampleDomDemoManifest() {
15+
super(BUILDER);
16+
}
17+
18+
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.incode.extended.integtests.examples.alias.demo.dom.demo;
2+
3+
import javax.jdo.annotations.IdGeneratorStrategy;
4+
import javax.jdo.annotations.IdentityType;
5+
import javax.jdo.annotations.VersionStrategy;
6+
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
7+
8+
import com.google.common.collect.Ordering;
9+
10+
import org.apache.isis.applib.annotation.BookmarkPolicy;
11+
import org.apache.isis.applib.annotation.DomainObject;
12+
import org.apache.isis.applib.annotation.DomainObjectLayout;
13+
import org.apache.isis.applib.annotation.Editing;
14+
import org.apache.isis.applib.annotation.Title;
15+
import org.apache.isis.applib.util.ObjectContracts;
16+
import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
17+
18+
import lombok.AllArgsConstructor;
19+
import lombok.Builder;
20+
import lombok.Getter;
21+
import lombok.Setter;
22+
23+
@javax.jdo.annotations.PersistenceCapable(
24+
identityType=IdentityType.DATASTORE,
25+
schema="exampleDemoAlias"
26+
)
27+
@javax.jdo.annotations.DatastoreIdentity(strategy= IdGeneratorStrategy.IDENTITY, column = "id")
28+
@javax.jdo.annotations.Version(strategy=VersionStrategy.VERSION_NUMBER, column = "version")
29+
@javax.jdo.annotations.Queries({
30+
@javax.jdo.annotations.Query(
31+
name = "findByName", language = "JDOQL",
32+
value = "SELECT "
33+
+ "FROM org.incode.extended.integtests.examples.alias.demo.dom.demo.DemoObject "
34+
+ "WHERE name.indexOf(:name) >= 0 ")
35+
})
36+
37+
@DomainObject(editing = Editing.DISABLED )
38+
@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT )
39+
@AllArgsConstructor
40+
@Builder
41+
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
42+
public class DemoObject implements Comparable<DemoObject> {
43+
44+
45+
@javax.jdo.annotations.Column(allowsNull="false")
46+
@Title(sequence="1")
47+
@Getter @Setter
48+
private String name;
49+
50+
51+
@Override
52+
public String toString() {
53+
return ObjectContracts.toString(this, "name");
54+
}
55+
56+
@Override
57+
public int compareTo(final DemoObject other) {
58+
return Ordering.natural().onResultOf(DemoObject::getName).compare(this, other);
59+
}
60+
61+
62+
// required by DemoObjectData#findUsing
63+
@Override
64+
public boolean equals(final Object o) {
65+
return ObjectContracts.equals(this,o, "name");
66+
}
67+
68+
@Override
69+
public int hashCode() {
70+
return ObjectContracts.hashCode(this, "name");
71+
}
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.incode.extended.integtests.examples.alias.demo.dom.demo;
2+
3+
import java.util.List;
4+
5+
import org.apache.isis.applib.annotation.Action;
6+
import org.apache.isis.applib.annotation.ActionLayout;
7+
import org.apache.isis.applib.annotation.BookmarkPolicy;
8+
import org.apache.isis.applib.annotation.DomainService;
9+
import org.apache.isis.applib.annotation.DomainServiceLayout;
10+
import org.apache.isis.applib.annotation.MemberOrder;
11+
import org.apache.isis.applib.annotation.NatureOfService;
12+
import org.apache.isis.applib.annotation.SemanticsOf;
13+
14+
@DomainService(
15+
nature = NatureOfService.VIEW_MENU_ONLY,
16+
objectType = "exampleDemoAlias.DemoObjectMenu"
17+
)
18+
@DomainServiceLayout(
19+
named = "Demo",
20+
menuOrder = "10.1"
21+
)
22+
public class DemoObjectMenu {
23+
24+
25+
@Action(semantics = SemanticsOf.SAFE)
26+
@ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
27+
@MemberOrder(sequence = "1")
28+
public List<DemoObject> listAllDemoObjects() {
29+
return repository.listAll();
30+
}
31+
32+
33+
@MemberOrder(sequence = "2")
34+
public DemoObject createDemoObject(final String name) {
35+
return repository.create(name);
36+
}
37+
38+
@MemberOrder(sequence = "3")
39+
public List<DemoObject> findDemoObjectByName(final String name) {
40+
return repository.findByName(name);
41+
}
42+
43+
@javax.inject.Inject
44+
DemoObjectRepository repository;
45+
46+
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.incode.extended.integtests.examples.alias.demo.dom.demo;
2+
3+
import java.util.List;
4+
5+
import org.apache.isis.applib.annotation.DomainService;
6+
import org.apache.isis.applib.annotation.NatureOfService;
7+
import org.apache.isis.applib.query.QueryDefault;
8+
import org.apache.isis.applib.services.registry.ServiceRegistry2;
9+
import org.apache.isis.applib.services.repository.RepositoryService;
10+
11+
@DomainService(
12+
nature = NatureOfService.DOMAIN,
13+
repositoryFor = DemoObject.class
14+
)
15+
public class DemoObjectRepository {
16+
17+
public List<DemoObject> listAll() {
18+
return repositoryService.allInstances(DemoObject.class);
19+
}
20+
21+
public List<DemoObject> findByName(final String name) {
22+
return repositoryService.allMatches(
23+
new QueryDefault<>(
24+
DemoObject.class,
25+
"findByName",
26+
"name", name));
27+
}
28+
29+
public DemoObject create(final String name) {
30+
final DemoObject object = new DemoObject(name);
31+
serviceRegistry.injectServicesInto(object);
32+
repositoryService.persist(object);
33+
return object;
34+
}
35+
36+
@javax.inject.Inject
37+
RepositoryService repositoryService;
38+
@javax.inject.Inject
39+
ServiceRegistry2 serviceRegistry;
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.incode.extended.integtests.examples.alias.demo.fixture.data;
2+
3+
import org.apache.isis.applib.annotation.Programmatic;
4+
import org.apache.isis.applib.services.registry.ServiceRegistry2;
5+
6+
import org.incode.module.fixturesupport.dom.data.DemoData;
7+
import org.incode.module.fixturesupport.dom.data.DemoDataPersistAbstract;
8+
import org.incode.extended.integtests.examples.alias.demo.dom.demo.DemoObject;
9+
10+
import lombok.AllArgsConstructor;
11+
import lombok.Getter;
12+
import lombok.experimental.Accessors;
13+
14+
@AllArgsConstructor
15+
@Getter
16+
@Accessors(chain = true)
17+
public enum DemoObjectData implements DemoData<DemoObjectData, DemoObject> {
18+
19+
Foo("Foo"),
20+
Bar("Bar"),
21+
Baz("Baz"),
22+
Foz("Foz"),
23+
;
24+
25+
private final String name;
26+
27+
@Programmatic
28+
public DemoObject asDomainObject() {
29+
return DemoObject.builder()
30+
.name(name)
31+
.build();
32+
}
33+
34+
@Programmatic
35+
public DemoObject persistUsing(final ServiceRegistry2 serviceRegistry) {
36+
return Util.persist(this, serviceRegistry);
37+
}
38+
39+
@Programmatic
40+
public DemoObject findUsing(final ServiceRegistry2 serviceRegistry) {
41+
return Util.firstMatch(this, serviceRegistry);
42+
}
43+
44+
public static class PersistScript extends DemoDataPersistAbstract<PersistScript, DemoObjectData, DemoObject> {
45+
public PersistScript() {
46+
super(DemoObjectData.class);
47+
}
48+
}
49+
50+
}

0 commit comments

Comments
 (0)