Skip to main content

alphaWorks  >  forumlabel  >  Hyperj  >  developerWorks

NullPointerException when using brackets    Point your RSS reader here for a feed of the latest messages in this thread


     

 
 

loginbox.header
 loginbox.welcomelabel loginbox.guestlabel
loginbox.signin
Permlink Replies: 1 - Pages: 1 - Last Post: Dec 9, 2004 9:48 PM Last Post By: Luca Ferrari Threads: [ Previous | Next ]
Luca Ferrari
NullPointerException when using brackets
Posted: Oct 26, 2004 09:32:09 AM
Click to report abuse...   Click to reply to this thread Reply
Hi,
I'm evaluating HyperJ but I'm experiencing a problem. First of all my class structure:
hj.gui.Main => the main GUI window
hj.gui2.Main => a new main GUI that should substitute the previous one
hj.log.Log => a logger class with a "log" method that should be invoked each time actionPerformed is called on the Main class.

My space.opt file is the following:

-hyperspace
hyperspace LucaSpace
composable class hj.gui.*;
composable class hj.log.*;
composable class hj.gui2.*;

-concerns
package hj.gui : Feature.GUI
package hj.log : Feature.LOG
package hj.gui2 : Feature.EXTENSION

-hypermodules
hypermodule LucaModule
hyperslices:
Feature.GUI,
Feature.EXTENSION,
Feature.LOG;
relationships:
overrideByName;

bracket "*"."logGUI"
before Feature.LOG.Log.log;

end hypermodule;

but when I execute hyperj I got a nullpointer exception (that is surely related to the use of brackets, since without that everything works):

luca@linux:~/tmp/hj> java com.ibm.hyperj.hyperj ./space.opt -output ./output/ -verbose
Parsing hyperspace file ./space.opt...
Parsing concern mappings...
Unparsing input classes label to file InputClassesLabel.unp...
Creating hyperspace dump to file BeforeCompositionHyperspace.dump...
Parsing hypermodule specification, creating hyperslices, and
performing composition...

Composition done: unparsing labels for input and output hyperslices...
Performing code generation...
Dumping AST...
Exception in thread "main" java.lang.NullPointerException
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:566)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.createMissingConstructor(CEMethod.java:570)
at com.ibm.sop.classEdit.CEMethod.generateDummyConstructorCall(CEMethod.java:537)
at com.ibm.sop.AST.AST_ClassImpl.generateDummyConstructors(AST_ClassImpl.java:947)
at com.ibm.sop.AST.AST_ClassImpl.generateDetails(AST_ClassImpl.java:823)
at com.ibm.sop.AST.AST_Root.generateCode(AST_Root.java:93)
at com.ibm.sop.driver.hyperj.main(hyperj.java:399)
at com.ibm.hyperj.hyperj.main(hyperj.java:15)

The following is the dump of the hj.gui.Main class (each method has the same signature in the hj.gui2.Main class):

package hj.gui;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import hj.log.*;

public class Main extends JFrame implements ActionListener{

protected JLabel label;
protected JButton button;
protected int contatore;

public Main(){
super("Programma di prova");
}

public void costruisci(){
this.getContentPane().setLayout(new FlowLayout());
label = new JLabel("Pronto ad eseguire");
button = new JButton("Incrementa");
this.getContentPane().add(button);
this.getContentPane().add(label);
button.addActionListener(this);
this.setSize(300,300);
contatore=0;
this.setVisible(true);
}

public void actionPerformed(ActionEvent event){
if(event.getSource()==button){
logGUI();
}
}

public void logGUI(){
contatore++;
label.setText("valore attuale "+contatore);
}

public static void main(String argv[]){
Main w = new Main();
w.costruisci();
}
}

and the following is the dump of the Log class:

package hj.log;

public class Log{

public void log(){
System.out.println("log - stampa!");
}

public Log(){
System.out.println("Oggetto Log Costruito!!!!!!\n");
}

}

Now, I just want that Log#log is called each time Main#actionPerformed is too, how to do this?

Thanks,
Luca

Luca Ferrari
Re: NullPointerException when using brac
Posted: Oct 26, 2004 10:50:44 AM   in response to: Luca Ferrari in response to: Luca Ferrari thread.responsepost
Click to report abuse...   Click to reply to this thread Reply
I forgot a few details:

luca@linux:~/tmp/hj> cat ast.dump
uncomposable interface java.awt.event.ActionListener
uncomposable class javax.swing.JFrame

