@Override
    protected void updateStatus(Attributes attributes, PortableStatus status, Lock.Builder lock)
        throws SAXException {
      final StatusType propertiesStatus = parsePropertiesStatus(attributes);
      status.setRemotePropertiesStatus(propertiesStatus);

      final StatusType contentsStatus = parseContentsStatus(attributes);
      status.setRemoteContentsStatus(contentsStatus);
    }
 private void newPending(final Convertor<File, Info> infoGetter) {
   final PortableStatus status = new PortableStatus();
   myPending = status;
   status.setInfoGetter(
       new Getter<Info>() {
         @Override
         public Info get() {
           return infoGetter.convert(status.getFile());
         }
       });
 }
    @Override
    protected void updateStatus(Attributes attributes, PortableStatus status, Lock.Builder lock)
        throws SAXException {
      final String path = attributes.getValue("path");
      assertSAX(path != null);
      final File file = SvnUtil.resolvePath(myBase, path);
      status.setFile(file);
      final boolean exists = file.exists();
      if (exists) {
        status.setKind(exists, NodeKind.from(file.isDirectory()));
      } else {
        // this is a hack. This is done so because of strange svn native client output:
        /*
                c:\TestProjects\sortedProjects\Subversion\local\withExt82420\mod4>svn st --xml
                <?xml version="1.0" encoding="UTF-8"?>
                <status>
                <target
                   path=".">
                <entry
                   path="mod4">
                <wc-status
                   props="none"
                   item="unversioned">
                </wc-status>
                </entry>
                </target>
                </status>

                while

        c:\TestProjects\sortedProjects\Subversion\local\withExt82420\mod4>dir
         Volume in drive C has no label.
         Volume Serial Number is B4EA-B379

         Directory of c:\TestProjects\sortedProjects\Subversion\local\withExt82420\mod4

        03/09/2012  05:30 PM    <DIR>          .
        03/09/2012  05:30 PM    <DIR>          ..
        03/09/2012  05:30 PM               437 mod4.iml
        03/09/2012  05:30 PM    <DIR>          src

        and no "mod4" under

                */
        final StatusType ns = status.getNodeStatus();
        if (myBase.getName().equals(path)
            && !StatusType.MISSING.equals(ns)
            && !StatusType.STATUS_DELETED.equals(ns)) {
          status.setKind(true, NodeKind.DIR);
          status.setFile(myBase);
          status.setPath("");
          return;
        }
        status.setKind(exists, NodeKind.UNKNOWN);
      }
      status.setPath(path);
    }
 @Override
 protected void updateStatus(Attributes attributes, PortableStatus status, Lock.Builder lock)
     throws SAXException {
   final String revision = attributes.getValue("revision");
   if (!StringUtil.isEmpty(revision)) {
     status.setCommittedRevision(SVNRevision.create(Long.valueOf(revision)));
   }
 }
    @Override
    protected void updateStatus(Attributes attributes, PortableStatus status, Lock.Builder lock)
        throws SAXException {
      final StatusType propertiesStatus = parsePropertiesStatus(attributes);
      status.setPropertiesStatus(propertiesStatus);
      final StatusType contentsStatus = parseContentsStatus(attributes);
      status.setContentsStatus(contentsStatus);

      if (StatusType.STATUS_CONFLICTED.equals(propertiesStatus)
          || StatusType.STATUS_CONFLICTED.equals(contentsStatus)) {
        status.setIsConflicted(true);
      }

      // optional
      final String locked = attributes.getValue("wc-locked");
      if (locked != null && Boolean.parseBoolean(locked)) {
        status.setIsLocked(true);
      }
      final String copied = attributes.getValue("copied");
      if (copied != null && Boolean.parseBoolean(copied)) {
        status.setIsCopied(true);
      }
      final String treeConflicted = attributes.getValue("tree-conflicted");
      if (treeConflicted != null && Boolean.parseBoolean(treeConflicted)) {
        status.setIsConflicted(true);
      }

      final String switched = attributes.getValue("switched");
      if (switched != null && Boolean.parseBoolean(switched)) {
        status.setIsSwitched(true);
      }

      final String revision = attributes.getValue("revision");
      if (!StringUtil.isEmptyOrSpaces(revision)) {
        try {
          final long number = Long.parseLong(revision);
          status.setRevision(SVNRevision.create(number));
        } catch (NumberFormatException e) {
          throw new SAXException(e);
        }
      }
    }