feat(TUP-29651): Fix indefinite loop
This commit is contained in:
@@ -18,6 +18,7 @@ import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
@@ -483,12 +484,10 @@ public class ComponentsFactory implements IComponentsFactory {
|
||||
* @see org.talend.core.model.components.IComponentsFactory#getComponents()
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public Set<IComponent> getComponents() {
|
||||
wait4InitialiseFinish();
|
||||
if (componentList == null) {
|
||||
init(false);
|
||||
}
|
||||
return componentList;
|
||||
// just return cache components
|
||||
return ComponentsMemoryCacheMgr.getInstance().getComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -498,12 +497,12 @@ public class ComponentsFactory implements IComponentsFactory {
|
||||
|
||||
@Override
|
||||
public Collection<IComponent> readComponents() {
|
||||
Set<IComponent> components = getComponents();
|
||||
Collection<IComponent> readComponents = null;
|
||||
synchronized (components) {
|
||||
readComponents = Arrays.asList(components.toArray(new IComponent[0]));
|
||||
wait4InitialiseFinish();
|
||||
if (componentList == null) {
|
||||
init(false);
|
||||
}
|
||||
return readComponents;
|
||||
Set<IComponent> components = ComponentsMemoryCacheMgr.getInstance().getComponents();
|
||||
return Collections.unmodifiableCollection(components);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -691,4 +690,24 @@ public class ComponentsFactory implements IComponentsFactory {
|
||||
|
||||
}
|
||||
|
||||
public void removeComponents(Collection<IComponent> comps) {
|
||||
ComponentsMemoryCacheMgr.getInstance().removeComponents(comps);
|
||||
}
|
||||
|
||||
public void addComponents(Collection<IComponent> comps) {
|
||||
ComponentsMemoryCacheMgr.getInstance().addComponents(comps);
|
||||
}
|
||||
|
||||
public void clearComponents() {
|
||||
ComponentsMemoryCacheMgr.getInstance().clearComponents();
|
||||
}
|
||||
|
||||
public void addComponent(IComponent comp) {
|
||||
ComponentsMemoryCacheMgr.getInstance().addComponent(comp);
|
||||
}
|
||||
|
||||
public boolean containComponent(IComponent comp) {
|
||||
return ComponentsMemoryCacheMgr.getInstance().containComponent(comp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ package org.talend.designer.codegen.components.model;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
@@ -100,6 +101,42 @@ public class ComponentsMemoryCacheMgr {
|
||||
}
|
||||
}
|
||||
|
||||
public void addComponents(Collection<IComponent> comps) {
|
||||
componentList.addAll(comps);
|
||||
for (IComponent comp : comps) {
|
||||
if (comp instanceof EmfComponent) {
|
||||
int owner = ((EmfComponent) comp).getComponentInfo().getOwner();
|
||||
if ((owner & EmfComponent.OWNER_CUSTOM) > 0) {
|
||||
customComponentList.add(comp);
|
||||
}
|
||||
if ((owner & EmfComponent.OWNER_USER) > 0) {
|
||||
userComponentList.add(comp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeComponents(Collection<IComponent> comps) {
|
||||
componentList.removeAll(comps);
|
||||
for (IComponent comp : comps) {
|
||||
if (comp instanceof EmfComponent) {
|
||||
int owner = ((EmfComponent) comp).getComponentInfo().getOwner();
|
||||
if ((owner & EmfComponent.OWNER_CUSTOM) > 0) {
|
||||
customComponentList.remove(comp);
|
||||
}
|
||||
if ((owner & EmfComponent.OWNER_USER) > 0) {
|
||||
userComponentList.remove(comp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void clearComponents() {
|
||||
componentList.clear();
|
||||
customComponentList.clear();
|
||||
userComponentList.clear();
|
||||
}
|
||||
|
||||
public void addUserComponent(IComponent comp) {
|
||||
componentList.add(comp);
|
||||
userComponentList.add(comp);
|
||||
|
||||
Reference in New Issue
Block a user