/** * Executes a Runnable.run method with read access. * @param runnable the runnable */ public void readAccess (final Runnable runnable) { descriptorRegistry.readAccess (new Runnable() { public void run () { mutex.readAccess (runnable); } }); }
/** * Executes a Runnable.run method with write access. * @param runnable the runnable * @return the event id at the end of the write transaction */ public long writeAccess (final Runnable runnable) { final long eventID[] = new long[] { 0 }; descriptorRegistry.readAccess (new Runnable() { public void run () { mutex.writeAccess (new Runnable () { public void run () { writeAccessCore (runnable); eventID[0] = listenerManager.getEventID (); } }); } }); return eventID[0]; }
private static Map<String,ComponentDescriptor> resolveRegistryMap (Project project) { final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry (MidpDocumentSupport.PROJECT_TYPE_MIDP, ProjectUtils.getProjectID (project)); final HashMap<String, ComponentDescriptor> registryMap = new HashMap<String, ComponentDescriptor> (); registry.readAccess (new Runnable() { public void run () { for (ComponentDescriptor descriptor : registry.getComponentDescriptors ()) { TypeID thisType = descriptor.getTypeDescriptor ().getThisType (); String string = thisType.getString (); if (! checkForJavaIdentifierCompliant (string)) continue; if (! registry.isInHierarchy (ClassCD.TYPEID, thisType) || ClassCD.TYPEID.equals (thisType)) continue; registryMap.put (string, descriptor); } } }); return registryMap; }
public void approveComponents(DataObjectContext context, DesignDocument loadingDocument, String documentVersion, final Collection<ComponentElement> componentElements, DocumentErrorHandler errorHandler) { final DescriptorRegistry registry = loadingDocument.getDescriptorRegistry(); registry.readAccess(new Runnable() { public void run() { for (ComponentElement element : componentElements) { String string = element.getTypeID().getString(); if (MidpTypes.isValidFQNClassName(string)) { if (registry.getComponentDescriptor(new TypeID(TypeID.Kind.COMPONENT, string)) == null) { unresolved.add(string); } } } } }); if (!unresolved.isEmpty()) { Map<String, ComponentInstaller.Item> found = ComponentInstaller.search(ProjectUtils.getProject(context)); ArrayList<ComponentInstaller.Item> install = new ArrayList<ComponentInstaller.Item>(); for (String s : unresolved) { ComponentInstaller.Item item = found.get(s); if (item != null) { install.add(item); } } ComponentInstaller.install(found, install); } }
synchronized void clean() { if (activeDocument == null || activeDocument.get() == null) { return; } String projectID = activeDocument.get().getDocumentInterface().getProjectID(); String projectType = activeDocument.get().getDocumentInterface().getProjectType(); final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry(projectType, projectID); registry.readAccess(new Runnable() { public void run() { List<ComponentProducer> list = registry.getComponentProducers(); Map<String, ComponentProducer> producers = new HashMap<String, ComponentProducer>(list.size()); for (ComponentProducer producer : list) { producers.put(producer.getProducerID(), producer); } cleanCore(producers); } }); }
synchronized void init() { if (activeDocument == null || activeDocument.get() == null) { return; } if (requiresPaletteInit.getAndSet(true)) { return; } final String projectID = activeDocument.get().getDocumentInterface().getProjectID(); final String projectType = activeDocument.get().getDocumentInterface().getProjectType(); final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry(projectType, projectID); registry.readAccess(new Runnable() { public void run() { while (requiresPaletteInit.getAndSet(false)) { Collection<? extends PaletteProvider> providers = lookupResult.allInstances(); for (PaletteProvider provider : providers) { if (provider != null) { provider.initPaletteCategories(projectType); } } initCore(registry.getComponentProducers()); } } }); }
final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry(projectType, projectID); registry.readAccess(new Runnable() {
registry.readAccess(new Runnable() {
registry.readAccess(new Runnable() {
@Override public boolean canDestroy() { boolean canDestroy = false; DesignDocument document = ActiveDocumentSupport.getDefault().getActiveDocument(); if (document != null) { DataObjectContext context = ProjectUtils.getDataObjectContextForDocument(document); if (context != null) { final ComponentProducer[] producer = new ComponentProducer[1]; final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry(context.getProjectType(), context.getProjectID()); registry.readAccess(new Runnable() { public void run() { List<ComponentProducer> producers = registry.getComponentProducers(); for (ComponentProducer p : producers) { if (p.getProducerID().equals(obj.getProducerID())) { producer[0] = p; break; } } } }); if (producer[0] != null) { canDestroy = PaletteKit.CUSTOM_CATEGORY_NAME.equals(producer[0].getPaletteDescriptor().getCategoryID()); } } } return canDestroy; }
@Override public void destroy() throws IOException { super.destroy(); DesignDocument document = ActiveDocumentSupport.getDefault().getActiveDocument(); if (document != null) { DataObjectContext context = ProjectUtils.getDataObjectContextForDocument(document); if (context != null) { final ComponentProducer[] producer = new ComponentProducer[1]; final DescriptorRegistry registry = DescriptorRegistry.getDescriptorRegistry(context.getProjectType(), context.getProjectID()); registry.readAccess(new Runnable() { public void run() { List<ComponentProducer> producers = registry.getComponentProducers(); for (ComponentProducer p : producers) { if (p.getProducerID().equals(obj.getProducerID())) { producer[0] = p; break; } } } }); if (producer[0] != null) { registry.removeComponentDescriptor(producer[0].getMainComponentTypeID()); } } } }