If JSONRecord generates a runtime AbstractMethodError, compiling it with the 
same classpath would generate a compiler error.
Do you know what that test.Settings... line is referring to? If not look up the 
line mentioned. Something about that reference is different between compile 
time and runtime.


-------------------------------------
Craig Blake<[email protected]> wrote:

Ok, thanks for the hint.  I clean compiled each Scala library that touches the 
project (including lift), and made sure that their are no conflicting versions 
of Scala in the path (I checked with the Maven dependency plugin, and I do not 
get the warning that multiple versions were detected) but I am still seeing the 
error.  Anything else I should try in order to eliminate library/compile 
versions as the culprit?

Thanks, 
Craig

On Mar 3, 2010, at 9:54 PM, Naftoli Gugenheim wrote:

> AbstractMethodError means you need to do a clean build and make sure you 
> don't have multiple scala versions.
> 
> -------------------------------------
> Craig Blake<[email protected]> wrote:
> 
> Just took a minor change to compile (didn't like ?~) and I'll let you know 
> how it goes soon.  I'm running into one more problem, this time a runtime 
> exception saving a document:
> 
> java.lang.AbstractMethodError: 
> test.Settings$updated$.encode(Ljava/lang/Object;)Ljava/lang/String;
>       at 
> net.liftweb.couchdb.JSONEncodedStringFieldMixin$$anonfun$asJValue$6.apply(JSONRecord.scala:319)
>       at 
> net.liftweb.couchdb.JSONEncodedStringFieldMixin$$anonfun$asJValue$6.apply(JSONRecord.scala:319)
>       at net.liftweb.common.Full.map(Box.scala:330)
>       at net.liftweb.couchd...
> 
> 
> The field is defined as:
> 
> object updated extends JSONDateTimeField( this)
> 
> Surely something else I missed?
> 
> Craig
> 
> On Mar 3, 2010, at 8:39 PM, Ross Mellgren wrote:
> 
>> Try this:
>> 
>> /** Enum data field for JSON records. Encodes as JString */
>> class JSONEnumNameField[OwnerType <: JSONRecord[OwnerType], EnumType <: 
>> Enumeration]
>>                      (rec: OwnerType, enum: EnumType)(implicit 
>> enumValueType: Manifest[EnumType#Value])
>> extends EnumField[OwnerType, EnumType](rec, enum) with JSONField
>> {
>> def this(rec: OwnerType, enum: EnumType, value: EnumType#Value)(implicit 
>> enumValueType: Manifest[EnumType#Value]) = {
>>     this(rec, enum)
>>     set(value)
>> }
>> 
>> def this(rec: OwnerType, enum: EnumType, value: 
>> Box[EnumType#Value])(implicit enumValueType: Manifest[EnumType#Value]) = {
>>     this(rec, enum)
>>     setBox(value)
>> }
>> 
>> def asJValue: JValue = valueBox.map(v => JString(v.toString)) openOr 
>> (JNothing: JValue)
>> def fromJValue(jvalue: JValue): Box[EnumType#Value] = jvalue match {
>>   case JNothing|JNull if optional_? => setBox(Empty)
>>   case JString(s)                   => setBox(enum.valueOf(s) ?~ ("Unknown 
>> value \"" + s + "\""))
>>   case other                        => setBox(expectedA("JString", other))
>> }
>> }
>> 
>> Let me know if it works for you. If so, I'll start the process of getting it 
>> into master as soon as I can.
>> 
>> -Ross
>> 
>> On Mar 3, 2010, at 8:12 PM, Craig Blake wrote:
>> 
>>> Sure, will do.  The only thing I think I'll need to figure out is how to 
>>> persist an enumeration by name rather than ordinal value, but I imagine 
>>> that it should be pretty straight-forward to add a new field type in my app 
>>> to handle it.
>>> 
>>> Thanks,
>>> Craig
>>> 
>>> On Mar 3, 2010, at 7:45 PM, Ross Mellgren wrote:
>>> 
>>>> It's no problem, as I mentioned the compiler error is practically useless.
>>>> 
>>>> Hope you get along well, let me know if you have any other issues.
>>>> 
>>>> -Ross
>>>> 
>>>> On Mar 3, 2010, at 7:29 PM, Craig Blake wrote:
>>>> 
>>>>> Yep, that seems to be better.  Sorry for the noise, I don't know why I 
>>>>> didn't think to check that.
>>>>> 
>>>>> Thanks for the quick answer.
>>>>> 
>>>>> Craig
>>>>> 
>>>>> On Mar 3, 2010, at 4:44 PM, Ross Mellgren wrote:
>>>>> 
>>>>>> Unfortunately the compiler error is bizarre (due to some of the type 
>>>>>> shuffling involved), but the underlying problem you're experiencing is 
>>>>>> that DateTimeFields (and therefore JSONDateTimeFields) have a storage 
>>>>>> type of Calendar, and you're trying to assign a Date to them. Try 
>>>>>> Calendar.getInstance instead of new Date() and see if that resolves it 
>>>>>> for you?
>>>>>> 
>>>>>> -Ross
>>>>>> 
>>>>>> On Mar 3, 2010, at 4:32 PM, Craig Blake wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I am getting familiar with the lift-couchdb module, and trying to put 
>>>>>>> together a sample based on the tests in the module.  Trying to create a 
>>>>>>> record, based on this test code:
>>>>>>> 
>>>>>>> def testRec1: Person = Person.createRecord.name("Alice").age(25)
>>>>>>> 
>>>>>>> this is what I have:
>>>>>>> 
>>>>>>> class Account extends CouchRecord[Account] {
>>>>>>>         def meta = Account
>>>>>>>         object created extends JSONDateTimeField(this)
>>>>>>> }
>>>>>>> object Account extends Account with CouchMetaRecord[Account]
>>>>>>> 
>>>>>>> ...
>>>>>>> 
>>>>>>> val account = Account.createRecord.created(new Date())
>>>>>>> 
>>>>>>> 
>>>>>>> I get a compilation error:
>>>>>>> 
>>>>>>> [WARNING] Test.scala:44: error: overloaded method value apply with 
>>>>>>> alternatives ((net.liftweb.common.Box[_12.MyType])test.Account) forSome 
>>>>>>> { val _12: object test.Account#created } <and> 
>>>>>>> ((_13.MyType)test.Account) forSome { val _13: object 
>>>>>>> test.Account#created } cannot be applied to (java.util.Date)
>>>>>>> [WARNING]               val account = Account.createRecord.created( new 
>>>>>>> Date())
>>>>>>> 
>>>>>>> 
>>>>>>> I'm sure that I am just missing something obvious.  Any ideas what?
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Craig
>>>>>>> 
>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "Lift" group.
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> To unsubscribe from this group, send email to 
>>>>>>> [email protected].
>>>>>>> For more options, visit this group at 
>>>>>>> http://groups.google.com/group/liftweb?hl=en.
>>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Lift" group.
>>>>>> To post to this group, send email to [email protected].
>>>>>> To unsubscribe from this group, send email to 
>>>>>> [email protected].
>>>>>> For more options, visit this group at 
>>>>>> http://groups.google.com/group/liftweb?hl=en.
>>>>>> 
>>>>> 
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "Lift" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to 
>>>>> [email protected].
>>>>> For more options, visit this group at 
>>>>> http://groups.google.com/group/liftweb?hl=en.
>>>>> 
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Lift" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to 
>>>> [email protected].
>>>> For more options, visit this group at 
>>>> http://groups.google.com/group/liftweb?hl=en.
>>>> 
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "Lift" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to 
>>> [email protected].
>>> For more options, visit this group at 
>>> http://groups.google.com/group/liftweb?hl=en.
>>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Lift" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/liftweb?hl=en.
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=en.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to