This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 80289

Summary: Applying Design Pattern makes schema invalid
Product: xml Reporter: Andrei Chistiakov <ca-nb>
Component: Schema ToolsAssignee: Ayub Khan <ayubskhan>
Status: VERIFIED FIXED    
Severity: blocker CC: cwebster, htt, ivansidorkin, kozlov, samaresh
Priority: P1    
Version: 5.x   
Hardware: PC   
OS: Windows XP   
Issue Type: DEFECT Exception Reporter:

Description Andrei Chistiakov 2006-07-14 12:28:35 UTC
Reproduced in build 060712.

To reproduce the bug:

- open PO schema;
- switch to source view;
- invoke 'Apply Design Pattern' on it;
- validate the schema. It results in:
XML validation started.
src-simple-type.2.b: A <restriction> element was found that has neither a base
[attribute] nor a <simpleType> element among its [children]. One is required. [110] 
src-resolve: Cannot resolve the name 'comment' to a(n) 'element declaration'
component. [16] 
src-resolve: Cannot resolve the name 'comment' to a(n) 'element declaration'
component. [48] 
XML validation finished.
- close the schema and discard changes;
NPE is thrown:
java.lang.NullPointerException
	at
org.netbeans.modules.xml.xam.dom.AbstractDocumentModel.removeChildComponent(AbstractDocumentModel.java:289)
	at
org.netbeans.modules.xml.xam.dom.AbstractDocumentModel.processSyncUnit(AbstractDocumentModel.java:263)
	at org.netbeans.modules.xml.xdm.xam.XDMListener.endSync(XDMListener.java:80)
	at org.netbeans.modules.xml.xdm.xam.XDMAccess.sync(XDMAccess.java:122)
	at org.netbeans.modules.xml.xam.AbstractModel.sync(AbstractModel.java:216)
	at
org.netbeans.modules.xml.schema.core.SchemaEditorSupport.syncModel(SchemaEditorSupport.java:455)
	at
org.netbeans.modules.xml.schema.core.SchemaEditorSupport$CloseHandler.resolveCloseOperation(SchemaEditorSupport.java:540)
	at org.netbeans.core.multiview.MultiViewPeer.canClose(MultiViewPeer.java:483)
	at
org.netbeans.core.multiview.MultiViewCloneableTopComponent.canClose(MultiViewCloneableTopComponent.java:289)
	at org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:732)
	at org.netbeans.core.windows.Central.userClosedTopComponent(Central.java:1545)
	at
org.netbeans.core.windows.view.DefaultView.userClosedTopComponent(DefaultView.java:730)
	at
org.netbeans.core.windows.view.ui.TabbedHandler.actionPerformed(TabbedHandler.java:298)
	at
org.netbeans.swing.tabcontrol.TabbedContainer.postActionEvent(TabbedContainer.java:664)
	at
org.netbeans.swing.tabcontrol.TabbedContainerUI.shouldPerformAction(TabbedContainerUI.java:140)
	at
org.netbeans.swing.tabcontrol.plaf.DefaultTabbedContainerUI.access$2600(DefaultTabbedContainerUI.java:86)
	at
org.netbeans.swing.tabcontrol.plaf.DefaultTabbedContainerUI$DisplayerActionListener.actionPerformed(DefaultTabbedContainerUI.java:1235)
	at
org.netbeans.swing.tabcontrol.TabDisplayer.postActionEvent(TabDisplayer.java:519)
	at
org.netbeans.swing.tabcontrol.TabDisplayerUI.shouldPerformAction(TabDisplayerUI.java:150)
	at
org.netbeans.swing.tabcontrol.plaf.BasicTabDisplayerUI.access$1500(BasicTabDisplayerUI.java:80)
	at
org.netbeans.swing.tabcontrol.plaf.BasicTabDisplayerUI$BasicDisplayerMouseListener.performCommand(BasicTabDisplayerUI.java:693)
	at
org.netbeans.swing.tabcontrol.plaf.BasicTabDisplayerUI$BasicDisplayerMouseListener.potentialCommand(BasicTabDisplayerUI.java:678)
	at
org.netbeans.swing.tabcontrol.plaf.BasicTabDisplayerUI$BasicDisplayerMouseListener.mouseReleased(BasicTabDisplayerUI.java:726)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
	at java.awt.Component.processMouseEvent(Component.java:5999)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3240)
	at java.awt.Component.processEvent(Component.java:5764)
	at java.awt.Container.processEvent(Container.java:1984)
	at java.awt.Component.dispatchEventImpl(Component.java:4407)
	at java.awt.Container.dispatchEventImpl(Container.java:2042)
	at java.awt.Component.dispatchEvent(Component.java:4237)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4248)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3912)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3842)
	at java.awt.Container.dispatchEventImpl(Container.java:2028)
	at java.awt.Window.dispatchEventImpl(Window.java:2405)
	at java.awt.Component.dispatchEvent(Component.java:4237)
[catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:600)
	at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Comment 1 Nam Nguyen 2006-07-15 00:05:15 UTC
From my latest code, I got this stack.  My guess is that axim sync somehow
remove a (shared) child more than once hence the NPE on null model.  The fix is
in axim sync or somehow avoid sync on discard-closing of design view.


java.lang.NullPointerException
	at
org.netbeans.modules.xml.xam.AbstractComponent.verifyWrite(AbstractComponent.java:179)
	at
org.netbeans.modules.xml.xam.AbstractComponent.removeChild(AbstractComponent.java:334)
	at
org.netbeans.modules.xml.axi.AXIComponent.removeSharedChild(AXIComponent.java:425)
	at
org.netbeans.modules.xml.axi.AXIComponent.removeSharedChild(AXIComponent.java:431)
	at
org.netbeans.modules.xml.axi.AXIComponent.removeSharedChild(AXIComponent.java:431)
	at org.netbeans.modules.xml.axi.AXIComponent.removeChild(AXIComponent.java:399)
	at org.netbeans.modules.xml.axi.AXIComponent.removeChild(AXIComponent.java:452)
	at
org.netbeans.modules.xml.axi.impl.AXIModelUpdater.removeChildren(AXIModelUpdater.java:225)
	at
org.netbeans.modules.xml.axi.impl.AXIModelUpdater.synchronize(AXIModelUpdater.java:194)
	at
org.netbeans.modules.xml.axi.impl.AXIModelUpdater.visitChildren(AXIModelUpdater.java:180)
	at
org.netbeans.modules.xml.axi.visitor.DeepAXITreeVisitor.visit(DeepAXITreeVisitor.java:54)
	at org.netbeans.modules.xml.axi.AXIDocument.accept(AXIDocument.java:56)
	at
org.netbeans.modules.xml.axi.impl.AXIModelUpdater.doSync(AXIModelUpdater.java:76)
	at org.netbeans.modules.xml.axi.impl.AXIModelImpl.doSync(AXIModelImpl.java:136)
	at org.netbeans.modules.xml.axi.impl.ModelAccessImpl.sync(ModelAccessImpl.java:91)
	at org.netbeans.modules.xml.xam.AbstractModel.sync(AbstractModel.java:221)
	at org.netbeans.modules.xml.xam.AbstractModel$1.run(AbstractModel.java:500)
Comment 2 Ayub Khan 2006-07-19 17:44:13 UTC
*** Issue 80534 has been marked as a duplicate of this issue. ***
Comment 3 Ayub Khan 2006-07-19 17:44:36 UTC
*** Issue 80600 has been marked as a duplicate of this issue. ***
Comment 4 Nam Nguyen 2006-07-21 01:38:16 UTC
Sam might already have fix the axim exception part.
Comment 5 Samaresh Panda 2006-07-25 04:02:11 UTC
Fix integated:
SyncElementTest.java, new revision: 1.1.2.18;
AXIModelImpl.java, new revision: 1.1.2.13;
ElementImpl.java, new revision: 1.1.2.24;
DefaultSchemaGenerator.java, new revision: 1.1.2.15;
AXIModelUpdater.java, new revision: 1.1.2.16;
AXIComponent.java, new revision: 1.1.2.32;

Note: If you start with PO.xsd, the transformation makes PO.xsd invalid, as you
can see after the transformation simple-type SKU doesn't exist anymore. If you
want to see this working, open PO.xsd and remove any item related to SKU and
then apply design pattern.

Reassigning to Ayub to fix the transformation.
Comment 6 Ayub Khan 2006-07-26 11:10:07 UTC
Fixed the issue.

File affected:

axi/src/org/netbeans/modules/xml/axi/impl/Util.java <--new revision: 1.1.2.38
axi/src/org/netbeans/modules/xml/axi/impl/GardenOfEden.java <--new revision:
1.1.2.13
axi/src/org/netbeans/modules/xml/axi/impl/DefaultSchemaGenerator.java <--new
revision: 1.1.2.16
axi/src/org/netbeans/modules/xml/axi/impl/VenetianBlind.java <--new revision:
1.1.2.9




Comment 7 Andrei Chistiakov 2006-07-27 12:35:55 UTC
Verified in build 060726.