[tapestry5-cayenne] r237 committed - Upgrade to T5.3.2 and Cayenne 3.1M3.

15 views
Skip to first unread message

tapestry...@googlecode.com

unread,
Mar 17, 2012, 12:14:54 AM3/17/12
to tapestry5-caye...@googlegroups.com
Revision: 237
Author: robert.zeigler
Date: Fri Mar 16 21:13:33 2012
Log: Upgrade to T5.3.2 and Cayenne 3.1M3.

http://code.google.com/p/tapestry5-cayenne/source/detail?r=237

Added:

/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/T5CayenneConstants.java
/trunk/tapestry5-cayenne-server/src/test/resources/cayenne-App0.xml
Deleted:

/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/CayennePrimaryKeyEncoder.java
/trunk/tapestry5-cayenne-server/src/test/resources/App0Node.driver.xml
/trunk/tapestry5-cayenne-server/src/test/resources/cayenne.xml
Modified:
/trunk/pom.xml

/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/components/Select.java

/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/CayenneBeanModelSource.java

/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/TapestryCayenneCoreModule.java

/trunk/tapestry5-cayenne-core/src/main/resources/com/googlecode/tapestry5cayenne/components/Select.tml

/trunk/tapestry5-cayenne-server/src/main/java/com/googlecode/tapestry5cayenne/services/DataContextProviderImpl.java

/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/TestUtils.java

/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/integration/TestBlockContributions.java

/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestBindingAndGridDataSourceCoercion.java

/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestModule.java
/trunk/tapestry5-cayenne-server/src/test/resources/App0Map.map.xml

=======================================
--- /dev/null
+++
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/T5CayenneConstants.java
Fri Mar 16 21:13:33 2012
@@ -0,0 +1,11 @@
+package com.googlecode.tapestry5cayenne;
+
+public class T5CayenneConstants {
+
+ /* The name of the project file to use for bootstrapping.
+ * Note that t5cayenne integration currently only supports a single
project
+ * per application. Defaults to cayenne.xml, but that will usually
need to
+ * be overridden in Cayenne 3.1*/
+ public static final String PROJECT_FILE="tapestry-cayenne.projectfile";
+
+}
=======================================
--- /dev/null
+++ /trunk/tapestry5-cayenne-server/src/test/resources/cayenne-App0.xml Fri
Mar 16 21:13:33 2012
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domain project-version="6">
+ <map name="App0Map"/>
+
+ <node name="App0Node"
+
factory="org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory"
+ >
+ <map-ref name="App0Map"/>
+ <data-source>
+ <driver value="org.hsqldb.jdbcDriver"/>
+ <url value="jdbc:hsqldb:mem:app0"/>
+ <connectionPool min="1" max="1"/>
+ <login userName="sa"/>
+ </data-source>
+ </node>
+</domain>
=======================================
---
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/CayennePrimaryKeyEncoder.java
Sat Oct 3 08:17:52 2009
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.googlecode.tapestry5cayenne.services;
-
-import java.util.List;
-
-import org.apache.cayenne.Persistent;
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-import com.googlecode.tapestry5cayenne.annotations.Cayenne;
-
-/**
- * Providers a PrimaryKeyEncoder for Persistent objects.
- * Any page or component wherein a primary key encoder is needed for
Persistent objects,
- * an encoder is conveniently available by doing:
- * @Inject
- * @Cayenne
- * private PrimaryKeyEncoder encoder;
- * @author robertz
- *
- */
-@Marker(Cayenne.class)
-public class CayennePrimaryKeyEncoder implements
PrimaryKeyEncoder<String,Persistent> {
-
- private final ValueEncoder<Persistent> _encoder;
-
- public CayennePrimaryKeyEncoder(@Cayenne ValueEncoder<Persistent>
encoder) {
- _encoder = encoder;
- }
-
- public void prepareForKeys(List<String> arg0) {}
-
- public String toKey(Persistent dao) {
- return _encoder.toClient(dao);
- }
-
- public Persistent toValue(String key) {
- return _encoder.toValue(key);
- }
-
- public Class<String> getKeyType() {
- return String.class;
- }
-}
=======================================
--- /trunk/tapestry5-cayenne-server/src/test/resources/App0Node.driver.xml
Tue Aug 24 10:51:09 2010
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<driver project-version="3.0.0.1" class="org.hsqldb.jdbcDriver">
- <url value="jdbc:hsqldb:mem:app0"/>
- <connectionPool min="1" max="1"/>
- <login userName="sa"/>
-</driver>
=======================================
--- /trunk/tapestry5-cayenne-server/src/test/resources/cayenne.xml Tue Aug
24 10:51:09 2010
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domains project-version="3.0.0.1">
-<domain name="App0">
- <map name="App0Map" location="App0Map.map.xml"/>
-
- <node name="App0Node"
- datasource="App0Node.driver.xml"
- factory="org.apache.cayenne.conf.DriverDataSourceFactory">
- <map-ref name="App0Map"/>
- </node>
-</domain>
-</domains>
=======================================
--- /trunk/pom.xml Thu Jul 14 23:23:24 2011
+++ /trunk/pom.xml Fri Mar 16 21:13:33 2012
@@ -201,8 +201,8 @@
</reporting>

