B32 compiler bug: varargs with anonymous class

Environment
SunOS bart 5.10 s10_48 i86pc i386 i86pc Solaris
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32, mixed mode)
javac 1.5.0-beta
Javac command produces NullPointerException
javac -source 1.5 -target 1.5 Quick.java (source follows)
Description
The problem seems to be use of a varargs constructor while defining
an anonymous class. Work around is for caller to manually box the
(varargs) into an array, bypassing convenience of varargs support.
class Quick
  Quick() {
    Fox fox1 = new Fox(1)                        {}; // compiles
    Fox fox2 = new Fox(new String[] { "hello" }) {}; // compiles
    // NullPointerException not thrown when following 4 lines are
    // commented out.
    Fox fox3 = new Fox(null)            {}; // compiles, but ambiguous?
    Fox fox4 = new Fox()                {}; // javac NullPointerException
    Fox fox5 = new Fox("hello")         {}; // javac NullPointerException
    Fox fox6 = new Fox("hello", "bye")  {}; // javac NullPointerException
class Fox
  Fox(int a) {
    _keys = new String[0];
  Fox(String... keys) {
    _keys = keys;
  final String[] _keys;
}

reported as 4986231

Similar Messages

  • AIR - Major Bug (?) with MovieClip class

    Hello all,
    We are a team of developers working on ActionScript 3.0 project using Adobe AIR SDK and Adobe Flex SDK.  During the development we discovered what seems to be a major problem with getting MovieClip instances to play correctly. More specifically,  the problem has to do with the gotoAndStop method. If, using the gotoAndStop method, you perform a for loop over all MovieClip frames (from the 1st frame to the last one) and go back to the 1st frame again, then, after adding MovieClip to the Stage, the 1st frame won't be set, contrary to what's expected. Instead, the MovieClip selects the last frame, which messes things up.  Are there any solutions to the described problem, other than switching to the right frame after the object has been added to Stage?
    This seems like a 'no way out' situation - any help would be much appreciated.
    A note: MovieClip itself is being imported from the 'swc' file.

    Thanks for the heads up and I'm sorry you guys have run into this issue.  Is this is new to AIR 3.x?
    Could you please open a new bug report on this over at bugbase.adobe.com, including a brief description and sample code/app to help us easily reproduce the problem.  Please post back with the URL so that others affected can add their comments and votes.
    Thanks,
    Chris

  • Compiling a servlet with utility class

    Hello,
    I am having trouble compiling a servlet that uses a utility class.
    The compiler doesn't seem to recognize the utility class for some reason.
    my classpath is set to:
    .;C:\ServletDevel;C:\Program Files\Apache Software Foundation\common\lib\servlet-api.jar
    the error:
    Cannot find symbol: ServletUtilities
    the servlet code:
    package coreservlets;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    /** test the use of packages and utilities on the server */
    public class helloservlet3 extends HttpServlet {
    public void doGet(HttpServletRequest request,
                   HttpServletResponse response)
                   throws ServletException, IOException {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         String title = "Hello (3)";
         out.println(ServletUtilities.headWithTitle(title) +
              "<body bgcolor=\"#FDF5E6\">\n" +
              "<h1>" + title + "</h1>\n" +
              "</body></html>");
    the utility class:
    package coreservlets;
    import javax.servlet.*;
    import javax.servlet.http.*;
    /** time saving static methods */
    public class ServletUtilities {
         public final static String docType =
         "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
         "Transitional//EN\">";
    public static String headWithTitle(String title){
    return (docType + "\n" + "<html>\n" +
              "<head><title>" + title + "</title></head>\n");
    any help wouldbe greatly appreciated.

    Nope still getting an error
    helloservlet3.java:17:cannot find symbol
    symbol : class ServletUtilities
    location: package coreservlets
    out.println(coreservlets.ServletUtilities.headWithTitle(title) +
    thanks for the help, i'll keep on trying to figure it out.

  • Some generic anonymous class overriding methods compile, while others don't

    I have the following (stripped-down) code. The abstract class SessionHandler<T> is used by other code to define and run an operation that needs a session to something. This is best done in my code with anonymous classes, because of the shear number of operations defined. In the EntityOps<T> class, these work great. But, in the last class shown here, SomeClass, the anonymous class definition fails, though the semantics are almost identical. (List<T> vs.List<AnotherClass>) What am I doing wrong here? Or is this a bug in Java?
    Thanks, Tom
    public interface IEntityOps<T> {
        T get();
        List<t> getAll();
    public abstract class SessionHandler<T> {
        abstract T handle(Session session) throws Throwable;
        public final T perform() {
            ... calls handle(session) ...
    // These anonymous class definitions compile fine!
    public class EntityOps<T> implements IEntityOps<T> {
        public T get() {
            T ret = null;
            ret = new SessionHandler<T>() {
                T handle(Session s) throws Throwable {
                    T ret = (some T object calculation);
                    return ret;
            }.perform();
            return ret;
        public List<T> getAll() {
            T ret = null;
            return new SessionHandler<List<T>>() {
                List<T> handle(Session s) throws Throwable {
                    List<T> ret = (some List<T> calculation);
                    return ret;
            }.perform();
    // This anonymous class definition fails with the error:
    // "SomeClass.java": <anonymous someMethod> is not abstract and does not override abstract method handle()
    //     in SessionHandler at line XX, column XX
    public class SomeClass {
        public List<AnotherClass> someMethod() throws {
            List<AnotherClass> ret = null;
            ret = new SessionHandler<List<AnotherClass>>() {
                List<AnotherClass> handle(Session s) throws Throwable {
                    List<AnotherClass> ret = (some List<AnotherClass> calculation);
                    return ret;
            }.perform();
            return ret;
    }

    I added @Override above the abstract method override, and it provides this additional error:
    "HousingConfigImpl.java": method does not override a method from its superclass at line 382, column 17
    I have also reconstructed the code layout in a separate set of classes that have no dependancies, but there's no error coming from these!
    public class CustomThing {
    public interface ISomeInterface<T> {
        List<T> interfaceMethod();
    public abstract class SomeAbstractClass<T> {
        private Class _c = null;
        public SomeAbstractClass(Class c) {
            _c = c;
        protected Class getC() {
            return _c;
        public abstract T methodToOverride(Object neededObject) throws Throwable;
        public final T finalMethod() {
            try {
                return methodToOverride(new Object());
            } catch(Throwable e) {
                throw new RuntimeException(e);
    import java.util.List;
    import java.util.Collections;
    public class SomeInterfaceImpl<T> implements ISomeInterface<T> {
        public List<T> interfaceMethod() {
            return new SomeAbstractClass<List<T>>(CustomThing.class) {
                public List<T> methodToOverride(Object neededObject) throws Throwable {
                    return Collections.emptyList();
            }.finalMethod();
    import java.util.Collections;
    import java.util.List;
    public class SomeOtherClass {
        public List<CustomThing> someMethod() {
            return new SomeAbstractClass<List<CustomThing>>(CustomThing.class) {
                public List<CustomThing> methodToOverride(Object neededObject) throws Throwable {
                    return Collections.emptyList();
            }.finalMethod();
    }So, there's something about my code that causes it to be, somehow, different enough from the example provided above so that I get the error. The only differences in the override method definitions in my actual code are in the return type, but those are different in the example above as well. Here are the class declarations, anonymous abstract class creation statements, and abstract method declarations from the actual code.
    public abstract class SessionHandler<T> {
        abstract T handle(Session session) throws Throwable;
    public class EntityOps<T> implements IEntityOps<T> {
                return new SessionHandler<List<T>>(_mgr, _c, "getAll" + _c.getName()) {
                    List<T> handle(Session s) throws Throwable {
    public class HousingConfigImpl implements IHousingConfigOperations, ISessionFactoryManager {
                ret = new SessionHandler<List<Tenant>>((ISessionFactoryManager)this, Housing.class, "getTenantsInNeighborhood") {
                    List<Housing> handle(Session s) throws Throwable {I can't for the life of me see any syntactical difference between my example and the real code. But, one works and the other doesn't.

  • Trouble with Ford class

    I created this abstract class ...
    public abstract class v8Engine {
      public String start;
      public boolean getInspectionResults;
    }... Then I extended it like this ...
    public class FordWindsorV8  extends v8Engine {
      private static int rebuildCount;
      private static final boolean passInspection = false;
      private static final String aquireLocation = "junkyard";
      public String start() {
        return("useless");
      public void reBuild() {
        rebuildCount++;
      public boolean getInspectionResults() {
        return(passInspection);
      public String aquireEngineResults() {
        return(aquireLocation);
      public int getRebuildCount() {
        return( rebuildCount );
      }... Finally I tried to run it after compiling it all, with this class:
    public class runV8Engine {
        FordWindsorV8 fv8 = new FordWindsorV8();
        System.out.println("Where was engine obtained? ... "+fv8.aquireEngineResults());
        fv8.reBuild();
        System.out.println("Start results: "+fv8.start());
        System.out.println("Pass MV inspection? ... "+fv8.getInspectionResults());
        fv8.reBuild();
        System.out.println("Start results: "+fv8.start());
        fv8.reBuild();
        System.out.println("Start results: "+fv8.start());
        fv8.reBuild();
        System.out.println("Engine was rebuilt how many times? ... "+fv8.getRebuildCount());
        System.out.println("Start results: "+fv8.start());
        System.out.println("Pass MV inspection? ... "+fv8.getInspectionResults());
    }... But all it does is basically nothing. Why?

    Like this ;-)
    public class runV8Engine {
    public static void main(String[] argv) {
    FordWindsorV8 fv8 = new FordWindsorV8();
    System.out.println("Where was engine obtained? ... "+fv8.aquireEngineResults());
    fv8.reBuild();
    System.out.println("Start results: "+fv8.start());
    System.out.println("Pass MV inspection? ... "+fv8.getInspectionResults());
    fv8.reBuild();
    System.out.println("Start results: "+fv8.start());
    fv8.reBuild();
    System.out.println("Start results: "+fv8.start());
    fv8.reBuild();
    System.out.println("Engine was rebuilt how many times? ... "+fv8.getRebuildCount());
    System.out.println("Start results: "+fv8.start());
    System.out.println("Pass MV inspection? ... "+fv8.getInspectionResults());

  • Bug? Unable to add ActionListener using Anonymous class.

    Hi,
    I come accross one strange behaviour while adding ActionListener to RCF component.
    I am trying to add the ActionListener in the managed bean using the Anonymous.
    We can add the actionListener to a button using following methods. I am talking about the the first case. Only this case is not working. Rest other 2 cases are working properly.
    Case 1:
    class MyClass {
         RichCommmandButton btnTest = new RichCommmandButton();
         public MyClass(){
              btnTest.addActionListener(new ActionListener(){
                   public void processAction(ActionEvent event){
    Case 2:
    class MyClass implements ActionListener {
         RichCommmandButton btnTest = new RichCommmandButton();
         public void processAction(ActionEvent event){
    <af:button binding="#{myClassBean.btnTest}" actionListener="#{myClassBean.processAction}"/>
    Case 3:
    class MyClass implements ActionListener {
         RichCommmandButton btnTest = new RichCommmandButton();
         public void addActionLister(){
              //Use EL to add processAction(). Create MethodBinding
              FacesContext facesContext = FacesContext.getCurrentInstance();
    ELContext elContext = facesContext.getELContext();
    ExpressionFactory exprfactory = facesContext.getApplication().getExpressionFactory();
              MethodExpression actionListener =
    exprfactory.createMethodExpression(elContext, "#{myClassBean.processAction}", null, new Class[] { ActionEvent.class });
              btnTest.setActionListener(actionListener);
         public void processAction(ActionEvent event){
    Java has provided good way to use the Anonymous classes while adding the listeners. It should work with the RCF also.
    Some how i found the case 1 usefull, as i can have as many buttons in my screen and i can add the actionListener in one method. Also it is easy to read. I dont have to see the JSPX page to find the associated actionListener method.
    Is it a bug or i am wrong at some point?
    Any sujjestions are welcome.
    - Sujay.

    Hello Sujay,
    As I said in my previous reply, you can try with request scope. In JSF you shouldn't use the binding attribute very often. I agree that anonymous class is nice, but don't forget that you might be dealing with client state saving here so it cannot be perfectly compared with Swing that maintains everything in RAM. What I think happens with you currently is the following:
    1. Bean is created and the button instance as well. The ActionListener is added to the button;
    2. The view is rendered and while it is, the binding attribute is evaluated, resulting in the get method of your bean being called;
    3. Since the method returns something different than null, the button instance created in 1. get used in the component tree;
    4. The tree's state is saved on the client, since your class isn't a StateHolder, nor Serializable, the StateManager doesn't know how to deal with it so it gets discarded from the saved state and maybe from the component itself (would have to debug the render view phase to be sure);
    5. The postback request arrives, the tree is restored. When the handler reaches the button, it call the bean that returns the same instance that was used in the previous tree (since not request scoped), which is BAD because the remaining of the tree is not made of the same object instances, but rather new deserialized ones. The component then gets updated from the client state saved in 4, this might also be where the listener get removed (again debugging would tell you this, but I would tend more with the previous possibility). Note that with a request scoped bean you would have to add the listener during the first get method call (by checking if the component is null) or in the constructor as you're doing right now. It would be a very clean way and you could give the request bean (and thus the listener) access to the conversation scoped bean through injection which is very nice as well.
    6. The invoke application phase occurs and the listener is no longer there.
    Btw, this isn't a rich client issue, more a specification one. I'm curious if it works in a simple JSF RI application, if it does then I guess it would be a bug in Trinidad and/or rich client state handling architecture (using FacesBean).
    Regards,
    ~ Simon

  • Local class and switch statement -- compiler bug?

    Does anybody know why the following does not compile with "LocalClass cannot be resolved to a type" error in the case 1: block
    public class ProblemClass {
         public void localClassProblem() {
                   class LocalClass {
                        void doNothing() {};          
                   int i = 0; 
                   switch (i) {                    
                        case 1: {
                             LocalClass instance1 = new LocalClass();  //ERROR: unresolved type
                                            break;
    }while the following does (I only added case 2: where LocalClass type is not referenced within an embedded block)
    public class ProblemClass {
         public void localClassProblem() {
                   class LocalClass {
                        void doNothing() {};          
                   int i = 0; 
                   switch (i) {                    
                        case 1: {
                             LocalClass instance1 = new LocalClass();
                                            break;
                        case 2:
                             LocalClass instance2 = new LocalClass();
    }Is it a compiler bug? Thanks for clarifying this.
    --Michal                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    I'm using 1.5.0-b64
    --Michal                                                                                                                                                                                                                                   

  • Anonymous class instantiation expression with interface implementation??

    Is it possible to create an inline anonymous class instatiation expression that can implements an interface?
    For example:
    Frame myFrame = new Frame() implements WindowListner {
         public void WindowOpened(WindowEvent  e) {}
             +other interface methods....+
    }Apparently compiler doesn't like this code:(
    I know that I can create an extra named class with the interface, then instantiate it instead. But this is not what I want.
    (By the way, if someone wants to know why I want to do this, I say I think this may make my code simpler or look better, that's all:) )

    abstract class ListenerFrame extends Frame implements WindowListener {} This look pretty neat:)
    I guess I can rewrite my code then:
    abstract class FrameWithListener extends Frame
             implements WindowListener{}      //local class
    Frame myFrame = new FrameWithListener {
            public void WindowOpened {}
               blah, blah...
    }Not sure I can use abstarct class as local class, but otherwise I'll use it as a class member or some sort..
    Thank you for the reply
    Edited by: JavaToTavaL on Nov 27, 2009 4:04 AM
    Edited by: JavaToTavaL on Nov 27, 2009 4:04 AM

  • BUG: Internal compilation error, terminated with a fatal exception

    After downloading the new Oracle JDeveloper 10g production, migrating all my projects, everytime I try to make/rebuild any file or package, I get the following error:
    Internal compilation error, terminated with a fatal exception
    This happens if use either JAVAC or OJC.
    Regards,
    Yaniv Kunda

    I think the error reporting is wrong, since dbMessages.java is a translated SQLJ file, and the specified method exists in the SQLJ file around that line number - and not in the java file resulting from the translation.
    Note that line 2958, in the SQLJ file, was the simple MessageHeader.Iter messageHeaderIter; line.
    The definition of this class, is in a SQLJ file, which content is:
    package telemessage.db.impl.iterators;
    import java.sql.Timestamp;
    * Contains an iterator for viewing message headers in folder view.
    public class MessageHeader {
         #sql public static iterator Iter (
              long          MESSAGE_ID,
              String          RANDOM_KEY,
              Timestamp     DATE_SENT_BY_USER,
              short          TYPE,
              long          MESSAGE_SIZE,
              int               ATTACHMENT_COUNT,
              String          SUBJECT,
              String          FROM_DISPLAY,
              String          TO_DISPLAY,
              Long          POLLER_ACCOUNT_ID,
              long          DEVICE_ID,
              short          DEVICE_STATE,
              short          DEVICE_BLOCKING,
              Integer          DEVICE_BLOCKED_FROM,
              Integer          DEVICE_BLOCKED_UNTIL,
              short          DEVICE_TYPE,
              byte          DEVICE_SUB_TYPE,
              String          DEVICE_VALUE,
              String          DEVICE_DESCRIPTION,
              boolean          READ,
              String          TEXT,
              boolean          ESCALATING,
              int               DESCENDANT_COUNT,
              short          STATUS
    }I have pasted the original source of this method, both before and after SQLJ translation.
    before:
         public static MessageEntries getMessageDescendants(DBThread db, long messageID, boolean isRoot)
                   throws SQLException, DBException {
              List messagesList = new ArrayList();
              MessageHeader.Iter messageHeaderIter;
              #sql [db.ctx] messageHeaderIter = {
                   select
                        m.ID MESSAGE_ID,
                       m.RANDOM_KEY,
                        m.DATE_SENT_BY_USER,
                        m.TYPE,
                        m.MESSAGE_SIZE,
                        m.ATTACHMENT_COUNT,
                        m.SUBJECT,
                        m.FROM_DISPLAY,
                        m.TO_DISPLAY,
                        m.POLLER_ACCOUNT_ID,
                        -1 DEVICE_ID,
                        -1 DEVICE_STATE,
                        -1 DEVICE_BLOCKING,
                        null DEVICE_BLOCKED_FROM,
                        null DEVICE_BLOCKED_UNTIL,
                        -1 DEVICE_TYPE,
                        -1 DEVICE_SUB_TYPE,
                        null DEVICE_VALUE,
                        null DEVICE_DESCRIPTION,
                       1 READ,
                             select     tm.TEXT
                             from     TEXT_MESSAGES tm
                             where     
                                       tm.MESSAGE_ID = m.ID
                                  and     rownum = 1
                        ) TEXT,
                        0 ESCALATING,
                        0 DESCENDANT_COUNT,
                        -1 STATUS
                   from
                        MESSAGES m
                   start with
                        m.ID = decode(:isRoot,
                             1,:messageID,
                                  select          m2.ID
                                  from          MESSAGES m2
                                  where          m2.ORIGINAL_MESSAGE_ID is null
                                  start with     m2.ID = :messageID
                                  connect by     m2.ID = prior m2.ORIGINAL_MESSAGE_ID
                   connect by
                        prior m.ID = m.ORIGINAL_MESSAGE_ID
                   order by
                        m.DATE_SENT_BY_USER desc
              while (messageHeaderIter.next()) {
                   MessageEntry messageEntry = new MessageEntry(
                        messageHeaderIter.FROM_DISPLAY(),
                        messageHeaderIter.TO_DISPLAY(),
                        messageHeaderIter.SUBJECT(),
                        messageHeaderIter.MESSAGE_SIZE(),
                        messageHeaderIter.RANDOM_KEY(),
                        messageHeaderIter.MESSAGE_ID(),
                        messageHeaderIter.DATE_SENT_BY_USER(),
                        messageHeaderIter.TYPE(),
                        messageHeaderIter.ATTACHMENT_COUNT(),
                        null,   // pollerAccount
                        0,          // senderID
                        null,   // sentFromDevice
                        messageHeaderIter.READ(),
                        messageHeaderIter.TEXT(),
                        messageHeaderIter.ESCALATING(),
                    0,          // descendantsCount - not relevant for this query
                        messageHeaderIter.STATUS()
                   messagesList.add(messageEntry);
                   db.checkTimeout(); // potential time-consuming loop
              }//while
              messageHeaderIter.close();
            long[] allEntriesMessageIDs = new long[messagesList.size()];
              for (int i = 0; i < allEntriesMessageIDs.length; i++) {
                   allEntriesMessageIDs[i] = ((MessageEntry)messagesList.get(i)).getMessageContainerID();
              return new MessageEntries(messagesList, 0, allEntriesMessageIDs, null);
         } // getMessageDescendants
    after:
         public static MessageEntries getMessageDescendants(DBThread db, long messageID, boolean isRoot)
                   throws SQLException, DBException {
              List messagesList = new ArrayList();
              MessageHeader.Iter messageHeaderIter;
              /*@lineinfo:generated-code*//*@lineinfo:2959^3*/
    //  #sql [db.ctx] messageHeaderIter = { select
    //                      m.ID MESSAGE_ID,
    //                     m.RANDOM_KEY,
    //                      m.DATE_SENT_BY_USER,
    //                      m.TYPE,
    //                      m.MESSAGE_SIZE,
    //                      m.ATTACHMENT_COUNT,
    //                      m.SUBJECT,
    //                      m.FROM_DISPLAY,
    //                      m.TO_DISPLAY,
    //                      m.POLLER_ACCOUNT_ID,
    //                      -1 DEVICE_ID,
    //                      -1 DEVICE_STATE,
    //                      -1 DEVICE_BLOCKING,
    //                      null DEVICE_BLOCKED_FROM,
    //                      null DEVICE_BLOCKED_UNTIL,
    //                      -1 DEVICE_TYPE,
    //                      -1 DEVICE_SUB_TYPE,
    //                      null DEVICE_VALUE,
    //                      null DEVICE_DESCRIPTION,
    //                     1 READ,
    //                           select     tm.TEXT
    //                           from     TEXT_MESSAGES tm
    //                           where     
    //                                     tm.MESSAGE_ID = m.ID
    //                                and     rownum = 1
    //                      ) TEXT,
    //                      0 ESCALATING,
    //                      0 DESCENDANT_COUNT,
    //                      -1 STATUS
    //                 from
    //                      MESSAGES m
    //                 start with
    //                      m.ID = decode(:isRoot,
    //                           1,:messageID,
    //                                select          m2.ID
    //                                from          MESSAGES m2
    //                                where          m2.ORIGINAL_MESSAGE_ID is null
    //                                start with     m2.ID = :messageID
    //                                connect by     m2.ID = prior m2.ORIGINAL_MESSAGE_ID
    //                 connect by
    //                      prior m.ID = m.ORIGINAL_MESSAGE_ID
    //                 order by
    //                      m.DATE_SENT_BY_USER desc
      sqlj.runtime.ConnectionContext __sJT_connCtx = db.ctx;
      if (__sJT_connCtx == null) sqlj.runtime.error.RuntimeRefErrors.raise_NULL_CONN_CTX();
      sqlj.runtime.ExecutionContext __sJT_execCtx = __sJT_connCtx.getExecutionContext();
      if (__sJT_execCtx == null) sqlj.runtime.error.RuntimeRefErrors.raise_NULL_EXEC_CTX();
      boolean __sJT_1 = isRoot;
      long __sJT_2 = messageID;
      long __sJT_3 = messageID;
      synchronized (__sJT_execCtx) {
        sqlj.runtime.profile.RTStatement __sJT_stmt = __sJT_execCtx.registerStatement(__sJT_connCtx, dbMessages_SJProfileKeys.getKey(0), 39);
        try
          __sJT_stmt.setBoolean(1, __sJT_1);
          __sJT_stmt.setLong(2, __sJT_2);
          __sJT_stmt.setLong(3, __sJT_3);
          sqlj.runtime.profile.RTResultSet __sJT_result = __sJT_execCtx.executeQuery();
          messageHeaderIter = new MessageHeader.Iter(__sJT_result);
        finally
          __sJT_execCtx.releaseStatement();
    /*@lineinfo:user-code*//*@lineinfo:3008^3*/
              while (messageHeaderIter.next()) {
                   MessageEntry messageEntry = new MessageEntry(
                        messageHeaderIter.FROM_DISPLAY(),
                        messageHeaderIter.TO_DISPLAY(),
                        messageHeaderIter.SUBJECT(),
                        messageHeaderIter.MESSAGE_SIZE(),
                        messageHeaderIter.RANDOM_KEY(),
                        messageHeaderIter.MESSAGE_ID(),
                        messageHeaderIter.DATE_SENT_BY_USER(),
                        messageHeaderIter.TYPE(),
                        messageHeaderIter.ATTACHMENT_COUNT(),
                        null,   // pollerAccount
                        0,          // senderID
                        null,   // sentFromDevice
                        messageHeaderIter.READ(),
                        messageHeaderIter.TEXT(),
                        messageHeaderIter.ESCALATING(),
                    0,          // descendantsCount - not relevant for this query
                        messageHeaderIter.STATUS()
                   messagesList.add(messageEntry);
                   db.checkTimeout(); // potential time-consuming loop
              }//while
              messageHeaderIter.close();
            long[] allEntriesMessageIDs = new long[messagesList.size()];
              for (int i = 0; i < allEntriesMessageIDs.length; i++) {
                   allEntriesMessageIDs[i] = ((MessageEntry)messagesList.get(i)).getMessageContainerID();
              return new MessageEntries(messagesList, 0, allEntriesMessageIDs, null);
         } // getMessageDescendants

  • Compiler bug in 10.1.3 EA1?  get "Internal compilation error" with EnumSet

    The code sample below generates "Error: Internal compilation error, terminated with a fatal exception" when doing make. It's a very simple example, it creates an EnumSet with one element and dumps it via the "toString()" method.
    If I change the line:
    "EnumSet set = EnumSet.of(Buttons.ONE);"
    To:
    "EnumSet set = EnumSet.allOf(c);"
    It works fine. For some reason the "of" method of "EnumSet" crashes the compiler.
    Any ideas?
    ========================================
    package mypackage;
    import java.util.EnumSet;
    public class EnumDemo
    enum Buttons { ONE, TWO, THREE }
    public EnumDemo()
    public void dump()
              Class c = Buttons.class;
              EnumSet set = EnumSet.of(Buttons.ONE);
              System.out.println(set.toString());
    public static void main(String[] args)
    EnumDemo cls = new EnumDemo();
    cls.dump();
    ==============================

    package com.esp.main;
    import java.awt.Dimension;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JTree;
    import javax.swing.event.TreeModelEvent;
    import javax.swing.event.TreeModelListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreePath;
    public class TreeNavigator extends JTree {
    private FormMain fm;
    public TreeNavigatorNode selectedTreeNode;
    public TreePath selectedTreePath;
    public JTree thisTree;
    public TreeNavigator(FormMain pFM) {
    fm = pFM;
    thisTree = this;
    addTreeSelectionListener(new TreeSelectionListener() {
    public void valueChanged(TreeSelectionEvent e) {
    selectedTreeNode = (TreeNavigatorNode)thisTree.getLastSelectedPathComponent();
    if (selectedTreeNode == null) {
    return;
    selectedTreePath = e.getPath();
    addMouseListener(new MouseAdapter() {
    public void mouseReleased(MouseEvent e) {
    if (e.getClickCount() == 1) {
    doPopup(e.getX(), e.getY());
    String nodeInternalFrameClassName = selectedTreeNode.getInternalFrameClassName();
    String nodeNodeTypeDesc = selectedTreeNode.getNodeTypeDesc();
    if ((selectedTreeNode != null) && (nodeNodeTypeDesc.equals("FORM") || nodeNodeTypeDesc.equals("GRAPH"))) {
    fm.showInternalFrame(nodeInternalFrameClassName, fm, null);
    } else if (e.getClickCount() == 1) {
    TreePath path = thisTree.getClosestPathForLocation(e.getX(), e.getY());
    thisTree.setSelectionPath(path);
    public void doPopup(int x, int y) {
    if ((selectedTreeNode != null) && selectedTreeNode.nodeTypeDesc.equals("MODULE")) {
    fm.cm.sendString("Do Nothing");
    } else {
    fm.cm.sendString("Launch form");
    setEditable(false);
    setMaximumSize(new java.awt.Dimension(3200, 3200));
    setPreferredSize(new java.awt.Dimension(800, 100));
    setShowsRootHandles(false);
    setLargeModel(false);
    setRootVisible(false);
    setDragEnabled(false);
    DefaultTreeModel treeNavigatorModel = new DefaultTreeModel(fm.treeNavigatorNodeArray[fm.rootNode], true);
    treeModel.addTreeModelListener(new NavigatorTreeModelListener());
    setModel(treeNavigatorModel);
    expandAll(this);
    try {
    jbInit();
    } catch (Exception e) {
    e.printStackTrace();
    public void expandAll(JTree tree) {
    int row = 0;
    while (row < tree.getRowCount()) {
    tree.expandRow(row);
    row++;
    private void jbInit() throws Exception {
    this.setSize(new Dimension(286, 383));
    TreeNavigatorCellRenderer renderer = new TreeNavigatorCellRenderer(fm);
    this.setCellRenderer(renderer);
    class NavigatorTreeModelListener implements TreeModelListener {
    public void treeNodesChanged(TreeModelEvent e) {
    TreeNavigatorNode node;
    node = (TreeNavigatorNode)(e.getTreePath().getLastPathComponent());
    * If the event lists children, then the changed
    * node is the child of the node we've already
    * gotten. Otherwise, the changed node and the
    * specified node are the same.
    try {
    int index = e.getChildIndices()[0];
    node = (TreeNavigatorNode)(node.getChildAt(index));
    } catch (NullPointerException exc) {
    public void treeNodesInserted(TreeModelEvent e) {
    public void treeNodesRemoved(TreeModelEvent e) {
    public void treeStructureChanged(TreeModelEvent e) {
    }

  • SS9 CC5.6 compiler bug - algorithm count confused with struct member

    Found some code that fails to compile in CC 5.6
    CC: Sun C++ 5.6 2004/07/15
    #include <algorithm>
    using namespace std;
    struct A {
      int count;   
    struct B
      struct A *a;
    int main(int argc, char **argv)
      struct B *b = 0;
      // This line fails to build, any other operator is ok
      if ( b->a->count < 50 )
      return (1);
    }Fails with error :
    "c56_algorithm_bug.cpp", line 21: Error: Unexpected ")" -- Check for matching parenthesis.
    "c56_algorithm_bug.cpp", line 22: Error: "," expected instead of "{".
    "c56_algorithm_bug.cpp", line 22: Error: Illegal value for template parameter.
    "c56_algorithm_bug.cpp", line 22: Error: ")" expected instead of "{".
    4 Error(s) detected.The compiler is getting confused with the use of the count struct member vs the count algorithm. Changing the < to a > fixes the problem.
    Using CC5.3 works fine as well as all other compilers we use (gcc 3.4, mipspro 7.4, VC 7.1)
    Anyone seen this ?
    - mark

    This bug has been fixed in the C++ 5.6 compiler. I'm not sure if the fix is in the first patch which is about to be released. If not, the fix definitely will be in the next patch.
    The workaround is not to use
    using namespace std;That using-declaration is a pretty big hammer, and often results in conflicts with user code, compiler bugs aside.

  • Issue with JSPs with inner classes (bug)

    FYI:
    Turning on Versioning in the registry (Disable=0) JSPs with inner classes causes the following IllegalAccessException...
    This has been confirmed with SP3 and SP4 with our testing...
    14/Jan/2002 13:26:24:4] error: Exception: SERVLET-run_failed: Failed in running template: /NASApp/fortune/foo.jsp, java
    lang.IllegalAccessError: try to access class jsp.APPS.fortune.foo$foobar from class jsp.APPS.fortune.foo
    xception Stack Trace:
    ava.lang.IllegalAccessError: try to access class jsp.APPS.fortune.foo$foobar from class jsp.APPS.fortune.foo
    at jsp.APPS.fortune.foo._jspService(foo.java:78)
    at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
    at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)
    at com.netscape.server.servlet.servletrunner.ServletRunner.callJSP(Unknown Source)
    at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)
    at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)
    at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)
    at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)
    at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
    at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)
    at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)
    at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
    at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
    at com.kivasoft.thread.ThreadBasic.run(Native Method)
    at java.lang.Thread.run(Thread.java:479)
    Looking for work around....
    Cheers,
    Martin Gee

    I do not see why you would use two sorts.
    And what is the issue exactly by the way? Errors?
    So, the records before the Merge Join need to come sorted, to achieve this simply tick:
    Arthur My Blog

  • Where is the anonymous class in this? (lotsa code)

    When I compile ThreadPool.java, I get three classes: ThreadPool.class, ThreadPool$WorkerThread.class, and ThreadPool$1.class. I understand the first two, but I can't figure out where the anonymous class is coming from. Could it be some kind of automatically-generated wrapper class caused by the fact that all accesses to the Queue object are within synchronized blocks? Curiosity attacks!
    Thanks,
    Krum
    ThreadPool.java:
    package krum.util;
    * A thread pool with a bounded task queue and fixed number of worker threads.
    public class ThreadPool {
       protected Queue queue;
    public ThreadPool(int threads, int taskQueueSize) {
       queue = new Queue(taskQueueSize);
       /* create the worker threads */
       for(int i = 0; i < threads; ++i) {
          Thread t = new Thread(new WorkerThread());
          t.setDaemon(true);
          t.start();
    * Queues a task to be executed by this ThreadPool.  If the task queue is
    * full, the task will run in the calling thread.  (Could easily be modified
    * to throw an exception instead.)
    public void doTask(Runnable task) {
       boolean added = false;
       synchronized(queue) {
          if(!queue.isFull()) {
             queue.add(task);
             added = true;
             queue.notify();
       if(!added) task.run();
    * Tests if the task queue is empty.  Useful if you want to wait for all
    * queued tasks to complete before terminating your program.
    public boolean queueEmpty() {
       synchronized(queue) {
          return queue.isEmpty();
    private class WorkerThread implements Runnable {
    public void run() {
       Runnable task;
       while(true) {
          task = null;
          synchronized(queue) {
             try {
                if(queue.isEmpty()) queue.wait();
                else task = (Runnable)queue.getNext();
             } catch(InterruptedException e) { break; }
          if(task != null) task.run();
    } /* end inner class WorkerThread */
    } /* end class ThreadPool */Queue.java:
    package krum.util;
    * Implements a FIFO queue for storage and retrieval of objects.  This class
    * is not synchronized.
    public class Queue {
         /** circular buffer containing queued objects */
         protected Object[] queue;
         /** index of next object to be returned */
         protected int nextReturn;
         /** index in which to store next object inserted */
         protected int nextInsert;
    public Queue(int capacity) {
         queue = new Object[capacity];
         nextInsert = 0;
         nextReturn = 0;
    public boolean isEmpty() { return(queue[nextReturn] == null); }
    public boolean isFull() { return(queue[nextInsert] != null); }
    public void add(Object obj) throws QueueException {
         if(queue[nextInsert] == null) {
              queue[nextInsert] = obj;
              ++nextInsert;
              nextInsert %= queue.length;
         } else throw new QueueException();
    public Object getNext() throws QueueException {
         if(queue[nextReturn] != null) {
              Object obj = queue[nextReturn];
              queue[nextReturn] = null;
              ++nextReturn;
              nextReturn %= queue.length;
              return obj;
         } else throw new QueueException();
    } /* end class Queue */QueueException.java:
    package krum.util;
    public class QueueException extends RuntimeException { }

    I can't explain why it happens, but I've seen this
    behaviour before. I found that it was to do with an
    inner class (WorkerThread in your code) having a
    private constructor - if I made my inner class
    constructor at least package (default) access, then
    the anonymous class was no longer created.
    The generated default constructor for a class has the
    same access modifier as the class, so in your example,
    the default constructor that the compiler generates is
    private.
    I suspect the problem will go away if you either:
    1. Remove the private modifier from the WorkerThread
    class declaration.
    or:
    2. Add a no-args constructor to the WorkerThread
    class, and don't specify an access modifier.Yes, the reason is the private constructor. After decompile using JAD, the reason seems to be: if a private inner class does not explicitly have any constructor, a default no-arguments private constructor is created, and seems this default constructor can't be accessed directly (in source code, it can). So, another no-private constructor (package accessible) is created automatically (with an argument of Object's type), and the
    new WorkThread();is actually like this:
    new WorkThread(null);
    private class WorkThread implements Runnable{
       private WorkThread(){}
       WorkThread(Object obj) {
          this();
    }and I would guess it's using anonymous class tech to achieve this like:
    new WorkThread(null) {
       WorkThread(Object obj){
          this();
    }The JLS should have specified this situation.

  • Checked Exception and Anonymous classes

    Hi I am refering to java certification book that says : If a checked exception is thrown during the execution of initializer expression, then it has to be caught and handled. This restriction does not apply to instance initializer expressions in anonymous classes.
    I have codes for the above statement but failed to get the correct result. Is there some problem with the code :
    class RoomOccupancyTooHighException extends RuntimeException {} // (1) Unchecked Exception
    class TooManyHotelsException extends Exception {}           // (2) Checked Exception
    class base
         public void fun()
              System.out.println("base");
    class derived
         public static base funtion()
              return new base()
                                       int a = fu();
                                       int fu()
                                            if(a==1)
                                            throw new TooManyHotelsException();
                                            return 100;
                                       public void fun()
                                            System.out.println("derived");
         public static void main(String str[])
              base b = funtion();
              b.fun();
    }

    In anonynous class initialisation you don't need to declare the exception but you still need to handle it in the calling code.
    The code you provided does not compile for that reason.

  • Strange compiler bug in method overloading mechanism

    Hi,
    current javac compiler in version 1.4.2_10 and probably earlier versions seem to have a bug in the overloading mechanism of static methods in a certain case.
    I consider reporting this as a compiler bug but would like to have some feedback before.
    Would you consider this class correct? With 5+ years of java experience I'd consider it being correct:
    package test;
    public abstract class AbstractClass {
       public class RealizationClass extends AbstractClass {
          public void someMethod() {
             m(1); //Error: m(int,int) in test.AbstractClass cannot be applied to (int)
             m(1, 2);
       private static int m(int i) {
          return i+1;
       private static int m(int i, int j) {
          return i+j;
    }Interestingly the order of those two static method and their visibility affects the error (changing visibilty to public/protected makes javac accept the code).
    Eclipses compiler does not have this problem, it happily accepts the code above.
    What do you think?
    -Sebastian

    JLS 2.0 says on page 147: "The scope of a declaration of a member m declared in or inherited by a class type C is the entire body of C, including any nested type declarations."
    I read somewhere that in the case a nested or inner class accesses private fields of its enclosing type, the compiler generates "sythetic accessor methods" to allow access. Maybe there's something wrong with the generation of these generated methods...

Maybe you are looking for