org.eclipse.team.cvs.core_3.3.400.I20110510-0800

e/core/resources/IResource;[BZ)V
    //   215: aload_0
    //   216: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   219: aload_3
    //   220: invokevirtual 916	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:purgeResourceSyncCache	(Lorg/eclipse/core/resources/IResource;)V
    //   223: aload_0
    //   224: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   227: aload_3
    //   228: iconst_0
    //   229: invokevirtual 919	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:purgeCache	(Lorg/eclipse/core/resources/IContainer;Z)[Lorg/eclipse/core/resources/IResource;
    //   232: pop
    //   233: aload_0
    //   234: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   237: aload_2
    //   238: ifnull +9 -> 247
    //   241: aload_0
    //   242: aload_2
    //   243: aconst_null
    //   244: invokevirtual 900	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endBatching	(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Lorg/eclipse/core/runtime/IProgressMonitor;)V
    //   247: iconst_1
    //   248: ireturn
    //   249: astore 6
    //   251: aload_0
    //   252: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   255: aload 6
    //   257: athrow
    //   258: astore 7
    //   260: aload_2
    //   261: ifnull +9 -> 270
    //   264: aload_0
    //   265: aload_2
    //   266: aconst_null
    //   267: invokevirtual 900	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endBatching	(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Lorg/eclipse/core/runtime/IProgressMonitor;)V
    //   270: aload 7
    //   272: athrow
    // Line number table:
    //   Java source line #728	-> byte code offset #0
    //   Java source line #729	-> byte code offset #11
    //   Java source line #731	-> byte code offset #13
    //   Java source line #733	-> byte code offset #20
    //   Java source line #737	-> byte code offset #24
    //   Java source line #738	-> byte code offset #31
    //   Java source line #739	-> byte code offset #41
    //   Java source line #740	-> byte code offset #47
    //   Java source line #741	-> byte code offset #51
    //   Java source line #742	-> byte code offset #58
    //   Java source line #744	-> byte code offset #66
    //   Java source line #745	-> byte code offset #72
    //   Java source line #747	-> byte code offset #82
    //   Java source line #748	-> byte code offset #90
    //   Java source line #771	-> byte code offset #95
    //   Java source line #774	-> byte code offset #99
    //   Java source line #750	-> byte code offset #109
    //   Java source line #752	-> byte code offset #111
    //   Java source line #753	-> byte code offset #116
    //   Java source line #754	-> byte code offset #126
    //   Java source line #771	-> byte code offset #137
    //   Java source line #774	-> byte code offset #141
    //   Java source line #755	-> byte code offset #151
    //   Java source line #758	-> byte code offset #153
    //   Java source line #759	-> byte code offset #160
    //   Java source line #771	-> byte code offset #165
    //   Java source line #774	-> byte code offset #169
    //   Java source line #759	-> byte code offset #179
    //   Java source line #760	-> byte code offset #181
    //   Java source line #761	-> byte code offset #192
    //   Java source line #763	-> byte code offset #197
    //   Java source line #764	-> byte code offset #204
    //   Java source line #765	-> byte code offset #215
    //   Java source line #766	-> byte code offset #223
    //   Java source line #771	-> byte code offset #233
    //   Java source line #774	-> byte code offset #237
    //   Java source line #767	-> byte code offset #247
    //   Java source line #770	-> byte code offset #249
    //   Java source line #771	-> byte code offset #251
    //   Java source line #772	-> byte code offset #255
    //   Java source line #773	-> byte code offset #258
    //   Java source line #774	-> byte code offset #260
    //   Java source line #775	-> byte code offset #270
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	273	0	this	EclipseSynchronizer
    //   0	273	1	resource	IResource
    //   12	254	2	rule	ISchedulingRule
    //   46	32	3	syncBytes	byte[]
    //   115	16	3	container	IContainer
    //   153	2	3	container	IContainer
    //   181	47	3	container	IContainer
    //   158	3	4	info	FolderSyncInfo
    //   181	6	4	info	FolderSyncInfo
    //   202	8	5	syncBytes	byte[]
    //   249	7	6	localObject1	Object
    //   258	13	7	localObject2	Object
    // Exception table:
    //   from	to	target	type
    //   20	95	249	finally
    //   111	137	249	finally
    //   153	165	249	finally
    //   181	233	249	finally
    //   13	99	258	finally
    //   111	141	258	finally
    //   153	169	258	finally
    //   181	237	258	finally
    //   249	258	258	finally
  }
  
  /* Error */
  protected void handleDeleted(IResource resource)
    throws CVSException
  {
    // Byte code:
    //   0: aload_1
    //   1: invokeinterface 1025 1 0
    //   6: ifeq +4 -> 10
    //   9: return
    //   10: aload_0
    //   11: invokespecial 865	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:beginOperation	()V
    //   14: aload_0
    //   15: aload_1
    //   16: ldc 3
    //   18: invokevirtual 894	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:adjustDirtyStateRecursively	(Lorg/eclipse/core/resources/IResource;Ljava/lang/String;)V
    //   21: goto +10 -> 31
    //   24: astore_2
    //   25: aload_0
    //   26: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   29: aload_2
    //   30: athrow
    //   31: aload_0
    //   32: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   35: return
    // Line number table:
    //   Java source line #787	-> byte code offset #0
    //   Java source line #789	-> byte code offset #10
    //   Java source line #790	-> byte code offset #14
    //   Java source line #791	-> byte code offset #24
    //   Java source line #792	-> byte code offset #25
    //   Java source line #793	-> byte code offset #29
    //   Java source line #792	-> byte code offset #31
    //   Java source line #794	-> byte code offset #35
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	36	0	this	EclipseSynchronizer
    //   0	36	1	resource	IResource
    //   24	6	2	localObject	Object
    // Exception table:
    //   from	to	target	type
    //   10	24	24	finally
  }
  
  /* Error */
  protected void handleAdded(IResource resource)
    throws CVSException
  {
    // Byte code:
    //   0: aload_1
    //   1: invokeinterface 1025 1 0
    //   6: ifne +4 -> 10
    //   9: return
    //   10: aload_0
    //   11: invokespecial 865	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:beginOperation	()V
    //   14: aload_0
    //   15: aload_1
    //   16: ldc 3
    //   18: invokevirtual 894	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:adjustDirtyStateRecursively	(Lorg/eclipse/core/resources/IResource;Ljava/lang/String;)V
    //   21: goto +10 -> 31
    //   24: astore_2
    //   25: aload_0
    //   26: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   29: aload_2
    //   30: athrow
    //   31: aload_0
    //   32: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   35: return
    // Line number table:
    //   Java source line #805	-> byte code offset #0
    //   Java source line #807	-> byte code offset #10
    //   Java source line #808	-> byte code offset #14
    //   Java source line #809	-> byte code offset #24
    //   Java source line #810	-> byte code offset #25
    //   Java source line #811	-> byte code offset #29
    //   Java source line #810	-> byte code offset #31
    //   Java source line #812	-> byte code offset #35
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	36	0	this	EclipseSynchronizer
    //   0	36	1	resource	IResource
    //   24	6	2	localObject	Object
    // Exception table:
    //   from	to	target	type
    //   10	24	24	finally
  }
  
  public void prepareForDeletion(IResource resource, IProgressMonitor monitor)
    throws CVSException
  {
    monitor = Policy.monitorFor(monitor);
    try
    {
      beginOperation();
      monitor.beginTask(null, 100);
      try
      {
        resource.accept(new IResourceVisitor()
        {
          public boolean visit(IResource innerResource)
            throws CoreException
          {
            try
            {
              return prepareForDeletion(innerResource);
            }
            catch (CVSException e)
            {
              CVSProviderPlugin.log(e);
              throw new CoreException(e.getStatus());
            }
          }
        });
      }
      catch (CoreException e)
      {
        throw CVSException.wrapException(e);
      }
    }
    finally
    {
      endOperation();
      monitor.done();
    }
    endOperation();
    monitor.done();
  }
  
  private void cacheResourceSyncForChildren(IContainer container, boolean canModifyWorkspace)
    throws CVSException
  {
    if (!getSyncInfoCacheFor(container).isResourceSyncInfoCached(container))
    {
      byte[][] infos;
      byte[][] infos;
      if (isLinkedResource(container)) {
        infos = (byte[][])null;
      } else {
        infos = SyncFileWriter.readAllResourceSync(container);
      }
      try
      {
        if (infos != null) {
          for (int i = 0; i < infos.length; i++)
          {
            byte[] syncBytes = infos[i];
            IPath name = new Path(null, getName(syncBytes));
            IResource resource;
            IResource resource;
            if (isFolder(syncBytes)) {
              resource = container.getFolder(name);
            } else {
              resource = container.getFile(name);
            }
            getSyncInfoCacheFor(resource).setCachedSyncBytes(resource, syncBytes, canModifyWorkspace);
          }
        }
        getSyncInfoCacheFor(container).setResourceSyncInfoCached(container);
      }
      catch (CVSException e)
      {
        if (Policy.DEBUG_METAFILE_CHANGES) {
          System.err.println("Failed to cache Entries for folder " + container.getFullPath());
        }
        throw e;
      }
    }
  }
  
  private void cacheFolderSync(IContainer container)
    throws CVSException
  {
    if (!getSyncInfoCacheFor(container).isFolderSyncInfoCached(container))
    {
      FolderSyncInfo info;
      FolderSyncInfo info;
      if (isLinkedResource(container)) {
        info = null;
      } else {
        info = SyncFileWriter.readFolderSync(container);
      }
      getSyncInfoCacheFor(container).setCachedFolderSync(container, info, false);
    }
  }
  
  private boolean isLinkedResource(IResource resource)
  {
    return CVSWorkspaceRoot.isLinkedResource(resource);
  }
  
  private byte[] getSyncBytesFromDisk(IResource resource)
    throws CVSException
  {
    byte[][] infos = SyncFileWriter.readAllResourceSync(resource.getParent());
    if (infos == null) {
      return null;
    }
    for (int i = 0; i < infos.length; i++)
    {
      byte[] syncBytes = infos[i];
      if (resource.getName().equals(getName(syncBytes))) {
        return syncBytes;
      }
    }
    return null;
  }
  
  /* Error */
  IStatus commitCache(BatchingLock.ThreadInfo threadInfo, IProgressMonitor monitor)
  {
    // Byte code:
    //   0: aload_1
    //   1: invokevirtual 987	org/eclipse/team/internal/core/subscribers/BatchingLock$ThreadInfo:isEmpty	()Z
    //   4: ifeq +7 -> 11
    //   7: getstatic 825	org/eclipse/team/internal/ccvs/core/resources/SyncInfoCache:STATUS_OK	Lorg/eclipse/core/runtime/IStatus;
    //   10: areturn
    //   11: new 392	java/util/ArrayList
    //   14: dup
    //   15: invokespecial 834	java/util/ArrayList:<init>	()V
    //   18: astore_3
    //   19: aload_1
    //   20: invokevirtual 988	org/eclipse/team/internal/core/subscribers/BatchingLock$ThreadInfo:getChangedResources	()[Lorg/eclipse/core/resources/IResource;
    //   23: astore 4
    //   25: aload_1
    //   26: instanceof 445
    //   29: ifeq +15 -> 44
    //   32: aload_1
    //   33: checkcast 445	org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock$CVSThreadInfo
    //   36: invokevirtual 956	org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock$CVSThreadInfo:getChangedFolders	()[Lorg/eclipse/core/resources/IContainer;
    //   39: astore 5
    //   41: goto +9 -> 50
    //   44: iconst_0
    //   45: anewarray 401	org/eclipse/core/resources/IContainer
    //   48: astore 5
    //   50: new 396	java/util/HashSet
    //   53: dup
    //   54: invokespecial 838	java/util/HashSet:<init>	()V
    //   57: astore 6
    //   59: iconst_0
    //   60: istore 7
    //   62: goto +32 -> 94
    //   65: aload 4
    //   67: iload 7
    //   69: aaload
    //   70: astore 8
    //   72: aload 8
    //   74: invokeinterface 1028 1 0
    //   79: astore 9
    //   81: aload 6
    //   83: aload 9
    //   85: invokeinterface 1005 2 0
    //   90: pop
    //   91: iinc 7 1
    //   94: iload 7
    //   96: aload 4
    //   98: arraylength
    //   99: if_icmplt -34 -> 65
    //   102: aload_2
    //   103: invokestatic 858	org/eclipse/team/internal/ccvs/core/Policy:monitorFor	(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IProgressMonitor;
    //   106: astore_2
    //   107: aload 6
    //   109: invokeinterface 1003 1 0
    //   114: istore 7
    //   116: aload 5
    //   118: arraylength
    //   119: iload 7
    //   121: iadd
    //   122: istore 8
    //   124: aload_2
    //   125: aconst_null
    //   126: iload 8
    //   128: invokeinterface 1040 3 0
    //   133: aload_2
    //   134: invokeinterface 1037 1 0
    //   139: ifeq +15 -> 154
    //   142: aload_2
    //   143: getstatic 817	org/eclipse/team/internal/ccvs/core/CVSMessages:EclipseSynchronizer_UpdatingSyncEndOperationCancelled	Ljava/lang/String;
    //   146: invokeinterface 1039 2 0
    //   151: goto +12 -> 163
    //   154: aload_2
    //   155: getstatic 816	org/eclipse/team/internal/ccvs/core/CVSMessages:EclipseSynchronizer_UpdatingSyncEndOperation	Ljava/lang/String;
    //   158: invokeinterface 1039 2 0
    //   163: iconst_0
    //   164: istore 9
    //   166: goto +162 -> 328
    //   169: aload 5
    //   171: iload 9
    //   173: aaload
    //   174: astore 10
    //   176: aload 10
    //   178: invokeinterface 1011 1 0
    //   183: ifeq +135 -> 318
    //   186: aload 10
    //   188: invokeinterface 1010 1 0
    //   193: bipush 8
    //   195: if_icmpeq +123 -> 318
    //   198: aload_0
    //   199: invokespecial 865	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:beginOperation	()V
    //   202: aload_0
    //   203: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   206: aload 10
    //   208: iconst_1
    //   209: invokevirtual 920	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:getCachedFolderSync	(Lorg/eclipse/core/resources/IContainer;Z)Lorg/eclipse/team/internal/ccvs/core/syncinfo/FolderSyncInfo;
    //   212: astore 11
    //   214: aload 11
    //   216: ifnonnull +30 -> 246
    //   219: aload_0
    //   220: aload 10
    //   222: invokespecial 879	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:isLinkedResource	(Lorg/eclipse/core/resources/IResource;)Z
    //   225: ifne +8 -> 233
    //   228: aload 10
    //   230: invokestatic 971	org/eclipse/team/internal/ccvs/core/util/SyncFileWriter:deleteFolderSync	(Lorg/eclipse/core/resources/IContainer;)V
    //   233: aload 6
    //   235: aload 10
    //   237: invokeinterface 1006 2 0
    //   242: pop
    //   243: goto +71 -> 314
    //   246: aload 10
    //   248: aload 11
    //   250: invokestatic 983	org/eclipse/team/internal/ccvs/core/util/SyncFileWriter:writeFolderSync	(Lorg/eclipse/core/resources/IContainer;Lorg/eclipse/team/internal/ccvs/core/syncinfo/FolderSyncInfo;)V
    //   253: goto +61 -> 314
    //   256: astore 11
    //   258: aload_0
    //   259: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   262: aload 10
    //   264: iconst_1
    //   265: invokevirtual 919	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:purgeCache	(Lorg/eclipse/core/resources/IContainer;Z)[Lorg/eclipse/core/resources/IResource;
    //   268: pop
    //   269: goto +17 -> 286
    //   272: astore 12
    //   274: aload_3
    //   275: aload 12
    //   277: invokevirtual 853	org/eclipse/team/internal/ccvs/core/CVSException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   280: invokeinterface 995 2 0
    //   285: pop
    //   286: aload_3
    //   287: aload 11
    //   289: invokevirtual 853	org/eclipse/team/internal/ccvs/core/CVSException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   292: invokeinterface 995 2 0
    //   297: pop
    //   298: aload_0
    //   299: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   302: goto +16 -> 318
    //   305: astore 13
    //   307: aload_0
    //   308: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   311: aload 13
    //   313: athrow
    //   314: aload_0
    //   315: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   318: aload_2
    //   319: iconst_1
    //   320: invokeinterface 1038 2 0
    //   325: iinc 9 1
    //   328: iload 9
    //   330: aload 5
    //   332: arraylength
    //   333: if_icmplt -164 -> 169
    //   336: aload_2
    //   337: iload 7
    //   339: aload 6
    //   341: invokeinterface 1003 1 0
    //   346: isub
    //   347: invokeinterface 1038 2 0
    //   352: aload 6
    //   354: invokeinterface 1008 1 0
    //   359: astore 9
    //   361: goto +272 -> 633
    //   364: aload 9
    //   366: invokeinterface 991 1 0
    //   371: checkcast 401	org/eclipse/core/resources/IContainer
    //   374: astore 10
    //   376: aload 10
    //   378: invokeinterface 1011 1 0
    //   383: ifeq +243 -> 626
    //   386: aload 10
    //   388: invokeinterface 1010 1 0
    //   393: bipush 8
    //   395: if_icmpeq +231 -> 626
    //   398: aload_0
    //   399: invokespecial 865	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:beginOperation	()V
    //   402: new 392	java/util/ArrayList
    //   405: dup
    //   406: invokespecial 834	java/util/ArrayList:<init>	()V
    //   409: astore 11
    //   411: aload 10
    //   413: iconst_1
    //   414: invokeinterface 1014 2 0
    //   419: astore 12
    //   421: iconst_0
    //   422: istore 13
    //   424: goto +36 -> 460
    //   427: aload 12
    //   429: iload 13
    //   431: aaload
    //   432: astore 14
    //   434: aload_0
    //   435: aload 14
    //   437: invokevirtual 883	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:getSyncBytes	(Lorg/eclipse/core/resources/IResource;)[B
    //   440: astore 15
    //   442: aload 15
    //   444: ifnull +13 -> 457
    //   447: aload 11
    //   449: aload 15
    //   451: invokeinterface 995 2 0
    //   456: pop
    //   457: iinc 13 1
    //   460: iload 13
    //   462: aload 12
    //   464: arraylength
    //   465: if_icmplt -38 -> 427
    //   468: aload 11
    //   470: invokeinterface 992 1 0
    //   475: ifgt +12 -> 487
    //   478: aload_0
    //   479: aload 10
    //   481: invokespecial 879	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:isLinkedResource	(Lorg/eclipse/core/resources/IResource;)Z
    //   484: ifne +138 -> 622
    //   487: aload 10
    //   489: aload 11
    //   491: aload 11
    //   493: invokeinterface 992 1 0
    //   498: anewarray 381	[B
    //   501: invokeinterface 998 2 0
    //   506: checkcast 385	[[B
    //   509: invokestatic 973	org/eclipse/team/internal/ccvs/core/util/SyncFileWriter:writeAllResourceSync	(Lorg/eclipse/core/resources/IContainer;[[B)V
    //   512: goto +110 -> 622
    //   515: astore 11
    //   517: aload_0
    //   518: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   521: aload 10
    //   523: iconst_0
    //   524: invokevirtual 919	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:purgeCache	(Lorg/eclipse/core/resources/IContainer;Z)[Lorg/eclipse/core/resources/IResource;
    //   527: pop
    //   528: goto +17 -> 545
    //   531: astore 12
    //   533: aload_3
    //   534: aload 12
    //   536: invokevirtual 853	org/eclipse/team/internal/ccvs/core/CVSException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   539: invokeinterface 995 2 0
    //   544: pop
    //   545: aload_3
    //   546: aload 11
    //   548: invokevirtual 853	org/eclipse/team/internal/ccvs/core/CVSException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   551: invokeinterface 995 2 0
    //   556: pop
    //   557: aload_0
    //   558: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   561: goto +65 -> 626
    //   564: astore 11
    //   566: aload_0
    //   567: getfield 822	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:sessionPropertyCache	Lorg/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache;
    //   570: aload 10
    //   572: iconst_0
    //   573: invokevirtual 919	org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache:purgeCache	(Lorg/eclipse/core/resources/IContainer;Z)[Lorg/eclipse/core/resources/IResource;
    //   576: pop
    //   577: goto +17 -> 594
    //   580: astore 12
    //   582: aload_3
    //   583: aload 12
    //   585: invokevirtual 853	org/eclipse/team/internal/ccvs/core/CVSException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   588: invokeinterface 995 2 0
    //   593: pop
    //   594: aload_3
    //   595: aload 11
    //   597: invokevirtual 843	org/eclipse/core/runtime/CoreException:getStatus	()Lorg/eclipse/core/runtime/IStatus;
    //   600: invokeinterface 995 2 0
    //   605: pop
    //   606: aload_0
    //   607: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   610: goto +16 -> 626
    //   613: astore 16
    //   615: aload_0
    //   616: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   619: aload 16
    //   621: athrow
    //   622: aload_0
    //   623: invokespecial 866	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:endOperation	()V
    //   626: aload_2
    //   627: iconst_1
    //   628: invokeinterface 1038 2 0
    //   633: aload 9
    //   635: invokeinterface 990 1 0
    //   640: ifne -276 -> 364
    //   643: aload_2
    //   644: getstatic 815	org/eclipse/team/internal/ccvs/core/CVSMessages:EclipseSynchronizer_NotifyingListeners	Ljava/lang/String;
    //   647: invokeinterface 1039 2 0
    //   652: new 396	java/util/HashSet
    //   655: dup
    //   656: invokespecial 838	java/util/HashSet:<init>	()V
    //   659: astore 9
    //   661: aload 9
    //   663: aload 4
    //   665: invokestatic 835	java/util/Arrays:asList	([Ljava/lang/Object;)Ljava/util/List;
    //   668: invokeinterface 1007 2 0
    //   673: pop
    //   674: aload 9
    //   676: aload 5
    //   678: invokestatic 835	java/util/Arrays:asList	([Ljava/lang/Object;)Ljava/util/List;
    //   681: invokeinterface 1007 2 0
    //   686: pop
    //   687: aload 9
    //   689: aload 6
    //   691: invokeinterface 1007 2 0
    //   696: pop
    //   697: aload 9
    //   699: aload 9
    //   701: invokeinterface 1003 1 0
    //   706: anewarray 405	org/eclipse/core/resources/IResource
    //   709: invokeinterface 1009 2 0
    //   714: checkcast 384	[Lorg/eclipse/core/resources/IResource;
    //   717: astore 10
    //   719: aload_0
    //   720: aload 10
    //   722: invokevirtual 888	org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer:broadcastResourceStateChanges	([Lorg/eclipse/core/resources/IResource;)V
    //   725: aload_3
    //   726: invokeinterface 993 1 0
    //   731: ifne +70 -> 801
    //   734: new 413	org/eclipse/core/runtime/MultiStatus
    //   737: dup
    //   738: ldc_w 380
    //   741: bipush -16
    //   743: getstatic 811	org/eclipse/team/internal/ccvs/core/CVSMessages:EclipseSynchronizer_ErrorCommitting	Ljava/lang/String;
    //   746: aconst_null
    //   747: invokespecial 845	org/eclipse/core/runtime/MultiStatus:<init>	(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
    //   750: astore 11
    //   752: iconst_0
    //   753: istore 12
    //   755: goto +22 -> 777
    //   758: aload 11
    //   760: aload_3
    //   761: iload 12
    //   763: invokeinterface 994 2 0
    //   768: checkcast 412	org/eclipse/core/runtime/IStatus
    //   771: invokevirtual 844	org/eclipse/core/runtime/MultiStatus:merge	(Lorg/eclipse/core/runtime/IStatus;)V
    //   774: iinc 12 1
    //   777: iload 12
    //   779: aload_3
    //   780: invokeinterface 992 1 0
    //   785: if_icmplt -27 -> 758
    //   788: aload 11
    //   790: astore 18
    //   792: aload_2
    //   793: invokeinterface 1036 1 0
    //   798: aload 18
    //   800: areturn
    //   801: getstatic 825	org/eclipse/team/internal/ccvs/core/resources/SyncInfoCache:STATUS_OK	Lorg/eclipse/core/runtime/IStatus;
    //   804: astore 18
    //   806: aload_2
    //   807: invokeinterface 1036 1 0
    //   812: aload 18
    //   814: areturn
    //   815: astore 17
    //   817: aload_2
    //   818: invokeinterface 1036 1 0
    //   823: aload 17
    //   825: athrow
    // Line number table:
    //   Java source line #946	-> byte code offset #0
    //   Java source line #947	-> byte code offset #7
    //   Java source line #949	-> byte code offset #11
    //   Java source line #953	-> byte code offset #19
    //   Java source line #955	-> byte code offset #25
    //   Java source line #956	-> byte code offset #32
    //   Java source line #958	-> byte code offset #44
    //   Java source line #960	-> byte code offset #50
    //   Java source line #961	-> byte code offset #59
    //   Java source line #962	-> byte code offset #65
    //   Java source line #963	-> byte code offset #72
    //   Java source line #964	-> byte code offset #81
    //   Java source line #961	-> byte code offset #91
    //   Java source line #967	-> byte code offset #102
    //   Java source line #968	-> byte code offset #107
    //   Java source line #969	-> byte code offset #116
    //   Java source line #970	-> byte code offset #124
    //   Java source line #971	-> byte code offset #133
    //   Java source line #972	-> byte code offset #142
    //   Java source line #974	-> byte code offset #154
    //   Java source line #979	-> byte code offset #163
    //   Java source line #980	-> byte code offset #169
    //   Java source line #981	-> byte code offset #176
    //   Java source line #983	-> byte code offset #198
    //   Java source line #984	-> byte code offset #202
    //   Java source line #986	-> byte code offset #214
    //   Java source line #989	-> byte code offset #219
    //   Java source line #990	-> byte code offset #228
    //   Java source line #991	-> byte code offset #233
    //   Java source line #994	-> byte code offset #246
    //   Java source line #996	-> byte code offset #256
    //   Java source line #998	-> byte code offset #258
    //   Java source line #999	-> byte code offset #272
    //   Java source line #1000	-> byte code offset #274
    //   Java source line #1002	-> byte code offset #286
    //   Java source line #1004	-> byte code offset #298
    //   Java source line #1003	-> byte code offset #305
    //   Java source line #1004	-> byte code offset #307
    //   Java source line #1005	-> byte code offset #311
    //   Java source line #1004	-> byte code offset #314
    //   Java source line #1007	-> byte code offset #318
    //   Java source line #979	-> byte code offset #325
    //   Java source line #1011	-> byte code offset #336
    //   Java source line #1014	-> byte code offset #352
    //   Java source line #1015	-> byte code offset #364
    //   Java source line #1016	-> byte code offset #376
    //   Java source line #1019	-> byte code offset #398
    //   Java source line #1020	-> byte code offset #402
    //   Java source line #1021	-> byte code offset #411
    //   Java source line #1022	-> byte code offset #421
    //   Java source line #1023	-> byte code offset #427
    //   Java source line #1024	-> byte code offset #434
    //   Java source line #1025	-> byte code offset #442
    //   Java source line #1026	-> byte code offset #447
    //   Java source line #1022	-> byte code offset #457
    //   Java source line #1030	-> byte code offset #468
    //   Java source line #1031	-> byte code offset #487
    //   Java source line #1032	-> byte code offset #489
    //   Java source line #1031	-> byte code offset #509
    //   Java source line #1033	-> byte code offset #515
    //   Java source line #1035	-> byte code offset #517
    //   Java source line #1036	-> byte code offset #531
    //   Java source line #1037	-> byte code offset #533
    //   Java source line #1039	-> byte code offset #545
    //   Java source line #1048	-> byte code offset #557
    //   Java source line #1040	-> byte code offset #564
    //   Java source line #1042	-> byte code offset #566
    //   Java source line #1043	-> byte code offset #580
    //   Java source line #1044	-> byte code offset #582
    //   Java source line #1046	-> byte code offset #594
    //   Java source line #1048	-> byte code offset #606
    //   Java source line #1047	-> byte code offset #613
    //   Java source line #1048	-> byte code offset #615
    //   Java source line #1049	-> byte code offset #619
    //   Java source line #1048	-> byte code offset #622
    //   Java source line #1051	-> byte code offset #626
    //   Java source line #1014	-> byte code offset #633
    //   Java source line #1055	-> byte code offset #643
    //   Java source line #1056	-> byte code offset #652
    //   Java source line #1057	-> byte code offset #661
    //   Java source line #1058	-> byte code offset #674
    //   Java source line #1059	-> byte code offset #687
    //   Java source line #1060	-> byte code offset #697
    //   Java source line #1061	-> byte code offset #699
    //   Java source line #1060	-> byte code offset #709
    //   Java source line #1062	-> byte code offset #719
    //   Java source line #1063	-> byte code offset #725
    //   Java source line #1064	-> byte code offset #734
    //   Java source line #1065	-> byte code offset #741
    //   Java source line #1066	-> byte code offset #743
    //   Java source line #1067	-> byte code offset #746
    //   Java source line #1064	-> byte code offset #747
    //   Java source line #1068	-> byte code offset #752
    //   Java source line #1069	-> byte code offset #758
    //   Java source line #1068	-> byte code offset #774
    //   Java source line #1071	-> byte code offset #788
    //   Java source line #1075	-> byte code offset #792
    //   Java source line #1071	-> byte code offset #798
    //   Java source line #1073	-> byte code offset #801
    //   Java source line #1075	-> byte code offset #806
    //   Java source line #1073	-> byte code offset #812
    //   Java source line #1074	-> byte code offset #815
    //   Java source line #1075	-> byte code offset #817
    //   Java source line #1076	-> byte code offset #823
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	826	0	this	EclipseSynchronizer
    //   0	826	1	threadInfo	BatchingLock.ThreadInfo
    //   0	826	2	monitor	IProgressMonitor
    //   18	762	3	errors	List
    //   23	641	4	changedResources	IResource[]
    //   39	3	5	changedFolders	IContainer[]
    //   48	629	5	changedFolders	IContainer[]
    //   57	633	6	dirtyParents	Set
    //   60	35	7	i	int
    //   114	224	7	numDirty	int
    //   70	3	8	resource	IResource
    //   122	5	8	numResources	int
    //   79	5	9	folder	IContainer
    //   164	165	9	i	int
    //   359	275	9	it	Iterator
    //   659	41	9	allChanges	Set
    //   174	89	10	folder	IContainer
    //   374	197	10	folder	IContainer
    //   717	4	10	resources	IResource[]
    //   212	37	11	info	FolderSyncInfo
    //   256	32	11	e	CVSException
    //   409	83	11	infos	List
    //   515	32	11	e	CVSException
    //   564	32	11	e	CoreException
    //   750	39	11	status	org.eclipse.core.runtime.MultiStatus
    //   272	4	12	pe	CVSException
    //   419	44	12	children	IResource[]
    //   531	4	12	pe	CVSException
    //   580	4	12	pe	CVSException
    //   753	25	12	i	int
    //   305	7	13	localObject1	Object
    //   422	44	13	i	int
    //   432	4	14	resource	IResource
    //   440	10	15	syncBytes	byte[]
    //   613	7	16	localObject2	Object
    //   815	9	17	localObject3	Object
    //   790	23	18	localObject4	Object
    // Exception table:
    //   from	to	target	type
    //   198	253	256	org/eclipse/team/internal/ccvs/core/CVSException
    //   258	269	272	org/eclipse/team/internal/ccvs/core/CVSException
    //   198	298	305	finally
    //   398	512	515	org/eclipse/team/internal/ccvs/core/CVSException
    //   517	528	531	org/eclipse/team/internal/ccvs/core/CVSException
    //   398	512	564	org/eclipse/core/runtime/CoreException
    //   566	577	580	org/eclipse/team/internal/ccvs/core/CVSException
    //   398	557	613	finally
    //   564	606	613	finally
    //   19	792	815	finally
    //   801	806	815	finally
  }
  
  void broadcastResourceStateChanges(IResource[] resources)
  {
    if (resources.length > 0) {
      ResourceStateChangeListeners.getListener().resourceSyncInfoChanged(resources);
    }
  }
  
  private byte[] getCachedSyncBytes(IResource resource)
    throws CVSException
  {
    return getSyncInfoCacheFor(resource).getCachedSyncBytes(resource, true);
  }
  
  private void setCachedSyncBytes(IResource resource, byte[] syncBytes)
    throws CVSException
  {
    getSyncInfoCacheFor(resource).setCachedSyncBytes(resource, syncBytes, true);
    resourceChanged(resource);
  }
  
  private void setCachedResourceSync(IResource resource, ResourceSyncInfo info)
    throws CVSException
  {
    byte[] syncBytes = (byte[])null;
    if (info != null) {
      syncBytes = info.getBytes();
    }
    getSyncInfoCacheFor(resource).setCachedSyncBytes(resource, syncBytes, true);
  }
  
  private FileNameMatcher cacheFolderIgnores(IContainer container)
    throws CVSException
  {
    return sessionPropertyCache.getFolderIgnores(container, true);
  }
  
  private void setCachedFolderIgnores(IContainer container, String[] ignores)
    throws CVSException
  {
    sessionPropertyCache.setCachedFolderIgnores(container, ignores);
  }
  
  private void accumulateNonManagedChildren(IContainer folder, List possibleIgnores)
    throws CVSException
  {
    try
    {
      cacheResourceSyncForChildren(folder, true);
      IResource[] children = folder.members();
      List folders = new ArrayList();
      for (int i = 0; i < children.length; i++)
      {
        IResource child = children[i];
        if (getCachedSyncBytes(child) == null) {
          possibleIgnores.add(child);
        }
        if (child.getType() != 1) {
          folders.add(child);
        }
      }
      for (Iterator iter = folders.iterator(); iter.hasNext();)
      {
        IContainer child = (IContainer)iter.next();
        accumulateNonManagedChildren(child, possibleIgnores);
      }
    }
    catch (CoreException e)
    {
      throw CVSException.wrapException(e);
    }
  }
  
  public void setNotifyInfo(IResource resource, NotifyInfo info)
    throws CVSException
  {
    NotifyInfo[] infos = SyncFileWriter.readAllNotifyInfo(resource.getParent());
    if (infos == null)
    {
      if (info == null) {
        return;
      }
      infos = new NotifyInfo[] { info };
    }
    else
    {
      Map infoMap = new HashMap();
      for (int i = 0; i < infos.length; i++)
      {
        NotifyInfo notifyInfo = infos[i];
        infoMap.put(notifyInfo.getName(), notifyInfo);
      }
      if (info == null) {
        infoMap.remove(resource.getName());
      } else {
        infoMap.put(info.getName(), info);
      }
      NotifyInfo[] newInfos = new NotifyInfo[infoMap.size()];
      int i = 0;
      for (Iterator iter = infoMap.values().iterator(); iter.hasNext();) {
        newInfos[(i++)] = ((NotifyInfo)iter.next());
      }
      infos = newInfos;
    }
    SyncFileWriter.writeAllNotifyInfo(resource.getParent(), infos);
  }
  
  public NotifyInfo getNotifyInfo(IResource resource)
    throws CVSException
  {
    NotifyInfo[] infos = SyncFileWriter.readAllNotifyInfo(resource.getParent());
    if (infos == null) {
      return null;
    }
    for (int i = 0; i < infos.length; i++)
    {
      NotifyInfo notifyInfo = infos[i];
      if (notifyInfo.getName().equals(resource.getName())) {
        return notifyInfo;
      }
    }
    return null;
  }
  
  public void deleteNotifyInfo(IResource resource)
    throws CVSException
  {
    NotifyInfo[] infos = SyncFileWriter.readAllNotifyInfo(resource.getParent());
    if (infos == null) {
      return;
    }
    Map infoMap = new HashMap();
    for (int i = 0; i < infos.length; i++)
    {
      NotifyInfo notifyInfo = infos[i];
      infoMap.put(notifyInfo.getName(), notifyInfo);
    }
    infoMap.remove(resource.getName());
    NotifyInfo[] newInfos = new NotifyInfo[infoMap.size()];
    int i = 0;
    for (Iterator iter = infoMap.values().iterator(); iter.hasNext();) {
      newInfos[(i++)] = ((NotifyInfo)iter.next());
    }
    SyncFileWriter.writeAllNotifyInfo(resource.getParent(), newInfos);
  }
  
  public void setBaserevInfo(IResource resource, BaserevInfo info)
    throws CVSException
  {
    BaserevInfo[] infos = SyncFileWriter.readAllBaserevInfo(resource.getParent());
    if (infos == null)
    {
      infos = new BaserevInfo[] { info };
    }
    else
    {
      Map infoMap = new HashMap();
      for (int i = 0; i < infos.length; i++) {
        infoMap.put(infos[i].getName(), infos[i]);
      }
      infoMap.put(info.getName(), info);
      BaserevInfo[] newInfos = new BaserevInfo[infoMap.size()];
      int i = 0;
      for (Iterator iter = infoMap.values().iterator(); iter.hasNext();) {
        newInfos[(i++)] = ((BaserevInfo)iter.next());
      }
      infos = newInfos;
    }
    SyncFileWriter.writeAllBaserevInfo(resource.getParent(), infos);
  }
  
  public BaserevInfo getBaserevInfo(IResource resource)
    throws CVSException
  {
    BaserevInfo[] infos = SyncFileWriter.readAllBaserevInfo(resource.getParent());
    if (infos == null) {
      return null;
    }
    for (int i = 0; i < infos.length; i++)
    {
      BaserevInfo info = infos[i];
      if (info.getName().equals(resource.getName())) {
        return info;
      }
    }
    return null;
  }
  
  public void deleteBaserevInfo(IResou
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Further reading...

For more information on Java 1.5 Tiger, you may find Java 1.5 Tiger, A developer's Notebook by D. Flanagan and B. McLaughlin from O'Reilly of interest.

New!JAR listings


Copyright 2006-2019. Infinite Loop Ltd