<properties>
- <cayenne-release-version>3.0.2</cayenne-release-version>
- <tapestry-release-version>5.2.6</tapestry-release-version>
+ <cayenne-release-version>3.1M3</cayenne-release-version>
+ <tapestry-release-version>5.3.2</tapestry-release-version>
</properties>

<repositories>
@@ -222,27 +222,31 @@
<url>http://maven.saiwai-solutions.com/</url>
</repository>
<!-- tapestry snapshot repository -->
+<!--
<repository>
<id>tapestry-snapshots</id>
<url>http://tapestry.formos.com/maven-snapshot-repository/</url>
</repository>
+-->
<!-- tapestry (pre) release repository -->
+<!--
<repository>
<id>tapestry-pending-releases</id>

<url>http://people.apache.org/~hlship/tapestry-ibiblio-rsynch-repository/</url>
</repository>
+-->
</repositories>

<distributionManagement>
<repository>
<id>saiwai-repository</id>
<name>Saiwai Maven Repository</name>
-
<url>scp://t5cayenne.saiwai-solutions.com:10022/var/www/vhosts/saiwai-solutions.com/maven</url>
+
<url>scp://t5cayenne.saiwai-solutions.com/var/www/vhosts/saiwai-solutions.com/maven</url>
</repository>
<site>
<id>saiwai-solutions-site</id>
<name>T5Cayenne Website</name>
-
<url>scp://t5cayenne.saiwai-solutions.com:10022/var/www/vhosts/saiwai-solutions.com/t5cayenne</url>
+
<url>scp://t5cayenne.saiwai-solutions.com/var/www/vhosts/saiwai-solutions.com/t5cayenne</url>
</site>
</distributionManagement>
</project>
=======================================
---
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/components/Select.java
Sat Mar 12 12:33:24 2011
+++
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/components/Select.java
Fri Mar 16 21:13:33 2012
@@ -8,6 +8,7 @@
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;

