Exemplo n.º 1
0
 /**
  * Convert the current CConfigurationDescriptions to cached versions This occurs during the
  * SetCProjectDescription Operation
  */
 void switchToCachedConfigurationDescriptions() throws CoreException {
   for (Map.Entry<String, ICConfigurationDescription> e : fCfgMap.entrySet()) {
     if (e.getValue() instanceof CConfigurationDescription) {
       CConfigurationDescription cfgDes = (CConfigurationDescription) e.getValue();
       CConfigurationData baseData = ((IInternalCCfgInfo) cfgDes).getConfigurationData(false);
       CConfigurationDescriptionCache baseCache = null;
       if (baseData instanceof CConfigurationDescriptionCache) {
         baseCache = (CConfigurationDescriptionCache) baseData;
         baseData = baseCache.getConfigurationData();
       }
       CConfigurationDescriptionCache cache =
           new CConfigurationDescriptionCache(
               cfgDes, baseData, baseCache, cfgDes.getSpecSettings(), this, null);
       e.setValue(cache);
     }
   }
 }
Exemplo n.º 2
0
  /**
   * Create a project description based on another project description
   *
   * @param base
   * @param saving
   * @param storage
   * @param el
   * @param isCreating
   */
  public CProjectDescription(
      CProjectDescription base,
      boolean saving,
      ICSettingsStorage storage,
      ICStorageElement el,
      boolean isCreating) {
    fActiveCfgInfo = new CfgIdPair(base.fActiveCfgInfo);
    fSettingCfgInfo = new CfgIdPair(base.fSettingCfgInfo);
    fProject = base.fProject;
    fStorage = storage;
    fRootStorageElement = el;
    fIsReadOnly = saving;
    fIsLoading = base.fIsLoading;
    fIsApplying = saving || base.fIsApplying;
    fIsCreating = isCreating;

    fPrefs =
        new CProjectDescriptionPreferences(
            base.fPrefs,
            (CProjectDescriptionPreferences)
                CProjectDescriptionManager.getInstance()
                    .getProjectDescriptionWorkspacePreferences(false),
            false);

    for (Iterator<ICConfigurationDescription> iter = base.fCfgMap.values().iterator();
        iter.hasNext(); ) {
      try {
        IInternalCCfgInfo cfgDes = (IInternalCCfgInfo) iter.next();
        if (fIsReadOnly) {
          CConfigurationData baseData = cfgDes.getConfigurationData(false);
          CConfigurationDescriptionCache baseCache = null;
          if (baseData instanceof CConfigurationDescriptionCache) {
            baseCache = (CConfigurationDescriptionCache) baseData;
            baseData = baseCache.getConfigurationData();
          }
          CConfigurationDescriptionCache cache =
              new CConfigurationDescriptionCache(
                  (ICConfigurationDescription) cfgDes,
                  baseData,
                  baseCache,
                  cfgDes.getSpecSettings(),
                  this,
                  null);
          configurationCreated(cache);
        } else {
          CConfigurationData baseData = cfgDes.getConfigurationData(false);
          CConfigurationDescription cfg = new CConfigurationDescription(baseData, this);
          configurationCreated(cfg);
        }
      } catch (CoreException e) {
        CCorePlugin.log(e);
      }
    }

    // Shallow cloning the base map
    Map<QualifiedName, Object> cloneMap =
        Collections.synchronizedMap(new HashMap<QualifiedName, Object>());
    synchronized (base.fPropertiesMap) {
      cloneMap.putAll(base.fPropertiesMap);
    }
    fPropertiesMap = cloneMap;
  }