/** * An {@link EditModel} is being accessed so we will want * to update the lru and access the editModel which will hold * a reference count. * @param editModel - The {@link EditModel} that we want to place * in the least used cache. */ public void access(EditModel editModel) { boolean shouldAccess = true; synchronized (lru) { if (lru.contains(editModel)) { moveToEnd(editModel); shouldAccess = false; } } if (shouldAccess) { synchronized (lru) { editModel.access(this); lru.add(editModel); } } }
/** * This only increments the reference count of the children and should only be called if you * know what you are doing. */ public void access(Object accessorKey) { ComposedAccessorKey composedAccessorKey = ComposedAccessorKey.getComposedAccessorKey(accessorKey, this); if (getChildren().size() == 0) { createChildrenIfNecessary(composedAccessorKey); } else { List tempchildren = getChildren(); for (int i = 0; i < tempchildren.size(); i++) { EditModel model = (EditModel) tempchildren.get(i); model.access(composedAccessorKey); } } // removing for defect 1978, children should do all the accessing super.access(accessorKey); }
protected void processResource(Resource aResource) { if (aResource != null && !getResources().contains(aResource)) { if (aResource instanceof ReferencedResource) { access((ReferencedResource) aResource); // We need a better way to pass this through the save options instead. // We also need to make this dynamic based on the project target ((ReferencedResource) aResource).setFormat(CompatibilityXMIResource.FORMAT_MOF5); } else if (aResource instanceof CompatibilityXMIResource) { ((CompatibilityXMIResource) aResource).setFormat(CompatibilityXMIResource.FORMAT_MOF5); } addResource(aResource); } }
/** * This is the API that clients should use when they have an intent to modify a particular * resource. You should only access the resources through the J2EEEditModel that is returned by * this method if you have the intent to modify. * * @see J2EEEditModel */ public final EditModel getEditModelForWrite(String editModelID, Object accessorKey, Map params) { EditModel editModel = getExistingEditModel(editModelID, params, false); if (null == editModel) { editModel = createEditModelForWrite(editModelID, params); synchronized (editModel) { cacheEditModel(editModel, params); editModel.access(accessorKey); } } else { synchronized (editModel) { if (editModel.isDisposed() || editModel.isDisposing()) { editModel = createEditModelForWrite(editModelID, params); cacheEditModel(editModel, params); } editModel.access(accessorKey); } } return editModel; }