/**
@@ -19,6 +20,7 @@
public class Select implements Field
{
@Inject
+ @Property
private ComponentResources resources;

@Inject
@@ -27,13 +29,21 @@
@Parameter
private Persistent value;

+ @Parameter
+ private String label;
+
+ @Parameter
+ private boolean disabled;
+
@Component(
inheritInformalParameters = true,
parameters = {
"value=inherit:value",
+ "label=inherit:label",
+ "disabled=inherit:disabled",
"model=model"
},
- publishParameters
= "blankLabel,blankOption,clientId,disabled,encoder,label,validate,zone"
+ publishParameters
= "blankLabel,blankOption,encoder,validate,zone"
)
private org.apache.tapestry5.corelib.components.Select select;

@@ -49,11 +59,11 @@
}

public String getLabel() {
- return select.getLabel();
+ return label;
}

public boolean isDisabled() {
- return select.isDisabled();
+ return disabled;
}

public boolean isRequired() {
=======================================
---
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/CayenneBeanModelSource.java
Thu Mar 5 05:27:39 2009
+++
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/CayenneBeanModelSource.java
Fri Mar 16 21:13:33 2012
@@ -1,6 +1,9 @@
package com.googlecode.tapestry5cayenne.services;

+import java.util.Collection;
import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.util.CayenneMapEntry;
+import org.apache.cayenne.util.NameConverter;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.InjectService;
@@ -30,6 +33,8 @@
private static final String[] defaultExcludes = new String[] {
"persistenceState",
"snapshotVersion",
+ //since Cayenne 3.1.
+ "DEFAULT_VERSION"
};

public CayenneBeanModelSource(
@@ -67,7 +72,19 @@
return model;
}

- return model.exclude(defaultExcludes);
+ model = model.exclude(defaultExcludes);
+ //make sure to exclude all public static XYZ_PROPERTY values. We
can figure out what to exclude by checking the list of
properties/relationships...
+ //since Tapestry 5.3...
+ model = excludeProps(model,ent.getAttributes(), "_PROPERTY");
+ model = excludeProps(model, ent.getRelationships(), "_PROPERTY");
+ return excludeProps(model, ent.getPrimaryKeys(), "_PK_COLUMN");
+ }
+
+ private <T> BeanModel<T> excludeProps(BeanModel<T> model, Collection<?
extends CayenneMapEntry> entries, String suffix) {
+ for(CayenneMapEntry entry : entries) {
+ model =
model.exclude(NameConverter.javaToUnderscored(entry.getName()) + suffix);
+ }
+ return model;
}

}
=======================================
---
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/TapestryCayenneCoreModule.java
Sat Mar 12 12:33:24 2011
+++
/trunk/tapestry5-cayenne-core/src/main/java/com/googlecode/tapestry5cayenne/services/TapestryCayenneCoreModule.java
Fri Mar 16 21:13:33 2012
@@ -8,7 +8,6 @@
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.query.Query;
-import org.apache.tapestry5.PrimaryKeyEncoder;
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.VersionUtils;
import org.apache.tapestry5.grid.GridDataSource;
@@ -27,6 +26,7 @@
import org.apache.tapestry5.ioc.services.TypeCoercer;
import org.apache.tapestry5.services.*;

+import com.googlecode.tapestry5cayenne.T5CayenneConstants;
import com.googlecode.tapestry5cayenne.annotations.Cayenne;
import com.googlecode.tapestry5cayenne.internal.PersistentManagerImpl;
import
com.googlecode.tapestry5cayenne.internal.PersistentObjGridDataSource;
@@ -86,6 +86,7 @@
conf.add(T5CAYENNE_VERSION,
VersionUtils.readVersionNumber(
"META-INF/maven/com.googlecode.tapestry5-cayenne/tapestry5-cayenne-core/pom.properties"));
+ conf.add(T5CayenneConstants.PROJECT_FILE, "cayenne.xml");
}

@SuppressWarnings("unchecked")
@@ -102,8 +103,7 @@

binder.bind(NonPersistedObjectStorer.class,DefaultNonPersistedObjectStorer.class)
.withId("DefaultNonPersistedObjectStorer").withMarker(Cayenne.class);
binder.bind(PersistentManager.class,PersistentManagerImpl.class);
- //remove when PrimaryKeyEncoder is gone.
-
binder.bind(PrimaryKeyEncoder.class,CayennePrimaryKeyEncoder.class).withId("CayennePrimaryKeyEncoder");
+

binder.bind(EncodedValueEncrypter.class,PlainTextEncodedValueEncrypter.class)
.withId("PlainTextEncrypter");

=======================================
---
/trunk/tapestry5-cayenne-server/src/main/java/com/googlecode/tapestry5cayenne/services/DataContextProviderImpl.java
Wed May 5 12:56:11 2010
+++
/trunk/tapestry5-cayenne-server/src/main/java/com/googlecode/tapestry5cayenne/services/DataContextProviderImpl.java
Fri Mar 16 21:13:33 2012
@@ -5,9 +5,13 @@
*/
package com.googlecode.tapestry5cayenne.services;

+import static
com.googlecode.tapestry5cayenne.T5CayenneConstants.PROJECT_FILE;
+
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.BaseContext;
import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.services.ApplicationStateManager;

