[jboss-jira] [JBoss JIRA] Closed: (JBAOP-262) prepare leads to NullPointerException in _getInstanceAdvisor
Kabir Khan (JIRA)
jira-events at jboss.com
Wed Jan 24 14:01:55 EST 2007
[ http://jira.jboss.com/jira/browse/JBAOP-262?page=all ]
Kabir Khan closed JBAOP-262.
----------------------------
Resolution: Duplicate Issue
Assignee: Kabir Khan
I believe this is a duplicate of http://jira.jboss.com/jira/browse/JBAOP-336 ?
> prepare leads to NullPointerException in _getInstanceAdvisor
> ------------------------------------------------------------
>
> Key: JBAOP-262
> URL: http://jira.jboss.com/jira/browse/JBAOP-262
> Project: JBoss AOP
> Issue Type: Bug
> Affects Versions: 1.5.0.GA
> Environment: winxp
> Reporter: Kamil Dworakowski
> Assigned To: Kabir Khan
>
> On start:
> SEVERE Thread[ULC Communication Controller Thread,6,main] com.ulcjava.base.server.ULCSession processRequests got exception while processing [java.lang.NullPointerException
> at com.siemens.smarthome.component.tree.details.ThermostatView._getInstanceAdvisor(ThermostatView.java)
> at com.siemens.smarthome.component.tree.details.ThermostatView.detailsWidgets(ThermostatView.java)
> at com.siemens.smarthome.component.tree.details.AbstractView.<init>(AbstractView.java:43)
> at com.siemens.smarthome.component.tree.details.AbstractView.<init>(AbstractView.java:18)
> at com.siemens.smarthome.component.tree.details.ThermostatView.<init>(ThermostatView.java:14)
> at com.siemens.smarthome.component.tree.details.ThermostatView.ThermostatView_new_$aop(ThermostatView.java)
> at com.siemens.smarthome.MainApplication.start(MainApplication.java:13)
> at com.ulcjava.base.server.ULCSession.handleStartApplication(ULCSession.java:32)
> at com.ulcjava.base.server.ULCSession.handleRequest(ULCSession.java:106)
> at com.ulcjava.base.server.ULCSession.a(ULCSession.java:11)
> at com.ulcjava.base.server.ULCSession.processRequests(ULCSession.java:134)
> at com.ulcjava.base.development.DevelopmentContainerAdapter.processRequests(DevelopmentContainerAdapter.java:2)
> at com.ulcjava.base.development.DevelopmentConnector.sendRequests(DevelopmentConnector.java:0)
> at com.ulcjava.base.client.UISession$k_.run(UISession$k_.java:28)
> at java.lang.Thread.run(Unknown Source)
> ]
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <aop>
>
> <aspect name="ViewApplyButtonEnabler" class="com.siemens.smarthome.aspects.gui.ViewApplyButtonEnablerAspect" scope="PER_INSTANCE"/>
> <bind pointcut="call(public * *.PropertyTableWidget->addTextProperty(..))">
> <advice name="addEnabler" aspect="ViewApplyButtonEnabler"/>
> </bind>
> <prepare expr="all(com.siemens.smarthome.component.tree.details.ThermostatView)"/>
> </aop>
> package com.siemens.smarthome.aspects.gui;
> import java.util.HashMap;
> import java.util.Map;
> import org.jboss.aop.joinpoint.ConstructorCalledByConstructorInvocation;
> import org.jboss.aop.joinpoint.Invocation;
> import org.jboss.aop.joinpoint.MethodCalledByMethodInvocation;
> import com.siemens.smarthome.component.tree.details.AbstractView;
> import com.ulcjava.base.application.ULCButton;
> import com.ulcjava.base.application.ULCTextField;
> import com.ulcjava.base.application.enabler.*;
> public class ViewApplyButtonEnablerAspect {
>
> ULCHasChangedEnabler orEnabler = new ULCHasChangedEnabler();
>
> public Object addEnabler(Invocation inv) throws Throwable {
> ULCTextField enabler = (ULCTextField) inv.invokeNext();
> orEnabler.add(enabler);
> return enabler;
> }
>
> public Object setEnablerForButton(Invocation inv) throws Throwable {
> ULCButton button = (ULCButton) inv.invokeNext();
> if (button.getText().equals("Apply")) {
> button.setEnabler(orEnabler);
> }
> return button;
> }
> }
> package com.siemens.smarthome.component.tree.details;
> import com.siemens.smarthome.util.PropertyTableWidget;
> import com.ulcjava.base.application.*;
> import com.ulcjava.base.application.enabler.ULCOrEnabler;
> import com.ulcjava.base.application.event.ActionEvent;
> import com.ulcjava.base.application.event.serializable.IActionListener;
> import com.ulcjava.base.application.util.Font;
> import com.ulcjava.base.application.util.Insets;
> public abstract class AbstractView extends ULCGridBagLayoutPane {
>
> protected ULCTextField nameTextField;
> protected ULCButton applyButton;
> private Boolean showName;
>
> public AbstractView(String name, Boolean showName) {
> this(name,showName,true);
> }
> @SuppressWarnings("serial")
> public AbstractView(String name, Boolean showName, Boolean showApplyButton) {
> super();
> this.showName = showName;
>
> GridBagConstraints constraints = new GridBagConstraints();
>
> constraints.setGridX(0);
> constraints.setInsets(new Insets(0,0,5,0));
> constraints.setGridY(0);
>
> ULCLabel kindLabel = new ULCLabel(name);
> kindLabel.setFont(new Font(null,Font.BOLD,18));
>
> this.add(kindLabel, constraints);
> increaseGridy(constraints);
> this.add(new ULCFiller(10,20),constraints);
>
>
> increaseGridy(constraints);
> constraints.setWeightX(1.0);
> constraints.setFill(GridBagConstraints.BOTH);
> this.add(detailsWidgets(),constraints);
> }
>
> private void increaseGridy(GridBagConstraints constraints) {
> constraints.setGridY(constraints.getGridY()+1);
> }
>
>
> protected abstract void applyButtonPressed();
>
> protected PropertyTableWidget detailsWidgets() {
> PropertyTableWidget propertiesTable = new PropertyTableWidget();
> addNameProperty(propertiesTable);
> return propertiesTable;
> }
> protected void addNameProperty(PropertyTableWidget settingsProperties) {
> if (showName)
> nameTextField = settingsProperties.addTextProperty("Name");
> else
> nameTextField = new ULCTextField();
> }
> }
> package com.siemens.smarthome.component.tree.details;
> import com.siemens.aosd.smarthome.domain.Thermostat;
> import com.siemens.smarthome.util.PropertyTableWidget;
> import com.ulcjava.base.application.*;
> @SuppressWarnings("serial")
> public class ThermostatView extends AbstractView {
> private ULCTextField temperatureTextBox;
> public ThermostatView(Boolean showName) {
> super("Thermostat", showName);
> }
> protected PropertyTableWidget detailsWidgets() {
> PropertyTableWidget settingsProperties = super.detailsWidgets();
> temperatureTextBox =
> settingsProperties.addTextProperty(40, "Temperature", null);
> return settingsProperties;
> }
>
> public void update(Object arg) {
> }
> private void enableControls() {
> }
> private void enable(ULCComponent comp) {
> }
> @Override
> protected void applyButtonPressed() {
> }
> }
> package com.siemens.smarthome.util;
> import com.ulcjava.base.application.*;
> import com.ulcjava.base.application.datatype.IDataType;
> import com.ulcjava.base.application.datatype.ULCNumberDataType;
> import com.ulcjava.base.application.util.Dimension;
> import com.ulcjava.base.application.util.Insets;
> /**
> * Two column table. In first column name of property and in
> * second editable value.
> *
> */
> @SuppressWarnings("serial")
> public class PropertyTableWidget extends ULCGridBagLayoutPane {
> GridBagConstraints constraints;
>
> public PropertyTableWidget() {
> constraints = constraintsForDetails();
>
> constraints.setWeightX(0.0);
>
> ULCFiller widthEnforcer = new ULCFiller(140,1);
> constraints.setGridX(1);
> add(widthEnforcer,constraints);
>
>
> increaseGridy(constraints);
> constraints.setGridX(0);
> }
>
> protected GridBagConstraints constraintsForDetails() {
>
> GridBagConstraints constr = new GridBagConstraints();
> constr.setGridX(0);
> constr.setGridY(0);
> constr.setInsets(new Insets(2,2,2,2));
> constr.setAnchor(GridBagConstraints.WEST);
>
> return constr;
> }
>
> public ULCTextField addTextProperty(String name) {
> return addTextProperty(-1,name, null);
> }
>
> public ULCTextField addTextProperty( GridBagConstraints c,String name, IDataType dataTypeValidator) {
> return addTextProperty( -1, name, dataTypeValidator);
> }
> public ULCTextField addTextProperty(int preferedWidth,String name, IDataType dataTypeValidator) {
> constraints.setGridX(0);
> constraints.setWeightX(1.0);
> add(new ULCLabel(name+":"), constraints);
> constraints.setWeightX(0);
>
> ULCTextField textField = new ULCTextField();
> if (dataTypeValidator != null)
> textField.setDataType(dataTypeValidator);
>
> if (preferedWidth < 0) preferedWidth = 140;
>
> textField.setPreferredSize(new Dimension(preferedWidth,20));
> constraints.setGridX(1);
> add(textField,constraints);
> increaseGridy(constraints);
> return textField;
> }
> private void increaseGridy(GridBagConstraints constraints) {
> constraints.setGridY(constraints.getGridY()+1);
> }
> }
> package com.siemens.smarthome;
> import java.io.Serializable;
> import com.siemens.smarthome.component.tree.details.ThermostatView;
> import com.ulcjava.base.application.*;
> public class MainApplication extends AbstractApplication implements
> Serializable {
>
> public final void start() {
> ThermostatView view = new ThermostatView(true);
> }
>
> private ULCRootPane createRootPane() {
> ULCFrame frame = new ULCFrame("asdf");
> // frame.setIconImage(IconFactory.getIcon(Constants.BUY_ICON));
> frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
> frame.setSize(640, 460);
> frame.setLocation(100, 100);
> return frame;
> }
> }
> package com.siemens.smarthome;
> import com.ulcjava.base.development.DevelopmentRunner;
> public final class MainApplicationRunner {
> private MainApplicationRunner() {
> }
> public static void main(final String[] args) throws Exception {
> DevelopmentRunner.setApplicationClass(MainApplication.class);
> DevelopmentRunner.run();
> }
> }
> package com.siemens.aosd.smarthome.domain;
> public class Thermostat {}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list