#91 Added skeleton for naked-objects example using Apache Isis SimpleApp archetype

This commit is contained in:
Ilkka Seppala 2015-07-13 15:19:16 +03:00
parent aa491b2458
commit 5337ecdc35
62 changed files with 5304 additions and 6 deletions

2
.gitignore vendored
View File

@ -11,4 +11,4 @@ target
.idea
*.iml
*.swp
datanucleus.log

51
naked-objects/.gitattributes vendored Normal file
View File

@ -0,0 +1,51 @@
#
#
# text files are normalized (convert crlf => lf)
# binary files are not normalized (binary is a macro for -text -diff)
#
#
# Unless otherwise stated, assume text
* text=auto
*.java text diff=java
*.html text diff=html
*.xhtml text diff=html
*.xml text
*.txt text
*.jar binary
*.so binary
*.dll binary
# images
*.jpg binary
*.jpeg binary
*.png binary
*.pdn binary
*.pdn binary
*.cs text diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

42
naked-objects/.gitignore vendored Normal file
View File

@ -0,0 +1,42 @@
*~
*.swp
*.class
bin/
target/
target-ide/
logs/
.settings/
.project
.classpath
.idea
*.iml
JArchitectOut/
*.jdproj
neo4j_DB/
# log files
datanucleus.log
isis.log
i18n-po.log
hs_err_pid*.log
# Package Files #
*.jar
*.war
*.ear
dependency-reduced-pom.xml
pom.xml.tag
pom.xml.next
pom.xml.releaseBackup
pom.xml.versionsBackup
.clover/
*.jdproj
JArchitectOut/
rebel.xml
/translations.pot

View File

@ -0,0 +1,41 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# LOG4J Configuration
# ===================
# Basic logging goes to "datanucleus.log"
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=datanucleus.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
#log4j.appender.A1.Threshold=INFO
# Categories
# Each category can be set to a "level", and to direct to an appender
# Default to DEBUG level for all DataNucleus categories
log4j.logger.DataNucleus = DEBUG, A1
log4j.category.com.mchange.v2.c3p0=INFO, A1
log4j.category.com.mchange.v2.resourcepool=INFO, A1
log4j.category.org.logicalcobwebs.proxool=INFO,A1
# Hbase libs logging
log4j.category.org.apache.hadoop=INFO,A1
log4j.category.org.apache.zookeeper=INFO,A1

