Exception in inheriting class

GWT Designer allows you to quickly create the modules, composites, panels, remote services and other elements that comprise Google Web Tookit applications.

Moderators: Konstantin.Scheglov, gnebling, Alexander.Mitin, jwren, Eric Clayberg

Exception in inheriting class

Postby chuhan » Mon May 07, 2007 11:26 am

Hi, I got the error in the following case. The method implemetation is not recogized by Designer.

Code: Select all
public abstract class ContentBase extends Composite {
   public ContentBase() {
      {
         final Label label = new Label("New Label");
         initWidget(label);
         label.setText(getContentTitle());
      }
   }

   protected abstract String getContentTitle();
   
   
}

public class ContentInherit extends ContentBase {

   protected String getContentTitle() {
      return "Helooooooooooooo";
   }

}



Exception:
Code: Select all
!ENTRY com.swtdesigner 4 4 2007-05-07 12:28:34.812
!MESSAGE Designer internal error [6.2.1.20070424130620]: Not implemented: com.dialogtest.client.ContentBase.getContentTitle()Ljava/lang/String;
!STACK 0
java.lang.Error: Not implemented: com.dialogtest.client.ContentBase.getContentTitle()Ljava/lang/String;
   at com.dialogtest.client.ContentBase.getContentTitle(ContentBase.java)
   at com.dialogtest.client.ContentBase.<init>(ContentBase.java:15)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
   at java.lang.reflect.Constructor.newInstance(Unknown Source)
   at java.lang.Class.newInstance0(Unknown Source)
   at java.lang.Class.newInstance(Unknown Source)
   at com.swtdesigner.gwt.model.widgets.UIObjectInfo.createWidgetInstance(UIObjectInfo.java:242)
   at com.swtdesigner.gwt.model.widgets.UIObjectInfo.createBeanInstance(UIObjectInfo.java:88)
   at com.swtdesigner.gwt.model.widgets.WidgetInfo.createBeanInstance(WidgetInfo.java:141)
   at com.swtdesigner.model.swing.JavaBeanInfo.ensureBeanInstance(JavaBeanInfo.java:1180)
   at com.swtdesigner.model.swing.JavaBeanInfo.getChildAccessedBy(JavaBeanInfo.java:640)
   at com.swtdesigner.gwt.model.widgets.UIObjectInfo.getChildAccessedBy(UIObjectInfo.java:186)
   at com.swtdesigner.model.swing.JavaBeanInfo.getChildAccessedBy(JavaBeanInfo.java:721)
   at com.swtdesigner.model.swing.JavaBeanInfo.createPropertyFromPropertyDescriptor(JavaBeanInfo.java:1926)
   at com.swtdesigner.model.swing.JavaBeanInfo.getProperty(JavaBeanInfo.java:1877)
   at com.swtdesigner.model.swing.JavaBeanInfo.addPropertiesFromPropertyDescriptors(JavaBeanInfo.java:1837)
   at com.swtdesigner.model.swing.JavaBeanInfo.getPropertyList(JavaBeanInfo.java:1793)
   at com.swtdesigner.gwt.model.widgets.UIObjectInfo.getPropertyList(UIObjectInfo.java:161)
   at com.swtdesigner.gwt.model.widgets.WidgetInfo.getPropertyList(WidgetInfo.java:126)
   at com.swtdesigner.model.JavaInfo.getProperties(JavaInfo.java:968)
   at com.swtdesigner.gef.actions.nls.NLSSupport.prepareSources(NLSSupport.java:93)
   at com.swtdesigner.gef.actions.nls.NLSSupport.<init>(NLSSupport.java:77)
   at com.swtdesigner.gef.actions.nls.NLSSupport.get(NLSSupport.java:36)
   at com.swtdesigner.gef.actions.nls.ExternalizeStringsContributionItem.updateLocalesList(ExternalizeStringsContributionItem.java:139)
   at com.swtdesigner.gef.actions.nls.ExternalizeStringsContributionItem.createLocalesCombo(ExternalizeStringsContributionItem.java:101)
   at com.swtdesigner.gef.actions.nls.ExternalizeStringsContributionItem.fill(ExternalizeStringsContributionItem.java:39)
   at com.swtdesigner.gef.DesignerEditor.addExternalizeStringsItem(DesignerEditor.java:1654)
   at com.swtdesigner.gef.DesignerEditor.updatePalette(DesignerEditor.java:1590)
   at com.swtdesigner.gef.DesignerEditor.updateSelectionActions(DesignerEditor.java:1687)
   at com.swtdesigner.gef.DesignerEditor$17.execute(DesignerEditor.java:1051)
   at com.swtdesigner.model.swing.properties.custom.DesignTimeHelper.execute(DesignTimeHelper.java:54)
   at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:1041)
   at com.swtdesigner.gef.DesignerEditor.handleActivate(DesignerEditor.java:1035)
   at com.swtdesigner.editors.MultiPageEditor.showDesignEditor(MultiPageEditor.java:413)
   at com.swtdesigner.editors.MultiPageEditor$2.widgetSelected(MultiPageEditor.java:183)
   at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
   at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
   at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
   at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:952)
   at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:937)
   at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:709)
   at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3171)
   at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1953)
   at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:288)
   at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
   at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
   at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
   at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
   at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1930)
   at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1894)
   at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:422)
   at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
   at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
   at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
   at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
   at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
   at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
   at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
   at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
   at org.eclipse.core.launcher.Main.run(Main.java:977)
   at org.eclipse.core.launcher.Main.main(Main.java:952)


thanks

chuhan
chuhan
 
Posts: 28
Joined: Tue Nov 14, 2006 3:28 pm

Re: Exception in inheriting class

Postby Eric Clayberg » Mon May 21, 2007 5:29 am

Designer supports visual inheritance by instantiating an instance of the superclass and using that as a template. The edited class is then parsed and its widgets are added to the template in the design view.

Normally, abstract clases can't be instantiated, so Designer uses a special class loader to instantiate them. Unimplemented abstract methods are automatically implemented by the class loader to throw a Not Implemented exception. In your example ContentBase calls getContentTitle() which is an abstract method and throws this exception.

If you want to expose a property for a subclass to override, Designer already provides a pattern for this using its Expose Property command.

Image Image

The correct way to implement this using Designer would be:

Code: Select all
public abstract class ContentBase extends Composite {
   private Label label;
   public ContentBase() {
      label = new Label("New Label");
      initWidget(label);
   }
   public String getContentTitle() {
      return label.getText();
   }
   public void setContentTitle(String text) {
      label.setText(text);
   }   
}

public class ContentInherit extends ContentBase {
   public ContentInherit() {
      setContentTitle("Helooooooooooooo");
   }
}

In the subclass, you can then directly edit the contentTitle property like this...

Image
Eric Clayberg
Software Engineering Manager
Google
http://code.google.com/webtoolkit/download.html

Author: "Eclipse Plug-ins"
http://www.qualityeclipse.com
Eric Clayberg
Moderator
 
Posts: 4503
Joined: Tue Sep 30, 2003 6:39 am
Location: Boston, MA USA


Return to GWT Designer

Who is online

Users browsing this forum: No registered users and 3 guests