class hj.gui.Main
superclass: hj.log.Log
implements: java.awt.event.ActionListener
subclasses:
methods:
<init>() returning void
__init__from_hj_gui__Main() returning void
__init__from_hj_gui2__Main() returning void
costruisci() returning void
costruisci__from_hj_gui2__Main() returning void
test() returning void
test__from_hj_gui__Main() returning void
logGUI() returning void
logGUI__from_hj_gui2__Main() returning void
actionPerformed(ActionEvent) returning void
actionPerformed__from_hj_gui2__Main(ActionEvent)
returning void
logGui2() returning void
logGui2__from_hj_gui2__Main() returning void
main(java.lang.String[]) returning void
main__from_Feature___EXTENSION__Main(java.lang.String[]) returning void
fields:
button
contatore
label

uncomposable class java.lang.String

uncomposable class javax.swing.JButton

uncomposable class javax.swing.JLabel

uncomposable class java.awt.event.ActionEvent

uncomposable class java.lang.Object

class hj.log.Log
superclass: javax.swing.JFrame
implements:
subclasses: hj.gui.Main
methods:
<init>() returning void
__init__from_hj_log__Log() returning void
log() returning void
log__from_hj_log__Log() returning void
fields:

and also

luca@linux:~/tmp/hj> cat BeforeCompositionHyperspace.dump
Dimension: Feature
Concern: None
Concern: LOG
Unit: compound action InputClassesSubject.<init>.Log
Unit: compound action InputClassesSubject.log.Log
Unit: class InputClassesSubject.Log
Concern: EXTENSION
Unit: instance variable InputClassesSubject.Main.contatore
Unit: instance variable InputClassesSubject.Main.button
Unit: compound action InputClassesSubject.logGui2.Main
Unit: instance variable InputClassesSubject.Main.label
Unit: compound action InputClassesSubject.actionPerformed.Main[Package:
"hj.gui2"]
Unit: compound action InputClassesSubject.main[class: Main[Package:
"hj.gui2"]].static
Unit: compound action InputClassesSubject.<init>.Main
Unit: class InputClassesSubject.Main
Unit: compound action InputClassesSubject.logGUI.Main
Unit: compound action InputClassesSubject.costruisci.Main
Concern: GUI
Unit: compound action InputClassesSubject.main[class: Main[Package:
"hj.gui"]].static
Unit: instance variable InputClassesSubject.Main.button
Unit: compound action InputClassesSubject.costruisci.Main
Unit: instance variable InputClassesSubject.Main.contatore
Unit: class InputClassesSubject.Main
Unit: compound action InputClassesSubject.test.Main
Unit: instance variable InputClassesSubject.Main.label
Unit: compound action InputClassesSubject.logGUI.Main
Unit: compound action InputClassesSubject.actionPerformed.Main[Package:
"hj.gui"]
Unit: compound action InputClassesSubject.<init>.Main
Dimension: ClassFile
Concern: hj.log.Log
Unit: compound action InputClassesSubject.<init>.Log
Unit: compound action InputClassesSubject.log.Log
Unit: class InputClassesSubject.Log
Concern: None
Concern: hj.gui2.Main
Unit: instance variable InputClassesSubject.Main.contatore
Unit: instance variable InputClassesSubject.Main.button
Unit: compound action InputClassesSubject.logGui2.Main
Unit: instance variable InputClassesSubject.Main.label
Unit: compound action InputClassesSubject.actionPerformed.Main[Package:
"hj.gui2"]
Unit: compound action InputClassesSubject.main[class: Main[Package:
"hj.gui2"]].static
Unit: compound action InputClassesSubject.<init>.Main
Unit: class InputClassesSubject.Main
Unit: compound action InputClassesSubject.logGUI.Main
Unit: compound action InputClassesSubject.costruisci.Main
Concern: hj.gui.Main
Unit: compound action InputClassesSubject.main[class: Main[Package:
"hj.gui"]].static
Unit: instance variable InputClassesSubject.Main.button
Unit: compound action InputClassesSubject.costruisci.Main
Unit: instance variable InputClassesSubject.Main.contatore
Unit: class InputClassesSubject.Main
Unit: compound action InputClassesSubject.test.Main
Unit: instance variable InputClassesSubject.Main.label
Unit: compound action InputClassesSubject.logGUI.Main
Unit: compound action InputClassesSubject.actionPerformed.Main[Package:
"hj.gui"]
Unit: compound action InputClassesSubject.<init>.Main

I'm using jdk 1.4.2 on a Suse Linux 9.1.
I hope somebody can help me understanding the problem as soon as possible.

Thanks,Luca


Point your RSS reader here for a feed of the latest messages in all forums