194
naked-objects/dom/pom.xml Normal file
View File

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iluwatar</groupId>
<artifactId>naked-objects</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>naked-objects-dom</artifactId>
<name>Simple App DOM</name>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-applib</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
<scope>test</scope>
</dependency>
<!-- Bytecode libraries (for mocking) -->
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>enhance</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<datanucleus-maven-plugin.version>4.0.0-release</datanucleus-maven-plugin.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-maven-plugin</artifactId>
<versionRange>[${datanucleus-maven-plugin.version},)</versionRange>
<goals>
<goal>enhance</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-maven-plugin</artifactId>
<version>${datanucleus-maven-plugin.version}</version>
<configuration>
<fork>false</fork>
<log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
<verbose>true</verbose>
<props>${basedir}/datanucleus.properties</props>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-jodatime</artifactId>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>isis-validate</id>
<activation>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.isis.tool</groupId>
<artifactId>isis-maven-plugin</artifactId>
<version>1.9.0-SNAPSHOT</version>
<configuration>
<isisConfigDir>../webapp/src/main/webapp/WEB-INF</isisConfigDir>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp-dom</artifactId>
<version>1.9.0-SNAPSHOT</version>
</dependency>
<!--
... workaround to avoid conflict with plexus-default
(not sure why exclusions in the isis-maven-plugin aren't sufficient, though ...
-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="simple">
</persistence-unit>
</persistence>

View File

@ -0,0 +1,51 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.dom.app.homepage;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.HomePage;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.SemanticsOf;
@DomainService(
nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY // trick to suppress the actions from the top-level menu
)
public class HomePageService {
//region > homePage (action)
@Action(
semantics = SemanticsOf.SAFE
)
@HomePage
public HomePageViewModel homePage() {
return container.injectServicesInto(new HomePageViewModel());
}
//endregion
//region > injected services
@javax.inject.Inject
DomainObjectContainer container;
//endregion
}

View File

@ -0,0 +1,50 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.dom.app.homepage;
import java.util.List;
import org.apache.isis.applib.annotation.ViewModel;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.dom.modules.simple.SimpleObjects;
@ViewModel
public class HomePageViewModel {
//region > title
public String title() {
return getObjects().size() + " objects";
}
//endregion
//region > object (collection)
@org.apache.isis.applib.annotation.HomePage
public List<SimpleObject> getObjects() {
return simpleObjects.listAll();
}
//endregion
//region > injected services
@javax.inject.Inject
SimpleObjects simpleObjects;
//endregion
}

View File

@ -0,0 +1,43 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
{
"columns": [
{
"span": 0,
"memberGroups": {}
},
{
"span": 0,
"memberGroups": {}
},
{
"span": 0,
"memberGroups": {}
},
{
"span": 12,
"collections": {
"objects": {
"collectionLayout": {
"render": "EAGERLY"
}
}
}
}
],
"actions": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

View File

@ -0,0 +1,149 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.dom.modules.simple;
import javax.jdo.JDOHelper;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.VersionStrategy;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Title;
import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
import org.apache.isis.applib.services.i18n.TranslatableString;
import org.apache.isis.applib.util.ObjectContracts;
@javax.jdo.annotations.PersistenceCapable(
identityType=IdentityType.DATASTORE,
schema = "simple",
table = "SimpleObject"
)
@javax.jdo.annotations.DatastoreIdentity(
strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
column="id")
@javax.jdo.annotations.Version(
strategy=VersionStrategy.VERSION_NUMBER,
column="version")
@javax.jdo.annotations.Queries({
@javax.jdo.annotations.Query(
name = "find", language = "JDOQL",
value = "SELECT "
+ "FROM domainapp.dom.modules.simple.SimpleObject "),
@javax.jdo.annotations.Query(
name = "findByName", language = "JDOQL",
value = "SELECT "
+ "FROM domainapp.dom.modules.simple.SimpleObject "
+ "WHERE name.indexOf(:name) >= 0 ")
})
@javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
@DomainObject
@DomainObjectLayout(
bookmarking = BookmarkPolicy.AS_ROOT,
cssClassFa = "fa-flag"
)
public class SimpleObject implements Comparable<SimpleObject> {
//region > identificatiom
public TranslatableString title() {
return TranslatableString.tr("Object: {name}", "name", getName());
}
//endregion
//region > name (property)
private String name;
@javax.jdo.annotations.Column(allowsNull="false", length = 40)
@Title(sequence="1")
@Property(
editing = Editing.DISABLED
)
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
// endregion
//region > updateName (action)
public static class UpdateNameDomainEvent extends ActionDomainEvent<SimpleObject> {
public UpdateNameDomainEvent(final SimpleObject source, final Identifier identifier, final Object... arguments) {
super(source, identifier, arguments);
}
}
@Action(
domainEvent = UpdateNameDomainEvent.class
)
public SimpleObject updateName(
@Parameter(maxLength = 40)
@ParameterLayout(named = "New name")
final String name) {
setName(name);
return this;
}
public String default0UpdateName() {
return getName();
}
public TranslatableString validateUpdateName(final String name) {
return name.contains("!")? TranslatableString.tr("Exclamation mark is not allowed"): null;
}
//endregion
//region > version (derived property)
public Long getVersionSequence() {
return (Long) JDOHelper.getVersion(this);
}
//endregion
//region > compareTo
@Override
public int compareTo(final SimpleObject other) {
return ObjectContracts.compare(this, other, "name");
}
//endregion
//region > injected services
@javax.inject.Inject
@SuppressWarnings("unused")
private DomainObjectContainer container;
//endregion
}

View File

@ -0,0 +1,56 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
{
"columns": [
{
"span": 6,
"memberGroups": {
"General": {
"members": {
"name": {
"actions": {
"updateName": {
"actionLayout": {
"position": "BOTTOM"
}
}
}
},
"versionSequence": {
"propertyLayout": {
"name": "version"
}
}
}
}
}
},
{
"span": 0,
"memberGroups": {}
},
{
"span": 0,
"memberGroups": {}
},
{
"span": 6,
"collections": {}
}
],
"actions": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

View File

@ -0,0 +1,107 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.dom.modules.simple;
import java.util.List;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
import org.apache.isis.applib.services.i18n.TranslatableString;
@DomainService(repositoryFor = SimpleObject.class)
@DomainServiceLayout(menuOrder = "10")
public class SimpleObjects {
//region > title
public TranslatableString title() {
return TranslatableString.tr("Simple Objects");
}
//endregion
//region > listAll (action)
@Action(
semantics = SemanticsOf.SAFE
)
@ActionLayout(
bookmarking = BookmarkPolicy.AS_ROOT
)
@MemberOrder(sequence = "1")
public List<SimpleObject> listAll() {
return container.allInstances(SimpleObject.class);
}
//endregion
//region > findByName (action)
@Action(
semantics = SemanticsOf.SAFE
)
@ActionLayout(
bookmarking = BookmarkPolicy.AS_ROOT
)
@MemberOrder(sequence = "2")
public List<SimpleObject> findByName(
@ParameterLayout(named="Name")
final String name
) {
return container.allMatches(
new QueryDefault<>(
SimpleObject.class,
"findByName",
"name", name));
}
//endregion
//region > create (action)
public static class CreateDomainEvent extends ActionDomainEvent<SimpleObjects> {
public CreateDomainEvent(final SimpleObjects source, final Identifier identifier, final Object... arguments) {
super(source, identifier, arguments);
}
}
@Action(
domainEvent = CreateDomainEvent.class
)
@MemberOrder(sequence = "3")
public SimpleObject create(
final @ParameterLayout(named="Name") String name) {
final SimpleObject obj = container.newTransientInstance(SimpleObject.class);
obj.setName(name);
container.persistIfNotAlready(obj);
return obj;
}
//endregion
//region > injected services
@javax.inject.Inject
DomainObjectContainer container;
//endregion
}

View File

@ -0,0 +1,49 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.dom.modules.simple;
import org.junit.Before;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class SimpleObjectTest {
SimpleObject simpleObject;
@Before
public void setUp() throws Exception {
simpleObject = new SimpleObject();
}
public static class Name extends SimpleObjectTest {
@Test
public void happyCase() throws Exception {
// given
String name = "Foobar";
assertThat(simpleObject.getName()).isNull();
// when
simpleObject.setName(name);
// then
assertThat(simpleObject.getName()).isEqualTo(name);
}
}
}

View File

@ -0,0 +1,104 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.dom.modules.simple;
import java.util.List;
import com.google.common.collect.Lists;
import org.jmock.Expectations;
import org.jmock.Sequence;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
import static org.assertj.core.api.Assertions.assertThat;
public class SimpleObjectsTest {
@Rule
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
@Mock
DomainObjectContainer mockContainer;
SimpleObjects simpleObjects;
@Before
public void setUp() throws Exception {
simpleObjects = new SimpleObjects();
simpleObjects.container = mockContainer;
}
public static class Create extends SimpleObjectsTest {
@Test
public void happyCase() throws Exception {
// given
final SimpleObject simpleObject = new SimpleObject();
final Sequence seq = context.sequence("create");
context.checking(new Expectations() {
{
oneOf(mockContainer).newTransientInstance(SimpleObject.class);
inSequence(seq);
will(returnValue(simpleObject));
oneOf(mockContainer).persistIfNotAlready(simpleObject);
inSequence(seq);
}
});
// when
final SimpleObject obj = simpleObjects.create("Foobar");
// then
assertThat(obj).isEqualTo(simpleObject);
assertThat(obj.getName()).isEqualTo("Foobar");
}
}
public static class ListAll extends SimpleObjectsTest {
@Test
public void happyCase() throws Exception {
// given
final List<SimpleObject> all = Lists.newArrayList();
context.checking(new Expectations() {
{
oneOf(mockContainer).allInstances(SimpleObject.class);
will(returnValue(all));
}
});
// when
final List<SimpleObject> list = simpleObjects.listAll();
// then
assertThat(list).isEqualTo(all);
}
}
}

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iluwatar</groupId>
<artifactId>naked-objects</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>naked-objects-fixture</artifactId>
<name>Simple App Fixtures</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-dom</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,76 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.fixture;
import java.util.List;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.fixturescripts.FixtureResult;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.applib.fixturescripts.FixtureScripts;
import domainapp.fixture.scenarios.RecreateSimpleObjects;
/**
* Enables fixtures to be installed from the application.
*/
@DomainService
@DomainServiceLayout(
named="Prototyping",
menuBar = DomainServiceLayout.MenuBar.SECONDARY,
menuOrder = "500"
)
public class DomainAppFixturesService extends FixtureScripts {
public DomainAppFixturesService() {
super(DomainAppFixturesService.class.getPackage().getName(), MultipleExecutionStrategy.EXECUTE);
}
@Override
public FixtureScript default0RunFixtureScript() {
return findFixtureScriptFor(RecreateSimpleObjects.class);
}
@Override
public List<FixtureScript> choices0RunFixtureScript() {
return super.choices0RunFixtureScript();
}
// //////////////////////////////////////
@Action(
restrictTo = RestrictTo.PROTOTYPING
)
@ActionLayout(
cssClassFa="fa fa-refresh"
)
@MemberOrder(sequence="20")
public Object recreateObjectsAndReturnFirst() {
final List<FixtureResult> run = findFixtureScriptFor(RecreateSimpleObjects.class).run(null);
return run.get(0).getObject();
}
}

View File

@ -0,0 +1,71 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.fixture.modules.simple;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.dom.modules.simple.SimpleObjects;
public class SimpleObjectCreate extends FixtureScript {
//region > name (input)
private String name;
/**
* Name of the object (required)
*/
public String getName() {
return name;
}
public SimpleObjectCreate setName(final String name) {
this.name = name;
return this;
}
//endregion
//region > simpleObject (output)
private SimpleObject simpleObject;
/**
* The created simple object (output).
* @return
*/
public SimpleObject getSimpleObject() {
return simpleObject;
}
//endregion
@Override
protected void execute(final ExecutionContext ec) {
String name = checkParam("name", ec, String.class);
this.simpleObject = wrap(simpleObjects).create(name);
// also make available to UI
ec.addResult(this, simpleObject);
}
@javax.inject.Inject
private SimpleObjects simpleObjects;
}

View File

@ -0,0 +1,36 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.fixture.modules.simple;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.applib.services.jdosupport.IsisJdoSupport;
public class SimpleObjectsTearDown extends FixtureScript {
@Override
protected void execute(ExecutionContext executionContext) {
isisJdoSupport.executeUpdate("delete from simple.\"SimpleObject\"");
}
@javax.inject.Inject
private IsisJdoSupport isisJdoSupport;
}

View File

@ -0,0 +1,92 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.fixture.scenarios;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.google.common.collect.Lists;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.fixture.modules.simple.SimpleObjectCreate;
import domainapp.fixture.modules.simple.SimpleObjectsTearDown;
public class RecreateSimpleObjects extends FixtureScript {
public final List<String> NAMES = Collections.unmodifiableList(Arrays.asList(
"Foo", "Bar", "Baz", "Frodo", "Froyo", "Fizz", "Bip", "Bop", "Bang", "Boo"));
public RecreateSimpleObjects() {
withDiscoverability(Discoverability.DISCOVERABLE);
}
//region > number (optional input)
private Integer number;
/**
* The number of objects to create, up to 10; optional, defaults to 3.
*/
public Integer getNumber() {
return number;
}
public RecreateSimpleObjects setNumber(final Integer number) {
this.number = number;
return this;
}
//endregion
//region > simpleObjects (output)
private final List<SimpleObject> simpleObjects = Lists.newArrayList();
/**
* The simpleobjects created by this fixture (output).
*/
public List<SimpleObject> getSimpleObjects() {
return simpleObjects;
}
//endregion
@Override
protected void execute(final ExecutionContext ec) {
// defaults
final int number = defaultParam("number", ec, 3);
// validate
if(number < 0 || number > NAMES.size()) {
throw new IllegalArgumentException(String.format("number must be in range [0,%d)", NAMES.size()));
}
//
// execute
//
ec.executeChild(this, new SimpleObjectsTearDown());
for (int i = 0; i < number; i++) {
final SimpleObjectCreate fs = new SimpleObjectCreate().setName(NAMES.get(i));
ec.executeChild(this, fs.getName(), fs);
simpleObjects.add(fs.getSimpleObject());
}
}
}

1
naked-objects/integtests/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/translations.pot

View File

@ -0,0 +1,111 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# Isis uses log4j is used to provide system logging
#
log4j.rootCategory=INFO, Console
# The console appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} [%-20c{1} %-10t %-5p] %m%n
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.file=isis.log
log4j.appender.File.append=false
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p] %m%n
log4j.appender.translations-po=org.apache.log4j.FileAppender
log4j.appender.translations-po.File=./translations.pot
log4j.appender.translations-po.Append=false
log4j.appender.translations-po.layout=org.apache.log4j.PatternLayout
log4j.appender.translations-po.layout.ConversionPattern=%m%n
! turn on the internal log4j debugging flag so we can see what it is doing
#log4j.debug=true
# DataNucleus
# the first two log the DML and DDL (if set to DEBUG)
log4j.logger.DataNucleus.Datastore.Native=WARN, Console
log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console
# the remainder can probably be left to WARN
log4j.logger.DataNucleus.Persistence=WARN, Console
log4j.logger.DataNucleus.Transaction=WARN, Console
log4j.logger.DataNucleus.Connection=WARN, Console
log4j.logger.DataNucleus.Query=WARN, Console
log4j.logger.DataNucleus.Cache=WARN, Console
log4j.logger.DataNucleus.MetaData=WARN, Console
log4j.logger.DataNucleus.Datastore=WARN, Console
log4j.logger.DataNucleus.Datastore.Persist=WARN, Console
log4j.logger.DataNucleus.Datastore.Retrieve=WARN, Console
log4j.logger.DataNucleus.General=WARN, Console
log4j.logger.DataNucleus.Lifecycle=WARN, Console
log4j.logger.DataNucleus.ValueGeneration=WARN, Console
log4j.logger.DataNucleus.Enhancer=WARN, Console
log4j.logger.DataNucleus.SchemaTool=ERROR, Console
log4j.logger.DataNucleus.JDO=WARN, Console
log4j.logger.DataNucleus.JPA=ERROR, Console
log4j.logger.DataNucleus.JCA=WARN, Console
log4j.logger.DataNucleus.IDE=ERROR, Console
log4j.additivity.DataNucleus.Datastore.Native=false
log4j.additivity.DataNucleus.Datastore.Schema=false
log4j.additivity.DataNucleus.Datastore.Persistence=false
log4j.additivity.DataNucleus.Datastore.Transaction=false
log4j.additivity.DataNucleus.Datastore.Connection=false
log4j.additivity.DataNucleus.Datastore.Query=false
log4j.additivity.DataNucleus.Datastore.Cache=false
log4j.additivity.DataNucleus.Datastore.MetaData=false
log4j.additivity.DataNucleus.Datastore.Datastore=false
log4j.additivity.DataNucleus.Datastore.Datastore.Persist=false
log4j.additivity.DataNucleus.Datastore.Datastore.Retrieve=false
log4j.additivity.DataNucleus.Datastore.General=false
log4j.additivity.DataNucleus.Datastore.Lifecycle=false
log4j.additivity.DataNucleus.Datastore.ValueGeneration=false
log4j.additivity.DataNucleus.Datastore.Enhancer=false
log4j.additivity.DataNucleus.Datastore.SchemaTool=false
log4j.additivity.DataNucleus.Datastore.JDO=false
log4j.additivity.DataNucleus.Datastore.JPA=false
log4j.additivity.DataNucleus.Datastore.JCA=false
log4j.additivity.DataNucleus.Datastore.IDE=false
# if using log4jdbc-remix as JDBC driver
#log4j.logger.jdbc.sqlonly=DEBUG, sql, Console
#log4j.additivity.jdbc.sqlonly=false
#log4j.logger.jdbc.resultsettable=DEBUG, jdbc, Console
#log4j.additivity.jdbc.resultsettable=false
#log4j.logger.jdbc.audit=WARN,jdbc, Console
#log4j.additivity.jdbc.audit=false
#log4j.logger.jdbc.resultset=WARN,jdbc
#log4j.additivity.jdbc.resultset=false
#log4j.logger.jdbc.sqltiming=WARN,sqltiming
#log4j.additivity.jdbc.sqltiming=false
#log4j.logger.jdbc.connection=FATAL,connection
#log4j.additivity.jdbc.connection=false
log4j.logger.org.apache.isis.core.runtime.services.i18n.po.PoWriter=INFO,translations-po
log4j.additivity.org.apache.isis.core.runtime.services.i18n.po.PotWriter=false

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iluwatar</groupId>
<artifactId>naked-objects</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>naked-objects-integtests</artifactId>
<name>Simple App Integration Tests</name>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
</build>
<dependencies>
<!-- other modules in this project -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-fixture</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-integtestsupport</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-specsupport</artifactId>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<!--
uncomment to enable enhanced cucumber-jvm reporting
http://www.masterthought.net/section/cucumber-reporting
<dependency>
<groupId>com.googlecode.totallylazy</groupId>
<artifactId>totallylazy</artifactId>
<version>991</version>
</dependency>
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>cucumber-reporting</artifactId>
<version>0.0.21</version>
</dependency>
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>maven-cucumber-reporting</artifactId>
<version>0.0.4</version>
</dependency>
-->
</dependencies>
<!--
uncomment for enhanced cucumber-jvm reporting
http://www.masterthought.net/section/cucumber-reporting
<repositories>
<repository>
<id>repo.bodar.com</id>
<url>http://repo.bodar.com</url>
</repository>
</repositories>
-->
</project>

View File

@ -0,0 +1,54 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.integtests.bootstrap;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.integtestsupport.IsisSystemForTest;
import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
import org.apache.isis.objectstore.jdo.datanucleus.IsisConfigurationForJdoIntegTests;
public class SimpleAppSystemInitializer {
public static void initIsft() {
IsisSystemForTest isft = IsisSystemForTest.getElseNull();
if(isft == null) {
isft = new SimpleAppSystemBuilder().build().setUpSystem();
IsisSystemForTest.set(isft);
}
}
private static class SimpleAppSystemBuilder extends IsisSystemForTest.Builder {
public SimpleAppSystemBuilder() {
withLoggingAt(org.apache.log4j.Level.INFO);
with(testConfiguration());
with(new DataNucleusPersistenceMechanismInstaller());
// services annotated with @DomainService
withServicesIn( "domainapp" );
}
private static IsisConfiguration testConfiguration() {
final IsisConfigurationForJdoIntegTests testConfiguration = new IsisConfigurationForJdoIntegTests();
testConfiguration.addRegisterEntitiesPackagePrefix("domainapp.dom.modules");
return testConfiguration;
}
}
}

View File

@ -0,0 +1,41 @@
/**
O * Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.integtests.specglue;
import org.apache.isis.core.specsupport.scenarios.ScenarioExecutionScope;
import org.apache.isis.core.specsupport.specs.CukeGlueAbstract;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import domainapp.integtests.bootstrap.SimpleAppSystemInitializer;
public class BootstrappingGlue extends CukeGlueAbstract {
@Before(value={"@integration"}, order=100)
public void beforeScenarioIntegrationScope() {
org.apache.log4j.PropertyConfigurator.configure("logging.properties");
SimpleAppSystemInitializer.initIsft();
before(ScenarioExecutionScope.INTEGRATION);
}
@After
public void afterScenario(cucumber.api.Scenario sc) {
assertMocksSatisfied();
after(sc);
}
}

View File

@ -0,0 +1,31 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.integtests.specglue;
import org.apache.isis.core.specsupport.specs.CukeGlueAbstract;
import cucumber.api.java.Before;
import domainapp.fixture.scenarios.RecreateSimpleObjects;
public class CatalogOfFixturesGlue extends CukeGlueAbstract {
@Before(value={"@integration", "@SimpleObjectsFixture"}, order=20000)
public void integrationFixtures() throws Throwable {
scenarioExecution().install(new RecreateSimpleObjects());
}
}

View File

@ -0,0 +1,50 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.integtests.specglue.modules.simple;
import java.util.List;
import java.util.UUID;
import org.apache.isis.core.specsupport.specs.CukeGlueAbstract;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.dom.modules.simple.SimpleObjects;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class SimpleObjectGlue extends CukeGlueAbstract {
@Given("^there are.* (\\d+) simple objects$")
public void there_are_N_simple_objects(int n) throws Throwable {
try {
final List<SimpleObject> findAll = service(SimpleObjects.class).listAll();
assertThat(findAll.size(), is(n));
putVar("list", "all", findAll);
} finally {
assertMocksSatisfied();
}
}
@When("^I create a new simple object$")
public void I_create_a_new_simple_object() throws Throwable {
service(SimpleObjects.class).create(UUID.randomUUID().toString());
}
}

View File

@ -0,0 +1,39 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 domainapp.integtests.specs;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
/**
* Runs scenarios in all <tt>.feature</tt> files (this package and any subpackages).
*/
@RunWith(Cucumber.class)
@CucumberOptions(
format = {
"html:target/cucumber-html-report"
,"json:target/cucumber.json"
},
glue={"classpath:domainapp.integtests.specglue"},
strict = true,
tags = { "~@backlog", "~@ignore" })
public class RunSpecs {
// intentionally empty
}

View File

@ -0,0 +1,26 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
@SimpleObjectsFixture
Feature: List and Create New Simple Objects
@integration
Scenario: Existing simple objects can be listed and new ones created
Given there are initially 3 simple objects
When I create a new simple object
Then there are 4 simple objects

View File

@ -0,0 +1,39 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.integtests.tests;
import org.junit.BeforeClass;
import org.apache.isis.core.integtestsupport.IntegrationTestAbstract;
import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration;
import domainapp.integtests.bootstrap.SimpleAppSystemInitializer;
public abstract class SimpleAppIntegTest extends IntegrationTestAbstract {
@BeforeClass
public static void initClass() {
org.apache.log4j.PropertyConfigurator.configure("logging.properties");
SimpleAppSystemInitializer.initIsft();
// instantiating will install onto ThreadLocal
new ScenarioExecutionForIntegration();
}
}

View File

@ -0,0 +1,121 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.integtests.tests.modules.simple;
import javax.inject.Inject;
import org.junit.Before;
import org.junit.Test;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.fixturescripts.FixtureScripts;
import org.apache.isis.applib.services.wrapper.DisabledException;
import org.apache.isis.applib.services.wrapper.InvalidException;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.fixture.scenarios.RecreateSimpleObjects;
import domainapp.integtests.tests.SimpleAppIntegTest;
import static org.assertj.core.api.Assertions.assertThat;
public class SimpleObjectIntegTest extends SimpleAppIntegTest {
@Inject
FixtureScripts fixtureScripts;
RecreateSimpleObjects fs;
SimpleObject simpleObjectPojo;
SimpleObject simpleObjectWrapped;
@Before
public void setUp() throws Exception {
// given
fs = new RecreateSimpleObjects().setNumber(1);
fixtureScripts.runFixtureScript(fs, null);
simpleObjectPojo = fs.getSimpleObjects().get(0);
assertThat(simpleObjectPojo).isNotNull();
simpleObjectWrapped = wrap(simpleObjectPojo);
}
public static class Name extends SimpleObjectIntegTest {
@Test
public void accessible() throws Exception {
// when
final String name = simpleObjectWrapped.getName();
// then
assertThat(name).isEqualTo(fs.NAMES.get(0));
}
@Test
public void cannotBeUpdatedDirectly() throws Exception {
// expect
expectedExceptions.expect(DisabledException.class);
// when
simpleObjectWrapped.setName("new name");
}
}
public static class UpdateName extends SimpleObjectIntegTest {
@Test
public void happyCase() throws Exception {
// when
simpleObjectWrapped.updateName("new name");
// then
assertThat(simpleObjectWrapped.getName()).isEqualTo("new name");
}
@Test
public void failsValidation() throws Exception {
// expect
expectedExceptions.expect(InvalidException.class);
expectedExceptions.expectMessage("Exclamation mark is not allowed");
// when
simpleObjectWrapped.updateName("new name!");
}
}
public static class Title extends SimpleObjectIntegTest {
@Inject
DomainObjectContainer container;
@Test
public void interpolatesName() throws Exception {
// given
final String name = simpleObjectWrapped.getName();
// when
final String title = container.titleOf(simpleObjectWrapped);
// then
assertThat(title).isEqualTo("Object: " + name);
}
}
}

View File

@ -0,0 +1,143 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.integtests.tests.modules.simple;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.List;
import javax.inject.Inject;
import com.google.common.base.Throwables;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.junit.Test;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.applib.fixturescripts.FixtureScripts;
import domainapp.dom.modules.simple.SimpleObject;
import domainapp.dom.modules.simple.SimpleObjects;
import domainapp.fixture.modules.simple.SimpleObjectsTearDown;
import domainapp.fixture.scenarios.RecreateSimpleObjects;
import domainapp.integtests.tests.SimpleAppIntegTest;
import static org.assertj.core.api.Assertions.assertThat;
public class SimpleObjectsIntegTest extends SimpleAppIntegTest {
@Inject
FixtureScripts fixtureScripts;
@Inject
SimpleObjects simpleObjects;
public static class ListAll extends SimpleObjectsIntegTest {
@Test
public void happyCase() throws Exception {
// given
RecreateSimpleObjects fs = new RecreateSimpleObjects();
fixtureScripts.runFixtureScript(fs, null);
nextTransaction();
// when
final List<SimpleObject> all = wrap(simpleObjects).listAll();
// then
assertThat(all).hasSize(fs.getSimpleObjects().size());
SimpleObject simpleObject = wrap(all.get(0));
assertThat(simpleObject.getName()).isEqualTo(fs.getSimpleObjects().get(0).getName());
}
@Test
public void whenNone() throws Exception {
// given
FixtureScript fs = new SimpleObjectsTearDown();
fixtureScripts.runFixtureScript(fs, null);
nextTransaction();
// when
final List<SimpleObject> all = wrap(simpleObjects).listAll();
// then
assertThat(all).hasSize(0);
}
}
public static class Create extends SimpleObjectsIntegTest {
@Test
public void happyCase() throws Exception {
// given
FixtureScript fs = new SimpleObjectsTearDown();
fixtureScripts.runFixtureScript(fs, null);
nextTransaction();
// when
wrap(simpleObjects).create("Faz");
// then
final List<SimpleObject> all = wrap(simpleObjects).listAll();
assertThat(all).hasSize(1);
}
@Test
public void whenAlreadyExists() throws Exception {
// given
FixtureScript fs = new SimpleObjectsTearDown();
fixtureScripts.runFixtureScript(fs, null);
nextTransaction();
wrap(simpleObjects).create("Faz");
nextTransaction();
// then
expectedExceptions.expectCause(causalChainContains(SQLIntegrityConstraintViolationException.class));
// when
wrap(simpleObjects).create("Faz");
nextTransaction();
}
private static Matcher<? extends Throwable> causalChainContains(final Class<?> cls) {
return new TypeSafeMatcher<Throwable>() {
@Override
protected boolean matchesSafely(Throwable item) {
final List<Throwable> causalChain = Throwables.getCausalChain(item);
for (Throwable throwable : causalChain) {
if(cls.isAssignableFrom(throwable.getClass())){
return true;
}
}
return false;
}
@Override
public void describeTo(Description description) {
description.appendText("exception with causal chain containing " + cls.getSimpleName());
}
};
}
}
}

400
naked-objects/pom.xml Normal file
View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId>
<version>1.1.0</version>
</parent>
<groupId>com.iluwatar</groupId>
<artifactId>naked-objects</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Simple App</name>
<packaging>pom</packaging>
<prerequisites>
<maven>3.0.4</maven>
</prerequisites>
<properties>
<isis.version>1.9.0-SNAPSHOT</isis.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<assertj-core.version>2.0.0</assertj-core.version>
</properties>
<repositories>
<repository>
<id>apache.snapshots</id>
<name>Apache Snapshots</name>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
</snapshots>
</repository>
<repository>
<id>Cloudbees snapshots</id>
<url>http://repository-estatio.forge.cloudbees.com/snapshot/</url>
<snapshots>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.2.1,)</version>
</requireMavenVersion>
<requireJavaVersion>
<version>[1.8.0,)</version>
</requireJavaVersion>
<requirePluginVersions>
<message>All plugin versions must be
defined!</message>
<banLatest>true</banLatest>
<banRelease>true</banRelease>
</requirePluginVersions>
<DependencyConvergence/>
</rules>
</configuration>
<executions>
<execution>
<id>validate-enforce</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-parameters</compilerArgument>
</configuration>
<executions>
<execution>
<id>source</id>
<phase>compile</phase>
</execution>
<execution>
<id>test</id>
<phase>test-compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*Test$*.java</include>
<include>**/*Test_*.java</include>
<include>**/*Spec*.java</include>
</includes>
<excludes>
<exclude>**/Test*.java</exclude>
<exclude>**/*ForTesting.java</exclude>
<exclude>**/*Abstract*.java</exclude>
</excludes>
<useFile>true</useFile>
<printSummary>true</printSummary>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.16</version>
<configuration>
<showSuccess>false</showSuccess>
</configuration>
<executions>
<execution>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- http://simplericity.com/2009/11/10/1257880778509.html -->
<plugin>
<groupId>org.simplericity.jettyconsole</groupId>
<artifactId>jetty-console-maven-plugin</artifactId>
<version>1.56</version>
</plugin>
<!-- Apache Release Audit Tool -->
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<version>0.10</version>
<configuration>
<addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
<excludeSubProjects>true</excludeSubProjects>
<excludes>
<exclude>**/target/**</exclude>
<exclude>**/target-ide/**</exclude>
<exclude>**/*.project</exclude>
<exclude>**/.classpath</exclude>
<exclude>**/.settings/**</exclude>
<exclude>**/*.launch</exclude>
<exclude>**/ide/eclipse/launch/**</exclude>
<exclude>**/ide/intellij/launch/**</exclude>
<exclude>src/site/resources/ide/eclipse/**</exclude>
<exclude>**/rebel.xml</exclude>
<exclude>**/*.gitignore</exclude>
<exclude>**/*.log</exclude>
<exclude>**/*.pdn</exclude>
<exclude>**/*.svg</exclude>
<exclude>**/*.json</exclude>
<exclude>**/*.min.js</exclude>
<exclude>**/*.js</exclude>
<exclude>**/translations.pot</exclude>
<exclude>**/translations*.po</exclude>
</excludes>
<licenses>
<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
<licenseFamilyCategory>AL2</licenseFamilyCategory>
<licenseFamilyName>Apache License 2.0</licenseFamilyName>
<notes/>
<patterns>
<pattern>Licensed to the Apache Software Foundation (ASF) under one</pattern>
</patterns>
</license>
<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
<licenseFamilyCategory>JQRY</licenseFamilyCategory>
<licenseFamilyName>MIT</licenseFamilyName>
<notes/>
<patterns>
<pattern>Dual licensed under the MIT or GPL Version 2 licenses.</pattern>
</patterns>
</license>
<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
<licenseFamilyCategory>JMOCK</licenseFamilyCategory>
<licenseFamilyName>JMock</licenseFamilyName>
<notes/>
<patterns>
<pattern>Copyright (c) 2000-2007, jMock.org</pattern>
</patterns>
</license>
<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
<licenseFamilyCategory>DOCBK</licenseFamilyCategory>
<licenseFamilyName>DocBook 4.5</licenseFamilyName>
<notes/>
<patterns>
<pattern>Permission to copy in any form is granted for use</pattern>
<pattern>Permission to use, copy, modify and distribute the DocBook DTD</pattern>
<pattern>is hereby granted in perpetuity, provided that the above copyright</pattern>
<pattern>This is the catalog data file for DocBook XML V4.5. It is provided as</pattern>
<pattern>XML Catalog data for DocBook XML V4.5</pattern>
<pattern>DocBook additional general entities V4.5</pattern>
<pattern>XML EXCHANGE TABLE MODEL DECLARATION MODULE</pattern>
</patterns>
</license>
<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
<licenseFamilyCategory>W3C</licenseFamilyCategory>
<licenseFamilyName>XHTML</licenseFamilyName>
<notes/>
<patterns>
<pattern>Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),</pattern>
</patterns>
</license>
</licenses>
<licenseFamilies>
<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
<familyName>Apache License 2.0</familyName>
</licenseFamily>
<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
<familyName>MIT</familyName>
</licenseFamily>
<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
<familyName>JMock</familyName>
</licenseFamily>
<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
<familyName>DocBook 4.5</familyName>
</licenseFamily>
<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
<familyName>XHTML</familyName>
</licenseFamily>
</licenseFamilies>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
<version>${isis.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
<version>${isis.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj-core.version}</version>
</dependency>
<!-- this project's own modules -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-dom</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-fixture</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-webapp</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<directory>target-ide</directory>
</build>
</profile>
</profiles>
<modules>
<module>dom</module>
<module>fixture</module>
<module>integtests</module>
<module>webapp</module>
</modules>
</project>

View File

@ -0,0 +1,8 @@
/SimpleApp-PROTOTYPE-jrebel.launch
/SimpleApp-PROTOTYPE-no-fixtures.launch
/SimpleApp-PROTOTYPE-with-fixtures.launch
/SimpleApp-SERVER-no-fixtures.launch
/SimpleApp-PROTOTYPE-jrebel.launch
/SimpleApp-PROTOTYPE-no-fixtures.launch
/SimpleApp-PROTOTYPE-with-fixtures.launch
/SimpleApp-SERVER-no-fixtures.launch

View File

@ -0,0 +1,2 @@
Copy into workspace\.idea\runConfigurations directory, and adjust file paths for Maven tasks.

View File

@ -0,0 +1,28 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="SimpleApp-PROTOTYPE" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="org.apache.isis.WebServer" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="--type SERVER_PROTOTYPE --port 8080" />
<option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="naked-objects-webapp" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method>
<option name="Make" enabled="false" />
<option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/naked-objects/dom/pom.xml" goal="datanucleus:enhance -o" />
</method>
</configuration>
</component>

View File

@ -0,0 +1,22 @@
<component name="ProjectRunConfigurationManager">
s <configuration default="false" name="SimpleApp (enhance only)" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="org.apache.isis.Dummy" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="naked-objects-webapp" />
<envs />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method>
<option name="Make" enabled="false" />
<option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/naked-objects/dom/pom.xml" goal="datanucleus:enhance -o" />
</method>
</configuration>
</component>

5
naked-objects/webapp/lib/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
#
# explicitly ignoring Microsoft JDBC4 jar
# (cannot redistribute, licensing)
#
sqljdbc4.jar

View File

@ -0,0 +1,352 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iluwatar</groupId>
<artifactId>naked-objects</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>naked-objects-webapp</artifactId>
<name>Simple App Webapp</name>
<description>This module runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
<packaging>war</packaging>
<properties>
<siteBaseDir>..</siteBaseDir>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
<!-- mvn package -->
<plugin>
<groupId>org.simplericity.jettyconsole</groupId>
<artifactId>jetty-console-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>createconsole</goal>
</goals>
<configuration>
<backgroundImage>${basedir}/src/main/jettyconsole/isis-banner.png</backgroundImage>
<destinationFile>${project.build.directory}/${project.build.finalName}-jetty-console.jar</destinationFile>
</configuration>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>maven-version</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>simpleapp</warName>
<archive>
<manifest>
<addClasspath>false</addClasspath>
</manifest>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
<Build-Host>${agent.name}</Build-Host>
<Build-User>${user.name}</Build-User>
<Build-Maven>Maven ${maven.version}</Build-Maven>
<Build-Java>${java.version}</Build-Java>
<Build-OS>${os.name}</Build-OS>
<Build-Label>${project.version}</Build-Label>
</manifestEntries>
</archive>
<packagingExcludes>WEB-INF/lib/isis-core-webserver*.jar,
WEB-INF/lib/javax.servlet-api-*.jar,
WEB-INF/lib/javax.websocket-api-*.jar,
WEB-INF/lib/jetty-all-*.jar</packagingExcludes>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>[1.5,)</versionRange>
<goals>
<goal>maven-version</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<!-- other modules in this project -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-dom</artifactId>
<exclusions>
<exclusion>
<!-- so don't pick up transitive dependency to asm 4.0.0 -->
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>naked-objects-fixture</artifactId>
<exclusions>
<exclusion>
<!-- so don't pick up transitive dependency to asm 4.0.0 -->
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- other isis components -->
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
</dependency>
<!-- isis core -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security</artifactId>
</dependency>
<!-- to run using WebServer (optional) -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-webserver</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
</dependency>
<!--
JDBC drivers
(for jdo objectstore)
-->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<!--
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
-->
<!--
mvn install:install-file -Dfile=sqljdbc4.jar \
-DgroupId=com.microsoft.sqlserver \
-DartifactId=jdbc \
-Dversion=4.0 \
-Dpackaging=jar
-->
<!--
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
-->
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<profiles>
<profile>
<id>self-host</id>
<build>
<plugins>
<!--
mvn -P self-host antrun:run
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<tasks>
<exec executable="java" failonerror="true">
<arg value="-jar" />
<arg value="${project.build.directory}/${project.build.finalName}-jetty-console.jar" />
</exec>
</tasks>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>intellij</id>
<activation>
<property>
<name>idea.version</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
<!--
Use 'compile' so can run o.a.i.WebServer from within IntelliJ;
can rely on servlet container to ignore this in war file
-->
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>jrebel</id>
<properties>
<!-- as used in the rebel.xml in the dom project -->
<target.dir>target</target.dir>
<isis-jrebel-plugin.packagePrefix>dom.simple,org.apache.isis.objectstore.jdo.applib</isis-jrebel-plugin.packagePrefix>
<isis-jrebel-plugin.loggingLevel>warn</isis-jrebel-plugin.loggingLevel>
</properties>
<build>
<plugins>
<!--
mvn -P jrebel antrun:run \
-Djrebel.jar="C:/Users/Dan/.IdeaIC13/config/plugins/jr-ide-idea/lib/jrebel/jrebel.jar" \
-Disis_jrebel_plugin.jar="C:/github/danhaywood/isis-jrebel-plugin/target/danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar"
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<target>
<property name="compile_classpath" refid="maven.compile.classpath" />
<property name="runtime_classpath" refid="maven.runtime.classpath" />
<property name="test_classpath" refid="maven.test.classpath" />
<property name="plugin_classpath" refid="maven.plugin.classpath" />
<echo message="" />
<echo message="" />
<echo message="jrebel.jar = ${jrebel.jar}" />
<echo message="isis_jrebel_plugin.jar = ${isis_jrebel_plugin.jar}" />
<echo message="target.dir = ${target.dir}" />
<echo message="" />
<echo message="" />
<exec executable="java" failonerror="true">
<arg value="-javaagent:${jrebel.jar}" />
<arg value="-Drebel.log=false" />
<arg value="-Drebel.check_class_hash=true" />
<arg value="-Drebel.packages_exclude=org.apache.isis" />
<!-- as used in the rebel.xml in the dom project -->
<arg value="-Dproject.root=${project.basedir}/.." />
<arg value="-Dtarget.dir=${target.dir}" />
<arg value="-Drebel.plugins=${isis_jrebel_plugin.jar}" />
<arg value="-Disis-jrebel-plugin.packagePrefix=${isis-jrebel-plugin.packagePrefix}" />
<arg value="-Disis-jrebel-plugin.loggingLevel=${isis-jrebel-plugin.loggingLevel}" />
<arg value="-XX:MaxPermSize=128m" />
<arg value="-classpath" />
<arg value="${runtime_classpath}" />
<arg value="org.apache.isis.WebServer" />
</exec>
</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,153 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 domainapp.webapp;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.google.common.base.Joiner;
import com.google.common.io.Resources;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.name.Names;
import com.google.inject.util.Modules;
import com.google.inject.util.Providers;
import org.apache.wicket.Session;
import org.apache.wicket.request.IRequestParameters;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.http.WebRequest;
import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis;
import de.agilecoders.wicket.core.Bootstrap;
import de.agilecoders.wicket.core.settings.IBootstrapSettings;
import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme;
import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider;
/**
* As specified in <tt>web.xml</tt>.
*
* <p>
* See:
* <pre>
* &lt;filter>
* &lt;filter-name>wicket&lt;/filter-name>
* &lt;filter-class>org.apache.wicket.protocol.http.WicketFilter&lt;/filter-class>
* &lt;init-param>
* &lt;param-name>applicationClassName&lt;/param-name>
* &lt;param-value>webapp.SimpleApplication&lt;/param-value>
* &lt;/init-param>
* &lt;/filter>
* </pre>
*
*/
public class SimpleApplication extends IsisWicketApplication {
private static final long serialVersionUID = 1L;
/**
* uncomment for a (slightly hacky) way of allowing logins using query args, eg:
*
* <tt>?user=sven&pass=pass</tt>
*
* <p>
* for demos only, obvious.
*/
private final static boolean DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS = false;
@Override
protected void init() {
super.init();
IBootstrapSettings settings = Bootstrap.getSettings();
settings.setThemeProvider(new BootswatchThemeProvider(BootswatchTheme.Flatly));
}
@Override
public Session newSession(final Request request, final Response response) {
if(!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) {
return super.newSession(request, response);
}
// else demo mode
final AuthenticatedWebSessionForIsis s = (AuthenticatedWebSessionForIsis) super.newSession(request, response);
IRequestParameters requestParameters = request.getRequestParameters();
final org.apache.wicket.util.string.StringValue user = requestParameters.getParameterValue("user");
final org.apache.wicket.util.string.StringValue password = requestParameters.getParameterValue("pass");
s.signIn(user.toString(), password.toString());
return s;
}
@Override
public WebRequest newWebRequest(HttpServletRequest servletRequest, String filterPath) {
if(!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) {
return super.newWebRequest(servletRequest, filterPath);
}
// else demo mode
try {
String uname = servletRequest.getParameter("user");
if (uname != null) {
servletRequest.getSession().invalidate();
}
} catch (Exception e) {
}
WebRequest request = super.newWebRequest(servletRequest, filterPath);
return request;
}
@Override
protected Module newIsisWicketModule() {
final Module isisDefaults = super.newIsisWicketModule();
final Module overrides = new AbstractModule() {
@Override
protected void configure() {
bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Simple App");
bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css");
bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");
bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance(readLines(getClass(), "welcome.html"));
bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Simple App");
bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")).toProvider(Providers.of(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF")));
}
};
return Modules.override(isisDefaults).with(overrides);
}
private static String readLines(final Class<?> contextClass, final String resourceName) {
try {
List<String> readLines = Resources.readLines(Resources.getResource(contextClass, resourceName), Charset.defaultCharset());
final String aboutText = Joiner.on("\n").join(readLines);
return aboutText;
} catch (IOException e) {
return "This is a simple app";
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<p class="intro">
<a href="http://isis.apache.org" target="_blank">Apache Isis</a>&trade; is a platform to let you rapidly develop
domain-driven apps in Java.
<br/>
<br/>
This app has been generated using Apache Isis'
<a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs.
<br/>
<br/>
The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
<br/>
<br/>
For more details, see the <a href="http://isis.apache.org/documentation.html" target="_blank">Apache Isis website</a>.
</p>

View File

@ -0,0 +1,300 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#################################################################################
#
# specify system components.
#
# The values correspond to the named components in the installer-registry.properties file
# in the org.apache.isis.core:isis-core-runtime JAR (in the org.apache.isis.core.runtime package)
#
# Although all configuration could reside in isis.properties, the recommendation is
# to split out into component specific files:
#
# xxx_yyy.properties files
#
# where
# * xxx is the component type, and
# * yyy is the component name.
#
# For example, viewer_wicket.properties holds configuration information specific to the Wicket viewer.
#
#################################################################################
#
# configure the persistor (object store) to use
#
# JDO/DataNucleus objectstore
isis.persistor=datanucleus
#
# configure authentication mechanism to use (to logon to the system)
#
#isis.authentication=bypass
isis.authentication=shiro
#
# configure authorization mechanism to use
#
#isis.authorization=bypass
isis.authorization=shiro
#################################################################################
#
# MetaModel
#
# The metamodel typically does not require additional configuration, although
# the system components (defined above) may refine the metamodel for their needs.
#
#################################################################################
#
# Additional programming model facet factories, or remove standard facet factories.
# Comma separated list of fully qualified class names.
#
#isis.reflector.facets.include=
#isis.reflector.facets.exclude=
#
# Metamodel validation (in addition to that automatically performed by the programming model facet factories)
# Default implementation does nothing.
#
# Use a custom implementation to enforce additional constraints specific to your app/project/company.
#
#isis.reflector.validator=org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault
#
# Whether to allow deprecated annotations/method prefixes (otherwise raise metamodel validation errors).
# If not specified, default is to allow.
#
isis.reflector.validator.allowDeprecated=false
#
# Implementation to use for reading dynamic layout. Default implementation reads Xxx.layout.json files from classpath.
#
#isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson
#
# patterns for applying CssClassFa facet (font-awesome icons), matching on action names
#
isis.reflector.facet.cssClassFa.patterns=\
new.*:fa-plus,\
add.*:fa-plus-square,\
create.*:fa-plus,\
update.*:fa-edit,\
change.*:fa-edit,\
remove.*:fa-minus-square,\
move.*:fa-exchange,\
first.*:fa-star,\
find.*:fa-search,\
lookup.*:fa-search,\
clear.*:fa-remove,\
previous.*:fa-step-backward,\
next.*:fa-step-forward,\
list.*:fa-list, \
all.*:fa-list, \
download.*:fa-download, \
upload.*:fa-upload, \
execute.*:fa-bolt, \
run.*:fa-bolt, \
calculate.*:fa-calculator, \
verify.*:fa-check-circle, \
refresh.*:fa-refresh, \
install.*:fa-wrench
#
# patterns for applying CssClass facet (CSS styles), matching on member names
#
isis.reflector.facet.cssClass.patterns=\
delete.*:btn-warning
#################################################################################
#
# Value facet defaults
#
# (see also viewer-specific config files, eg viewer_wicket.properties)
#
#################################################################################
# as used by @Title of a date
isis.value.format.date=dd-MM-yyyy
#################################################################################
#
# Application Services and fixtures
#
#################################################################################
#
# Specify the domain services.
#
# These are the most important configuration properties in the system, as they define
# the set of the classes for Isis to instantiate as domain service singletons.
# From these domain service instances the rest of the metamodel is discovered, while the
# end-user gains access to other domain objects by invoking the actions of the domain services.
#
isis.services-installer=configuration-and-annotation
isis.services.ServicesInstallerFromAnnotation.packagePrefix=domainapp
# additional services/overriding default (@DomainService) implementations
isis.services =
# Specify the (optional) test fixtures
#
# Fixtures are used to seed the object store with an initial set of data. For the
# in-memory object store, the fixtures are installed on every run. For other
# object stores, they are used only when the object store is first initialized.
#
isis.fixtures=domainapp.fixture.scenarios.RecreateSimpleObjects
#
# required by EmailServiceDefault
#
#isis.service.email.sender.address=some.valid@email.address
#isis.service.email.sender.password=the.password.for-isis.notification.email.sender.address
#
# whether ExceptionRecognizers should also log any recognized exceptions
# (default false; enable for diagnostics/debugging)
#
#isis.services.exceprecog.logRecognizedExceptions=true
#
# disable to (automatically registered) ExceptionRecognizerCompositeForJdoObjectStore service
# almost all of this service should be registered. Since all exception recognizer implementations
# are consulted in the event of an exception, it's not sufficient to override the implementation
# (in isis.services); instead this configuration property disables this particular implementation.
#
#isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=true
################################################################################
#
# Auditing, Publishing, Command
#
################################################################################
#
# Whether changes to objects should be audited; if not set, defaults to "none"
# - if not set or set to "none", can explicitly enable using @DomainObject(auditing=Auditing.ENABLED)
# - if set to "all", can explicitly disable using @Object(auditing=Auditing.DISABLED)
#
#isis.services.audit.objects=all|none
#
# Whether changes to objects should be published; if not set, defaults to "none"
# - if not set or set to "none", can explicitly enable using @DomainObject(publishing=Publishing.ENABLED)
# - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED)
#
#isis.services.publish.objects=all|none
#
# Whether all (or all non-query only) actions should be published; if not set, defaults to "none"
# - if not set or set to "none", can explicitly enable using @Action(publishing=Publishing.ENABLED)
# - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED)
#
#isis.services.publish.actions=all|none|ignoreQueryOnly
#
# Whether all (or all non-query only) actions should be reified as commands; if not set, defaults to "none"
# - if not set or set to "none", can explicitly enable using @Action(command=CommandReification.ENABLED)
# - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED)
#
#isis.services.command.actions=all|none|ignoreQueryOnly
################################################################################
#
# Policies
#
#################################################################################
#
# Whether editing of object properties is allowed; if not set, defaults to "true"
# - if not set or set to "true", can explicitly disable using @DomainObject(editing=Editing.DISABLED)
# - if set to "false", can explicitly enable using @DomainObject(editing=Editing.ENABLED)
#
#isis.objects.editing=true|false
################################################################################
#
# i18n
#
#################################################################################
#
# force read translations, even if running in prototype mode
#
#isis.services.translation.po.mode=read
################################################################################
#
# Viewer defaults
#
#################################################################################
#
# Specify viewer defaults
#
#isis.viewers.paged.standalone=30
#isis.viewers.paged.parented=10
#isis.viewers.propertyLayout.labelPosition=LEFT
#isis.viewers.parameterLayout.labelPosition=LEFT

View File

@ -0,0 +1,187 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# Isis uses log4j is used to provide system logging
#
log4j.rootCategory=INFO, Console
#log4j.rootCategory=DEBUG, Console
# The console appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} [%-20c{1} %-10t %-5p] %m%n
# The stderr appender
log4j.appender.Stderr=org.apache.log4j.ConsoleAppender
log4j.appender.Stderr.target=System.err
log4j.appender.Stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.Stderr.layout.ConversionPattern=%d{ABSOLUTE} [%-20c{1} %-10t %-5p] %m%n
# other appenders
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.file=isis.log
log4j.appender.File.append=false
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p] %m%n
log4j.appender.sql=org.apache.log4j.FileAppender
log4j.appender.sql.File=./logs/sql.log
log4j.appender.sql.Append=false
log4j.appender.sql.layout=org.apache.log4j.PatternLayout
log4j.appender.sql.layout.ConversionPattern=-----> %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
log4j.appender.sqltiming=org.apache.log4j.FileAppender
log4j.appender.sqltiming.File=./logs/sqltiming.log
log4j.appender.sqltiming.Append=false
log4j.appender.sqltiming.layout=org.apache.log4j.PatternLayout
log4j.appender.sqltiming.layout.ConversionPattern=-----> %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
log4j.appender.jdbc=org.apache.log4j.FileAppender
log4j.appender.jdbc.File=./logs/jdbc.log
log4j.appender.jdbc.Append=false
log4j.appender.jdbc.layout=org.apache.log4j.PatternLayout
log4j.appender.jdbc.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
log4j.appender.connection=org.apache.log4j.FileAppender
log4j.appender.connection.File=./logs/connection.log
log4j.appender.connection.Append=false
log4j.appender.connection.layout=org.apache.log4j.PatternLayout
log4j.appender.connection.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
! turn on the internal log4j debugging flag so we can see what it is doing
#log4j.debug=true
# DataNucleus
# the first two log the DML and DDL (if set to DEBUG)
log4j.logger.DataNucleus.Datastore.Native=WARN, Console
log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console
# the remainder can probably be left to WARN
log4j.logger.DataNucleus.Persistence=WARN, Console
log4j.logger.DataNucleus.Transaction=WARN, Console
log4j.logger.DataNucleus.Connection=WARN, Console
log4j.logger.DataNucleus.Query=WARN, Console
log4j.logger.DataNucleus.Cache=WARN, Console
log4j.logger.DataNucleus.MetaData=WARN, Console
log4j.logger.DataNucleus.Datastore=WARN, Console
log4j.logger.DataNucleus.Datastore.Persist=WARN, Console
log4j.logger.DataNucleus.Datastore.Retrieve=WARN, Console
log4j.logger.DataNucleus.General=WARN, Console
log4j.logger.DataNucleus.Lifecycle=WARN, Console
log4j.logger.DataNucleus.ValueGeneration=WARN, Console
log4j.logger.DataNucleus.Enhancer=WARN, Console
log4j.logger.DataNucleus.SchemaTool=ERROR, Console
log4j.logger.DataNucleus.JDO=WARN, Console
log4j.logger.DataNucleus.JPA=ERROR, Console
log4j.logger.DataNucleus.JCA=WARN, Console
log4j.logger.DataNucleus.IDE=ERROR, Console
log4j.additivity.DataNucleus.Datastore.Native=false
log4j.additivity.DataNucleus.Datastore.Schema=false
log4j.additivity.DataNucleus.Datastore.Persistence=false
log4j.additivity.DataNucleus.Datastore.Transaction=false
log4j.additivity.DataNucleus.Datastore.Connection=false
log4j.additivity.DataNucleus.Datastore.Query=false
log4j.additivity.DataNucleus.Datastore.Cache=false
log4j.additivity.DataNucleus.Datastore.MetaData=false
log4j.additivity.DataNucleus.Datastore.Datastore=false
log4j.additivity.DataNucleus.Datastore.Datastore.Persist=false
log4j.additivity.DataNucleus.Datastore.Datastore.Retrieve=false
log4j.additivity.DataNucleus.Datastore.General=false
log4j.additivity.DataNucleus.Datastore.Lifecycle=false
log4j.additivity.DataNucleus.Datastore.ValueGeneration=false
log4j.additivity.DataNucleus.Datastore.Enhancer=false
log4j.additivity.DataNucleus.Datastore.SchemaTool=false
log4j.additivity.DataNucleus.Datastore.JDO=false
log4j.additivity.DataNucleus.Datastore.JPA=false
log4j.additivity.DataNucleus.Datastore.JCA=false
log4j.additivity.DataNucleus.Datastore.IDE=false
# if using log4jdbc-remix as JDBC driver
#log4j.logger.jdbc.sqlonly=DEBUG, sql, Console
#log4j.additivity.jdbc.sqlonly=false
#log4j.logger.jdbc.resultsettable=DEBUG, jdbc, Console
#log4j.additivity.jdbc.resultsettable=false
#log4j.logger.jdbc.audit=WARN,jdbc, Console
#log4j.additivity.jdbc.audit=false
#log4j.logger.jdbc.resultset=WARN,jdbc
#log4j.additivity.jdbc.resultset=false
#log4j.logger.jdbc.sqltiming=WARN,sqltiming
#log4j.additivity.jdbc.sqltiming=false
#log4j.logger.jdbc.connection=FATAL,connection
#log4j.additivity.jdbc.connection=false
# track Isis/JDO lifecycle integration
#log4j.logger.org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.FrameworkSynchronizer=DEBUG, Console
#log4j.additivity.org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.persistence.FrameworkSynchronizer=false
#log4j.logger.org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener=DEBUG,Console
#log4j.additivity.org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener=false
# track Isis/Wicket lifecycle integration
#log4j.logger.org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis=DEBUG, Console
#log4j.additivity.org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis=false
#log4j.logger.org.apache.isis.viewer.wicket.viewer.integration.isis.IsisContextForWicket=INFO,Console
#log4j.additivity.org.apache.isis.viewer.wicket.viewer.integration.isis.IsisContextForWicket=false
# quieten some of the noisier classes in Isis' bootstrapping
log4j.logger.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=WARN,Console
log4j.additivity.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=false
log4j.logger.org.apache.isis.core.metamodel.specloader.ServiceInitializer=WARN,Console
log4j.additivity.org.apache.isis.core.metamodel.specloader.ServiceInitializer=false
log4j.logger.org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration=WARN,Console
log4j.additivity.org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration=false
log4j.logger.org.apache.isis.core.commons.config.IsisConfigurationDefault=WARN,Console
log4j.additivity.org.apache.isis.core.commons.config.IsisConfigurationDefault=false
log4j.logger.org.apache.isis.core.runtime.installers.InstallerLookupDefault=WARN,Console
log4j.additivity.org.apache.isis.core.runtime.installers.InstallerLookupDefault=false
# quieten Shiro
log4j.logger.org.apache.shiro.realm.AuthorizingRealm=WARN,Console
log4j.additivity.log4j.logger.org.apache.shiro.realm.AuthorizingRealm=false
# Application-specific logging
log4j.logger.dom.simple.SimpleObject=DEBUG, Stderr
log4j.additivity.dom.simple.SimpleObject=false

View File

@ -0,0 +1,128 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#################################################################################
#
# Persistor
#
#################################################################################
# generally speaking this should not be enabled
isis.persistor.disableConcurrencyChecking=false
#################################################################################
#
# JDBC configuration
#
#################################################################################
#
# configuration file holding the JDO objectstore's JDBC configuration
# (this is a bit of a hack... just exploiting fact that Isis also loads this file)
#
#
# JDBC connection details
# (also update the pom.xml to reference the appropriate JDBC driver)
#
#
# HSQLDB in-memory
#
isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
#
# HSQLDB in-memory (using log4jdbc-remix)
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:mem:test
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
#
# HSQLDB to file
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:file:/tmp/isis-simple-app/hsql-db;hsqldb.write_delay=false;shutdown=true
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
#
# HSQLDB to file (using log4jdbc-remix)
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:file:/tmp/isis-simple-app/hsql-db;hsqldb.write_delay=false;shutdown=true
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
#
# PostgreSQL Server
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.postgresql.Driver
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:postgresql://localhost:5432/isis
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis
#
# PostgreSQL Server (using log4jdbc-remix)
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:postgresql://localhost:5432/isis
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis
#
# MS SQL Server
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=simple
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=p4ssword
#
# MS SQL Server (using log4jdbc-remix)
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;databaseName=jdo
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=jdo
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=jdopass
#
# neo4j
# (experimental; run with -P neo4j profile in webapp project)
#
#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=neo4j:neo4j_DB

View File

@ -0,0 +1,93 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# configuration file for the JDO/DataNucleus objectstore
#
# identifies @PersistenceCapable entities to be eagerly registered
# if move class to other package (eg com.mycompany.myapp.dom) then update
isis.persistor.datanucleus.RegisterEntities.packagePrefix=domainapp.dom.modules
#
# hook to perform additional initialization when JDO class metadata is loaded
# default implementation will attempt to run 'create schema' for the specified schema.
#
#isis.persistor.datanucleus.classMetadataLoadedListener=org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaFromClassMetadata
# whether to persist the event data as a "clob" or as a "zipped" byte[]
# default is "zipped"
#isis.persistor.datanucleus.PublishingService.serializedForm=zipped
#####################################################################
#
# DataNucleus' configuration
#
# The 'isis.persistor.datanucleus.impl' prefix is stripped off,
# remainder is passed through to DataNucleus
#
#####################################################################
isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true
isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true
#
# Require explicit persistence (since entities are Comparable and using ObjectContracts#compareTo).
# see http://www.datanucleus.org/products/accessplatform_3_0/jdo/transaction_types.html
#
isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
#
# How column names are identified
# (http://www.datanucleus.org/products/datanucleus/jdo/orm/datastore_identifiers.html)
#
isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase
#
# L2 cache
# off except if explicitly marked as cacheable
# http://www.datanucleus.org/products/datanucleus/jdo/cache.html
#
isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
#
# uncomment to use JNDI rather than direct JDBC
#
#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart
#
# uncomment to use JTA resource
#
#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx
#isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA
#
#
# JDBC connection details
# ... are in persistor.properties
#
#

View File

@ -0,0 +1,93 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
[main]
contextFactory = org.apache.isis.security.shiro.IsisLdapContextFactory
contextFactory.url = ldap://localhost:10389
contextFactory.authenticationMechanism = CRAM-MD5
contextFactory.systemAuthenticationMechanism = simple
contextFactory.systemUsername = uid=admin,ou=system
contextFactory.systemPassword = secret
ldapRealm = org.apache.isis.security.shiro.IsisLdapRealm
ldapRealm.contextFactory = $contextFactory
ldapRealm.searchBase = ou=groups,o=mojo
ldapRealm.groupObjectClass = groupOfUniqueNames
ldapRealm.uniqueMemberAttribute = uniqueMember
ldapRealm.uniqueMemberAttributeValueTemplate = uid={0}
# optional mapping from physical groups to logical application roles
#ldapRealm.rolesByGroup = \
# LDN_USERS: user_role,\
# NYK_USERS: user_role,\
# HKG_USERS: user_role,\
# GLOBAL_ADMIN: admin_role,\
# DEMOS: self-install_role
ldapRealm.permissionsByRole=\
user_role = *:ToDoItemsJdo:*:*,\
*:ToDoItem:*:*; \
self-install_role = *:ToDoItemsFixturesService:install:* ; \
admin_role = *
# to use ldap...
# (see docs for details of how to setup users/groups in Apache Directory Studio).
#securityManager.realms = $ldapRealm
# to use .ini file
securityManager.realms = $iniRealm
# -----------------------------------------------------------------------------
# Users and their assigned roles
#
# Each line conforms to the format defined in the
# org.apache.shiro.realm.text.TextConfigurationRealm#setUserDefinitions JavaDoc
# -----------------------------------------------------------------------------
[users]
# user = password, role1, role2, role3, ...
sven = pass, admin_role
dick = pass, user_role, self-install_role
bob = pass, user_role, self-install_role
joe = pass, user_role, self-install_role
guest = guest, user_role
# -----------------------------------------------------------------------------
# Roles with assigned permissions
#
# Each line conforms to the format defined in the
# org.apache.shiro.realm.text.TextConfigurationRealm#setRoleDefinitions JavaDoc
# -----------------------------------------------------------------------------
[roles]
# role = perm1, perm2, perm3, ...
# perm in format: packageName:className:memberName:r,w
user_role = *:SimpleObjects:*:*,\
*:SimpleObject:*:*
self-install_role = *:DomainAppFixtureService:*:*
admin_role = *

View File

@ -0,0 +1,213 @@
##############################################################################
#
# .pot file
#
# Translate this file to each required language and place in WEB-INF, eg:
#
# /WEB-INF/translations-en_US.po
# /WEB-INF/translations-en.po
# /WEB-INF/translations-fr_FR.po
# /WEB-INF/translations-fr.po
# /WEB-INF/translations.po
#
# If the app uses TranslatableString (eg for internationalized validation
# messages), or if the app calls the TranslationService directly, then ensure
# that all text to be translated has been captured by running a full
# integration test suite that exercises all relevant behaviour
#
##############################################################################
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
msgstr ".pot file name"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
msgstr "Clear translation cache"
#: domainapp.dom.modules.simple.SimpleObjects#create()
msgid "Create"
msgstr "Create"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
msgstr "Discoverable"
#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
msgid "Domain Objects"
msgstr "Domain Objects"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr "Download Translations"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
msgstr "Exclamation mark is not allowed"
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
msgid "Find By Name"
msgstr "Find By Name"
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
msgstr "Fixture script"
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
msgstr "Friendly Name"
#: domainapp.dom.modules.simple.SimpleObject
msgid "General"
msgstr "General"
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr "Home Page"
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
msgstr "List All"
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
msgstr "Local Name"
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
msgstr "Lookup"
#: domainapp.dom.modules.simple.SimpleObject#name
#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
msgid "Name"
msgstr "Name"
#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
msgid "New name"
msgstr "New name"
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
msgstr "Object"
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
msgstr "Object: {name}"
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
msgstr "Objects"
#: org.apache.isis.applib.fixtures.FixtureType#OTHER
msgid "Other"
msgstr "Other"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
msgstr "Parameters"
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
msgstr "Prototyping"
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
msgstr "Recreate Objects And Return First"
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
msgstr "Result"
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
msgstr "Result class"
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
msgstr "Result key"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
msgstr "Run Fixture Script"
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
msgstr "Script"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
msgstr "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
#: domainapp.dom.modules.simple.SimpleObjects#title()
msgid "Simple Objects"
msgstr "Simple Objects"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
msgstr "Switch To Reading Translations"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
msgstr "Switch To Writing Translations"
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
msgstr "Type"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Update Name"
msgstr "Update Name"
#: domainapp.dom.modules.simple.SimpleObject
msgid "name"
msgstr ""
##############################################################################
# end of .pot file
##############################################################################

View File

@ -0,0 +1,208 @@
##############################################################################
#
# .pot file
#
# Translate this file to each required language and place in WEB-INF, eg:
#
# /WEB-INF/translations-en_US.po
# /WEB-INF/translations-en.po
# /WEB-INF/translations-fr_FR.po
# /WEB-INF/translations-fr.po
# /WEB-INF/translations.po
#
# If the app uses TranslatableString (eg for internationalized validation
# messages), or if the app calls the TranslationService directly, then ensure
# that all text to be translated has been captured by running a full
# integration test suite that exercises all relevant behaviour
#
##############################################################################
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
msgstr "fichero .pot"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
msgstr "Limpiar la caché de traducciones"
#: domainapp.dom.modules.simple.SimpleObjects#create()
msgid "Create"
msgstr "Crear"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
msgstr "Descubrible"
#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
msgid "Domain Objects"
msgstr "Domain Objects"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr "Descargar traducciones"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
msgstr "No se admite el signo de exclamación"
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
msgid "Find By Name"
msgstr "Buscar por Nombre"
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
msgstr "Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
msgstr "Nombre común"
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr "Página de Inicio"
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
msgstr "Listar Todos"
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
msgstr "Nombre Local"
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
msgstr "Buscar"
#: domainapp.dom.modules.simple.SimpleObject#name
#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
msgid "Name"
msgstr "Nombre"
#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
msgid "New name"
msgstr "Nuevo nombre"
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
msgstr "Objeto"
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
msgstr "Objeto: {name}"
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
msgstr "Objetos"
#: org.apache.isis.applib.fixtures.FixtureType#OTHER
msgid "Other"
msgstr "Other"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
msgstr "Parámetros"
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
msgstr "Prototipo"
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
msgstr "Recrear Objetos y Devolver el Primero"
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
msgstr "Resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
msgstr "Clase del resultado"
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
msgstr "Clave del Resultado"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
msgstr "Ejecutar Script de Instalación"
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
msgstr "Script"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
msgstr "Parámetros específicos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
#: domainapp.dom.modules.simple.SimpleObjects#title()
msgid "Simple Objects"
msgstr "Objetos básicos"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
msgstr "Cambiar a Lectura de Traducciones"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
msgstr "Cambiar a Escritura de Traducciones"
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
msgstr "Tipo"
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Update Name"
msgstr "Nombre de la Actualización"
#: domainapp.dom.modules.simple.SimpleObject
msgid "name"
msgstr ""
##############################################################################
# end of .pot file
##############################################################################

View File

@ -0,0 +1,208 @@
##############################################################################
#
# .pot file
#
# Translate this file to each required language and place in WEB-INF, eg:
#
# /WEB-INF/translations-en_US.po
# /WEB-INF/translations-en.po
# /WEB-INF/translations-fr_FR.po
# /WEB-INF/translations-fr.po
# /WEB-INF/translations.po
#
# If the app uses TranslatableString (eg for internationalized validation
# messages), or if the app calls the TranslationService directly, then ensure
# that all text to be translated has been captured by running a full
# integration test suite that exercises all relevant behaviour
#
##############################################################################
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#create()
msgid "Create"
msgstr "Creëren"
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
msgstr "Discoverable"
#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
msgid "Domain Objects"
msgstr "Domain Objects"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
msgid "Find By Name"
msgstr "Zoek op Naam"
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
msgstr ""
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
msgstr "Lijst Alle"
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#name
#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
msgid "Name"
msgstr "Naam"
#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
msgid "New name"
msgstr "Nieuwe naam"
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
msgstr ""
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
msgstr "Objects"
#: org.apache.isis.applib.fixtures.FixtureType#OTHER
msgid "Other"
msgstr "Other"
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#title()
msgid "Simple Objects"
msgstr "Eenvoudige Objecten"
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Update Name"
msgstr "Updaten Naam"
#: domainapp.dom.modules.simple.SimpleObject
msgid "name"
msgstr ""
##############################################################################
# end of .pot file
##############################################################################

View File

@ -0,0 +1,213 @@
##############################################################################
#
# .pot file
#
# Translate this file to each required language and place in WEB-INF, eg:
#
# /WEB-INF/translations-en_US.po
# /WEB-INF/translations-en.po
# /WEB-INF/translations-fr_FR.po
# /WEB-INF/translations-fr.po
# /WEB-INF/translations.po
#
# If the app uses TranslatableString (eg for internationalized validation
# messages), or if the app calls the TranslationService directly, then ensure
# that all text to be translated has been captured by running a full
# integration test suite that exercises all relevant behaviour
#
##############################################################################
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
msgid ".pot file name"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
msgid "Clear translation cache"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#create()
msgid "Create"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
msgid "Discoverable"
msgstr ""
#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
msgid "Domain Objects"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
msgid "Download Translations"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Exclamation mark is not allowed"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#findByName()
msgid "Find By Name"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
msgid "Fixture script"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
msgid "Friendly Name"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject
msgid "General"
msgstr "Common"
#: domainapp.dom.app.homepage.HomePageService#homePage()
msgid "Home Page"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#listAll()
msgid "List All"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
msgid "Local Name"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
msgid "Lookup"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#name
#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
msgid "Name"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
msgid "New name"
msgstr ""
#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
msgid "Object"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#title()
msgid "Object: {name}"
msgstr ""
#: domainapp.dom.app.homepage.HomePageViewModel#objects
msgid "Objects"
msgstr ""
#: org.apache.isis.applib.fixtures.FixtureType#OTHER
msgid "Other"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Parameters"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
msgid "Prototyping"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
msgid "Recreate Objects And Return First"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#object
msgid "Result"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#className
msgid "Result class"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureResult#key
msgid "Result key"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
msgid "Run Fixture Script"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript
msgid "Script"
msgstr ""
#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObjects#title()
msgid "Simple Objects"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
msgid "Switch To Reading Translations"
msgstr ""
#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
msgid "Switch To Writing Translations"
msgstr ""
#: org.apache.isis.applib.fixturescripts.FixtureScript#type
msgid "Type"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject#updateName()
msgid "Update Name"
msgstr ""
#: domainapp.dom.modules.simple.SimpleObject
msgid "name"
msgstr ""
##############################################################################
# end of .pot file
##############################################################################

View File

@ -0,0 +1,66 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# configuration file for the Restful Objects viewer
#
# the baseUrl for hrefs in the events generated by the RO EventSerializer
isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
# renders param details in the (incorrect) form that they were for GSOC2013 viewers
# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
# whether to honor UI hints, in particular Render(EAGERLY). Defaults to false.
#isis.viewer.restfulobjects.honorUiHints=false
###############################################################################
# Non-standard configuration settings.
#
# If enabled of the following are enabled then the viewer is deviating from the
# RO spec standard; compatibility may be compromised with RO clients.
###############################################################################
# whether to show only object properties for object members
# (on the object representation only)
# Takes precedence over the other 'suppress' below.
#isis.viewer.restfulobjects.objectPropertyValuesOnly=true
# whether to suppress "describedby" links. Defaults to false.
#isis.viewer.restfulobjects.suppressDescribedByLinks=true
# whether to suppress "update" links. Defaults to false.
#isis.viewer.restfulobjects.suppressUpdateLink=true
# whether to suppress "id" json-prop for object members. Defaults to false.
#isis.viewer.restfulobjects.suppressMemberId=true
# whether to suppress "links" json-prop for object members
# (on the object representation only). Defaults to false.
#isis.viewer.restfulobjects.suppressMemberLinks=true
# whether to suppress "extensions" json-prop for object members
# (on the object representation only). Defaults to false.
#isis.viewer.restfulobjects.suppressMemberExtensions=true
# whether to suppress "disabledReason" json-prop for object members
# (on the object representation only). Defaults to false.
#isis.viewer.restfulobjects.suppressMemberDisabledReason=true
###############################################################################

View File

@ -0,0 +1,91 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
# configuration file for the Wicket viewer
#
#
# The maximum length of titles to display in standalone or parented tables.
# Titles longer than this length will be truncated with trailing ellipses (...)
#
# For example, if set to 12, the title
# "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..."
#
# If set to 0, then only the icon will be shown.
#
isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
isis.viewer.wicket.maxTitleLengthInParentedTables=0
#isis.viewer.wicket.datePattern=dd-MM-yyyy
#isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
#isis.viewer.wicket.datePickerPattern=DD-MM-YYYY
#isis.viewer.wicket.datePattern=dd/MM/yy
#isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
#isis.viewer.wicket.datePickerPattern=DD/MM/YY
#
# whether to strip wicket tags from markup (default is true, as they may break some CSS rules)
#
#isis.viewer.wicket.stripWicketTags=false
#
# whether to suppress the 'rememberMe' checkbox on the login page (default is false)
#
#isis.viewer.wicket.suppressRememberMe=false
#
# if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue
# through to that destination after successful login. If you consider this to be a security risk then this flag
# disables that behaviour (default is false).
#
#isis.viewer.wicket.clearOriginalDestination=true
#
# whether to show action dialogs on their own page rather than as a modal dialog (default is false)
#
#isis.viewer.wicket.disableModalDialogs=false
#
# the maximum number of pages to list in bookmark (default is 15)
#
#isis.viewer.wicket.bookmarkedPages.maxSize=15
#
# whether to show the bootstrap theme chooser (defaults false)
#
#isis.viewer.wicket.themes.showChooser=false
isis.viewer.wicket.themes.showChooser=true
#
# comma-separated list of themes to choose from (default is to show all themes from bootswatch.com).
#
#isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United
#
# whether to automatically select dependent choice when the choice it depends upon changes.
#
#isis.viewer.wicket.disableDependentChoiceAutoSelection=false

View File

@ -0,0 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Simple app</display-name>
<welcome-file-list>
<welcome-file>about/index.html</welcome-file>
</welcome-file-list>
<!-- shiro security configuration -->
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- which configuration directory to read overloaded property files from -->
<!--
Normally configuration like this should be done from outside your web
application. Especially if your configuration is not know in advance or
if it can change depending on where the application gets deployed.
For instance to configure this in Tomcat outside the application WAR add
the following line to your application context ( For more detail see:
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Context_Parameters )
<Parameter name="isis.config.dir" value="/usr/local/tomcat/conf/"
override="true"/>
If your configuration directory is fixed you can enable the following
context parameter in here and forget about the outside part.
<context-param>
<param-name>isis.config.dir</param-name>
<param-value>location of your config directory if fixed</param-value>
</context-param>
-->
<!--
determines which additional configuration files to search for
-->
<context-param>
<param-name>isis.viewers</param-name>
<param-value>wicket,restfulobjects</param-value>
</context-param>
<!--
for diagnostics
-->
<filter>
<filter-name>IsisLogOnExceptionFilter</filter-name>
<filter-class>org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>IsisLogOnExceptionFilter</filter-name>
<url-pattern>/wicket/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>IsisLogOnExceptionFilter</filter-name>
<url-pattern>/restful/*</url-pattern>
</filter-mapping>
<!-- cache static resources for 1 day -->
<filter>
<filter-name>ResourceCachingFilter</filter-name>
<filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>86400</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResourceCachingFilter</filter-name>
<url-pattern>*.swf</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Resource</servlet-name>
<servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource</servlet-name>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>
<!--
-
- config specific to the wicket-viewer
-
-->
<filter>
<filter-name>WicketFilter</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>domainapp.webapp.SimpleApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>WicketFilter</filter-name>
<url-pattern>/wicket/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>configuration</param-name>
<!--
<param-value>deployment</param-value>
-->
<param-value>development</param-value>
</context-param>
<!--
-
- config specific to the restfulobjects-viewer
-
-->
<!--
THE FOLLOWING CONFIGURATION IS NOT REQUIRED IF THE WICKET VIEWER IS IN USE.
IF THE WICKET VIEWER CONFIGURATION IS REMOVED, THEN UNCOMMENT
<listener>
<listener-class>org.apache.isis.core.webapp.IsisWebAppBootstrapper</listener-class>
</listener>
<context-param>
<param-name>deploymentType</param-name>
<param-value>SERVER_EXPLORATION</param-value>
</context-param>
<context-param>
<param-name>isis.viewers</param-name>
<param-value>restfulobjects</param-value>
</context-param>
-->
<!-- bootstrap the RestEasy framework -->
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<!-- used by RestEasy to determine the JAX-RS resources and other related configuration -->
<context-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication</param-value>
</context-param>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/restful/</param-value>
</context-param>
<!-- authenticate user, set up an Isis session -->
<filter>
<filter-name>IsisSessionFilterForRestfulObjects</filter-name>
<filter-class>org.apache.isis.core.webapp.IsisSessionFilter</filter-class>
<!-- authentication required for REST -->
<init-param>
<param-name>authenticationSessionStrategy</param-name>
<param-value>org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth</param-value>
</init-param>
<init-param>
<!-- what to do if no session was found; we indicate to issue a 401 basic authentication challenge -->
<param-name>whenNoSession</param-name>
<param-value>basicAuthChallenge</param-value>
</init-param>
</filter>
<filter-mapping>
<!-- this is mapped to the entire app; however the IsisSessionFilter will "notice" if the session filter has already been
executed for the request pipeline, and if so will do nothing -->
<filter-name>IsisSessionFilterForRestfulObjects</filter-name>
<servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
</filter-mapping>
<filter>
<filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
<filter-class>org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects</filter-class>
</filter>
<filter-mapping>
<filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
<servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
<url-pattern>/restful/*</url-pattern>
</servlet-mapping>
<!--
uncomment to use container-managed datasource;
for both container-managed (JTA) and non-container-managed transactions
-->
<!--
<resource-ref>
<description>db</description>
<res-ref-name>jdbc/quickstart</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-->
<!--
uncomment to use container-managed datasource
with container-managed transactions (JTA).
-->
<!--
<resource-ref>
<description>db</description>
<res-ref-name>jdbc/quickstart-nontx</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-->
</web-app>

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Apache Isis&trade; SimpleApp</title>
<style type="text/css">
body {
background-color: #1A467B;
font-family: Verdana, Helvetica, Arial;
font-size: 90%;
}
li {
margin-top: 6px;
margin-bottom: 6px;
}
table {
border-collapse: collapse;
}
table, th, td {
border: 1px;
border-style: solid;
border-color: lightgray;
}
th, td {
padding: 10px;
}
#wrapper {
background-color: #ffffff;
width: 900px;
margin: 8px auto;
padding: 12px;
}
</style>
</head>
<body>
<div id="wrapper">
<img alt="Isis Logo" src="about/images/isis-logo.png" />
<p>
This app has been generated using Apache Isis'
<a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs.
<br/>
<br/>
The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
</p>
<p>To access the app:</p>
<ul>
<li>
<p>
<b><a href="wicket/">wicket/</a></b>
</p>
<p>
provides accesses to a generic UI for end-users,
Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>.
As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>&trade;.
</p>
</li>
<li>
<p>
<b>
<a href="restful/">restful/</a>
</b>
</p>
<p>
provides access to a RESTful API conformant with the
<a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Apache Isis Core. The
implementation technology is JBoss RestEasy.
</p>
</li>
</ul>
<p>
The default user/password is <b><i>sven/pass</i></b> (as configured in the
<a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
</div>
</body>
</html>

View File

@ -0,0 +1,19 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,3 @@
$(document).ready(function() {
/// here...
});

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.iluwatar</groupId>
@ -66,6 +65,7 @@
<module>private-class-data</module>
<module>object-pool</module>
<module>dependency-injection</module>
<module>naked-objects</module>
</modules>
<dependencyManagement>
@ -119,7 +119,7 @@
</goals>
</pluginExecutionFilter>
<action>
<ignore />
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>