This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Static Inner Classes (Again?)

3 replies
awans
Joined: 2009-03-17,
User offline. Last seen 42 years 45 weeks ago.

In trying to user Javamail from scala, I've hit a weird problem. I'm not sure
if it's quite the same as some of the static inner class issues I saw in my
search, but if it is feel free to shun me.

Basically, Javamail has a class Flags with an inner class Flag, and
javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).

message.setFlag(Flags.Flag.DELETED, true)

leads to:
error: type mismatch;
found : javax.mail.Flags.Flag
required: javax.mail.Flags$Flag
message.setFlag(Flags.Flag.DELETED, true))

It's even worse if I make it:

val delflag = Flags.Flag.DELETED
message.setFlag(delflag, true)

then scalac gives me:

java.lang.Error: no-symbol does not have owner

and a long stack trace :)

Any hints?

extempore
Joined: 2008-12-17,
User offline. Last seen 35 weeks 3 days ago.
Re: Static Inner Classes (Again?)

On Tue, Mar 17, 2009 at 10:22:27AM -0700, awans wrote:
> Basically, Javamail has a class Flags with an inner class Flag, and
> javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).
>
> message.setFlag(Flags.Flag.DELETED, true)
>
> leads to:
> error: type mismatch;
> found : javax.mail.Flags.Flag
> required: javax.mail.Flags$Flag
> message.setFlag(Flags.Flag.DELETED, true))

scala> new internet.MimeMessage(Session.getDefaultInstance(new java.util.Properties()))
res1: javax.mail.internet.MimeMessage = javax.mail.internet.MimeMessage@92f292

scala> res1.setFlag(Flags.Flag.DELETED, true)

scala> val delflag = Flags.Flag.DELETED
delflag: javax.mail.Flags.Flag = javax.mail.Flags$Flag@e06e0e

scala> res1.setFlag(delflag, true)

scala> res1.getFlags
res5: javax.mail.Flags = javax.mail.Flags@2

scala> res5 contains delflag
res7: Boolean = true

> Any hints?

My hint is to supply more information. I suggest never asking a scala
question without stating what version you're using.

awans
Joined: 2009-03-17,
User offline. Last seen 42 years 45 weeks ago.
Re: Static Inner Classes (Again?)

Sorry -- I gratefully accept the rebuke :)

scalac -version
Scala compiler version 2.7.3.final -- Copyright 2002-2009, LAMP/EPFL

java -version
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)

Paul Phillips wrote:
>
> On Tue, Mar 17, 2009 at 10:22:27AM -0700, awans wrote:
>> Basically, Javamail has a class Flags with an inner class Flag, and
>> javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).
>>
>> message.setFlag(Flags.Flag.DELETED, true)
>>
>> leads to:
>> error: type mismatch;
>> found : javax.mail.Flags.Flag
>> required: javax.mail.Flags$Flag
>> message.setFlag(Flags.Flag.DELETED, true))
>
> scala> new internet.MimeMessage(Session.getDefaultInstance(new
> java.util.Properties()))
> res1: javax.mail.internet.MimeMessage =
> javax.mail.internet.MimeMessage@92f292
>
> scala> res1.setFlag(Flags.Flag.DELETED, true)
>
> scala> val delflag = Flags.Flag.DELETED
> delflag: javax.mail.Flags.Flag = javax.mail.Flags$Flag@e06e0e
>
> scala> res1.setFlag(delflag, true)
>
> scala> res1.getFlags
> res5: javax.mail.Flags = javax.mail.Flags@2
>
> scala> res5 contains delflag
> res7: Boolean = true
>
>> Any hints?
>
> My hint is to supply more information. I suggest never asking a scala
> question without stating what version you're using.
>

extempore
Joined: 2008-12-17,
User offline. Last seen 35 weeks 3 days ago.
Re: Static Inner Classes (Again?)

On Tue, Mar 17, 2009 at 12:53:04PM -0700, awans wrote:
> scalac -version
> Scala compiler version 2.7.3.final -- Copyright 2002-2009, LAMP/EPFL

Well that's not your problem. Going to have to be this then:

https://lampsvn.epfl.ch/trac/scala/ticket/1687

Heh, I forgot that bug is assigned to me (not because I have much to do
with it, but because I objected to it being closed.) Anyway, since I
don't plan on fixing it anytime super soon, next choice is to upgrade
your mail.jar.

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland