Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 91950 Details for
Bug 204322
Intermittently a NullPointerException when viewing db serialized correlations is thrown
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
Patch for bug 204322
Bug204322.txt (text/plain), 17.07 KB, created by
Alex Nan
on 2008-03-07 20:07:51 EST
(
hide
)
Description:
Patch for bug 204322
Filename:
MIME Type:
Creator:
Alex Nan
Created:
2008-03-07 20:07:51 EST
Size:
17.07 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.tptp.platform.log.views >Index: src/org/eclipse/hyades/sd/logc/internal/loader/LogInteractions.java >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.log.views/src/org/eclipse/hyades/sd/logc/internal/loader/LogInteractions.java,v >retrieving revision 1.60 >diff -u -r1.60 LogInteractions.java >--- src/org/eclipse/hyades/sd/logc/internal/loader/LogInteractions.java 4 Mar 2008 01:27:02 -0000 1.60 >+++ src/org/eclipse/hyades/sd/logc/internal/loader/LogInteractions.java 8 Mar 2008 01:06:45 -0000 >@@ -40,7 +40,6 @@ > import org.eclipse.emf.ecore.resource.Resource; > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.hyades.loaders.cbe.CBEUtils; >-import org.eclipse.hyades.loaders.util.LoadersUtils; > import org.eclipse.hyades.logc.provisional.util.CorrelationHelper; > import org.eclipse.hyades.models.cbe.CBECommonBaseEvent; > import org.eclipse.hyades.models.cbe.CBEPackage; >@@ -87,6 +86,7 @@ > import org.eclipse.hyades.ui.filters.IFilterQueryProvider; > import org.eclipse.hyades.ui.filters.IFilterViewer; > import org.eclipse.hyades.ui.internal.navigator.INavigator; >+import org.eclipse.hyades.ui.internal.util.AnalysisHelper; > import org.eclipse.hyades.ui.internal.util.PreferencesUtil; > import org.eclipse.hyades.uml2sd.ui.actions.provider.IExtendedFilterProvider; > import org.eclipse.hyades.uml2sd.ui.actions.provider.IExtendedFindProvider; >@@ -758,6 +758,10 @@ > view.getViewSite().getPage().removePartListener(fPartListener); > > recordFilterSearch = null; >+ //set objects to analyze to null to avoid any memory leak >+ AnalysisHelper.getInstance().setObjectsToAnalyze(null, true); >+ AnalysisHelper.getInstance().setObjectsToAnalyze(null, false); >+ > } > > public void generateLogInteractions(final EObject eObject, >@@ -1169,22 +1173,23 @@ > return; > }else if(EcoreUtil.getURI(agent).path().endsWith("trcadb")){ > isInputXMI = false; >+ return; > } > } >- if (correlationContainerProxy != null >- && LoadersUtils >- .getPostfix( >- EcoreUtil >- .getURI((EObject) correlationContainerProxy >- .eGet( >- HierarchyPackage.eINSTANCE >- .getCorrelationContainerProxy_CorrelationContainer(), >- false))).endsWith( >- "corrdb")) >- { >- isInputXMI = false; >- return; >- } >+// if (correlationContainerProxy != null >+// && LoadersUtils >+// .getPostfix( >+// EcoreUtil >+// .getURI((EObject) correlationContainerProxy >+// .eGet( >+// HierarchyPackage.eINSTANCE >+// .getCorrelationContainerProxy_CorrelationContainer(), >+// false))).endsWith( >+// "corrdb")) >+// { >+// isInputXMI = false; >+// return; >+// } > // isInputXMI = true; > } > >@@ -1300,17 +1305,22 @@ > { > public void run() > { >- generateGraphNodes(); >- p = getPerformanceMonitor(); >- p.setMessageAndStart("generateGraphConnections"); >- if (isInputXMI()) >- { >- generateGraphConnectionsXMI(); >- } else >- { >- generateGraphConnectionsSQL(refresh); >+ >+ try{ >+ generateGraphNodes(); >+ p = getPerformanceMonitor(); >+ p.setMessageAndStart("generateGraphConnections"); >+ if (isInputXMI()) >+ { >+ generateGraphConnectionsXMI(); >+ } else >+ { >+ generateGraphConnectionsSQL(refresh); >+ } >+ p.stopAndPrintStatus(); >+ }catch(Throwable e){ >+ LogViewsPlugin.log(e); > } >- p.stopAndPrintStatus(); > } > > }); >@@ -1572,7 +1582,7 @@ > filterChanged = false; > } > >- protected void generateGraphNodes() >+ protected void generateGraphNodes() > { > > EObject key = null; >@@ -2348,14 +2358,27 @@ > { > return; > } >+ /* We need to update the selection of the analysis helper for the analyze setting dialog */ >+ AnalysisHelper.getInstance().setObjectsToAnalyze(eventsList, true); >+ > Object sel = ((IStructuredSelection) e.getSelection()) > .getFirstElement(); > if (sel instanceof LogGraphNode) > { >+ > if (view.getSDWidget().getViewControl().isVisible()) > { > if (view.getSDWidget().getViewControl().isFocusControl()) > { >+ /* We need to update the selection of the analysis helper for the analyze setting dialog */ >+ if(((LogGraphNode)sel).hasElements()){ >+ AnalysisHelper.getInstance().setObjectsToAnalyze(((LogGraphNode)sel).getElements(), false); >+ }else{ >+ List elements = new ArrayList(); >+ elements.add(((LogGraphNode)sel).getElement()); >+ AnalysisHelper.getInstance().setObjectsToAnalyze(elements, false); >+ } >+ > // only update selection if the selection was made in the > // log interactions view, otherwise it is > // an event from the log view, and should have been updated. >Index: src/org/eclipse/tptp/platform/log/views/internal/navigator/actions/GenericAnalyzeAction.java >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.log.views/src/org/eclipse/tptp/platform/log/views/internal/navigator/actions/GenericAnalyzeAction.java,v >retrieving revision 1.4 >diff -u -r1.4 GenericAnalyzeAction.java >--- src/org/eclipse/tptp/platform/log/views/internal/navigator/actions/GenericAnalyzeAction.java 31 Jan 2008 02:17:59 -0000 1.4 >+++ src/org/eclipse/tptp/platform/log/views/internal/navigator/actions/GenericAnalyzeAction.java 8 Mar 2008 01:06:45 -0000 >@@ -14,11 +14,14 @@ > import java.util.Iterator; > import java.util.List; > >-import org.eclipse.emf.common.util.EList; >+import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.hyades.models.hierarchy.CorrelationContainerProxy; >+import org.eclipse.hyades.models.hierarchy.HierarchyPackage; >+import org.eclipse.hyades.models.hierarchy.TRCAgent; > import org.eclipse.hyades.models.hierarchy.TRCAgentProxy; > import org.eclipse.jface.action.Action; > import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.swt.custom.ViewForm; > import org.eclipse.tptp.platform.common.internal.CommonPlugin; > import org.eclipse.tptp.platform.common.ui.internal.CommonUIConstants; > import org.eclipse.tptp.platform.log.views.internal.LogViewsPlugin; >@@ -26,7 +29,6 @@ > import org.eclipse.tptp.platform.log.views.internal.util.AnalysisConfigurationHelper; > import org.eclipse.tptp.platform.log.views.internal.util.AnalysisConfigurationHelper.AnalysisAction; > import org.eclipse.tptp.platform.log.views.internal.views.LogContentProvider; >-import org.eclipse.tptp.platform.log.views.internal.views.LogViewer; > import org.eclipse.tptp.platform.log.views.provisional.views.ILogViewer; > import org.eclipse.ui.IViewPart; > import org.eclipse.ui.PartInitException; >@@ -57,7 +59,9 @@ > if (viewPart == null) > return finalList; > >- LogContentProvider cbeRetriever = new LogContentProvider(null, (ILogViewer)viewPart); >+ LogAnalysisEventsProvider cbeRetriever = new LogAnalysisEventsProvider(null, (ILogViewer)viewPart); >+ >+ List agentProxies = new ArrayList(); > for (Iterator selectedElements = getStructuredSelection().iterator(); selectedElements.hasNext();) > { > Object currentItem = selectedElements.next(); >@@ -65,28 +69,30 @@ > /* The current selection is an agent proxy */ > if (currentItem instanceof TRCAgentProxy) > { >- finalList.addAll(cbeRetriever.getElementsAll(currentItem)); >+ >+ agentProxies.add(currentItem); > } > > /* The current selection is a correlation object */ > else if (currentItem instanceof CorrelationContainerProxy) > { >- EList listOfAgents = ((CorrelationContainerProxy)currentItem).getCorrelatedAgents(); >+ agentProxies.addAll(((CorrelationContainerProxy)currentItem).getCorrelatedAgents()); > >- /* For every wrapped agent */ >- for (int i = 0, listCount = listOfAgents.size(); i < listCount; i++) >- { >- finalList.addAll(cbeRetriever.getElementsAll(listOfAgents.get(i))); >- } > } > } >+ if(isInputXMI(agentProxies)){ >+ cbeRetriever.rebuildAllElementsXMI(agentProxies); >+ }else{ >+ cbeRetriever.rebuildAllElementsSQL(agentProxies); >+ } >+ finalList = cbeRetriever.getCachedElements(); > > return finalList; > } > > > /** >- * Returns the strucutred selection associated with this action >+ * Returns the structured selection associated with this action > * > * @return The structured selection > */ >@@ -108,4 +114,44 @@ > > return logViewPart; > } >+ >+ protected boolean isInputXMI(List agentProxies){ >+ if(agentProxies == null || agentProxies.size() == 0){ >+ return true; >+ } >+ TRCAgentProxy proxy = null; >+ TRCAgent agent = null; >+ int s = agentProxies.size(); >+ for(int i = 0;i < s;i++){ >+ proxy = (TRCAgentProxy)agentProxies.get(i); >+ agent = (TRCAgent)proxy.eGet(HierarchyPackage.eINSTANCE.getTRCAgentProxy_Agent(), false); >+ if(agent==null){ >+ continue; >+ } >+ if(EcoreUtil.getURI(agent).path().endsWith("xmi")) >+ { >+ return true; >+ } >+ } >+ return false; >+ >+ } >+ >+ protected class LogAnalysisEventsProvider extends LogContentProvider{ >+ >+ public LogAnalysisEventsProvider(ViewForm viewer, ILogViewer logViewer){ >+ super(viewer, logViewer); >+ } >+ public void rebuildAllElementsSQL(List agentProxies) { >+ // TODO Auto-generated method stub >+ super.rebuildAllElementsSQL(agentProxies); >+ } >+ >+ public void rebuildAllElementsXMI(Object inputElement) { >+ // TODO Auto-generated method stub >+ super.rebuildAllElementsXMI(inputElement); >+ } >+ >+ >+ } > } >Index: src/org/eclipse/tptp/platform/log/views/internal/actions/ExtendedAnalyzeAction.java >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.tptp.platform.log.views/src/org/eclipse/tptp/platform/log/views/internal/actions/ExtendedAnalyzeAction.java,v >retrieving revision 1.19 >diff -u -r1.19 ExtendedAnalyzeAction.java >--- src/org/eclipse/tptp/platform/log/views/internal/actions/ExtendedAnalyzeAction.java 28 Feb 2008 03:55:15 -0000 1.19 >+++ src/org/eclipse/tptp/platform/log/views/internal/actions/ExtendedAnalyzeAction.java 8 Mar 2008 01:06:45 -0000 >@@ -99,33 +99,39 @@ > } > > >- if(!isInputXMI()){ >- ILogViewer viewer = getLogViewer(); >- if(viewer!=null){ >- List events = ((LogContentProvider)viewer.getLogPage().getView().getViewer().getContentProvider()) >- .getCachedElements(); >- if(events instanceof IPagingList){ >- AnalysisHelper.getInstance().setPagingList((IPagingList)events); >- }else{ >- AnalysisHelper.getInstance().setPagingList(null); >- } >- if(analyzeAll){ >- query = ((LogContentProvider)viewer.getLogPage().getView().getViewer().getContentProvider()).getQuery(); >- }else{ >- query = ExtensionsFactory.eINSTANCE.createSimpleSearchQuery(); >- SimpleOperand out = ExtensionsFactory.eINSTANCE.createSimpleOperand(); >- out.setType(CBEPackage.eINSTANCE.getCBECommonBaseEvent()); >- query.getOutputElements().add(out); >- int s = listToAnalyze.size(); >- String uri = null; >- for(int i=0; i < s; i++){ >- uri = EcoreUtil.getURI((CBEDefaultEvent)listToAnalyze.get(i)).toString(); >- if(uri!=null){ >- query.getSources().add(uri); >- } >- } >+ if(!isInputXMI()){ >+ Display.getDefault().syncExec(new Runnable(){ >+ public void run() { >+ // TODO Auto-generated method stub >+ ILogViewer viewer = getLogViewer(); >+ if(viewer!=null){ >+ List events = ((LogContentProvider)viewer.getLogPage().getView().getViewer().getContentProvider()) >+ .getCachedElements(); >+ if(events instanceof IPagingList){ >+ AnalysisHelper.getInstance().setPagingList((IPagingList)events); >+ }else{ >+ AnalysisHelper.getInstance().setPagingList(null); >+ } >+ if(analyzeAll){ >+ query = ((LogContentProvider)viewer.getLogPage().getView().getViewer().getContentProvider()).getQuery(); >+ }else{ >+ query = ExtensionsFactory.eINSTANCE.createSimpleSearchQuery(); >+ SimpleOperand out = ExtensionsFactory.eINSTANCE.createSimpleOperand(); >+ out.setType(CBEPackage.eINSTANCE.getCBECommonBaseEvent()); >+ query.getOutputElements().add(out); >+ int s = listToAnalyze.size(); >+ String uri = null; >+ for(int i=0; i < s; i++){ >+ uri = EcoreUtil.getURI((CBEDefaultEvent)listToAnalyze.get(i)).toString(); >+ if(uri!=null){ >+ query.getSources().add(uri); >+ } >+ } >+ } >+ } >+ > } >- } >+ }); > }else{ > query = null; > } >#P org.eclipse.hyades.resources.database >Index: src/org/eclipse/hyades/resources/database/internal/extensions/GetCommand.java >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.hyades.resources.database/src/org/eclipse/hyades/resources/database/internal/extensions/GetCommand.java,v >retrieving revision 1.26 >diff -u -r1.26 GetCommand.java >--- src/org/eclipse/hyades/resources/database/internal/extensions/GetCommand.java 24 Jan 2008 02:26:56 -0000 1.26 >+++ src/org/eclipse/hyades/resources/database/internal/extensions/GetCommand.java 8 Mar 2008 01:06:45 -0000 >@@ -27,7 +27,6 @@ > import java.util.Map; > import java.util.Set; > >-import org.eclipse.emf.common.notify.NotificationChain; > import org.eclipse.emf.common.util.EList; > import org.eclipse.emf.common.util.URI; > import org.eclipse.emf.ecore.EAttribute; >@@ -927,7 +926,12 @@ > { > if(!container.eIsProxy()) > { >- ((InternalEObject)object).eBasicSetContainer((InternalEObject)container, reference.getFeatureID(), null); >+ >+ if(reference.isContainment() && reference.getEOpposite() != null){ >+ ((InternalEObject)object).eBasicSetContainer((InternalEObject)container, reference.getEOpposite().getFeatureID(), null); >+ }else{ >+ ((InternalEObject)object).eBasicSetContainer((InternalEObject)container, reference.getFeatureID(), null); >+ } > } > } > if (dbMap.isUseIdsTypes()) >@@ -1139,7 +1143,15 @@ > { > // ReferencedObject referencedObject = (ReferencedObject)refObjs.get(i); > if(((List)rObjects[i].eGet(oposite,false) instanceof DynamicPagingListImpl)) >- ((InternalEObject)object).eBasicSetContainer((InternalEObject)rObjects[i], reference.getFeatureID(), (NotificationChain)null); >+ { >+ if(reference.isContainment() && reference.getEOpposite() != null){ >+ ((InternalEObject)object).eBasicSetContainer((InternalEObject)rObjects[i], reference.getEOpposite().getFeatureID(), null); >+ }else{ >+ ((InternalEObject)object).eBasicSetContainer((InternalEObject)rObjects[i], reference.getFeatureID(), null); >+ } >+ >+// ((InternalEObject)object).eBasicSetContainer((InternalEObject)rObjects[i], reference.getFeatureID(), (NotificationChain)null); >+ } > } > } > } >Index: src/org/eclipse/hyades/resources/database/internal/impl/DynamicPagingListImpl.java >=================================================================== >RCS file: /cvsroot/tptp/platform/org.eclipse.hyades.resources.database/src/org/eclipse/hyades/resources/database/internal/impl/DynamicPagingListImpl.java,v >retrieving revision 1.15 >diff -u -r1.15 DynamicPagingListImpl.java >--- src/org/eclipse/hyades/resources/database/internal/impl/DynamicPagingListImpl.java 28 Jan 2008 21:03:28 -0000 1.15 >+++ src/org/eclipse/hyades/resources/database/internal/impl/DynamicPagingListImpl.java 8 Mar 2008 01:06:45 -0000 >@@ -211,9 +211,15 @@ > return; > for (int i = 0,length = currentPage.size(); i < length; i++) { > Object o = currentPage.get(i); >- if(o!=null && o instanceof EObject) >+ if(o!=null && o instanceof EObject && ((InternalEObject)o).eContainer() == null) > { >- ((InternalEObject)o).eBasicSetContainer(owner,eStructuralFeature.getFeatureID(), (NotificationChain)null); >+ EReference reference = (EReference)eStructuralFeature; >+ if(reference.isContainment() && reference.getEOpposite() != null){ >+ ((InternalEObject)o).eBasicSetContainer((InternalEObject)owner, reference.getEOpposite().getFeatureID(), null); >+ }else{ >+ ((InternalEObject)o).eBasicSetContainer((InternalEObject)owner, reference.getFeatureID(), null); >+ } >+// ((InternalEObject)o).eBasicSetContainer(owner,eStructuralFeature.getFeatureID(), (NotificationChain)null); > if(ModelDebugger.INSTANCE.debug) > { > ModelDebugger.log("DynamicPagingListImpl.addCurrentPageToContainer() eContainer()="+((InternalEObject)o).eContainer());
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 204322
: 91950