import com.googlecode.tapestry5cayenne.services.ObjectContextProvider;
@@ -21,9 +25,17 @@
public class DataContextProviderImpl implements ObjectContextProvider {

private final ApplicationStateManager asm;
-
- public DataContextProviderImpl(final ApplicationStateManager asm) {
+ private final ServerRuntime serverRuntime;
+
+ public DataContextProviderImpl(final ApplicationStateManager asm,
@Symbol(PROJECT_FILE) String projectFile) {
this.asm = asm;
+ try {
+ this.serverRuntime = new ServerRuntime(projectFile);
+ } catch (Exception e) {
+ //cayenne 3.1M3 introduces multiple project files, and the
default naming isn't cayenne.xml anymore.
+ //so if there's an exception here, it's most likely a config
file not found, or other exception.
+ throw new RuntimeException("Exception configuring Cayenne
server runtime using cayenne project file: " + projectFile + ". Have you
tried overriding the default (cayenne.xml) value for the
T5CayenneConstants.PROJECT_FILE symbol?", e);
+ }
}

public ObjectContext currentContext() {
@@ -43,6 +55,6 @@
}

public ObjectContext newContext() {
- return DataContext.createDataContext();
+ return serverRuntime.getContext();
}
}
=======================================
---
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/TestUtils.java
Fri Mar 11 16:38:29 2011
+++
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/TestUtils.java
Fri Mar 16 21:13:33 2012
@@ -10,8 +10,7 @@
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.DbGenerator;
-import org.apache.cayenne.conf.Configuration;
-import org.apache.cayenne.conf.DefaultConfiguration;
+import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter;
import org.apache.cayenne.map.DataMap;
@@ -39,10 +38,9 @@
* @throws Exception
*/
public static void setupdb() throws Exception {
- DefaultConfiguration c = new DefaultConfiguration("cayenne.xml");
- Configuration.initializeSharedConfiguration(c);
+ ServerRuntime runtime = new ServerRuntime("cayenne-App0.xml");
DbAdapter adapt = HSQLDBAdapter.class.newInstance();
- DataContext dc = DataContext.createDataContext();
+ DataContext dc = (DataContext) runtime.getContext();
for(Object obj : dc.getEntityResolver().getDataMaps()) {
DataMap map = (DataMap) obj;
DataNode node = dc.getParentDataDomain().lookupDataNode(map);
=======================================
---
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/integration/TestBlockContributions.java
Sat Mar 12 12:33:24 2011
+++
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/integration/TestBlockContributions.java
Fri Mar 16 21:13:33 2012
@@ -177,13 +177,12 @@
*/
public void testCayenneSelect() {
Document doc = _tester.renderPage("TestSelect");
- System.out.println(doc);
//Verify the label
//Element el = doc.getElementById("toOneList:label");
//assertEquals(el.getChildMarkup(),"Artist");

//Verify the select list.
- Element el = doc.getElementById("select");
+ Element el = doc.getElementById("select_0");
assertEquals(el.getChildren().size()-1,_data.size());

//we expect the list of items to be sorted by the @Label.
=======================================
---
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestBindingAndGridDataSourceCoercion.java
Tue Aug 24 10:51:09 2010
+++
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestBindingAndGridDataSourceCoercion.java
Fri Mar 16 21:13:33 2012
@@ -37,7 +37,7 @@
@BeforeClass
void setupDB() throws Exception {
TestUtils.setupdb();
- registry = TestUtils.setupRegistry("App0",
TapestryCayenneModule.class);
+ registry = TestUtils.setupRegistry("App0",
TapestryCayenneModule.class, TestModule.class);//need TestModule to
contribute the correct PROJECT_FILE.
context =
registry.getService(ObjectContextProvider.class).newContext();
data = TestUtils.basicData(context);
new
Ordering(Artist.NAME_PROPERTY,SortOrder.ASCENDING).orderList(data);
=======================================
---
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestModule.java
Thu Mar 5 05:27:39 2009
+++
/trunk/tapestry5-cayenne-server/src/test/java/com/googlecode/tapestry5cayenne/services/TestModule.java
Fri Mar 16 21:13:33 2012
@@ -6,6 +6,7 @@
package com.googlecode.tapestry5cayenne.services;

import org.apache.tapestry5.ioc.MappedConfiguration;
+import com.googlecode.tapestry5cayenne.T5CayenneConstants;

import com.googlecode.tapestry5cayenne.model.Painting;

@@ -13,6 +14,7 @@
//allows us to contribute the alias mode for tests.
public void contributeApplicationDefaults(MappedConfiguration<String,
String> conf) {
conf.add("tapestry.alias-mode","production");
+ conf.add(T5CayenneConstants.PROJECT_FILE, "cayenne-App0.xml");
}

@SuppressWarnings("unchecked")
=======================================
--- /trunk/tapestry5-cayenne-server/src/test/resources/App0Map.map.xml Tue
Aug 24 10:51:09 2010
+++ /trunk/tapestry5-cayenne-server/src/test/resources/App0Map.map.xml Fri
Mar 16 21:13:33 2012
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
http://cayenne.apache.org/schema/3.0/modelMap.xsd"
- project-version="3.0.0.1">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
http://cayenne.apache.org/schema/3.0/modelMap.xsd"
+ project-version="6">
<property name="defaultPackage"
value="com.googlecode.tapestry5cayenne.model"/>
<db-entity name="AcceptedBids">
<db-attribute name="acceptedDate" type="DATE" isMandatory="true"/>

Reply all
Reply to author
Forward
0 new messages