You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(3) |
Feb
(4) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(6) |
2006 |
Jan
(1) |
Feb
(6) |
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(12) |
2007 |
Jan
(44) |
Feb
(36) |
Mar
(24) |
Apr
(59) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(2) |
Nov
(4) |
Dec
(3) |
2008 |
Jan
(34) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
(7) |
Sep
(2) |
Oct
|
Nov
(3) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
|
Dec
|
2010 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Matt S. <Mat...@wh...> - 2007-04-16 21:56:10
|
The idea behind a convert operation is you are transforming one object into another object. I think it can make sense to transform null to "null" (a String containing 4 characters) or something else, so a source of null on a convert operation makes sense. The idea behind a copy operation is you are taking information from one object and copying that information to some other object. A null by definition is nothing, so to me it doesn't make sense that you're copying nothing onto something. I can't actually write down nothing, it's the same as having not written anything at all. I'm not married to the idea that null sources are allowed for conversions but not for copy operations, but I can't think of an example where copying a null onto some other object would actually make sense. I would expect this to be a programmer error, and so that is why a TransformationException is thrown. Matt S Matt Benson wrote: > Currently the Copier interface carries the implicit > message that the source object cannot be null. Should > we persist in this assumption, or do we believe it's > possible sometimes that null can be a legitimate copy > source? > > -Matt B > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > > |
From: Matt B. <gud...@ya...> - 2007-04-16 21:39:52
|
Hmm, to rephrase, "we SHOULD allow null copy sources". Adding a check of isAutomaticallyHandlingNulls() to BaseTransformer.copy() keeps the unit tests at green, and allows more flexibility. I plan to commit this change. -Matt B again --- Matt Benson <gud...@ya...> wrote: > Currently the Copier interface carries the implicit > message that the source object cannot be null. > Should > we persist in this assumption, or do we believe it's > possible sometimes that null can be a legitimate > copy > source? > > -Matt B > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam > protection around > http://mail.yahoo.com > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 > express and take > control of your XML. No limits. Just data. Click to > get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Matt B. <gud...@ya...> - 2007-04-16 21:16:04
|
Currently the Copier interface carries the implicit message that the source object cannot be null. Should we persist in this assumption, or do we believe it's possible sometimes that null can be a legitimate copy source? -Matt B __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: SourceForge.net <no...@so...> - 2007-04-14 06:00:10
|
Bugs item #1460440, was opened at 2006-03-28 23:25 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Resolution: Fixed Priority: 5 Private: No Submitted By: Garry (garpinc) Assigned to: Nobody/Anonymous (nobody) Summary: I get error if dest does not have getter? Initial Comment: net.sf.morph.transform.TransformationException: Error copying source Subscribers (class com.bcbsma.seebeyond.idsuee.elements.SubscriberEligibi lity$Subscribers) to destination com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:367) at com.bcbsma.seebeyond.ids.eligibility.IDSInsertEligibil ityRecordActivity.performActivity (IDSInsertEligibilityRecordActivity.java:59) at com.eds.seebeyond.common.activity.SeeBeyondActivity.pe rform(SeeBeyondActivity.java:132) at com.bcbsma.seebeyond.ids.eligibility.TestIDSInsertElig ibilityRecordActivity.testSubscriberEligibility (TestIDSInsertEligibilityRecordActivity.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at junit.framework.TestCase.runTest (TestCase.java:154) at junit.framework.TestCase.runBare (TestCase.java:127) at junit.framework.TestResult$1.protect (TestResult.java:106) at junit.framework.TestResult.runProtected (TestResult.java:124) at junit.framework.TestResult.run (TestResult.java:109) at junit.framework.TestCase.run (TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .main(RemoteTestRunner.java:196) Caused by: net.sf.morph.reflect.ReflectionException: The property 'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) using reflector SimpleDelegatingReflector [ListReflector,SortedSetReflector,ArrayReflector,Resul tSetReflector,ContextReflector,MapReflector,DynaBeanRe flector,ObjectReflector] (class net.sf.morph.reflect.reflectors.SimpleDelegatingReflec tor) at net.sf.morph.reflect.reflectors.BaseReflector.get (BaseReflector.java:603) at net.sf.morph.transform.copiers.BasePropertyNameCopier. copyProperty(BasePropertyNameCopier.java:108) at net.sf.morph.transform.copiers.PropertyNameMappingCopi er.copyImpl(PropertyNameMappingCopier.java:122) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:360) ... 16 more ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 01:00 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:57 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:28 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:27 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:23 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-31 16:15 Message: Logged In: YES user_id=712000 I don't have control of my destination object so I would need morph to look at the source type and prefer that over object if it exists. ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-31 13:07 Message: Logged In: YES user_id=1161666 Fixed in Morph 1.0.1. However, there is another problem you are likely to encounter with your code. The issue is that you have multiple setters for the subscriberID property. Morph doesn't really have a good way of determining which one to use so it's going to pick at random, and it may make the wrong choice. The solution is to make a single setSubscriberID(Object obj) method that does a test like this if (obj instance of String) { // logic here } else { } So basically combine your setters into a single setter. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:18 Message: Logged In: YES user_id=712000 As indicated there are no getters for SubscriberID only setters. Since this is the destination object there should be no need to have a getter. In my case this is a one way mapping. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:14 Message: Logged In: YES user_id=712000 package com.bcbsma.seebeyond.a2a; import java.sql.*; import com.stc.eways.jdbcx.*; public class InsertSubscriberAddress extends PreparedStatementAgent { public InsertSubscriberAddress(Session session) { super(session, "INSERT INTO TBL_SUBSCRIBER_ADDRESS (SUBSCRIBER_ID, GROUP_NUMBER, TYPE_CODE, ADDRESS1, ADDRESS2, CITY, STATE, ZIP_5, ZIP_4, COUNTRY, PHONE_1, PHONE_2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); } public void setSubscriberID(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setString(1, obj); } public void setSubscriberID(Object obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setObject(1, obj); } public void setGroupNumber(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setString(2, obj); } public void setGroupNumber(Object obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setObject(2, obj); } public void setTypeCode(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setString(3, obj); } public void setTypeCode(Object obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setObject(3, obj); } public void setAddress1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setString(4, obj); } public void setAddress1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setObject(4, obj); } public void setAddress2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setString(5, obj); } public void setAddress2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setObject(5, obj); } public void setCity(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setString(6, obj); } public void setCity(Object obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setObject(6, obj); } public void setState(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setString(7, obj); } public void setState(Object obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setObject(7, obj); } public void setZip5(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setString(8, obj); } public void setZip5(Object obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setObject(8, obj); } public void setZip4(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setString(9, obj); } public void setZip4(Object obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setObject(9, obj); } public void setCountry(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setString(10, obj); } public void setCountry(Object obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setObject(10, obj); } public void setPhone1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setString(11, obj); } public void setPhone1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setObject(11, obj); } public void setPhone2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setString(12, obj); } public void setPhone2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setObject(12, obj); } int _updateCount; public int executeUpdate() throws java.sql.SQLException { return (_updateCount = super.executeUpdate()); } public int count() { return _updateCount; } public void addBatch() throws java.sql.SQLException { super.addBatch(); } public void clearBatch() throws java.sql.SQLException { super.clearBatch(); } public int[] executeBatch() throws java.sql.SQLException { return super.executeBatch(); } } ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-30 08:44 Message: Logged In: YES user_id=1161666 The error message says "'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress". Could you please post the class definition for InsertSubscriberAddress? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-14 05:57:40
|
Bugs item #1460440, was opened at 2006-03-28 23:25 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Resolution: Fixed Priority: 5 Private: No Submitted By: Garry (garpinc) Assigned to: Nobody/Anonymous (nobody) Summary: I get error if dest does not have getter? Initial Comment: net.sf.morph.transform.TransformationException: Error copying source Subscribers (class com.bcbsma.seebeyond.idsuee.elements.SubscriberEligibi lity$Subscribers) to destination com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:367) at com.bcbsma.seebeyond.ids.eligibility.IDSInsertEligibil ityRecordActivity.performActivity (IDSInsertEligibilityRecordActivity.java:59) at com.eds.seebeyond.common.activity.SeeBeyondActivity.pe rform(SeeBeyondActivity.java:132) at com.bcbsma.seebeyond.ids.eligibility.TestIDSInsertElig ibilityRecordActivity.testSubscriberEligibility (TestIDSInsertEligibilityRecordActivity.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at junit.framework.TestCase.runTest (TestCase.java:154) at junit.framework.TestCase.runBare (TestCase.java:127) at junit.framework.TestResult$1.protect (TestResult.java:106) at junit.framework.TestResult.runProtected (TestResult.java:124) at junit.framework.TestResult.run (TestResult.java:109) at junit.framework.TestCase.run (TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .main(RemoteTestRunner.java:196) Caused by: net.sf.morph.reflect.ReflectionException: The property 'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) using reflector SimpleDelegatingReflector [ListReflector,SortedSetReflector,ArrayReflector,Resul tSetReflector,ContextReflector,MapReflector,DynaBeanRe flector,ObjectReflector] (class net.sf.morph.reflect.reflectors.SimpleDelegatingReflec tor) at net.sf.morph.reflect.reflectors.BaseReflector.get (BaseReflector.java:603) at net.sf.morph.transform.copiers.BasePropertyNameCopier. copyProperty(BasePropertyNameCopier.java:108) at net.sf.morph.transform.copiers.PropertyNameMappingCopi er.copyImpl(PropertyNameMappingCopier.java:122) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:360) ... 16 more ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:57 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:28 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:27 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:23 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-31 16:15 Message: Logged In: YES user_id=712000 I don't have control of my destination object so I would need morph to look at the source type and prefer that over object if it exists. ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-31 13:07 Message: Logged In: YES user_id=1161666 Fixed in Morph 1.0.1. However, there is another problem you are likely to encounter with your code. The issue is that you have multiple setters for the subscriberID property. Morph doesn't really have a good way of determining which one to use so it's going to pick at random, and it may make the wrong choice. The solution is to make a single setSubscriberID(Object obj) method that does a test like this if (obj instance of String) { // logic here } else { } So basically combine your setters into a single setter. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:18 Message: Logged In: YES user_id=712000 As indicated there are no getters for SubscriberID only setters. Since this is the destination object there should be no need to have a getter. In my case this is a one way mapping. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:14 Message: Logged In: YES user_id=712000 package com.bcbsma.seebeyond.a2a; import java.sql.*; import com.stc.eways.jdbcx.*; public class InsertSubscriberAddress extends PreparedStatementAgent { public InsertSubscriberAddress(Session session) { super(session, "INSERT INTO TBL_SUBSCRIBER_ADDRESS (SUBSCRIBER_ID, GROUP_NUMBER, TYPE_CODE, ADDRESS1, ADDRESS2, CITY, STATE, ZIP_5, ZIP_4, COUNTRY, PHONE_1, PHONE_2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); } public void setSubscriberID(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setString(1, obj); } public void setSubscriberID(Object obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setObject(1, obj); } public void setGroupNumber(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setString(2, obj); } public void setGroupNumber(Object obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setObject(2, obj); } public void setTypeCode(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setString(3, obj); } public void setTypeCode(Object obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setObject(3, obj); } public void setAddress1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setString(4, obj); } public void setAddress1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setObject(4, obj); } public void setAddress2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setString(5, obj); } public void setAddress2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setObject(5, obj); } public void setCity(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setString(6, obj); } public void setCity(Object obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setObject(6, obj); } public void setState(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setString(7, obj); } public void setState(Object obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setObject(7, obj); } public void setZip5(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setString(8, obj); } public void setZip5(Object obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setObject(8, obj); } public void setZip4(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setString(9, obj); } public void setZip4(Object obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setObject(9, obj); } public void setCountry(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setString(10, obj); } public void setCountry(Object obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setObject(10, obj); } public void setPhone1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setString(11, obj); } public void setPhone1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setObject(11, obj); } public void setPhone2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setString(12, obj); } public void setPhone2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setObject(12, obj); } int _updateCount; public int executeUpdate() throws java.sql.SQLException { return (_updateCount = super.executeUpdate()); } public int count() { return _updateCount; } public void addBatch() throws java.sql.SQLException { super.addBatch(); } public void clearBatch() throws java.sql.SQLException { super.clearBatch(); } public int[] executeBatch() throws java.sql.SQLException { return super.executeBatch(); } } ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-30 08:44 Message: Logged In: YES user_id=1161666 The error message says "'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress". Could you please post the class definition for InsertSubscriberAddress? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-14 05:28:29
|
Bugs item #1460440, was opened at 2006-03-28 23:25 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Resolution: Fixed Priority: 5 Private: No Submitted By: Garry (garpinc) Assigned to: Nobody/Anonymous (nobody) Summary: I get error if dest does not have getter? Initial Comment: net.sf.morph.transform.TransformationException: Error copying source Subscribers (class com.bcbsma.seebeyond.idsuee.elements.SubscriberEligibi lity$Subscribers) to destination com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:367) at com.bcbsma.seebeyond.ids.eligibility.IDSInsertEligibil ityRecordActivity.performActivity (IDSInsertEligibilityRecordActivity.java:59) at com.eds.seebeyond.common.activity.SeeBeyondActivity.pe rform(SeeBeyondActivity.java:132) at com.bcbsma.seebeyond.ids.eligibility.TestIDSInsertElig ibilityRecordActivity.testSubscriberEligibility (TestIDSInsertEligibilityRecordActivity.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at junit.framework.TestCase.runTest (TestCase.java:154) at junit.framework.TestCase.runBare (TestCase.java:127) at junit.framework.TestResult$1.protect (TestResult.java:106) at junit.framework.TestResult.runProtected (TestResult.java:124) at junit.framework.TestResult.run (TestResult.java:109) at junit.framework.TestCase.run (TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .main(RemoteTestRunner.java:196) Caused by: net.sf.morph.reflect.ReflectionException: The property 'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) using reflector SimpleDelegatingReflector [ListReflector,SortedSetReflector,ArrayReflector,Resul tSetReflector,ContextReflector,MapReflector,DynaBeanRe flector,ObjectReflector] (class net.sf.morph.reflect.reflectors.SimpleDelegatingReflec tor) at net.sf.morph.reflect.reflectors.BaseReflector.get (BaseReflector.java:603) at net.sf.morph.transform.copiers.BasePropertyNameCopier. copyProperty(BasePropertyNameCopier.java:108) at net.sf.morph.transform.copiers.PropertyNameMappingCopi er.copyImpl(PropertyNameMappingCopier.java:122) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:360) ... 16 more ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:28 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:27 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:23 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-31 16:15 Message: Logged In: YES user_id=712000 I don't have control of my destination object so I would need morph to look at the source type and prefer that over object if it exists. ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-31 13:07 Message: Logged In: YES user_id=1161666 Fixed in Morph 1.0.1. However, there is another problem you are likely to encounter with your code. The issue is that you have multiple setters for the subscriberID property. Morph doesn't really have a good way of determining which one to use so it's going to pick at random, and it may make the wrong choice. The solution is to make a single setSubscriberID(Object obj) method that does a test like this if (obj instance of String) { // logic here } else { } So basically combine your setters into a single setter. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:18 Message: Logged In: YES user_id=712000 As indicated there are no getters for SubscriberID only setters. Since this is the destination object there should be no need to have a getter. In my case this is a one way mapping. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:14 Message: Logged In: YES user_id=712000 package com.bcbsma.seebeyond.a2a; import java.sql.*; import com.stc.eways.jdbcx.*; public class InsertSubscriberAddress extends PreparedStatementAgent { public InsertSubscriberAddress(Session session) { super(session, "INSERT INTO TBL_SUBSCRIBER_ADDRESS (SUBSCRIBER_ID, GROUP_NUMBER, TYPE_CODE, ADDRESS1, ADDRESS2, CITY, STATE, ZIP_5, ZIP_4, COUNTRY, PHONE_1, PHONE_2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); } public void setSubscriberID(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setString(1, obj); } public void setSubscriberID(Object obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setObject(1, obj); } public void setGroupNumber(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setString(2, obj); } public void setGroupNumber(Object obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setObject(2, obj); } public void setTypeCode(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setString(3, obj); } public void setTypeCode(Object obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setObject(3, obj); } public void setAddress1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setString(4, obj); } public void setAddress1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setObject(4, obj); } public void setAddress2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setString(5, obj); } public void setAddress2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setObject(5, obj); } public void setCity(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setString(6, obj); } public void setCity(Object obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setObject(6, obj); } public void setState(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setString(7, obj); } public void setState(Object obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setObject(7, obj); } public void setZip5(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setString(8, obj); } public void setZip5(Object obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setObject(8, obj); } public void setZip4(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setString(9, obj); } public void setZip4(Object obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setObject(9, obj); } public void setCountry(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setString(10, obj); } public void setCountry(Object obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setObject(10, obj); } public void setPhone1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setString(11, obj); } public void setPhone1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setObject(11, obj); } public void setPhone2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setString(12, obj); } public void setPhone2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setObject(12, obj); } int _updateCount; public int executeUpdate() throws java.sql.SQLException { return (_updateCount = super.executeUpdate()); } public int count() { return _updateCount; } public void addBatch() throws java.sql.SQLException { super.addBatch(); } public void clearBatch() throws java.sql.SQLException { super.clearBatch(); } public int[] executeBatch() throws java.sql.SQLException { return super.executeBatch(); } } ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-30 08:44 Message: Logged In: YES user_id=1161666 The error message says "'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress". Could you please post the class definition for InsertSubscriberAddress? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-14 05:27:10
|
Bugs item #1460440, was opened at 2006-03-28 23:25 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Resolution: Fixed Priority: 5 Private: No Submitted By: Garry (garpinc) Assigned to: Nobody/Anonymous (nobody) Summary: I get error if dest does not have getter? Initial Comment: net.sf.morph.transform.TransformationException: Error copying source Subscribers (class com.bcbsma.seebeyond.idsuee.elements.SubscriberEligibi lity$Subscribers) to destination com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:367) at com.bcbsma.seebeyond.ids.eligibility.IDSInsertEligibil ityRecordActivity.performActivity (IDSInsertEligibilityRecordActivity.java:59) at com.eds.seebeyond.common.activity.SeeBeyondActivity.pe rform(SeeBeyondActivity.java:132) at com.bcbsma.seebeyond.ids.eligibility.TestIDSInsertElig ibilityRecordActivity.testSubscriberEligibility (TestIDSInsertEligibilityRecordActivity.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at junit.framework.TestCase.runTest (TestCase.java:154) at junit.framework.TestCase.runBare (TestCase.java:127) at junit.framework.TestResult$1.protect (TestResult.java:106) at junit.framework.TestResult.runProtected (TestResult.java:124) at junit.framework.TestResult.run (TestResult.java:109) at junit.framework.TestCase.run (TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .main(RemoteTestRunner.java:196) Caused by: net.sf.morph.reflect.ReflectionException: The property 'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) using reflector SimpleDelegatingReflector [ListReflector,SortedSetReflector,ArrayReflector,Resul tSetReflector,ContextReflector,MapReflector,DynaBeanRe flector,ObjectReflector] (class net.sf.morph.reflect.reflectors.SimpleDelegatingReflec tor) at net.sf.morph.reflect.reflectors.BaseReflector.get (BaseReflector.java:603) at net.sf.morph.transform.copiers.BasePropertyNameCopier. copyProperty(BasePropertyNameCopier.java:108) at net.sf.morph.transform.copiers.PropertyNameMappingCopi er.copyImpl(PropertyNameMappingCopier.java:122) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:360) ... 16 more ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:27 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:23 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-31 16:15 Message: Logged In: YES user_id=712000 I don't have control of my destination object so I would need morph to look at the source type and prefer that over object if it exists. ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-31 13:07 Message: Logged In: YES user_id=1161666 Fixed in Morph 1.0.1. However, there is another problem you are likely to encounter with your code. The issue is that you have multiple setters for the subscriberID property. Morph doesn't really have a good way of determining which one to use so it's going to pick at random, and it may make the wrong choice. The solution is to make a single setSubscriberID(Object obj) method that does a test like this if (obj instance of String) { // logic here } else { } So basically combine your setters into a single setter. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:18 Message: Logged In: YES user_id=712000 As indicated there are no getters for SubscriberID only setters. Since this is the destination object there should be no need to have a getter. In my case this is a one way mapping. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:14 Message: Logged In: YES user_id=712000 package com.bcbsma.seebeyond.a2a; import java.sql.*; import com.stc.eways.jdbcx.*; public class InsertSubscriberAddress extends PreparedStatementAgent { public InsertSubscriberAddress(Session session) { super(session, "INSERT INTO TBL_SUBSCRIBER_ADDRESS (SUBSCRIBER_ID, GROUP_NUMBER, TYPE_CODE, ADDRESS1, ADDRESS2, CITY, STATE, ZIP_5, ZIP_4, COUNTRY, PHONE_1, PHONE_2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); } public void setSubscriberID(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setString(1, obj); } public void setSubscriberID(Object obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setObject(1, obj); } public void setGroupNumber(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setString(2, obj); } public void setGroupNumber(Object obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setObject(2, obj); } public void setTypeCode(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setString(3, obj); } public void setTypeCode(Object obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setObject(3, obj); } public void setAddress1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setString(4, obj); } public void setAddress1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setObject(4, obj); } public void setAddress2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setString(5, obj); } public void setAddress2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setObject(5, obj); } public void setCity(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setString(6, obj); } public void setCity(Object obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setObject(6, obj); } public void setState(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setString(7, obj); } public void setState(Object obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setObject(7, obj); } public void setZip5(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setString(8, obj); } public void setZip5(Object obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setObject(8, obj); } public void setZip4(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setString(9, obj); } public void setZip4(Object obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setObject(9, obj); } public void setCountry(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setString(10, obj); } public void setCountry(Object obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setObject(10, obj); } public void setPhone1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setString(11, obj); } public void setPhone1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setObject(11, obj); } public void setPhone2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setString(12, obj); } public void setPhone2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setObject(12, obj); } int _updateCount; public int executeUpdate() throws java.sql.SQLException { return (_updateCount = super.executeUpdate()); } public int count() { return _updateCount; } public void addBatch() throws java.sql.SQLException { super.addBatch(); } public void clearBatch() throws java.sql.SQLException { super.clearBatch(); } public int[] executeBatch() throws java.sql.SQLException { return super.executeBatch(); } } ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-30 08:44 Message: Logged In: YES user_id=1161666 The error message says "'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress". Could you please post the class definition for InsertSubscriberAddress? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-14 05:23:35
|
Bugs item #1460440, was opened at 2006-03-28 23:25 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Resolution: Fixed Priority: 5 Private: No Submitted By: Garry (garpinc) Assigned to: Nobody/Anonymous (nobody) Summary: I get error if dest does not have getter? Initial Comment: net.sf.morph.transform.TransformationException: Error copying source Subscribers (class com.bcbsma.seebeyond.idsuee.elements.SubscriberEligibi lity$Subscribers) to destination com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:367) at com.bcbsma.seebeyond.ids.eligibility.IDSInsertEligibil ityRecordActivity.performActivity (IDSInsertEligibilityRecordActivity.java:59) at com.eds.seebeyond.common.activity.SeeBeyondActivity.pe rform(SeeBeyondActivity.java:132) at com.bcbsma.seebeyond.ids.eligibility.TestIDSInsertElig ibilityRecordActivity.testSubscriberEligibility (TestIDSInsertEligibilityRecordActivity.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at junit.framework.TestCase.runTest (TestCase.java:154) at junit.framework.TestCase.runBare (TestCase.java:127) at junit.framework.TestResult$1.protect (TestResult.java:106) at junit.framework.TestResult.runProtected (TestResult.java:124) at junit.framework.TestResult.run (TestResult.java:109) at junit.framework.TestCase.run (TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner .main(RemoteTestRunner.java:196) Caused by: net.sf.morph.reflect.ReflectionException: The property 'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress@26f9e 5 (class com.bcbsma.seebeyond.a2a.InsertSubscriberAddress) using reflector SimpleDelegatingReflector [ListReflector,SortedSetReflector,ArrayReflector,Resul tSetReflector,ContextReflector,MapReflector,DynaBeanRe flector,ObjectReflector] (class net.sf.morph.reflect.reflectors.SimpleDelegatingReflec tor) at net.sf.morph.reflect.reflectors.BaseReflector.get (BaseReflector.java:603) at net.sf.morph.transform.copiers.BasePropertyNameCopier. copyProperty(BasePropertyNameCopier.java:108) at net.sf.morph.transform.copiers.PropertyNameMappingCopi er.copyImpl(PropertyNameMappingCopier.java:122) at net.sf.morph.transform.transformers.BaseTransformer.co py(BaseTransformer.java:360) ... 16 more ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:23 Message: Logged In: YES user_id=120761 Originator: NO It is ultimately just impractical for Morph to do this; this behavior is desirable for you in this situation, but I am not at all convinced that so constraining Morph will satisfy all use cases. Given the age of this item, I would imagine you've probably found a workaround by now. If not, please bring the issue up on the morph userlist and we can decide on a way to achieve what you need through configuration. Leaving as fixed because that was the resolution for the original issue (getter/setter). The rest is a usage question and doesn't really belong here. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-31 16:15 Message: Logged In: YES user_id=712000 I don't have control of my destination object so I would need morph to look at the source type and prefer that over object if it exists. ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-31 13:07 Message: Logged In: YES user_id=1161666 Fixed in Morph 1.0.1. However, there is another problem you are likely to encounter with your code. The issue is that you have multiple setters for the subscriberID property. Morph doesn't really have a good way of determining which one to use so it's going to pick at random, and it may make the wrong choice. The solution is to make a single setSubscriberID(Object obj) method that does a test like this if (obj instance of String) { // logic here } else { } So basically combine your setters into a single setter. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:18 Message: Logged In: YES user_id=712000 As indicated there are no getters for SubscriberID only setters. Since this is the destination object there should be no need to have a getter. In my case this is a one way mapping. ---------------------------------------------------------------------- Comment By: Garry (garpinc) Date: 2006-03-30 15:14 Message: Logged In: YES user_id=712000 package com.bcbsma.seebeyond.a2a; import java.sql.*; import com.stc.eways.jdbcx.*; public class InsertSubscriberAddress extends PreparedStatementAgent { public InsertSubscriberAddress(Session session) { super(session, "INSERT INTO TBL_SUBSCRIBER_ADDRESS (SUBSCRIBER_ID, GROUP_NUMBER, TYPE_CODE, ADDRESS1, ADDRESS2, CITY, STATE, ZIP_5, ZIP_4, COUNTRY, PHONE_1, PHONE_2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); } public void setSubscriberID(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setString(1, obj); } public void setSubscriberID(Object obj) throws java.sql.SQLException { if(obj == null) setNull(1, Types.VARCHAR); else setObject(1, obj); } public void setGroupNumber(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setString(2, obj); } public void setGroupNumber(Object obj) throws java.sql.SQLException { if(obj == null) setNull(2, Types.VARCHAR); else setObject(2, obj); } public void setTypeCode(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setString(3, obj); } public void setTypeCode(Object obj) throws java.sql.SQLException { if(obj == null) setNull(3, Types.VARCHAR); else setObject(3, obj); } public void setAddress1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setString(4, obj); } public void setAddress1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(4, Types.VARCHAR); else setObject(4, obj); } public void setAddress2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setString(5, obj); } public void setAddress2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(5, Types.VARCHAR); else setObject(5, obj); } public void setCity(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setString(6, obj); } public void setCity(Object obj) throws java.sql.SQLException { if(obj == null) setNull(6, Types.VARCHAR); else setObject(6, obj); } public void setState(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setString(7, obj); } public void setState(Object obj) throws java.sql.SQLException { if(obj == null) setNull(7, Types.VARCHAR); else setObject(7, obj); } public void setZip5(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setString(8, obj); } public void setZip5(Object obj) throws java.sql.SQLException { if(obj == null) setNull(8, Types.VARCHAR); else setObject(8, obj); } public void setZip4(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setString(9, obj); } public void setZip4(Object obj) throws java.sql.SQLException { if(obj == null) setNull(9, Types.VARCHAR); else setObject(9, obj); } public void setCountry(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setString(10, obj); } public void setCountry(Object obj) throws java.sql.SQLException { if(obj == null) setNull(10, Types.VARCHAR); else setObject(10, obj); } public void setPhone1(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setString(11, obj); } public void setPhone1(Object obj) throws java.sql.SQLException { if(obj == null) setNull(11, Types.VARCHAR); else setObject(11, obj); } public void setPhone2(java.lang.String obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setString(12, obj); } public void setPhone2(Object obj) throws java.sql.SQLException { if(obj == null) setNull(12, Types.VARCHAR); else setObject(12, obj); } int _updateCount; public int executeUpdate() throws java.sql.SQLException { return (_updateCount = super.executeUpdate()); } public int count() { return _updateCount; } public void addBatch() throws java.sql.SQLException { super.addBatch(); } public void clearBatch() throws java.sql.SQLException { super.clearBatch(); } public int[] executeBatch() throws java.sql.SQLException { return super.executeBatch(); } } ---------------------------------------------------------------------- Comment By: Matt Sgarlata (sgarlatm) Date: 2006-03-30 08:44 Message: Logged In: YES user_id=1161666 The error message says "'subscriberID' is not readable in bean com.bcbsma.seebeyond.a2a.InsertSubscriberAddress". Could you please post the class definition for InsertSubscriberAddress? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1460440&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-14 05:04:07
|
Bugs item #1700375, was opened at 2007-04-13 17:12 Message generated for change (Comment added) made by orangeherbert You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1700375&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Matt Sgarlata (sgarlatm) Assigned to: Nobody/Anonymous (nobody) Summary: Improve error messages for nested transformations Initial Comment: When an error occurs during a deep copy of an object graph, the error messages are confusing. Here is an example: net.sf.morph.transform.TransformationException: Error copying source [com.spider.cms.hdao.impl.PerformanceChartHDao@1, com.spider.cms.hdao.impl.PerformanceChartHDao@2, com.spider.cms.hdao.impl.PerformanceChartHDao@1] (class org.hibernate.collection.PersistentList) to destination [com.spider.cms.hdao.impl.PerformanceChartHDao@1, com.spider.cms.hdao.impl.PerformanceChartHDao@2, com.spider.cms.hdao.impl.PerformanceChartHDao@1] (class org.hibernate.collection.PersistentList) at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:402) at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.copyImpl(SimpleDelegatingTransformer.java:245) at It would be nice if we could spit out something better like "Error copying property some.nested.path where source was ___ and destination was ___" or perhaps "Error copying property 'path' of object at path 'some.nested' where source was __ and destination was ___" Right now the error message looks like it could be something wrong with Morph when really that's not the case at all. The error messages need to give more context of where we are in the graph that the error is happening. ---------------------------------------------------------------------- >Comment By: Matt Benson (orangeherbert) Date: 2007-04-14 00:04 Message: Logged In: YES user_id=120761 Originator: NO I think it would be nice in general to have a facility in Morph whereby one could determine the current position in an object graph. I'm thinking it might be fairly easy to do this with a ThreadLocal stack of property names and have been kind of letting this idea cook for awhile to figure out how to do this as non-invasively as possible, maybe by providing an aspect to be applied to any NodeCopier (this would probably be very easy to Spring-wire, for example). Maybe if this were available message-building code could query some known threadlocal to learn whether the node-tracker was in use, and augment the created messages accordingly. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1700375&group_id=124910 |
From: SourceForge.net <no...@so...> - 2007-04-13 22:12:05
|
Bugs item #1700375, was opened at 2007-04-13 18:12 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1700375&group_id=124910 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Matt Sgarlata (sgarlatm) Assigned to: Nobody/Anonymous (nobody) Summary: Improve error messages for nested transformations Initial Comment: When an error occurs during a deep copy of an object graph, the error messages are confusing. Here is an example: net.sf.morph.transform.TransformationException: Error copying source [com.spider.cms.hdao.impl.PerformanceChartHDao@1, com.spider.cms.hdao.impl.PerformanceChartHDao@2, com.spider.cms.hdao.impl.PerformanceChartHDao@1] (class org.hibernate.collection.PersistentList) to destination [com.spider.cms.hdao.impl.PerformanceChartHDao@1, com.spider.cms.hdao.impl.PerformanceChartHDao@2, com.spider.cms.hdao.impl.PerformanceChartHDao@1] (class org.hibernate.collection.PersistentList) at net.sf.morph.transform.transformers.BaseTransformer.copy(BaseTransformer.java:402) at net.sf.morph.transform.transformers.SimpleDelegatingTransformer.copyImpl(SimpleDelegatingTransformer.java:245) at It would be nice if we could spit out something better like "Error copying property some.nested.path where source was ___ and destination was ___" or perhaps "Error copying property 'path' of object at path 'some.nested' where source was __ and destination was ___" Right now the error message looks like it could be something wrong with Morph when really that's not the case at all. The error messages need to give more context of where we are in the graph that the error is happening. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=700930&aid=1700375&group_id=124910 |
From: Matt B. <gud...@ya...> - 2007-04-12 18:25:18
|
I think it's necessary to leave get/setConverter synchronized whenever your "if unset, set a default converter" pattern is used. -Matt B --- Matt Sgarlata <Mat...@wh...> wrote: > How about the Converter reference? > > I was thinking about this some more over lunch, and > I think I read > somewhere else that pointers actually do need to be > synchronized because > changing their values is not atomic on 64-bit > systems. > > Unfortunately, I have no clue where to look this > stuff up. I guess for > now unsynchronize propertyName (since it is > immutable) and leave the > Converter synchronized? For all the other Morph > classes out there that > don't have synchronization on their getters/setters, > I guess we can just > leave it alone until someone has a problem with it. > Usually > transformers are configured only once anyway, at > least when I am using them. > > Matt S > > Matt Benson wrote: > > I can agree here that the propertyName > setter/getter > > don't necessarily need to be synchronized. I > would be > > so bold as to say, however, that synchronization > > issues should be examined on a case-by-case basis. > :) > > > > -Matt B > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ The fish are biting. Get more visitors on your site using Yahoo! Search Marketing. http://searchmarketing.yahoo.com/arp/sponsoredsearch_v2.php |
From: Matt S. <Mat...@wh...> - 2007-04-12 17:53:27
|
How about the Converter reference? I was thinking about this some more over lunch, and I think I read somewhere else that pointers actually do need to be synchronized because changing their values is not atomic on 64-bit systems. Unfortunately, I have no clue where to look this stuff up. I guess for now unsynchronize propertyName (since it is immutable) and leave the Converter synchronized? For all the other Morph classes out there that don't have synchronization on their getters/setters, I guess we can just leave it alone until someone has a problem with it. Usually transformers are configured only once anyway, at least when I am using them. Matt S Matt Benson wrote: > I can agree here that the propertyName setter/getter > don't necessarily need to be synchronized. I would be > so bold as to say, however, that synchronization > issues should be examined on a case-by-case basis. :) > > -Matt B |
From: Matt B. <gud...@ya...> - 2007-04-12 17:31:50
|
I can agree here that the propertyName setter/getter don't necessarily need to be synchronized. I would be so bold as to say, however, that synchronization issues should be examined on a case-by-case basis. :) -Matt B --- Matt Sgarlata <mat...@sp...> wrote: > My knowledge of synchronization is kind of weak, but > I don't think > synchronization is needed in the > GetPropertyConverter. From Craig McC: > > If your property is a simple type (a primitive type > or a String), you > generally don't need to worry too much. Whichever > assignment happens last > wins. But there won't be the case that a pointer to > the underlying value > is "halfway" updated so that a simultaneous reader > gets a totally bogus > value. In technical terms, assignments of Strings > and primitives can be > considered "atomic" in Java. On the other hand, if > the underlying > property is complex (such as a linked list), it is > clearly possible for > simultaneous writes (or a write that is simultaneous > with one or more > reads) to interfere with each other. > > http://mail-archives.apache.org/mod_mbox/struts-user/200108.mbox/%3CPine.BSF.4.21.0108062003440.37552-100000@localhost%3E > > The properties previously synchronized were String > propertyName and > Converter propertyConverter. Those are just > pointers, so I don't think > they need to be synchronized. If I'm mistaken, that > means we have a > bunch of synchronized keywords we need to add all > over the place. > > Matt S > > -- > This message is intended only for the named > recipient. If you are not the intended recipient, > you are notified that disclosing, copying, > distributing, or taking any action in reliance on > the contents of this information is strictly > prohibited. > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Need Mail bonding? Go to the Yahoo! Mail Q&A for great tips from Yahoo! Answers users. http://answers.yahoo.com/dir/?link=list&sid=396546091 |
From: Matt B. <gud...@ya...> - 2007-04-12 17:28:16
|
Hi, Matt--I am fine with this. -Matt B --- Matt Sgarlata <Mat...@wh...> wrote: > I have an initial implementation that allows > RuntimeException wrapping > to be turned off. I added to BaseTransformer: > > protected boolean isWrappingRuntimeExceptions() > { > return true; > } > > As you can see, I opted to wrap RuntimeExceptions by > default. As I've > thought about this problem over the past few months, > I've decided that > BaseTransformer is meant to be an implementation > helper and one of the > things it does is take potentially ugly Exceptions > and wrap them in nice > TransformationExceptions with comprehensible English > error messages. > This is one of the major benefits I think Morph has > over BeanUtils: > Morph exceptions have their own hierarchy and > sensible English messages, > as opposed to just rethrowing underlying JDK errors. > So, if someone new > to Morph writes a simple converter extended from > BaseTransformer, he or > she automatically gets this behavior. If the user > wants to deal with > his or her own exceptions, it's easy to override > this method and set > isWrappingRuntimeExceptions to false. > > Beyond this, I also went through every Transformer > in Morph and overrode > this method, even if the override also returns true. > That way, if we > decide to change the default behavior to return > false, no transformers > will break. For basic converters like > TextToNumberConverter I set this > to true (the converter is included with Morph, so it > should throw Morph > exceptions!). For transformers that delegate to > other transformers like > SimpleDelegatingTransformer, > PropertyNameMatchingCopier and > ContainerCopier, I set this to false, since these > transformers don't do > any real transformations themselves, they just > delegate to other > (potentially user-defined) transformers. > > Matt Benson, Ben Alex, Alan Stewart - what do you > all think? I'm going > to hold off on checking this in for a few hours to > make sure it sits > well with me and anyone else out there who's reading > the list. > > Matt S > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Need Mail bonding? Go to the Yahoo! Mail Q&A for great tips from Yahoo! Answers users. http://answers.yahoo.com/dir/?link=list&sid=396546091 |
From: Matt S. <Mat...@wh...> - 2007-04-12 17:05:33
|
I have an initial implementation that allows RuntimeException wrapping to be turned off. I added to BaseTransformer: protected boolean isWrappingRuntimeExceptions() { return true; } As you can see, I opted to wrap RuntimeExceptions by default. As I've thought about this problem over the past few months, I've decided that BaseTransformer is meant to be an implementation helper and one of the things it does is take potentially ugly Exceptions and wrap them in nice TransformationExceptions with comprehensible English error messages. This is one of the major benefits I think Morph has over BeanUtils: Morph exceptions have their own hierarchy and sensible English messages, as opposed to just rethrowing underlying JDK errors. So, if someone new to Morph writes a simple converter extended from BaseTransformer, he or she automatically gets this behavior. If the user wants to deal with his or her own exceptions, it's easy to override this method and set isWrappingRuntimeExceptions to false. Beyond this, I also went through every Transformer in Morph and overrode this method, even if the override also returns true. That way, if we decide to change the default behavior to return false, no transformers will break. For basic converters like TextToNumberConverter I set this to true (the converter is included with Morph, so it should throw Morph exceptions!). For transformers that delegate to other transformers like SimpleDelegatingTransformer, PropertyNameMatchingCopier and ContainerCopier, I set this to false, since these transformers don't do any real transformations themselves, they just delegate to other (potentially user-defined) transformers. Matt Benson, Ben Alex, Alan Stewart - what do you all think? I'm going to hold off on checking this in for a few hours to make sure it sits well with me and anyone else out there who's reading the list. Matt S |
From: Matt S. <mat...@sp...> - 2007-04-12 16:46:28
|
My knowledge of synchronization is kind of weak, but I don't think synchronization is needed in the GetPropertyConverter. From Craig McC: If your property is a simple type (a primitive type or a String), you generally don't need to worry too much. Whichever assignment happens last wins. But there won't be the case that a pointer to the underlying value is "halfway" updated so that a simultaneous reader gets a totally bogus value. In technical terms, assignments of Strings and primitives can be considered "atomic" in Java. On the other hand, if the underlying property is complex (such as a linked list), it is clearly possible for simultaneous writes (or a write that is simultaneous with one or more reads) to interfere with each other. http://mail-archives.apache.org/mod_mbox/struts-user/200108.mbox/%3CPine.BSF.4.21.0108062003440.37552-100000@localhost%3E The properties previously synchronized were String propertyName and Converter propertyConverter. Those are just pointers, so I don't think they need to be synchronized. If I'm mistaken, that means we have a bunch of synchronized keywords we need to add all over the place. Matt S -- This message is intended only for the named recipient. If you are not the intended recipient, you are notified that disclosing, copying, distributing, or taking any action in reliance on the contents of this information is strictly prohibited. |
From: Matt B. <gud...@ya...> - 2007-04-11 11:39:26
|
I never did. :( Itch factor and all... --- Matt Sgarlata <Mat...@wh...> wrote: > I think this issue died again. As I've thought > about this more, I'm > fine with the change. I don't think we need to > introduce the flag > initially unless we find that test cases start to > fail because some type > of exception other than TransformationException is > thrown. > > I may go ahead and introduce this change myself in > the next couple days, > unless you've already started on it Matt B. I > started working on this > in January then had some doubt about my approach and > put it aside again. > > Matt S > > Matt Sgarlata wrote: > > Awesome, thanks Matt B. > > > > I've given this a lot of thought, and whether or > not to wrap > > exceptions should be based on whether or not the > reflector or > > transformer delegates to some other reflector or > transformer. If > > there is no delegation, then go ahead and wrap the > exceptions because > > that is a Morph class. If there is delegation, > there is a potential > > that the delegate is a user defined object rather > than a Morph object, > > so there should not be runtime exception wrapping. > > > > Matt S > > > > Matt Benson wrote: > >> Gotcha--forgot about the RuntimeException > wrapping > >> issue. Matt, since you've given your blessing > here I > >> can make time to stuff this in, with the behavior > flag > >> you had declared it was your intent to use. I'd > like > >> for Morph to become the indisputably "right" way > to do > >> Java object conversions. ;) > >> > >> -Matt > >> > >> --- Matt Benson <gud...@ya...> wrote: > >> > >> > >>> Did I/we lose track of something? I can't > recall > >>> that > >>> there are any outstanding patches from Ben that > >>> haven't been applied to HEAD. And yes, we > should > >>> probably do a release sometime in the near > future > >>> IMHO... :| > >>> > >>> -Matt > >>> > >>> --- Matt Sgarlata > >>> <Mat...@wh...> wrote: > >>> > >>> > >>>> Hi Alan - the patches will either be accepted > or > >>>> modified and then > >>>> accepted. I promise we will do this before the > >>>> > >>> next > >>> > >>>> Morph release. > >>>> > >>>> So when is the next Morph release? Well, as > you > >>>> > >>> can > >>> > >>>> tell, they aren't > >>>> very frequent. The main reason is that I do > >>>> software development as a > >>>> full time job, so Morph isn't really a hobby in > >>>> quite the same way as it > >>>> used to be. If Matt B starts to push for a > >>>> > >>> release, > >>> > >>>> I will chip in and > >>>> make sure the patches are either accepted or > >>>> accepted and modified > >>>> before the release. > >>>> > >>>> Matt S > >>>> > >>>> Alan Stewart wrote: > >>>> > >>>>> Hi > >>>>> I'm a user of Dozer and wanted to know if the > >>>>> > >>>> changes Ben Alex suggested > >>>> > >>>>> will be incorporated into Morph and if so, > when? > >>>>> Regards > >>>>> Alan > >>>>> > >>>>> Matt Benson wrote: > >>>>> > >>>>> > >>>>>> --- Matt Sgarlata > >>>>>> <Mat...@wh...> > >>>>>> > >>> wrote: > >>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> Cool idea! Where are you headed with this? > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> If I tell you, I'm deprived of my > >>>>>> > >>> curtain-pulling > >>> > >>>>>> ta-da moment... But since you're asking, I'll > >>>>>> > >>>> tell > >>>> > >>>>>> you: > >>>>>> > >>>>>> Dozer is the other OSS object-conversion > >>>>>> > >>>> framework > >>>> > >>>>>> that anyone knows about that has enough meat > to > >>>>>> > >>>> be > >>>> > >>>>>> viable for real work. A lot of people > probably > >>>>>> wouldn't switch from Dozer to Morph if they > >>>>>> > >>>> perceived > >>>> > >>>>>> themselves as losing anything in the way of > >>>>>> functionality. Dozer's primary configuration > >>>>>> interface is an XML resource. Morph on the > >>>>>> > >>> other > >>> > >>>> hand > >>>> > >>>>>> must be configured entirely programmatically > or > >>>>>> Spring-wired. What I have been working on > >>>>>> > >>> these > >>> > >>>> past > >>>> > >>>>>> couple of weeks is a means of mapping > >>>>>> > >>> properties > >>> > >>>> using > >>>> > >>>>>> a configuration format specific to Morph. > Wow, > >>>>>> > >>>> you > >>>> > >>>>>> say sarcastically... But there's more! :) > I > >>>>>> > >>>> can > >>>> > >>>>>> already build simple configuration-file > driven > >>>>>> > >>>> copiers > >>>> > >>>>>> composed of > >>>>>> > >>> PropertyNameMapping/MatchingCopiers, > >>> > >>>> so my > >>>> > >>>>>> next step was, in true me-too fashion, to be > >>>>>> > >>> able > >>> > >>>> to > >>>> > >>>>>> map complex properties (Dozer does this). I > >>>>>> > >>>> -believe- > >>>> > >>>>>> the only thing I needed here was to implement > a > >>>>>> reflector capable of interpreting complex > >>>>>> > >>>> properties > >>>> > >>>>>> (done), and set that as the reflector on my > >>>>>> > >>>> generated > >>>> > >>>>>> PropertyNameMappingCopiers, but I haven't > done > >>>>>> > >>>> this > >>>> > >>>>>> yet. > >>>>>> > >>>>>> Is that all? Of course not! What's cool > about > >>>>>> > >>>> simply > >>>> > >>>>>> duplicating someone else's functionality? > Only > >>>>>> > >>>> if you > >>>> > >>>>>> can one-up them in some way do you come out > >>>>>> > >>>> ahead. > >>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> :) Example: ever since I began working > with > >>>>>>> > >>>> Dozer, > >>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> they provided a unidirectional mapping > feature. > >>>>>> > >>>>>> However, the one direction was only from > "class > >>>>>> > >>>> A" to > >>>> > >>>>>> "class B"--a limitation (the Dozer team > >>>>>> > >>>> recognizes it > >>>> > >>>>>> as such). This was tedious to define in > their > >>>>>> > >>>> XML > >>>> > >>>>>> format so they still, as far as I know, > haven't > >>>>>> > >>>> done > >>>> > >>>>>> it. XML is clunky anyway. So what I am > >>>>>> > >>> working > >>> > >>>> on is > >>>> > >>>>>> a custom (ANTLR-implemented) DSL for Morph > >>>>>> > >>>> property > >>>> > >>>>>> mapping. > >>>>>> > >>>>>> Example 1: basic mapping > >>>>>> > >>>>>> net.sf.morph.transform.copiers.dsl.test.A : > >>>>>> net.sf.morph.transform.copiers.dsl.test.B { > >>>>>> *, > >>>>>> stringA : stringB, > >>>>>> intA : intB, > >>>>>> objectA : objectB > >>>>>> } > >>>>>> > >>>>>> The above signifies a bidirectional mapping > >>>>>> association between two classes. The > asterisk > >>>>>> signifies that matching property names will > be > >>>>>> > >>>> copied, > >>>> > >>>>>> and that the three paired mappings will be > >>>>>> > >>> made. > >>> > >>>>>> Example 2: mapping some fields leftward only > >>>>>> > >>>> (Dozer > >>>> > >>>>>> can only do rightward) > >>>>>> > >>>>>> net.sf.morph.transform.copiers.dsl.test.A : > >>>>>> net.sf.morph.transform.copiers.dsl.test.B { > >>>>>> *, > >>>>>> stringA<=stringB, > >>>>>> intA<=intB, > >>>>>> objectA<=objectB > >>>>>> } > >>>>>> > >>>>>> As above, the matching properties will be > >>>>>> > >>> mapped. > >>> > >>>> The > >>>> > >>>>>> explicitly defined properties only go from > >>>>>> > >>> class > >>> > >>>> B to > >>>> > >>>>>> class A. To specify all mapping to be > leftward > >>>>>> > >>>> only, > >>>> > >>>>>> the class association can be defined with <= > . > >>>>>> > >>>> As you > >>>> > >>>>>> would expect, => indicates rightward > mappings. > >>>>>> > >>>>>> There are other little things but that's the > >>>>>> > >>> jist > >>> > >>>> of > >>>> > >>>>>> it, anyway. I'm hoping this will ease the > >>>>>> > >>>> transition > >>>> > >>>>>> of hypothetical users from Dozer to Morph. > ;) > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> One thing I worry about is that we may be > >>>>>>> introducing circular > >>>>>>> dependencies. Languages depend on > converters > >>>>>>> > >>>> which > >>>> > >>>>>>> in turn depend on > >>>>>>> reflectors. If we make a reflector that is > >>>>>>> dependent on a language I > >>>>>>> wonder if that could get us into trouble. > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> I hear you, but composition is such an > integral > >>>>>> > >>>> part > >>>> > >>>>>> of Morph's architecture that I just don't see > a > >>>>>> > >>>> lot of > >>>> > >>>>>> danger here. As you can see, my intent is to > >>>>>> > >>>> make it > >>>> > >>>>>> even deeper! I want to make a > delegatingCopier > >>>>>> > >>>> that > >>>> > >>>>>> depends on propertyCopiers that depend on > >>>>>> > >>>> reflectors > >>>> > >>>>>> that depend on languages that depend on > >>>>>> > >>>> reflectors... > >>>> > >>>>>> I think that's right. :) Ultimately I think > >>>>>> > >>>> that > >>>> > >>>>>> yes, if you misconfigure Morph it will fail > >>>>>> spectacularly. That seems to me more likely > >>>>>> > >>> than > >>> > >>>> for > >>>> > >>>>>> it to misbehave subtly. Anyway, I am doing > my > >>>>>> DSLDefinedCopier in the sandbox, so hopefully > >>>>>> > >>>> I'll > >>>> > >>>>>> have something to check in later this week > for > >>>>>> > >>>> your > >>>> > >>>>>> perusal. Incidentally, if you have a better > >>>>>> > >>> name > >>> > >>>> than > >>>> > >>>>>> DSLDefinedCopier, I'm all ears. :) > >>>>>> > >>>>>> -Matt B > >>>>>> > >>>>>> > >>>>>> > >>>>>>> Matt S > >>>>>>> > >>>>>>> Matt Benson wrote: > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> I've just implemented a reflector over > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> SimpleLanguage, > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> which is of course itself implemented over > >>>>>>>> > >>> the > >>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> basic > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> reflectors. Trust me, this is going > >>>>>>>> > >>>> somewhere... > >>>> > >>>>>>>> Incidentally, the tests for > >>>>>>>> SimpleLanguageBeanReflector implement the > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> long-overdue > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> testing of SimpleLanguage.set(). :) > >>>>>>>> > >>>>>>>> more later, > >>>>>>>> Matt (B) > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >> > ____________________________________________________________________________________ > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>> Need Mail bonding? > >>>>>>>> Go to the Yahoo! Mail Q&A for great tips > from > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> Yahoo! Answers users. > >>>>>>> > >>>>>>> > >>>>>>> > >> > http://answers.yahoo.com/dir/?link=list&sid=396546091 > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >> > ------------------------------------------------------------------------- > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>> Take Surveys. Earn Cash. Influence the > Future > >>>>>>>> > >>>> of > >>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> IT > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> Join SourceForge.net's Techsay panel and > >>>>>>>> > >>> you'll > >>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> get the chance to share your > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> opinions on IT & business topics through > >>>>>>>> > >>> brief > >>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> surveys-and earn cash > >>>>>>> > >>>>>>> > >>>>>>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> > >>>>>> > >>>>>> > >>>>>> > >>> _______________________________________________ > >>> > >>>>>>>> morph-developer mailing list > >>>>>>>> mor...@li... > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >> > ------------------------------------------------------------------------- > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> Take Surveys. Earn Cash. Influence the > Future > >>>>>>> > >>> of > >>> > >>>> IT > >>>> > >>>>>>> Join SourceForge.net's Techsay panel and > >>>>>>> > >>> you'll > >>> > >>>> get > >>>> > >>>>>>> the chance to share your > >>>>>>> opinions on IT & business topics through > brief > >>>>>>> surveys-and earn cash > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> > >>>>>> > >>>>>> > >>>>>> > >>> _______________________________________________ > >>> > >>>>>>> morph-developer mailing list > >>>>>>> mor...@li... > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >> > ____________________________________________________________________________________ > >> > >>>>>> Expecting? Get great news right away with > email > >>>>>> > >>>> Auto-Check. > >>>> > >>>>>> Try the Yahoo! Mail Beta. > >>>>>> > >>>>>> > >> > http://advision.webevents.yahoo.com/mailbeta/newmail_tools.html > >> > >>>>>> > >> > ------------------------------------------------------------------------- > >> > >>>>>> Take Surveys. Earn Cash. Influence the Future > >>>>>> > >>> of > >>> > >>>> IT > >>>> > >>>>>> Join SourceForge.net's Techsay panel and > you'll > >>>>>> > >>>> get the chance to share your > >>>> > >>>>>> opinions on IT & business topics through > brief > >>>>>> > >>>> surveys-and earn cash > >>>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> > >>>>>> > _______________________________________________ > >>>>>> morph-developer mailing list > >>>>>> mor...@li... > >>>>>> > >>>>>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >>>>>> > >>>>>> > >>>>>> > >>>>> > >> > ------------------------------------------------------------------------- > >> > >>>>> Take Surveys. Earn Cash. Influence the Future > of > >>>>> > >>>> IT > >>>> > >>>>> Join SourceForge.net's Techsay panel and > you'll > >>>>> > >>>> get the chance to share your > >>>> > >>>>> opinions on IT & business topics through brief > >>>>> > >>>> surveys-and earn cash > >>>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> > >>>>> > _______________________________________________ > >>>>> morph-developer mailing list > >>>>> mor...@li... > >>>>> > >>>>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >>>>> > >>>>> > >> > ------------------------------------------------------------------------- > >> > >>>> Take Surveys. Earn Cash. Influence the Future > of > >>>> > >>> IT > >>> > >>>> Join SourceForge.net's Techsay panel and you'll > >>>> > >>> get > >>> > >>>> the chance to share your > >>>> opinions on IT & business topics through brief > >>>> surveys-and earn cash > >>>> > >>>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> > >> > >>> _______________________________________________ > >>> > >>>> morph-developer mailing list > >>>> mor...@li... > >>>> > >>>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >>> > >>> > >>> > >> > ____________________________________________________________________________________ > >> > >>> Finding fabulous fares is fun. > >>> Let Yahoo! FareChase search your favorite travel > >>> sites to find flight and hotel bargains. > >>> > http://farechase.yahoo.com/promo-generic-14795097 > >>> > >>> > >>> > >> > ------------------------------------------------------------------------- > >> > >>> Take Surveys. Earn Cash. Influence the Future of > IT > >>> Join SourceForge.net's Techsay panel and you'll > get > >>> the chance to share your > >>> opinions on IT & business topics through brief > >>> surveys-and earn cash > >>> > >>> > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> > >>> _______________________________________________ > >>> morph-developer mailing list > >>> mor...@li... > >>> > >>> > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >> > >> > >> > >> > >> > ____________________________________________________________________________________ > >> Have a burning question? > >> Go to www.Answers.yahoo.com and get answers from > real people who know. > >> > >> > ------------------------------------------------------------------------- > >> Take Surveys. Earn Cash. Influence the Future of > IT > >> Join SourceForge.net's Techsay panel and you'll > get the chance to share your > >> opinions on IT & business topics through brief > surveys-and earn cash > >> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > >> _______________________________________________ > >> morph-developer mailing list > >> mor...@li... > >> > https://lists.sourceforge.net/lists/listinfo/morph-developer > >> > >> > > > > > ------------------------------------------------------------------------ > > > > > ------------------------------------------------------------------------- > > Take Surveys. Earn Cash. Influence the Future of > IT > > Join SourceForge.net's Techsay panel and you'll > get the chance to share your > > opinions on IT & business topics through brief > surveys-and earn cash > > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > morph-developer mailing list > > mor...@li... > > > https://lists.sourceforge.net/lists/listinfo/morph-developer > > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Sucker-punch spam with award-winning protection. Try the free Yahoo! Mail Beta. http://advision.webevents.yahoo.com/mailbeta/features_spam.html |
From: Matt S. <Mat...@wh...> - 2007-04-11 00:47:32
|
I think this issue died again. As I've thought about this more, I'm fine with the change. I don't think we need to introduce the flag initially unless we find that test cases start to fail because some type of exception other than TransformationException is thrown. I may go ahead and introduce this change myself in the next couple days, unless you've already started on it Matt B. I started working on this in January then had some doubt about my approach and put it aside again. Matt S Matt Sgarlata wrote: > Awesome, thanks Matt B. > > I've given this a lot of thought, and whether or not to wrap > exceptions should be based on whether or not the reflector or > transformer delegates to some other reflector or transformer. If > there is no delegation, then go ahead and wrap the exceptions because > that is a Morph class. If there is delegation, there is a potential > that the delegate is a user defined object rather than a Morph object, > so there should not be runtime exception wrapping. > > Matt S > > Matt Benson wrote: >> Gotcha--forgot about the RuntimeException wrapping >> issue. Matt, since you've given your blessing here I >> can make time to stuff this in, with the behavior flag >> you had declared it was your intent to use. I'd like >> for Morph to become the indisputably "right" way to do >> Java object conversions. ;) >> >> -Matt >> >> --- Matt Benson <gud...@ya...> wrote: >> >> >>> Did I/we lose track of something? I can't recall >>> that >>> there are any outstanding patches from Ben that >>> haven't been applied to HEAD. And yes, we should >>> probably do a release sometime in the near future >>> IMHO... :| >>> >>> -Matt >>> >>> --- Matt Sgarlata >>> <Mat...@wh...> wrote: >>> >>> >>>> Hi Alan - the patches will either be accepted or >>>> modified and then >>>> accepted. I promise we will do this before the >>>> >>> next >>> >>>> Morph release. >>>> >>>> So when is the next Morph release? Well, as you >>>> >>> can >>> >>>> tell, they aren't >>>> very frequent. The main reason is that I do >>>> software development as a >>>> full time job, so Morph isn't really a hobby in >>>> quite the same way as it >>>> used to be. If Matt B starts to push for a >>>> >>> release, >>> >>>> I will chip in and >>>> make sure the patches are either accepted or >>>> accepted and modified >>>> before the release. >>>> >>>> Matt S >>>> >>>> Alan Stewart wrote: >>>> >>>>> Hi >>>>> I'm a user of Dozer and wanted to know if the >>>>> >>>> changes Ben Alex suggested >>>> >>>>> will be incorporated into Morph and if so, when? >>>>> Regards >>>>> Alan >>>>> >>>>> Matt Benson wrote: >>>>> >>>>> >>>>>> --- Matt Sgarlata >>>>>> <Mat...@wh...> >>>>>> >>> wrote: >>> >>>>>> >>>>>> >>>>>> >>>>>>> Cool idea! Where are you headed with this? >>>>>>> >>>>>>> >>>>>>> >>>>>> If I tell you, I'm deprived of my >>>>>> >>> curtain-pulling >>> >>>>>> ta-da moment... But since you're asking, I'll >>>>>> >>>> tell >>>> >>>>>> you: >>>>>> >>>>>> Dozer is the other OSS object-conversion >>>>>> >>>> framework >>>> >>>>>> that anyone knows about that has enough meat to >>>>>> >>>> be >>>> >>>>>> viable for real work. A lot of people probably >>>>>> wouldn't switch from Dozer to Morph if they >>>>>> >>>> perceived >>>> >>>>>> themselves as losing anything in the way of >>>>>> functionality. Dozer's primary configuration >>>>>> interface is an XML resource. Morph on the >>>>>> >>> other >>> >>>> hand >>>> >>>>>> must be configured entirely programmatically or >>>>>> Spring-wired. What I have been working on >>>>>> >>> these >>> >>>> past >>>> >>>>>> couple of weeks is a means of mapping >>>>>> >>> properties >>> >>>> using >>>> >>>>>> a configuration format specific to Morph. Wow, >>>>>> >>>> you >>>> >>>>>> say sarcastically... But there's more! :) I >>>>>> >>>> can >>>> >>>>>> already build simple configuration-file driven >>>>>> >>>> copiers >>>> >>>>>> composed of >>>>>> >>> PropertyNameMapping/MatchingCopiers, >>> >>>> so my >>>> >>>>>> next step was, in true me-too fashion, to be >>>>>> >>> able >>> >>>> to >>>> >>>>>> map complex properties (Dozer does this). I >>>>>> >>>> -believe- >>>> >>>>>> the only thing I needed here was to implement a >>>>>> reflector capable of interpreting complex >>>>>> >>>> properties >>>> >>>>>> (done), and set that as the reflector on my >>>>>> >>>> generated >>>> >>>>>> PropertyNameMappingCopiers, but I haven't done >>>>>> >>>> this >>>> >>>>>> yet. >>>>>> >>>>>> Is that all? Of course not! What's cool about >>>>>> >>>> simply >>>> >>>>>> duplicating someone else's functionality? Only >>>>>> >>>> if you >>>> >>>>>> can one-up them in some way do you come out >>>>>> >>>> ahead. >>>> >>>>>> >>>>>> >>>>>> >>>>>>> :) Example: ever since I began working with >>>>>>> >>>> Dozer, >>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> they provided a unidirectional mapping feature. >>>>>> >>>>>> However, the one direction was only from "class >>>>>> >>>> A" to >>>> >>>>>> "class B"--a limitation (the Dozer team >>>>>> >>>> recognizes it >>>> >>>>>> as such). This was tedious to define in their >>>>>> >>>> XML >>>> >>>>>> format so they still, as far as I know, haven't >>>>>> >>>> done >>>> >>>>>> it. XML is clunky anyway. So what I am >>>>>> >>> working >>> >>>> on is >>>> >>>>>> a custom (ANTLR-implemented) DSL for Morph >>>>>> >>>> property >>>> >>>>>> mapping. >>>>>> >>>>>> Example 1: basic mapping >>>>>> >>>>>> net.sf.morph.transform.copiers.dsl.test.A : >>>>>> net.sf.morph.transform.copiers.dsl.test.B { >>>>>> *, >>>>>> stringA : stringB, >>>>>> intA : intB, >>>>>> objectA : objectB >>>>>> } >>>>>> >>>>>> The above signifies a bidirectional mapping >>>>>> association between two classes. The asterisk >>>>>> signifies that matching property names will be >>>>>> >>>> copied, >>>> >>>>>> and that the three paired mappings will be >>>>>> >>> made. >>> >>>>>> Example 2: mapping some fields leftward only >>>>>> >>>> (Dozer >>>> >>>>>> can only do rightward) >>>>>> >>>>>> net.sf.morph.transform.copiers.dsl.test.A : >>>>>> net.sf.morph.transform.copiers.dsl.test.B { >>>>>> *, >>>>>> stringA<=stringB, >>>>>> intA<=intB, >>>>>> objectA<=objectB >>>>>> } >>>>>> >>>>>> As above, the matching properties will be >>>>>> >>> mapped. >>> >>>> The >>>> >>>>>> explicitly defined properties only go from >>>>>> >>> class >>> >>>> B to >>>> >>>>>> class A. To specify all mapping to be leftward >>>>>> >>>> only, >>>> >>>>>> the class association can be defined with <= . >>>>>> >>>> As you >>>> >>>>>> would expect, => indicates rightward mappings. >>>>>> >>>>>> There are other little things but that's the >>>>>> >>> jist >>> >>>> of >>>> >>>>>> it, anyway. I'm hoping this will ease the >>>>>> >>>> transition >>>> >>>>>> of hypothetical users from Dozer to Morph. ;) >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> One thing I worry about is that we may be >>>>>>> introducing circular >>>>>>> dependencies. Languages depend on converters >>>>>>> >>>> which >>>> >>>>>>> in turn depend on >>>>>>> reflectors. If we make a reflector that is >>>>>>> dependent on a language I >>>>>>> wonder if that could get us into trouble. >>>>>>> >>>>>>> >>>>>>> >>>>>> I hear you, but composition is such an integral >>>>>> >>>> part >>>> >>>>>> of Morph's architecture that I just don't see a >>>>>> >>>> lot of >>>> >>>>>> danger here. As you can see, my intent is to >>>>>> >>>> make it >>>> >>>>>> even deeper! I want to make a delegatingCopier >>>>>> >>>> that >>>> >>>>>> depends on propertyCopiers that depend on >>>>>> >>>> reflectors >>>> >>>>>> that depend on languages that depend on >>>>>> >>>> reflectors... >>>> >>>>>> I think that's right. :) Ultimately I think >>>>>> >>>> that >>>> >>>>>> yes, if you misconfigure Morph it will fail >>>>>> spectacularly. That seems to me more likely >>>>>> >>> than >>> >>>> for >>>> >>>>>> it to misbehave subtly. Anyway, I am doing my >>>>>> DSLDefinedCopier in the sandbox, so hopefully >>>>>> >>>> I'll >>>> >>>>>> have something to check in later this week for >>>>>> >>>> your >>>> >>>>>> perusal. Incidentally, if you have a better >>>>>> >>> name >>> >>>> than >>>> >>>>>> DSLDefinedCopier, I'm all ears. :) >>>>>> >>>>>> -Matt B >>>>>> >>>>>> >>>>>> >>>>>>> Matt S >>>>>>> >>>>>>> Matt Benson wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> I've just implemented a reflector over >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> SimpleLanguage, >>>>>>> >>>>>>> >>>>>>> >>>>>>>> which is of course itself implemented over >>>>>>>> >>> the >>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> basic >>>>>>> >>>>>>> >>>>>>> >>>>>>>> reflectors. Trust me, this is going >>>>>>>> >>>> somewhere... >>>> >>>>>>>> Incidentally, the tests for >>>>>>>> SimpleLanguageBeanReflector implement the >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> long-overdue >>>>>>> >>>>>>> >>>>>>> >>>>>>>> testing of SimpleLanguage.set(). :) >>>>>>>> >>>>>>>> more later, >>>>>>>> Matt (B) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >> ____________________________________________________________________________________ >> >>>>>> >>>>>> >>>>>> >>>>>>>> Need Mail bonding? >>>>>>>> Go to the Yahoo! Mail Q&A for great tips from >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> Yahoo! Answers users. >>>>>>> >>>>>>> >>>>>>> >> http://answers.yahoo.com/dir/?link=list&sid=396546091 >> >>>>>> >>>>>> >>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >> ------------------------------------------------------------------------- >> >>>>>> >>>>>> >>>>>> >>>>>>>> Take Surveys. Earn Cash. Influence the Future >>>>>>>> >>>> of >>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> IT >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Join SourceForge.net's Techsay panel and >>>>>>>> >>> you'll >>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> get the chance to share your >>>>>>> >>>>>>> >>>>>>> >>>>>>>> opinions on IT & business topics through >>>>>>>> >>> brief >>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> surveys-and earn cash >>>>>>> >>>>>>> >>>>>>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> >>>>>> >>>>>> >>>>>> >>> _______________________________________________ >>> >>>>>>>> morph-developer mailing list >>>>>>>> mor...@li... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >>>>>> >>>>>> >>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >> ------------------------------------------------------------------------- >> >>>>>> >>>>>> >>>>>> >>>>>>> Take Surveys. Earn Cash. Influence the Future >>>>>>> >>> of >>> >>>> IT >>>> >>>>>>> Join SourceForge.net's Techsay panel and >>>>>>> >>> you'll >>> >>>> get >>>> >>>>>>> the chance to share your >>>>>>> opinions on IT & business topics through brief >>>>>>> surveys-and earn cash >>>>>>> >>>>>>> >>>>>>> >>>>>>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> >>>>>> >>>>>> >>>>>> >>> _______________________________________________ >>> >>>>>>> morph-developer mailing list >>>>>>> mor...@li... >>>>>>> >>>>>>> >>>>>>> >>>>>>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >> ____________________________________________________________________________________ >> >>>>>> Expecting? Get great news right away with email >>>>>> >>>> Auto-Check. >>>> >>>>>> Try the Yahoo! Mail Beta. >>>>>> >>>>>> >> http://advision.webevents.yahoo.com/mailbeta/newmail_tools.html >> >>>>>> >> ------------------------------------------------------------------------- >> >>>>>> Take Surveys. Earn Cash. Influence the Future >>>>>> >>> of >>> >>>> IT >>>> >>>>>> Join SourceForge.net's Techsay panel and you'll >>>>>> >>>> get the chance to share your >>>> >>>>>> opinions on IT & business topics through brief >>>>>> >>>> surveys-and earn cash >>>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> >>>>>> _______________________________________________ >>>>>> morph-developer mailing list >>>>>> mor...@li... >>>>>> >>>>>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >>>>>> >>>>>> >>>>>> >>>>> >> ------------------------------------------------------------------------- >> >>>>> Take Surveys. Earn Cash. Influence the Future of >>>>> >>>> IT >>>> >>>>> Join SourceForge.net's Techsay panel and you'll >>>>> >>>> get the chance to share your >>>> >>>>> opinions on IT & business topics through brief >>>>> >>>> surveys-and earn cash >>>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> >>>>> _______________________________________________ >>>>> morph-developer mailing list >>>>> mor...@li... >>>>> >>>>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >>>>> >>>>> >> ------------------------------------------------------------------------- >> >>>> Take Surveys. Earn Cash. Influence the Future of >>>> >>> IT >>> >>>> Join SourceForge.net's Techsay panel and you'll >>>> >>> get >>> >>>> the chance to share your >>>> opinions on IT & business topics through brief >>>> surveys-and earn cash >>>> >>>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> >> >>> _______________________________________________ >>> >>>> morph-developer mailing list >>>> mor...@li... >>>> >>>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >>> >>> >>> >> ____________________________________________________________________________________ >> >>> Finding fabulous fares is fun. >>> Let Yahoo! FareChase search your favorite travel >>> sites to find flight and hotel bargains. >>> http://farechase.yahoo.com/promo-generic-14795097 >>> >>> >>> >> ------------------------------------------------------------------------- >> >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get >>> the chance to share your >>> opinions on IT & business topics through brief >>> surveys-and earn cash >>> >>> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> >>> _______________________________________________ >>> morph-developer mailing list >>> mor...@li... >>> >>> >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >> >> >> >> >> ____________________________________________________________________________________ >> Have a burning question? >> Go to www.Answers.yahoo.com and get answers from real people who know. >> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys-and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> morph-developer mailing list >> mor...@li... >> https://lists.sourceforge.net/lists/listinfo/morph-developer >> >> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > ------------------------------------------------------------------------ > > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > |
From: Matt B. <gud...@ya...> - 2007-04-10 17:35:33
|
I am using Eclipse 3.2 to develop, but the svn structure was a little weird for me when I attempted to use Eclipse for the full end-to-end experience, so I dropped back to the cmdline for the rcs. I can re-examine this, I suppose. :) -Matt B --- Matt Sgarlata <Mat...@wh...> wrote: > I am developing using Eclipse 3 on Win XP and > Subclipse version 1 or 1.1 > or something (not the latest, which is 1.2). > Instead of just updating > the project, I right-click on it and choose Team | > Synchronize with > Repository. This shows me the differences between > my local environment > and the HEAD (including my changes, others' changes > and conflicts). > > What IDE are you using (if any?) If you are using > Eclipse I can forward > instructions for getting Subclipse working for you. > If you are using > IDEA, I can ask someone at Spider who uses IDEA what > he uses to connect > to SVN. > > Matt > > Matt Benson wrote: > > Maybe my svn-fu isn't good enough, then. How do I > do > > a diff against HEAD to check what I would update > prior > > to actually doing the update? > > > > -Matt > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ It's here! Your new message! Get new email alerts with the free Yahoo! Toolbar. http://tools.search.yahoo.com/toolbar/features/mail/ |
From: Matt S. <Mat...@wh...> - 2007-04-10 17:09:00
|
I am developing using Eclipse 3 on Win XP and Subclipse version 1 or 1.1 or something (not the latest, which is 1.2). Instead of just updating the project, I right-click on it and choose Team | Synchronize with Repository. This shows me the differences between my local environment and the HEAD (including my changes, others' changes and conflicts). What IDE are you using (if any?) If you are using Eclipse I can forward instructions for getting Subclipse working for you. If you are using IDEA, I can ask someone at Spider who uses IDEA what he uses to connect to SVN. Matt Matt Benson wrote: > Maybe my svn-fu isn't good enough, then. How do I do > a diff against HEAD to check what I would update prior > to actually doing the update? > > -Matt |
From: Matt B. <gud...@ya...> - 2007-04-10 16:23:21
|
Maybe my svn-fu isn't good enough, then. How do I do a diff against HEAD to check what I would update prior to actually doing the update? -Matt --- Matt Sgarlata <Mat...@wh...> wrote: > Matt Benson wrote: > > > > which reminds me, I wonder how hard it would be to > svn > > notifications sent to the Morph and Composite > > developer lists for the respective projects (or > start > > new commits lists for them and send to those)? > Might > > be nice to look into having cenqua host a Morph > > Fisheye instance as well... > What I do is manually go through each individual > file that has changed > whenever I synchronize with SVN. That way I know > what changes are > happening and I can go through all of them at once. > As I go through I > write down questions/concerns to bring up later. I > wrote a couple > things down about your commits but they were very > very minor so they are > on the back burner for now. > > Matt S > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Looking for earth-friendly autos? Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center. http://autos.yahoo.com/green_center/ |
From: Matt S. <Mat...@wh...> - 2007-04-10 16:17:34
|
Matt Benson wrote: > > which reminds me, I wonder how hard it would be to svn > notifications sent to the Morph and Composite > developer lists for the respective projects (or start > new commits lists for them and send to those)? Might > be nice to look into having cenqua host a Morph > Fisheye instance as well... What I do is manually go through each individual file that has changed whenever I synchronize with SVN. That way I know what changes are happening and I can go through all of them at once. As I go through I write down questions/concerns to bring up later. I wrote a couple things down about your commits but they were very very minor so they are on the back burner for now. Matt S |
From: Matt B. <gud...@ya...> - 2007-04-10 15:35:05
|
--- Matt Sgarlata <Mat...@wh...> wrote: > I think we might as well submit to the Incubator PMC > and see what > happens. They can always scream at us for not > having the proper format > for the proposal or not having the correct sponsors > or whatnot, but if > someone is actually interested in the project at > least we will have > gotten the word out. We can try this if you like, but let's wait a little more to see if we get any more feedback from Henri, if you don't mind... > > Anyway, back to the build, I was able to get it > working with your > previous tips. Thanks! Now the trouble is, I can't > get the sandbox to > compile with Eclipse and it doesn't seem like the > ant/ivy build likes it > either. I actually use some stuff in the sandbox in > my day to day work > (particularly the MorphPropertyEditor, which perhaps > I should just move > to the core) so I do need the sandbox. I also don't > know what to do to > get the antlr stuff going so your DSL stuff will > compile. Any help > would be greatly appreciated. Hmm, for the Ant build you might just need to drop an ANTLR jar in ANT_HOME/lib . For Eclipse, you can install the AntlrEclipse plugin from http://antlreclipse.sourceforge.net/updates/ . If you like we can pre-generate the ANTLR stuff and check it in to make it more portable, whatever you prefer. I should've addressed that before checking it in--sorry. > > Matt S > > PS - Did a bunch of checkins last night, and some > corrections this > morning... > which reminds me, I wonder how hard it would be to svn notifications sent to the Morph and Composite developer lists for the respective projects (or start new commits lists for them and send to those)? Might be nice to look into having cenqua host a Morph Fisheye instance as well... -Matt B > Matt Benson wrote: > > I wouldn't say it's a lost cause quite yet, though > the > > action is very slow, so it's obvious nobody's > foaming > > at the mouth for this. The latest I know is that > > Niall is no longer truly "on board" as champion, > but > > is still willing to act as a mentor if Morph > enters > > the incubator. Henri expressed a general interest > in > > Morph, but I'm not sure of the current level of > his > > interest. Apparently you really don't need more > than > > 1 mentor, but people like to have 3 so they will > > already have the quorum they need to graduate. If > > Henri is willing to champion and mentor Morph, and > > Jakarta or the probably-soon-to-emerge Commons TLP > is > > willing to sponsor, we should be fine with only > two > > mentors (and we still MIGHT find another). But > > basically there is enough overlap between the > Jakarta > > PMC and Incubator PMC that I suspect a plea to the > > Incubator PMC for sponsorship would be fruitless. > I > > could be wrong, but I just have that feeling. > > > > -Matt B > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Bored stiff? Loosen up... Download and play hundreds of games for free on Yahoo! Games. http://games.yahoo.com/games/front |
From: Matt S. <Mat...@wh...> - 2007-04-10 15:03:29
|
I think we might as well submit to the Incubator PMC and see what happens. They can always scream at us for not having the proper format for the proposal or not having the correct sponsors or whatnot, but if someone is actually interested in the project at least we will have gotten the word out. Anyway, back to the build, I was able to get it working with your previous tips. Thanks! Now the trouble is, I can't get the sandbox to compile with Eclipse and it doesn't seem like the ant/ivy build likes it either. I actually use some stuff in the sandbox in my day to day work (particularly the MorphPropertyEditor, which perhaps I should just move to the core) so I do need the sandbox. I also don't know what to do to get the antlr stuff going so your DSL stuff will compile. Any help would be greatly appreciated. Matt S PS - Did a bunch of checkins last night, and some corrections this morning... Matt Benson wrote: > I wouldn't say it's a lost cause quite yet, though the > action is very slow, so it's obvious nobody's foaming > at the mouth for this. The latest I know is that > Niall is no longer truly "on board" as champion, but > is still willing to act as a mentor if Morph enters > the incubator. Henri expressed a general interest in > Morph, but I'm not sure of the current level of his > interest. Apparently you really don't need more than > 1 mentor, but people like to have 3 so they will > already have the quorum they need to graduate. If > Henri is willing to champion and mentor Morph, and > Jakarta or the probably-soon-to-emerge Commons TLP is > willing to sponsor, we should be fine with only two > mentors (and we still MIGHT find another). But > basically there is enough overlap between the Jakarta > PMC and Incubator PMC that I suspect a plea to the > Incubator PMC for sponsorship would be fruitless. I > could be wrong, but I just have that feeling. > > -Matt B |
From: Matt B. <gud...@ya...> - 2007-04-10 14:15:34
|
I wouldn't say it's a lost cause quite yet, though the action is very slow, so it's obvious nobody's foaming at the mouth for this. The latest I know is that Niall is no longer truly "on board" as champion, but is still willing to act as a mentor if Morph enters the incubator. Henri expressed a general interest in Morph, but I'm not sure of the current level of his interest. Apparently you really don't need more than 1 mentor, but people like to have 3 so they will already have the quorum they need to graduate. If Henri is willing to champion and mentor Morph, and Jakarta or the probably-soon-to-emerge Commons TLP is willing to sponsor, we should be fine with only two mentors (and we still MIGHT find another). But basically there is enough overlap between the Jakarta PMC and Incubator PMC that I suspect a plea to the Incubator PMC for sponsorship would be fruitless. I could be wrong, but I just have that feeling. -Matt B --- Matt Sgarlata <Mat...@wh...> wrote: > > > We definitely need to break down and work on > Morph's > > docs, so a wiki could be useful. Apache uses > MoinMoin > > and Confluence, FWIW... > > > > Here is a script for importing into MoinMoin so if > we ever move to > Apache we won't be totally screwed if we use some > other wiki solution. > > http://moinmoin.wikiwikiweb.de/ScriptMarket/HTMLImportScript?highlight=%28import%29 > > On the other hand, I would really hate for us to > have to do that ;) I > saw there as a nibble today on the Jakarta list, but > it looks like that > avenue is dead. I'm sorry if you already mentioned > this, but is there a > chance we could get in through the Incubator and > find a real sponsor later? > > Matt S > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > morph-developer mailing list > mor...@li... > https://lists.sourceforge.net/lists/listinfo/morph-developer > ____________________________________________________________________________________ Food fight? Enjoy some healthy debate in the Yahoo! Answers Food & Drink Q&A. http://answers.yahoo.com/dir/?link=list&sid=396545367 |