chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dcaru...@apache.org
Subject svn commit: r934889 [2/5] - in /incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src: main/java/org/apache/chemistry/opencmis/client/ main/java/org/apache/chemistry/opencmis/client/runtime/ main/java/org/apach...
Date Fri, 16 Apr 2010 14:07:12 GMT
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/OperationContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/OperationContextImpl.java?rev=934889&r1=934888&r2=934889&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/OperationContextImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/OperationContextImpl.java Fri Apr 16 14:07:11 2010
@@ -32,436 +32,456 @@ import org.apache.chemistry.opencmis.com
  */
 public class OperationContextImpl implements OperationContext, Serializable {
 
-  public static final String PROPERTIES_STAR = "*";
-  public static final String RENDITION_NONE = "cmis:none";
+	public static final String PROPERTIES_STAR = "*";
+	public static final String RENDITION_NONE = "cmis:none";
 
-  private static final long serialVersionUID = 1L;
+	private static final long serialVersionUID = 1L;
 
-  private TreeSet<String> filter;
-  private boolean includeAcls;
-  private boolean includeAllowableActions;
-  private boolean includePolicies;
-  private IncludeRelationships includeRelationships;
-  private TreeSet<String> renditionFilter;
-  private boolean includePathSegments;
-  private String orderBy;
-  private boolean cacheEnabled;
-  private String cacheKey;
-
-  /**
-   * Default constructor.
-   */
-  public OperationContextImpl() {
-    setFilter(null);
-    setIncludeAcls(false);
-    setIncludeAllowableActions(true);
-    setIncludePolicies(false);
-    setIncludeRelationships(IncludeRelationships.NONE);
-    setRenditionFilter(null);
-    setIncludePathSegments(true);
-    setOrderBy(null);
-    setCacheEnabled(false);
-    generateCacheKey();
-  }
-
-  /**
-   * Copy constructor.
-   */
-  public OperationContextImpl(OperationContext source) {
-    setFilter(source.getFilter());
-    setIncludeAcls(source.isIncludeAcls());
-    setIncludeAllowableActions(source.isIncludeAllowableActions());
-    setIncludePolicies(source.isIncludePolicies());
-    setIncludeRelationships(source.getIncludeRelationships());
-    setRenditionFilter(source.getRenditionFilter());
-    setIncludePathSegments(source.isIncludePathSegments());
-    setOrderBy(source.getOrderBy());
-    setCacheEnabled(source.isCacheEnabled());
-    generateCacheKey();
-  }
-
-  /**
-   * Constructor with parameters.
-   */
-  public OperationContextImpl(Set<String> propertyFilter, boolean includeAcls,
-      boolean includeAllowableActions, boolean includePolicies,
-      IncludeRelationships includeRelationships, Set<String> renditionFilter,
-      boolean includePathSegments, String orderBy, boolean cacheEnabled) {
-    setFilter(propertyFilter);
-    setIncludeAcls(includeAcls);
-    setIncludeAllowableActions(includeAllowableActions);
-    setIncludePolicies(includePolicies);
-    setIncludeRelationships(includeRelationships);
-    setRenditionFilter(renditionFilter);
-    setIncludePathSegments(includePathSegments);
-    setOrderBy(orderBy);
-    setCacheEnabled(cacheEnabled);
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getFilter()
-   */
-  public Set<String> getFilter() {
-    if (this.filter == null) {
-      return null;
-    }
-
-    return Collections.unmodifiableSet(this.filter);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setFilter(java.util.Set)
-   */
-  public void setFilter(Set<String> propertyFilter) {
-    if (propertyFilter != null) {
-      TreeSet<String> tempSet = new TreeSet<String>();
-
-      for (String oid : propertyFilter) {
-        if (oid == null) {
-          continue;
-        }
-
-        String toid = oid.trim();
-        if (toid.length() == 0) {
-          continue;
-        }
-        if (toid.equals(PROPERTIES_STAR)) {
-          tempSet = new TreeSet<String>();
-          tempSet.add(PROPERTIES_STAR);
-          break;
-        }
-        if (toid.indexOf(',') > -1) {
-          throw new IllegalArgumentException("Property id must not contain a comma!");
-        }
-
-        tempSet.add(toid);
-      }
-
-      if (tempSet.size() == 0) {
-        this.filter = null;
-      }
-      else {
-        this.filter = tempSet;
-      }
-    }
-    else {
-      this.filter = null;
-    }
-
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setFilter(java.lang.String)
-   */
-  public void setFilterString(String propertyFilter) {
-    if (propertyFilter == null) {
-      setFilter(null);
-      return;
-    }
-
-    String[] propertyIds = propertyFilter.split(",");
-    TreeSet<String> tempSet = new TreeSet<String>();
-    for (String pid : propertyIds) {
-      tempSet.add(pid);
-    }
-
-    setFilter(tempSet);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getFilterString()
-   */
-  public String getFilterString() {
-    if (this.filter == null) {
-      return null;
-    }
-
-    if (this.filter.contains(PROPERTIES_STAR)) {
-      return PROPERTIES_STAR;
-    }
-
-    this.filter.add(PropertyIds.OBJECT_ID);
-    this.filter.add(PropertyIds.BASE_TYPE_ID);
-    this.filter.add(PropertyIds.OBJECT_TYPE_ID);
-
-    StringBuilder sb = new StringBuilder();
-
-    for (String oid : this.filter) {
-      if (sb.length() > 0) {
-        sb.append(",");
-      }
-
-      sb.append(oid);
-    }
-
-    return sb.toString();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#isIncludeAcls()
-   */
-  public boolean isIncludeAcls() {
-    return includeAcls;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setIncludeAcls(boolean)
-   */
-  public void setIncludeAcls(boolean include) {
-    this.includeAcls = include;
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#isIncludeAllowableActions()
-   */
-  public boolean isIncludeAllowableActions() {
-    return this.includeAllowableActions;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setIncludeAllowableActions(boolean)
-   */
-  public void setIncludeAllowableActions(boolean include) {
-    this.includeAllowableActions = include;
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#isIncludePolicies()
-   */
-  public boolean isIncludePolicies() {
-    return this.includePolicies;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setIncludePolicies(boolean)
-   */
-  public void setIncludePolicies(boolean include) {
-    this.includePolicies = include;
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getIncludeRelationships()
-   */
-  public IncludeRelationships getIncludeRelationships() {
-    return this.includeRelationships;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see
-   * org.apache.opencmis.client.api.OperationContext#setIncludeRelationships(org.apache.opencmis
-   * .commons.enums.IncludeRelationships)
-   */
-  public void setIncludeRelationships(IncludeRelationships include) {
-    this.includeRelationships = include;
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getRenditionFilter()
-   */
-  public Set<String> getRenditionFilter() {
-    if (this.renditionFilter == null) {
-      return null;
-    }
-
-    return Collections.unmodifiableSet(this.renditionFilter);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setRenditionFilter(java.util.Set)
-   */
-  public void setRenditionFilter(Set<String> renditionFilter) {
-    TreeSet<String> tempSet = new TreeSet<String>();
-
-    if (renditionFilter != null) {
-      for (String rf : renditionFilter) {
-        if (rf == null) {
-          continue;
-        }
-
-        String trf = rf.trim();
-        if (trf.length() == 0) {
-          continue;
-        }
-        if (trf.indexOf(',') > -1) {
-          throw new IllegalArgumentException("Rendition must not contain a comma!");
-        }
-
-        tempSet.add(trf);
-      }
-
-      if (tempSet.size() == 0) {
-        tempSet.add(RENDITION_NONE);
-      }
-    }
-    else {
-      tempSet.add(RENDITION_NONE);
-    }
-
-    this.renditionFilter = tempSet;
-    generateCacheKey();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setRenditionFilterString(java.lang.String)
-   */
-  public void setRenditionFilterString(String renditionFilter) {
-    if (renditionFilter == null) {
-      setRenditionFilter(null);
-      return;
-    }
-
-    String[] renditions = renditionFilter.split(",");
-    TreeSet<String> tempSet = new TreeSet<String>();
-    for (String rend : renditions) {
-      tempSet.add(rend);
-    }
-
-    setRenditionFilter(tempSet);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getRenditionFilterString()
-   */
-  public String getRenditionFilterString() {
-    if (this.renditionFilter == null) {
-      return null;
-    }
-
-    StringBuilder sb = new StringBuilder();
-
-    for (String rf : this.renditionFilter) {
-      if (sb.length() > 0) {
-        sb.append(",");
-      }
-
-      sb.append(rf);
-    }
-
-    return sb.toString();
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#isIncludePathSegments()
-   */
-  public boolean isIncludePathSegments() {
-    return includePathSegments;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setIncludePathSegments(boolean)
-   */
-  public void setIncludePathSegments(boolean include) {
-    this.includePathSegments = include;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getOrderBy()
-   */
-  public String getOrderBy() {
-    return this.orderBy;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setOrderBy(java.lang.String)
-   */
-  public void setOrderBy(String orderBy) {
-    this.orderBy = orderBy;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#isCacheEnabled()
-   */
-  public boolean isCacheEnabled() {
-    return cacheEnabled;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#setCacheEnabled(boolean)
-   */
-  public void setCacheEnabled(boolean cacheEnabled) {
-    this.cacheEnabled = cacheEnabled;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.opencmis.client.api.OperationContext#getCacheKey()
-   */
-  public String getCacheKey() {
-    return cacheKey;
-  }
-
-  /**
-   * Generates a new cache key from all parameters that are relevant for caching.
-   */
-  protected void generateCacheKey() {
-    if (!cacheEnabled) {
-      cacheKey = null;
-    }
-
-    StringBuilder sb = new StringBuilder();
-
-    sb.append(includeAcls ? "1" : "0");
-    sb.append(includeAllowableActions ? "1" : "0");
-    sb.append(includePolicies ? "1" : "0");
-    sb.append("|");
-    sb.append(filter == null ? "" : getFilterString());
-    sb.append("|");
-    sb.append(includeRelationships == null ? "" : includeRelationships.value());
+	private TreeSet<String> filter;
+	private boolean includeAcls;
+	private boolean includeAllowableActions;
+	private boolean includePolicies;
+	private IncludeRelationships includeRelationships;
+	private TreeSet<String> renditionFilter;
+	private boolean includePathSegments;
+	private String orderBy;
+	private boolean cacheEnabled;
+	private String cacheKey;
+
+	/**
+	 * Default constructor.
+	 */
+	public OperationContextImpl() {
+		setFilter(null);
+		setIncludeAcls(false);
+		setIncludeAllowableActions(true);
+		setIncludePolicies(false);
+		setIncludeRelationships(IncludeRelationships.NONE);
+		setRenditionFilter(null);
+		setIncludePathSegments(true);
+		setOrderBy(null);
+		setCacheEnabled(false);
+		generateCacheKey();
+	}
+
+	/**
+	 * Copy constructor.
+	 */
+	public OperationContextImpl(OperationContext source) {
+		setFilter(source.getFilter());
+		setIncludeAcls(source.isIncludeAcls());
+		setIncludeAllowableActions(source.isIncludeAllowableActions());
+		setIncludePolicies(source.isIncludePolicies());
+		setIncludeRelationships(source.getIncludeRelationships());
+		setRenditionFilter(source.getRenditionFilter());
+		setIncludePathSegments(source.isIncludePathSegments());
+		setOrderBy(source.getOrderBy());
+		setCacheEnabled(source.isCacheEnabled());
+		generateCacheKey();
+	}
+
+	/**
+	 * Constructor with parameters.
+	 */
+	public OperationContextImpl(Set<String> propertyFilter, boolean includeAcls, boolean includeAllowableActions,
+			boolean includePolicies, IncludeRelationships includeRelationships, Set<String> renditionFilter,
+			boolean includePathSegments, String orderBy, boolean cacheEnabled) {
+		setFilter(propertyFilter);
+		setIncludeAcls(includeAcls);
+		setIncludeAllowableActions(includeAllowableActions);
+		setIncludePolicies(includePolicies);
+		setIncludeRelationships(includeRelationships);
+		setRenditionFilter(renditionFilter);
+		setIncludePathSegments(includePathSegments);
+		setOrderBy(orderBy);
+		setCacheEnabled(cacheEnabled);
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#getFilter()
+	 */
+	public Set<String> getFilter() {
+		if (this.filter == null) {
+			return null;
+		}
+
+		return Collections.unmodifiableSet(this.filter);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setFilter(java.util.Set)
+	 */
+	public void setFilter(Set<String> propertyFilter) {
+		if (propertyFilter != null) {
+			TreeSet<String> tempSet = new TreeSet<String>();
+
+			for (String oid : propertyFilter) {
+				if (oid == null) {
+					continue;
+				}
+
+				String toid = oid.trim();
+				if (toid.length() == 0) {
+					continue;
+				}
+				if (toid.equals(PROPERTIES_STAR)) {
+					tempSet = new TreeSet<String>();
+					tempSet.add(PROPERTIES_STAR);
+					break;
+				}
+				if (toid.indexOf(',') > -1) {
+					throw new IllegalArgumentException("Property id must not contain a comma!");
+				}
+
+				tempSet.add(toid);
+			}
+
+			if (tempSet.size() == 0) {
+				this.filter = null;
+			} else {
+				this.filter = tempSet;
+			}
+		} else {
+			this.filter = null;
+		}
+
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setFilter(java.lang.String
+	 * )
+	 */
+	public void setFilterString(String propertyFilter) {
+		if (propertyFilter == null) {
+			setFilter(null);
+			return;
+		}
+
+		String[] propertyIds = propertyFilter.split(",");
+		TreeSet<String> tempSet = new TreeSet<String>();
+		for (String pid : propertyIds) {
+			tempSet.add(pid);
+		}
+
+		setFilter(tempSet);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#getFilterString()
+	 */
+	public String getFilterString() {
+		if (this.filter == null) {
+			return null;
+		}
+
+		if (this.filter.contains(PROPERTIES_STAR)) {
+			return PROPERTIES_STAR;
+		}
+
+		this.filter.add(PropertyIds.OBJECT_ID);
+		this.filter.add(PropertyIds.BASE_TYPE_ID);
+		this.filter.add(PropertyIds.OBJECT_TYPE_ID);
+
+		StringBuilder sb = new StringBuilder();
+
+		for (String oid : this.filter) {
+			if (sb.length() > 0) {
+				sb.append(",");
+			}
+
+			sb.append(oid);
+		}
+
+		return sb.toString();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#isIncludeAcls()
+	 */
+	public boolean isIncludeAcls() {
+		return includeAcls;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setIncludeAcls(boolean)
+	 */
+	public void setIncludeAcls(boolean include) {
+		this.includeAcls = include;
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#isIncludeAllowableActions
+	 * ()
+	 */
+	public boolean isIncludeAllowableActions() {
+		return this.includeAllowableActions;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setIncludeAllowableActions
+	 * (boolean)
+	 */
+	public void setIncludeAllowableActions(boolean include) {
+		this.includeAllowableActions = include;
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#isIncludePolicies()
+	 */
+	public boolean isIncludePolicies() {
+		return this.includePolicies;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setIncludePolicies(boolean
+	 * )
+	 */
+	public void setIncludePolicies(boolean include) {
+		this.includePolicies = include;
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#getIncludeRelationships()
+	 */
+	public IncludeRelationships getIncludeRelationships() {
+		return this.includeRelationships;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setIncludeRelationships
+	 * (org.apache.opencmis .commons.enums.IncludeRelationships)
+	 */
+	public void setIncludeRelationships(IncludeRelationships include) {
+		this.includeRelationships = include;
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#getRenditionFilter()
+	 */
+	public Set<String> getRenditionFilter() {
+		if (this.renditionFilter == null) {
+			return null;
+		}
+
+		return Collections.unmodifiableSet(this.renditionFilter);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setRenditionFilter(java
+	 * .util.Set)
+	 */
+	public void setRenditionFilter(Set<String> renditionFilter) {
+		TreeSet<String> tempSet = new TreeSet<String>();
+
+		if (renditionFilter != null) {
+			for (String rf : renditionFilter) {
+				if (rf == null) {
+					continue;
+				}
+
+				String trf = rf.trim();
+				if (trf.length() == 0) {
+					continue;
+				}
+				if (trf.indexOf(',') > -1) {
+					throw new IllegalArgumentException("Rendition must not contain a comma!");
+				}
+
+				tempSet.add(trf);
+			}
+
+			if (tempSet.size() == 0) {
+				tempSet.add(RENDITION_NONE);
+			}
+		} else {
+			tempSet.add(RENDITION_NONE);
+		}
+
+		this.renditionFilter = tempSet;
+		generateCacheKey();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setRenditionFilterString
+	 * (java.lang.String)
+	 */
+	public void setRenditionFilterString(String renditionFilter) {
+		if (renditionFilter == null) {
+			setRenditionFilter(null);
+			return;
+		}
+
+		String[] renditions = renditionFilter.split(",");
+		TreeSet<String> tempSet = new TreeSet<String>();
+		for (String rend : renditions) {
+			tempSet.add(rend);
+		}
+
+		setRenditionFilter(tempSet);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#getRenditionFilterString
+	 * ()
+	 */
+	public String getRenditionFilterString() {
+		if (this.renditionFilter == null) {
+			return null;
+		}
+
+		StringBuilder sb = new StringBuilder();
+
+		for (String rf : this.renditionFilter) {
+			if (sb.length() > 0) {
+				sb.append(",");
+			}
+
+			sb.append(rf);
+		}
+
+		return sb.toString();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#isIncludePathSegments()
+	 */
+	public boolean isIncludePathSegments() {
+		return includePathSegments;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setIncludePathSegments
+	 * (boolean)
+	 */
+	public void setIncludePathSegments(boolean include) {
+		this.includePathSegments = include;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#getOrderBy()
+	 */
+	public String getOrderBy() {
+		return this.orderBy;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setOrderBy(java.lang.
+	 * String)
+	 */
+	public void setOrderBy(String orderBy) {
+		this.orderBy = orderBy;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#isCacheEnabled()
+	 */
+	public boolean isCacheEnabled() {
+		return cacheEnabled;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.OperationContext#setCacheEnabled(boolean)
+	 */
+	public void setCacheEnabled(boolean cacheEnabled) {
+		this.cacheEnabled = cacheEnabled;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.OperationContext#getCacheKey()
+	 */
+	public String getCacheKey() {
+		return cacheKey;
+	}
+
+	/**
+	 * Generates a new cache key from all parameters that are relevant for
+	 * caching.
+	 */
+	protected void generateCacheKey() {
+		if (!cacheEnabled) {
+			cacheKey = null;
+		}
+
+		StringBuilder sb = new StringBuilder();
+
+		sb.append(includeAcls ? "1" : "0");
+		sb.append(includeAllowableActions ? "1" : "0");
+		sb.append(includePolicies ? "1" : "0");
+		sb.append("|");
+		sb.append(filter == null ? "" : getFilterString());
+		sb.append("|");
+		sb.append(includeRelationships == null ? "" : includeRelationships.value());
 
-    sb.append("|");
-    sb.append(renditionFilter == null ? "" : getRenditionFilterString());
+		sb.append("|");
+		sb.append(renditionFilter == null ? "" : getRenditionFilterString());
 
-    cacheKey = sb.toString();
-  }
+		cacheKey = sb.toString();
+	}
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java?rev=934889&r1=934888&r2=934889&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentDocumentImpl.java Fri Apr 16 14:07:11 2010
@@ -44,331 +44,327 @@ import org.apache.chemistry.opencmis.com
 
 public class PersistentDocumentImpl extends AbstractPersistentFilableCmisObject implements Document {
 
-  /**
-   * Constructor.
-   */
-  public PersistentDocumentImpl(PersistentSessionImpl session, ObjectType objectType,
-      ObjectData objectData, OperationContext context) {
-    initialize(session, objectType, objectData, context);
-  }
-
-  // properties
-
-  public String getCheckinComment() {
-    return getPropertyValue(PropertyIds.CHECKIN_COMMENT);
-  }
-
-  public String getVersionLabel() {
-    return getPropertyValue(PropertyIds.VERSION_LABEL);
-  }
-
-  public String getVersionSeriesId() {
-    return getPropertyValue(PropertyIds.VERSION_SERIES_ID);
-  }
-
-  public String getVersionSeriesCheckedOutId() {
-    return getPropertyValue(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID);
-  }
-
-  public String getVersionSeriesCheckedOutBy() {
-    return getPropertyValue(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY);
-  }
-
-  public Boolean isImmutable() {
-    return getPropertyValue(PropertyIds.IS_IMMUTABLE);
-  }
-
-  public Boolean isLatestMajorVersion() {
-    return getPropertyValue(PropertyIds.IS_LATEST_MAJOR_VERSION);
-  }
-
-  public Boolean isLatestVersion() {
-    return getPropertyValue(PropertyIds.IS_LATEST_VERSION);
-  }
-
-  public Boolean isMajorVersion() {
-    return getPropertyValue(PropertyIds.IS_MAJOR_VERSION);
-  }
-
-  public Boolean isVersionSeriesCheckedOut() {
-    return getPropertyValue(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT);
-  }
-
-  public long getContentStreamLength() {
-    BigInteger bigInt = getPropertyValue(PropertyIds.CONTENT_STREAM_LENGTH);
-    return (bigInt == null) ? (long) -1 : bigInt.longValue();
-  }
-
-  public String getContentStreamMimeType() {
-    return getPropertyValue(PropertyIds.CONTENT_STREAM_MIME_TYPE);
-  }
-
-  public String getContentStreamFileName() {
-    return getPropertyValue(PropertyIds.CONTENT_STREAM_FILE_NAME);
-  }
-
-  public String getContentStreamId() {
-    return getPropertyValue(PropertyIds.CONTENT_STREAM_ID);
-  }
-
-  // operations
-
-  public Document copy(List<Property<?>> properties, VersioningState versioningState,
-      List<Policy> policies, List<Ace> addACEs, List<Ace> removeACEs) {
-    throw new CmisRuntimeException("not implemented");
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#deleteAllVersions()
-   */
-  public void deleteAllVersions() {
-    delete(true);
-  }
-
-  // versioning
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#checkOut()
-   */
-  public ObjectId checkOut() {
-    String objectId = getObjectId();
-    Holder<String> objectIdHolder = new Holder<String>(objectId);
-
-    getBinding().getVersioningService().checkOut(getRepositoryId(), objectIdHolder, null, null);
-
-    if (objectIdHolder.getValue() == null) {
-      return null;
-    }
-
-    return getSession().createObjectId(objectIdHolder.getValue());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#cancelCheckOut()
-   */
-  public void cancelCheckOut() {
-    String objectId = getObjectId();
-
-    getBinding().getVersioningService().cancelCheckOut(getRepositoryId(), objectId, null);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#checkIn(boolean, java.util.Map,
-   * org.apache.opencmis.client.api.ContentStream, java.lang.String, java.util.List, java.util.List,
-   * java.util.List)
-   */
-  public ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream,
-      String checkinComment, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces) {
-    String objectId;
-    ObjectType type;
-    readLock();
-    try {
-      objectId = getObjectId();
-      type = getType();
-    }
-    finally {
-      readUnlock();
-    }
-
-    Holder<String> objectIdHolder = new Holder<String>(objectId);
-
-    ObjectFactory of = getObjectFactory();
-
-    Set<Updatability> updatebility = new HashSet<Updatability>();
-    updatebility.add(Updatability.READWRITE);
-    updatebility.add(Updatability.WHENCHECKEDOUT);
-
-    getBinding().getVersioningService().checkIn(getRepositoryId(), objectIdHolder, major,
-        of.convertProperties(properties, type, updatebility),
-        of.convertContentStream(contentStream), checkinComment, of.convertPolicies(policies),
-        of.convertAces(addAces), of.convertAces(removeAces), null);
-
-    if (objectIdHolder.getValue() == null) {
-      return null;
-    }
-
-    return getSession().createObjectId(objectIdHolder.getValue());
-
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#getAllVersions()
-   */
-  public List<Document> getAllVersions() {
-    return getAllVersions(getSession().getDefaultContext());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @seeorg.apache.opencmis.client.api.Document#getAllVersions(org.apache.opencmis.client.api.
-   * OperationContext)
-   */
-  public List<Document> getAllVersions(OperationContext context) {
-    String objectId;
-    String versionSeriesId;
-
-    readLock();
-    try {
-      objectId = getObjectId();
-      versionSeriesId = getVersionSeriesId();
-    }
-    finally {
-      readUnlock();
-    }
-
-    List<ObjectData> versions = getBinding().getVersioningService().getAllVersions(
-        getRepositoryId(), objectId, versionSeriesId, context.getFilterString(),
-        context.isIncludeAllowableActions(), null);
-
-    ObjectFactory objectFactory = getSession().getObjectFactory();
-
-    List<Document> result = new ArrayList<Document>();
-    if (versions != null) {
-      for (ObjectData objectData : versions) {
-        CmisObject doc = objectFactory.convertObject(objectData, context);
-        if (!(doc instanceof Document)) {
-          // should not happen...
-          continue;
-        }
-
-        result.add((Document) doc);
-      }
-    }
-
-    return result;
-
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#getObjectOfLatestVersion(boolean)
-   */
-  public Document getObjectOfLatestVersion(boolean major) {
-    return getObjectOfLatestVersion(major, null);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#getObjectOfLatestVersion(boolean,
-   * org.apache.opencmis.client.api.OperationContext)
-   */
-  public Document getObjectOfLatestVersion(boolean major, OperationContext context) {
-    String versionSeriesId = getVersionSeriesId();
-    if (versionSeriesId == null) {
-      throw new CmisRuntimeException("Version series id is unknown!");
-    }
-
-    ObjectData objectData = getBinding().getVersioningService().getObjectOfLatestVersion(
-        getRepositoryId(), versionSeriesId, major, context.getFilterString(),
-        context.isIncludeAllowableActions(), context.getIncludeRelationships(),
-        context.getRenditionFilterString(), context.isIncludePolicies(), context.isIncludeAcls(),
-        null);
-
-    ObjectFactory objectFactory = getSession().getObjectFactory();
-
-    CmisObject result = objectFactory.convertObject(objectData, context);
-    if (!(result instanceof Document)) {
-      throw new CmisRuntimeException("Latest version is not a document!");
-    }
-
-    return (Document) result;
-  }
-
-  // content operations
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#getContentStream()
-   */
-  public ContentStream getContentStream() {
-    String objectId = getObjectId();
-
-    // get the stream
-    ContentStream contentStream = getBinding().getObjectService().getContentStream(
-        getRepositoryId(), objectId, null, null, null, null);
-
-    // TODO: what should happen if the length is not set?
-    long length = (contentStream.getBigLength() == null ? -1 : contentStream.getBigLength().longValue());
-
-    // convert and return stream object
-    return getSession().getObjectFactory().createContentStream(contentStream.getFileName(), length,
-        contentStream.getMimeType(), contentStream.getStream());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#setContentStream(boolean,
-   * org.apache.opencmis.client.api.ContentStream)
-   */
-  public ObjectId setContentStream(ContentStream contentStream, boolean overwrite) {
-    String objectId;
-    String changeToken;
-
-    readLock();
-    try {
-      objectId = getObjectId();
-      changeToken = getPropertyValue(PropertyIds.CHANGE_TOKEN);
-    }
-    finally {
-      readUnlock();
-    }
-
-    Holder<String> objectIdHolder = new Holder<String>(objectId);
-    Holder<String> changeTokenHolder = new Holder<String>(changeToken);
-
-    getBinding().getObjectService().setContentStream(getRepositoryId(), objectIdHolder, overwrite,
-        changeTokenHolder, getObjectFactory().convertContentStream(contentStream), null);
-
-    if (objectIdHolder.getValue() == null) {
-      return null;
-    }
-
-    return getSession().createObjectId(objectIdHolder.getValue());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Document#deleteContentStream()
-   */
-  public ObjectId deleteContentStream() {
-    String objectId;
-    String changeToken;
-
-    readLock();
-    try {
-      objectId = getObjectId();
-      changeToken = getPropertyValue(PropertyIds.CHANGE_TOKEN);
-    }
-    finally {
-      readUnlock();
-    }
-
-    Holder<String> objectIdHolder = new Holder<String>(objectId);
-    Holder<String> changeTokenHolder = new Holder<String>(changeToken);
-
-    getBinding().getObjectService().deleteContentStream(getRepositoryId(), objectIdHolder,
-        changeTokenHolder, null);
-
-    if (objectIdHolder.getValue() == null) {
-      return null;
-    }
+	/**
+	 * Constructor.
+	 */
+	public PersistentDocumentImpl(PersistentSessionImpl session, ObjectType objectType, ObjectData objectData,
+			OperationContext context) {
+		initialize(session, objectType, objectData, context);
+	}
+
+	// properties
+
+	public String getCheckinComment() {
+		return getPropertyValue(PropertyIds.CHECKIN_COMMENT);
+	}
+
+	public String getVersionLabel() {
+		return getPropertyValue(PropertyIds.VERSION_LABEL);
+	}
+
+	public String getVersionSeriesId() {
+		return getPropertyValue(PropertyIds.VERSION_SERIES_ID);
+	}
+
+	public String getVersionSeriesCheckedOutId() {
+		return getPropertyValue(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID);
+	}
+
+	public String getVersionSeriesCheckedOutBy() {
+		return getPropertyValue(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY);
+	}
+
+	public Boolean isImmutable() {
+		return getPropertyValue(PropertyIds.IS_IMMUTABLE);
+	}
+
+	public Boolean isLatestMajorVersion() {
+		return getPropertyValue(PropertyIds.IS_LATEST_MAJOR_VERSION);
+	}
+
+	public Boolean isLatestVersion() {
+		return getPropertyValue(PropertyIds.IS_LATEST_VERSION);
+	}
+
+	public Boolean isMajorVersion() {
+		return getPropertyValue(PropertyIds.IS_MAJOR_VERSION);
+	}
+
+	public Boolean isVersionSeriesCheckedOut() {
+		return getPropertyValue(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT);
+	}
+
+	public long getContentStreamLength() {
+		BigInteger bigInt = getPropertyValue(PropertyIds.CONTENT_STREAM_LENGTH);
+		return (bigInt == null) ? (long) -1 : bigInt.longValue();
+	}
+
+	public String getContentStreamMimeType() {
+		return getPropertyValue(PropertyIds.CONTENT_STREAM_MIME_TYPE);
+	}
+
+	public String getContentStreamFileName() {
+		return getPropertyValue(PropertyIds.CONTENT_STREAM_FILE_NAME);
+	}
+
+	public String getContentStreamId() {
+		return getPropertyValue(PropertyIds.CONTENT_STREAM_ID);
+	}
+
+	// operations
+
+	public Document copy(List<Property<?>> properties, VersioningState versioningState, List<Policy> policies,
+			List<Ace> addACEs, List<Ace> removeACEs) {
+		throw new CmisRuntimeException("not implemented");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#deleteAllVersions()
+	 */
+	public void deleteAllVersions() {
+		delete(true);
+	}
+
+	// versioning
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#checkOut()
+	 */
+	public ObjectId checkOut() {
+		String objectId = getObjectId();
+		Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+		getBinding().getVersioningService().checkOut(getRepositoryId(), objectIdHolder, null, null);
+
+		if (objectIdHolder.getValue() == null) {
+			return null;
+		}
+
+		return getSession().createObjectId(objectIdHolder.getValue());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#cancelCheckOut()
+	 */
+	public void cancelCheckOut() {
+		String objectId = getObjectId();
+
+		getBinding().getVersioningService().cancelCheckOut(getRepositoryId(), objectId, null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#checkIn(boolean,
+	 * java.util.Map, org.apache.opencmis.client.api.ContentStream,
+	 * java.lang.String, java.util.List, java.util.List, java.util.List)
+	 */
+	public ObjectId checkIn(boolean major, Map<String, ?> properties, ContentStream contentStream,
+			String checkinComment, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces) {
+		String objectId;
+		ObjectType type;
+		readLock();
+		try {
+			objectId = getObjectId();
+			type = getType();
+		} finally {
+			readUnlock();
+		}
+
+		Holder<String> objectIdHolder = new Holder<String>(objectId);
+
+		ObjectFactory of = getObjectFactory();
+
+		Set<Updatability> updatebility = new HashSet<Updatability>();
+		updatebility.add(Updatability.READWRITE);
+		updatebility.add(Updatability.WHENCHECKEDOUT);
+
+		getBinding().getVersioningService()
+				.checkIn(getRepositoryId(), objectIdHolder, major,
+						of.convertProperties(properties, type, updatebility), of.convertContentStream(contentStream),
+						checkinComment, of.convertPolicies(policies), of.convertAces(addAces),
+						of.convertAces(removeAces), null);
+
+		if (objectIdHolder.getValue() == null) {
+			return null;
+		}
+
+		return getSession().createObjectId(objectIdHolder.getValue());
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#getAllVersions()
+	 */
+	public List<Document> getAllVersions() {
+		return getAllVersions(getSession().getDefaultContext());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @seeorg.apache.opencmis.client.api.Document#getAllVersions(org.apache.
+	 * opencmis.client.api. OperationContext)
+	 */
+	public List<Document> getAllVersions(OperationContext context) {
+		String objectId;
+		String versionSeriesId;
+
+		readLock();
+		try {
+			objectId = getObjectId();
+			versionSeriesId = getVersionSeriesId();
+		} finally {
+			readUnlock();
+		}
+
+		List<ObjectData> versions = getBinding().getVersioningService().getAllVersions(getRepositoryId(), objectId,
+				versionSeriesId, context.getFilterString(), context.isIncludeAllowableActions(), null);
+
+		ObjectFactory objectFactory = getSession().getObjectFactory();
+
+		List<Document> result = new ArrayList<Document>();
+		if (versions != null) {
+			for (ObjectData objectData : versions) {
+				CmisObject doc = objectFactory.convertObject(objectData, context);
+				if (!(doc instanceof Document)) {
+					// should not happen...
+					continue;
+				}
+
+				result.add((Document) doc);
+			}
+		}
+
+		return result;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.Document#getObjectOfLatestVersion(boolean)
+	 */
+	public Document getObjectOfLatestVersion(boolean major) {
+		return getObjectOfLatestVersion(major, null);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.Document#getObjectOfLatestVersion(boolean,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public Document getObjectOfLatestVersion(boolean major, OperationContext context) {
+		String versionSeriesId = getVersionSeriesId();
+		if (versionSeriesId == null) {
+			throw new CmisRuntimeException("Version series id is unknown!");
+		}
+
+		ObjectData objectData = getBinding().getVersioningService().getObjectOfLatestVersion(getRepositoryId(),
+				versionSeriesId, major, context.getFilterString(), context.isIncludeAllowableActions(),
+				context.getIncludeRelationships(), context.getRenditionFilterString(), context.isIncludePolicies(),
+				context.isIncludeAcls(), null);
+
+		ObjectFactory objectFactory = getSession().getObjectFactory();
+
+		CmisObject result = objectFactory.convertObject(objectData, context);
+		if (!(result instanceof Document)) {
+			throw new CmisRuntimeException("Latest version is not a document!");
+		}
+
+		return (Document) result;
+	}
+
+	// content operations
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#getContentStream()
+	 */
+	public ContentStream getContentStream() {
+		String objectId = getObjectId();
+
+		// get the stream
+		ContentStream contentStream = getBinding().getObjectService().getContentStream(getRepositoryId(), objectId,
+				null, null, null, null);
+
+		// TODO: what should happen if the length is not set?
+		long length = (contentStream.getBigLength() == null ? -1 : contentStream.getBigLength().longValue());
+
+		// convert and return stream object
+		return getSession().getObjectFactory().createContentStream(contentStream.getFileName(), length,
+				contentStream.getMimeType(), contentStream.getStream());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#setContentStream(boolean,
+	 * org.apache.opencmis.client.api.ContentStream)
+	 */
+	public ObjectId setContentStream(ContentStream contentStream, boolean overwrite) {
+		String objectId;
+		String changeToken;
+
+		readLock();
+		try {
+			objectId = getObjectId();
+			changeToken = getPropertyValue(PropertyIds.CHANGE_TOKEN);
+		} finally {
+			readUnlock();
+		}
+
+		Holder<String> objectIdHolder = new Holder<String>(objectId);
+		Holder<String> changeTokenHolder = new Holder<String>(changeToken);
+
+		getBinding().getObjectService().setContentStream(getRepositoryId(), objectIdHolder, overwrite,
+				changeTokenHolder, getObjectFactory().convertContentStream(contentStream), null);
+
+		if (objectIdHolder.getValue() == null) {
+			return null;
+		}
+
+		return getSession().createObjectId(objectIdHolder.getValue());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Document#deleteContentStream()
+	 */
+	public ObjectId deleteContentStream() {
+		String objectId;
+		String changeToken;
+
+		readLock();
+		try {
+			objectId = getObjectId();
+			changeToken = getPropertyValue(PropertyIds.CHANGE_TOKEN);
+		} finally {
+			readUnlock();
+		}
+
+		Holder<String> objectIdHolder = new Holder<String>(objectId);
+		Holder<String> changeTokenHolder = new Holder<String>(changeToken);
+
+		getBinding().getObjectService().deleteContentStream(getRepositoryId(), objectIdHolder, changeTokenHolder, null);
+
+		if (objectIdHolder.getValue() == null) {
+			return null;
+		}
 
-    return getSession().createObjectId(objectIdHolder.getValue());
-  }
+		return getSession().createObjectId(objectIdHolder.getValue());
+	}
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentFolderImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentFolderImpl.java?rev=934889&r1=934888&r2=934889&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentFolderImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentFolderImpl.java Fri Apr 16 14:07:11 2010
@@ -60,505 +60,501 @@ import org.apache.chemistry.opencmis.com
 
 public class PersistentFolderImpl extends AbstractPersistentFilableCmisObject implements Folder {
 
-  private static final Set<Updatability> CREATE_UPDATABILITY = new HashSet<Updatability>();
-  static {
-    CREATE_UPDATABILITY.add(Updatability.ONCREATE);
-    CREATE_UPDATABILITY.add(Updatability.READWRITE);
-  }
-
-  /**
-   * Constructor.
-   */
-  public PersistentFolderImpl(PersistentSessionImpl session, ObjectType objectType,
-      ObjectData objectData, OperationContext context) {
-    initialize(session, objectType, objectData, context);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#createDocument(java.util.Map,
-   * org.apache.opencmis.client.api.ContentStream,
-   * org.apache.opencmis.commons.enums.VersioningState, java.util.List, java.util.List,
-   * java.util.List, org.apache.opencmis.client.api.OperationContext)
-   */
-  public Document createDocument(Map<String, ?> properties, ContentStream contentStream,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
-      List<Ace> removeAces, OperationContext context) {
-    String objectId = getObjectId();
-
-    ObjectFactory of = getObjectFactory();
-
-    String newId = getBinding().getObjectService().createDocument(getRepositoryId(),
-        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
-        of.convertContentStream(contentStream), versioningState, of.convertPolicies(policies),
-        of.convertAces(addAces), of.convertAces(removeAces), null);
-
-    // if no context is provided the object will not be fetched
-    if ((context == null) || (newId == null)) {
-      return null;
-    }
-
-    // get the new object
-    CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
-    if (!(object instanceof Document)) {
-      throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
-    }
-
-    return (Document) object;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see
-   * org.apache.opencmis.client.api.Folder#createDocumentFromSource(org.apache.opencmis.client.api
-   * .ObjectId, java.util.Map, org.apache.opencmis.commons.enums.VersioningState, java.util.List,
-   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
-   */
-  public Document createDocumentFromSource(ObjectId source, Map<String, ?> properties,
-      VersioningState versioningState, List<Policy> policies, List<Ace> addAces,
-      List<Ace> removeAces, OperationContext context) {
-    if ((source == null) || (source.getId() == null)) {
-      throw new IllegalArgumentException("Source must be set!");
-    }
-
-    String objectId = getObjectId();
-
-    // get the type of the source document
-    ObjectType type = null;
-    if (source instanceof CmisObject) {
-      type = ((CmisObject) source).getBaseType();
-    }
-    else {
-      CmisObject sourceObj = getSession().getObject(source);
-      type = sourceObj.getType();
-    }
-
-    if (type.getBaseTypeId() != BaseTypeId.CMIS_DOCUMENT) {
-      throw new IllegalArgumentException("Source object must be a document!");
-    }
-
-    ObjectFactory of = getObjectFactory();
-
-    Set<Updatability> updatebility = new HashSet<Updatability>();
-    updatebility.add(Updatability.READWRITE);
-
-    String newId = getBinding().getObjectService().createDocumentFromSource(getRepositoryId(),
-        source.getId(), of.convertProperties(properties, type, updatebility), objectId,
-        versioningState, of.convertPolicies(policies), of.convertAces(addAces),
-        of.convertAces(removeAces), null);
-
-    // if no context is provided the object will not be fetched
-    if ((context == null) || (newId == null)) {
-      return null;
-    }
-
-    // get the new object
-    CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
-    if (!(object instanceof Document)) {
-      throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
-    }
-
-    return (Document) object;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#createFolder(java.util.Map, java.util.List,
-   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
-   */
-  public Folder createFolder(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
-      List<Ace> removeAces, OperationContext context) {
-    String objectId = getObjectId();
-
-    ObjectFactory of = getObjectFactory();
-
-    String newId = getBinding().getObjectService().createFolder(getRepositoryId(),
-        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
-        of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
-
-    // if no context is provided the object will not be fetched
-    if ((context == null) || (newId == null)) {
-      return null;
-    }
-
-    // get the new object
-    CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
-    if (!(object instanceof Folder)) {
-      throw new CmisRuntimeException("Newly created object is not a folder! New id: " + newId);
-    }
-
-    return (Folder) object;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#createPolicy(java.util.Map, java.util.List,
-   * java.util.List, java.util.List, org.apache.opencmis.client.api.OperationContext)
-   */
-  public Policy createPolicy(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
-      List<Ace> removeAces, OperationContext context) {
-    String objectId = getObjectId();
-
-    ObjectFactory of = getObjectFactory();
-
-    String newId = getBinding().getObjectService().createPolicy(getRepositoryId(),
-        of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
-        of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
-
-    // if no context is provided the object will not be fetched
-    if ((context == null) || (newId == null)) {
-      return null;
-    }
-
-    // get the new object
-    CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
-    if (!(object instanceof Policy)) {
-      throw new CmisRuntimeException("Newly created object is not a policy! New id: " + newId);
-    }
-
-    return (Policy) object;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#deleteTree(boolean,
-   * org.apache.opencmis.commons.enums.UnfileObjects, boolean)
-   */
-  public List<String> deleteTree(boolean allVersions, UnfileObject unfile,
-      boolean continueOnFailure) {
-    String repositoryId = getRepositoryId();
-    String objectId = getObjectId();
-
-    FailedToDeleteData failed = getBinding().getObjectService().deleteTree(repositoryId, objectId,
-        allVersions, unfile, continueOnFailure, null);
-
-    return failed.getIds();
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getAllowedChildObjectTypes()
-   */
-  public List<ObjectType> getAllowedChildObjectTypes() {
-    List<ObjectType> result = new ArrayList<ObjectType>();
-
-    readLock();
-    try {
-      List<String> otids = getPropertyMultivalue(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS);
-      if (otids == null) {
-        return result;
-      }
-
-      for (String otid : otids) {
-        result.add(getSession().getTypeDefinition(otid));
-      }
-    }
-    finally {
-      readUnlock();
-    }
-
-    return result;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getCheckedOutDocs(int)
-   */
-  public PagingList<Document> getCheckedOutDocs(int itemsPerPage) {
-    return getCheckedOutDocs(getSession().getDefaultContext(), itemsPerPage);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @seeorg.apache.opencmis.client.api.Folder#getCheckedOutDocs(org.apache.opencmis.client.api.
-   * OperationContext, int)
-   */
-  public PagingList<Document> getCheckedOutDocs(OperationContext context, final int itemsPerPage) {
-    if (itemsPerPage < 1) {
-      throw new IllegalArgumentException("itemsPerPage must be > 0!");
-    }
-
-    final String objectId = getObjectId();
-    final NavigationService nagivationService = getBinding().getNavigationService();
-    final ObjectFactory objectFactory = getSession().getObjectFactory();
-    final OperationContext ctxt = new OperationContextImpl(context);
-
-    return new AbstractPagingList<Document>() {
-
-      @Override
-      protected FetchResult fetchPage(int pageNumber) {
-        int skipCount = pageNumber * getMaxItemsPerPage();
-
-        // get checked out documents for this folder
-        ObjectList checkedOutDocs = nagivationService.getCheckedOutDocs(getRepositoryId(),
-            objectId, ctxt.getFilterString(), ctxt.getOrderBy(), ctxt.isIncludeAllowableActions(),
-            ctxt.getIncludeRelationships(), ctxt.getRenditionFilterString(), BigInteger
-                .valueOf(getMaxItemsPerPage()), BigInteger.valueOf(skipCount), null);
-
-        // convert objects
-        List<Document> page = new ArrayList<Document>();
-        if (checkedOutDocs.getObjects() != null) {
-          for (ObjectData objectData : checkedOutDocs.getObjects()) {
-            CmisObject doc = objectFactory.convertObject(objectData, ctxt);
-            if (!(doc instanceof Document)) {
-              // should not happen...
-              continue;
-            }
-
-            page.add((Document) doc);
-          }
-        }
-
-        return new FetchResult(page, checkedOutDocs.getNumItems(), checkedOutDocs.hasMoreItems());
-      }
-
-      @Override
-      public int getMaxItemsPerPage() {
-        return itemsPerPage;
-      }
-    };
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getChildren(int)
-   */
-  public PagingList<CmisObject> getChildren(int itemsPerPage) {
-    return getChildren(getSession().getDefaultContext(), itemsPerPage);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see
-   * org.apache.opencmis.client.api.Folder#getChildren(org.apache.opencmis.client.api.OperationContext
-   * , int)
-   */
-  public PagingList<CmisObject> getChildren(OperationContext context, final int itemsPerPage) {
-    if (itemsPerPage < 1) {
-      throw new IllegalArgumentException("itemsPerPage must be > 0!");
-    }
-
-    final String objectId = getObjectId();
-    final NavigationService navigationService = getBinding().getNavigationService();
-    final ObjectFactory objectFactory = getSession().getObjectFactory();
-    final OperationContext ctxt = new OperationContextImpl(context);
-
-    return new AbstractPagingList<CmisObject>() {
-
-      @Override
-      protected FetchResult fetchPage(int pageNumber) {
-        int skipCount = pageNumber * getMaxItemsPerPage();
-
-        // get the children
-        ObjectInFolderList children = navigationService.getChildren(getRepositoryId(), objectId,
-            ctxt.getFilterString(), ctxt.getOrderBy(), ctxt.isIncludeAllowableActions(), ctxt
-                .getIncludeRelationships(), ctxt.getRenditionFilterString(), ctxt
-                .isIncludePathSegments(), BigInteger.valueOf(getMaxItemsPerPage()), BigInteger
-                .valueOf(skipCount), null);
-
-        // convert objects
-        List<CmisObject> page = new ArrayList<CmisObject>();
-        List<ObjectInFolderData> childObjects = children.getObjects();
-        if (childObjects != null) {
-          for (ObjectInFolderData objectData : childObjects) {
-            if (objectData.getObject() != null) {
-              page.add(objectFactory.convertObject(objectData.getObject(), ctxt));
-            }
-          }
-        }
-
-        return new FetchResult(page, children.getNumItems(), children.hasMoreItems());
-      }
-
-      @Override
-      public int getMaxItemsPerPage() {
-        return itemsPerPage;
-      }
-    };
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getDescendants(int)
-   */
-  public List<Tree<FileableCmisObject>> getDescendants(int depth) {
-    return getDescendants(depth, getSession().getDefaultContext());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getDescendants(int,
-   * org.apache.opencmis.client.api.OperationContext)
-   */
-  public List<Tree<FileableCmisObject>> getDescendants(int depth, OperationContext context) {
-    String objectId = getObjectId();
-
-    // get the descendants
-    List<ObjectInFolderContainer> providerContainerList = getBinding().getNavigationService()
-        .getDescendants(getRepositoryId(), objectId, BigInteger.valueOf(depth),
-            context.getFilterString(), context.isIncludeAllowableActions(),
-            context.getIncludeRelationships(), context.getRenditionFilterString(),
-            context.isIncludePathSegments(), null);
-
-    return convertProviderContainer(providerContainerList, context);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getFolderTree(int)
-   */
-  public List<Tree<FileableCmisObject>> getFolderTree(int depth) {
-    return getFolderTree(depth, getSession().getDefaultContext());
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getFolderTree(int,
-   * org.apache.opencmis.client.api.OperationContext)
-   */
-  public List<Tree<FileableCmisObject>> getFolderTree(int depth, OperationContext context) {
-    String objectId = getObjectId();
-
-    // get the folder tree
-    List<ObjectInFolderContainer> providerContainerList = getBinding().getNavigationService()
-        .getFolderTree(getRepositoryId(), objectId, BigInteger.valueOf(depth),
-            context.getFilterString(), context.isIncludeAllowableActions(),
-            context.getIncludeRelationships(), context.getRenditionFilterString(),
-            context.isIncludePathSegments(), null);
-
-    return convertProviderContainer(providerContainerList, context);
-  }
-
-  /**
-   * Converts a provider container into an API container.
-   */
-  private List<Tree<FileableCmisObject>> convertProviderContainer(
-      List<ObjectInFolderContainer> providerContainerList, OperationContext context) {
-    if (providerContainerList == null) {
-      return null;
-    }
-
-    ObjectFactory of = getSession().getObjectFactory();
-
-    List<Tree<FileableCmisObject>> result = new ArrayList<Tree<FileableCmisObject>>();
-    for (ObjectInFolderContainer oifc : providerContainerList) {
-      if ((oifc.getObject() == null) || (oifc.getObject().getObject() == null)) {
-        // shouldn't happen ...
-        continue;
-      }
-
-      // convert the object
-      CmisObject object = of.convertObject(oifc.getObject().getObject(), context);
-      if (!(object instanceof FileableCmisObject)) {
-        // the repository must not return objects that are not fileable, but you never know...
-        continue;
-      }
-
-      // convert the children
-      List<Tree<FileableCmisObject>> children = convertProviderContainer(oifc.getChildren(),
-          context);
-
-      // add both to current container
-      result.add(new ContainerImpl<FileableCmisObject>((FileableCmisObject) object, children));
-    }
-
-    return result;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#isRootFolder()
-   */
-  public boolean isRootFolder() {
-    String objectId = getObjectId();
-    String rootFolderId = getSession().getRepositoryInfo().getRootFolderId();
-
-    return objectId.equals(rootFolderId);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getFolderParent()
-   */
-  public Folder getFolderParent() {
-    if (isRootFolder()) {
-      return null;
-    }
-
-    List<Folder> parents = super.getParents();
-    if ((parents == null) || (parents.isEmpty())) {
-      return null;
-    }
-
-    return parents.get(0);
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.api.Folder#getPath()
-   */
-  public String getPath() {
-    String path;
-
-    readLock();
-    try {
-      // get the path property
-      path = getPropertyValue(PropertyIds.PATH);
-
-      // if the path property isn't set, get it
-      if (path == null) {
-        String objectId = getObjectId();
-        ObjectData objectData = getBinding().getObjectService().getObject(getRepositoryId(),
-            objectId, PropertyIds.PATH, false, IncludeRelationships.NONE, "cmis:none", false,
-            false, null);
-
-        if ((objectData.getProperties() != null)
-            && (objectData.getProperties().getProperties() != null)) {
-          PropertyData<?> pathProperty = objectData.getProperties().getProperties().get(
-              PropertyIds.PATH);
-
-          if (pathProperty instanceof PropertyString) {
-            path = ((PropertyString) pathProperty).getFirstValue();
-          }
-        }
-      }
-    }
-    finally {
-      readUnlock();
-    }
-
-    // we still don't know the path ... it's not a CMIS compliant repository
-    if (path == null) {
-      throw new CmisRuntimeException("Repository didn't return " + PropertyIds.PATH + "!");
-    }
-
-    return path;
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.opencmis.client.runtime.AbstractPersistentFilableCmisObject#getPaths()
-   */
-  @Override
-  public List<String> getPaths() {
-    return Collections.singletonList(getPath());
-  }
+	private static final Set<Updatability> CREATE_UPDATABILITY = new HashSet<Updatability>();
+	static {
+		CREATE_UPDATABILITY.add(Updatability.ONCREATE);
+		CREATE_UPDATABILITY.add(Updatability.READWRITE);
+	}
+
+	/**
+	 * Constructor.
+	 */
+	public PersistentFolderImpl(PersistentSessionImpl session, ObjectType objectType, ObjectData objectData,
+			OperationContext context) {
+		initialize(session, objectType, objectData, context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#createDocument(java.util.Map,
+	 * org.apache.opencmis.client.api.ContentStream,
+	 * org.apache.opencmis.commons.enums.VersioningState, java.util.List,
+	 * java.util.List, java.util.List,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public Document createDocument(Map<String, ?> properties, ContentStream contentStream,
+			VersioningState versioningState, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces,
+			OperationContext context) {
+		String objectId = getObjectId();
+
+		ObjectFactory of = getObjectFactory();
+
+		String newId = getBinding().getObjectService().createDocument(getRepositoryId(),
+				of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId,
+				of.convertContentStream(contentStream), versioningState, of.convertPolicies(policies),
+				of.convertAces(addAces), of.convertAces(removeAces), null);
+
+		// if no context is provided the object will not be fetched
+		if ((context == null) || (newId == null)) {
+			return null;
+		}
+
+		// get the new object
+		CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
+		if (!(object instanceof Document)) {
+			throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
+		}
+
+		return (Document) object;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.Folder#createDocumentFromSource(org.apache
+	 * .opencmis.client.api .ObjectId, java.util.Map,
+	 * org.apache.opencmis.commons.enums.VersioningState, java.util.List,
+	 * java.util.List, java.util.List,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public Document createDocumentFromSource(ObjectId source, Map<String, ?> properties,
+			VersioningState versioningState, List<Policy> policies, List<Ace> addAces, List<Ace> removeAces,
+			OperationContext context) {
+		if ((source == null) || (source.getId() == null)) {
+			throw new IllegalArgumentException("Source must be set!");
+		}
+
+		String objectId = getObjectId();
+
+		// get the type of the source document
+		ObjectType type = null;
+		if (source instanceof CmisObject) {
+			type = ((CmisObject) source).getBaseType();
+		} else {
+			CmisObject sourceObj = getSession().getObject(source);
+			type = sourceObj.getType();
+		}
+
+		if (type.getBaseTypeId() != BaseTypeId.CMIS_DOCUMENT) {
+			throw new IllegalArgumentException("Source object must be a document!");
+		}
+
+		ObjectFactory of = getObjectFactory();
+
+		Set<Updatability> updatebility = new HashSet<Updatability>();
+		updatebility.add(Updatability.READWRITE);
+
+		String newId = getBinding().getObjectService().createDocumentFromSource(getRepositoryId(), source.getId(),
+				of.convertProperties(properties, type, updatebility), objectId, versioningState,
+				of.convertPolicies(policies), of.convertAces(addAces), of.convertAces(removeAces), null);
+
+		// if no context is provided the object will not be fetched
+		if ((context == null) || (newId == null)) {
+			return null;
+		}
+
+		// get the new object
+		CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
+		if (!(object instanceof Document)) {
+			throw new CmisRuntimeException("Newly created object is not a document! New id: " + newId);
+		}
+
+		return (Document) object;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#createFolder(java.util.Map,
+	 * java.util.List, java.util.List, java.util.List,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public Folder createFolder(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
+			List<Ace> removeAces, OperationContext context) {
+		String objectId = getObjectId();
+
+		ObjectFactory of = getObjectFactory();
+
+		String newId = getBinding().getObjectService().createFolder(getRepositoryId(),
+				of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId, of.convertPolicies(policies),
+				of.convertAces(addAces), of.convertAces(removeAces), null);
+
+		// if no context is provided the object will not be fetched
+		if ((context == null) || (newId == null)) {
+			return null;
+		}
+
+		// get the new object
+		CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
+		if (!(object instanceof Folder)) {
+			throw new CmisRuntimeException("Newly created object is not a folder! New id: " + newId);
+		}
+
+		return (Folder) object;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#createPolicy(java.util.Map,
+	 * java.util.List, java.util.List, java.util.List,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public Policy createPolicy(Map<String, ?> properties, List<Policy> policies, List<Ace> addAces,
+			List<Ace> removeAces, OperationContext context) {
+		String objectId = getObjectId();
+
+		ObjectFactory of = getObjectFactory();
+
+		String newId = getBinding().getObjectService().createPolicy(getRepositoryId(),
+				of.convertProperties(properties, null, CREATE_UPDATABILITY), objectId, of.convertPolicies(policies),
+				of.convertAces(addAces), of.convertAces(removeAces), null);
+
+		// if no context is provided the object will not be fetched
+		if ((context == null) || (newId == null)) {
+			return null;
+		}
+
+		// get the new object
+		CmisObject object = getSession().getObject(getSession().createObjectId(newId), context);
+		if (!(object instanceof Policy)) {
+			throw new CmisRuntimeException("Newly created object is not a policy! New id: " + newId);
+		}
+
+		return (Policy) object;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#deleteTree(boolean,
+	 * org.apache.opencmis.commons.enums.UnfileObjects, boolean)
+	 */
+	public List<String> deleteTree(boolean allVersions, UnfileObject unfile, boolean continueOnFailure) {
+		String repositoryId = getRepositoryId();
+		String objectId = getObjectId();
+
+		FailedToDeleteData failed = getBinding().getObjectService().deleteTree(repositoryId, objectId, allVersions,
+				unfile, continueOnFailure, null);
+
+		return failed.getIds();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getAllowedChildObjectTypes()
+	 */
+	public List<ObjectType> getAllowedChildObjectTypes() {
+		List<ObjectType> result = new ArrayList<ObjectType>();
+
+		readLock();
+		try {
+			List<String> otids = getPropertyMultivalue(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS);
+			if (otids == null) {
+				return result;
+			}
+
+			for (String otid : otids) {
+				result.add(getSession().getTypeDefinition(otid));
+			}
+		} finally {
+			readUnlock();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getCheckedOutDocs(int)
+	 */
+	public PagingList<Document> getCheckedOutDocs(int itemsPerPage) {
+		return getCheckedOutDocs(getSession().getDefaultContext(), itemsPerPage);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @seeorg.apache.opencmis.client.api.Folder#getCheckedOutDocs(org.apache.
+	 * opencmis.client.api. OperationContext, int)
+	 */
+	public PagingList<Document> getCheckedOutDocs(OperationContext context, final int itemsPerPage) {
+		if (itemsPerPage < 1) {
+			throw new IllegalArgumentException("itemsPerPage must be > 0!");
+		}
+
+		final String objectId = getObjectId();
+		final NavigationService nagivationService = getBinding().getNavigationService();
+		final ObjectFactory objectFactory = getSession().getObjectFactory();
+		final OperationContext ctxt = new OperationContextImpl(context);
+
+		return new AbstractPagingList<Document>() {
+
+			@Override
+			protected FetchResult fetchPage(int pageNumber) {
+				int skipCount = pageNumber * getMaxItemsPerPage();
+
+				// get checked out documents for this folder
+				ObjectList checkedOutDocs = nagivationService.getCheckedOutDocs(getRepositoryId(), objectId, ctxt
+						.getFilterString(), ctxt.getOrderBy(), ctxt.isIncludeAllowableActions(), ctxt
+						.getIncludeRelationships(), ctxt.getRenditionFilterString(), BigInteger
+						.valueOf(getMaxItemsPerPage()), BigInteger.valueOf(skipCount), null);
+
+				// convert objects
+				List<Document> page = new ArrayList<Document>();
+				if (checkedOutDocs.getObjects() != null) {
+					for (ObjectData objectData : checkedOutDocs.getObjects()) {
+						CmisObject doc = objectFactory.convertObject(objectData, ctxt);
+						if (!(doc instanceof Document)) {
+							// should not happen...
+							continue;
+						}
+
+						page.add((Document) doc);
+					}
+				}
+
+				return new FetchResult(page, checkedOutDocs.getNumItems(), checkedOutDocs.hasMoreItems());
+			}
+
+			@Override
+			public int getMaxItemsPerPage() {
+				return itemsPerPage;
+			}
+		};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getChildren(int)
+	 */
+	public PagingList<CmisObject> getChildren(int itemsPerPage) {
+		return getChildren(getSession().getDefaultContext(), itemsPerPage);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.api.Folder#getChildren(org.apache.opencmis
+	 * .client.api.OperationContext , int)
+	 */
+	public PagingList<CmisObject> getChildren(OperationContext context, final int itemsPerPage) {
+		if (itemsPerPage < 1) {
+			throw new IllegalArgumentException("itemsPerPage must be > 0!");
+		}
+
+		final String objectId = getObjectId();
+		final NavigationService navigationService = getBinding().getNavigationService();
+		final ObjectFactory objectFactory = getSession().getObjectFactory();
+		final OperationContext ctxt = new OperationContextImpl(context);
+
+		return new AbstractPagingList<CmisObject>() {
+
+			@Override
+			protected FetchResult fetchPage(int pageNumber) {
+				int skipCount = pageNumber * getMaxItemsPerPage();
+
+				// get the children
+				ObjectInFolderList children = navigationService.getChildren(getRepositoryId(), objectId, ctxt
+						.getFilterString(), ctxt.getOrderBy(), ctxt.isIncludeAllowableActions(), ctxt
+						.getIncludeRelationships(), ctxt.getRenditionFilterString(), ctxt.isIncludePathSegments(),
+						BigInteger.valueOf(getMaxItemsPerPage()), BigInteger.valueOf(skipCount), null);
+
+				// convert objects
+				List<CmisObject> page = new ArrayList<CmisObject>();
+				List<ObjectInFolderData> childObjects = children.getObjects();
+				if (childObjects != null) {
+					for (ObjectInFolderData objectData : childObjects) {
+						if (objectData.getObject() != null) {
+							page.add(objectFactory.convertObject(objectData.getObject(), ctxt));
+						}
+					}
+				}
+
+				return new FetchResult(page, children.getNumItems(), children.hasMoreItems());
+			}
+
+			@Override
+			public int getMaxItemsPerPage() {
+				return itemsPerPage;
+			}
+		};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getDescendants(int)
+	 */
+	public List<Tree<FileableCmisObject>> getDescendants(int depth) {
+		return getDescendants(depth, getSession().getDefaultContext());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getDescendants(int,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public List<Tree<FileableCmisObject>> getDescendants(int depth, OperationContext context) {
+		String objectId = getObjectId();
+
+		// get the descendants
+		List<ObjectInFolderContainer> providerContainerList = getBinding().getNavigationService().getDescendants(
+				getRepositoryId(), objectId, BigInteger.valueOf(depth), context.getFilterString(),
+				context.isIncludeAllowableActions(), context.getIncludeRelationships(),
+				context.getRenditionFilterString(), context.isIncludePathSegments(), null);
+
+		return convertProviderContainer(providerContainerList, context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getFolderTree(int)
+	 */
+	public List<Tree<FileableCmisObject>> getFolderTree(int depth) {
+		return getFolderTree(depth, getSession().getDefaultContext());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getFolderTree(int,
+	 * org.apache.opencmis.client.api.OperationContext)
+	 */
+	public List<Tree<FileableCmisObject>> getFolderTree(int depth, OperationContext context) {
+		String objectId = getObjectId();
+
+		// get the folder tree
+		List<ObjectInFolderContainer> providerContainerList = getBinding().getNavigationService().getFolderTree(
+				getRepositoryId(), objectId, BigInteger.valueOf(depth), context.getFilterString(),
+				context.isIncludeAllowableActions(), context.getIncludeRelationships(),
+				context.getRenditionFilterString(), context.isIncludePathSegments(), null);
+
+		return convertProviderContainer(providerContainerList, context);
+	}
+
+	/**
+	 * Converts a provider container into an API container.
+	 */
+	private List<Tree<FileableCmisObject>> convertProviderContainer(
+			List<ObjectInFolderContainer> providerContainerList, OperationContext context) {
+		if (providerContainerList == null) {
+			return null;
+		}
+
+		ObjectFactory of = getSession().getObjectFactory();
+
+		List<Tree<FileableCmisObject>> result = new ArrayList<Tree<FileableCmisObject>>();
+		for (ObjectInFolderContainer oifc : providerContainerList) {
+			if ((oifc.getObject() == null) || (oifc.getObject().getObject() == null)) {
+				// shouldn't happen ...
+				continue;
+			}
+
+			// convert the object
+			CmisObject object = of.convertObject(oifc.getObject().getObject(), context);
+			if (!(object instanceof FileableCmisObject)) {
+				// the repository must not return objects that are not fileable,
+				// but you never know...
+				continue;
+			}
+
+			// convert the children
+			List<Tree<FileableCmisObject>> children = convertProviderContainer(oifc.getChildren(), context);
+
+			// add both to current container
+			result.add(new ContainerImpl<FileableCmisObject>((FileableCmisObject) object, children));
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#isRootFolder()
+	 */
+	public boolean isRootFolder() {
+		String objectId = getObjectId();
+		String rootFolderId = getSession().getRepositoryInfo().getRootFolderId();
+
+		return objectId.equals(rootFolderId);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getFolderParent()
+	 */
+	public Folder getFolderParent() {
+		if (isRootFolder()) {
+			return null;
+		}
+
+		List<Folder> parents = super.getParents();
+		if ((parents == null) || (parents.isEmpty())) {
+			return null;
+		}
+
+		return parents.get(0);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.opencmis.client.api.Folder#getPath()
+	 */
+	public String getPath() {
+		String path;
+
+		readLock();
+		try {
+			// get the path property
+			path = getPropertyValue(PropertyIds.PATH);
+
+			// if the path property isn't set, get it
+			if (path == null) {
+				String objectId = getObjectId();
+				ObjectData objectData = getBinding().getObjectService().getObject(getRepositoryId(), objectId,
+						PropertyIds.PATH, false, IncludeRelationships.NONE, "cmis:none", false, false, null);
+
+				if ((objectData.getProperties() != null) && (objectData.getProperties().getProperties() != null)) {
+					PropertyData<?> pathProperty = objectData.getProperties().getProperties().get(PropertyIds.PATH);
+
+					if (pathProperty instanceof PropertyString) {
+						path = ((PropertyString) pathProperty).getFirstValue();
+					}
+				}
+			}
+		} finally {
+			readUnlock();
+		}
+
+		// we still don't know the path ... it's not a CMIS compliant repository
+		if (path == null) {
+			throw new CmisRuntimeException("Repository didn't return " + PropertyIds.PATH + "!");
+		}
+
+		return path;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.opencmis.client.runtime.AbstractPersistentFilableCmisObject
+	 * #getPaths()
+	 */
+	@Override
+	public List<String> getPaths() {
+		return Collections.singletonList(getPath());
+	}
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPolicyImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPolicyImpl.java?rev=934889&r1=934888&r2=934889&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPolicyImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPolicyImpl.java Fri Apr 16 14:07:11 2010
@@ -26,16 +26,16 @@ import org.apache.chemistry.opencmis.com
 
 public class PersistentPolicyImpl extends AbstractPersistentFilableCmisObject implements Policy {
 
-  /**
-   * Constructor.
-   */
-  public PersistentPolicyImpl(PersistentSessionImpl session, ObjectType objectType,
-      ObjectData objectData, OperationContext context) {
-    initialize(session, objectType, objectData, context);
-  }
+	/**
+	 * Constructor.
+	 */
+	public PersistentPolicyImpl(PersistentSessionImpl session, ObjectType objectType, ObjectData objectData,
+			OperationContext context) {
+		initialize(session, objectType, objectData, context);
+	}
 
-  public String getPolicyText() {
-    return getPropertyValue(PropertyIds.POLICY_TEXT);
-  }
+	public String getPolicyText() {
+		return getPropertyValue(PropertyIds.POLICY_TEXT);
+	}
 
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPropertyImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPropertyImpl.java?rev=934889&r1=934888&r2=934889&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPropertyImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/PersistentPropertyImpl.java Fri Apr 16 14:07:11 2010
@@ -32,65 +32,65 @@ import org.apache.chemistry.opencmis.com
  */
 public class PersistentPropertyImpl<T> extends AbstractPropertyData<T> implements Property<T>, Serializable {
 
-  private static final long serialVersionUID = 1L;
-  private PropertyDefinition<T> propertyDefinition;
+	private static final long serialVersionUID = 1L;
+	private PropertyDefinition<T> propertyDefinition;
 
-  protected void initialize(PropertyDefinition<?> pd) {
-      setId(pd.getId());
-      setDisplayName(pd.getDisplayName());
-      setLocalName(pd.getLocalName());
-      setQueryName(pd.getQueryName());
-  }
-
-  /**
-   * Constructs a single-value property.
-   */
-  @SuppressWarnings("unchecked")
-  public PersistentPropertyImpl(PropertyDefinition<?> pd, T value) {
-    if (pd == null) {
-      throw new IllegalArgumentException("Type must be set!");
-    }
-    if (value == null) {
-      throw new IllegalArgumentException("Value must be set!");
-    }
-    propertyDefinition = (PropertyDefinition<T>) pd;
-    initialize(pd);
-    setValue(value);
-  }
-
-  /**
-   * Constructs a multi-value property.
-   */
-  @SuppressWarnings("unchecked")
-  public PersistentPropertyImpl(PropertyDefinition<?> pd, List<T> values) {
-    if (pd == null) {
-      throw new IllegalArgumentException("Type must be set!");
-    }
-    propertyDefinition = (PropertyDefinition<T>) pd;
-    initialize(pd);
-    setValues(values);
-  }
-
-  public PropertyDefinition<T> getDefinition() {
-    return propertyDefinition;
-  }
-
-  public PropertyType getType() {
-    return propertyDefinition.getPropertyType();
-  }
-
-  public String getValueAsString() {
-    List<T> values = getValues();
-    if (values.size() == 0) {
-      return null;
-    }
-    switch (propertyDefinition.getPropertyType()) {
-    default:
-      return values.get(0).toString();
-    }
-  }
-
-  public boolean isMultiValued() {
-    return propertyDefinition.getCardinality() == Cardinality.MULTI;
-  }
+	protected void initialize(PropertyDefinition<?> pd) {
+		setId(pd.getId());
+		setDisplayName(pd.getDisplayName());
+		setLocalName(pd.getLocalName());
+		setQueryName(pd.getQueryName());
+	}
+
+	/**
+	 * Constructs a single-value property.
+	 */
+	@SuppressWarnings("unchecked")
+	public PersistentPropertyImpl(PropertyDefinition<?> pd, T value) {
+		if (pd == null) {
+			throw new IllegalArgumentException("Type must be set!");
+		}
+		if (value == null) {
+			throw new IllegalArgumentException("Value must be set!");
+		}
+		propertyDefinition = (PropertyDefinition<T>) pd;
+		initialize(pd);
+		setValue(value);
+	}
+
+	/**
+	 * Constructs a multi-value property.
+	 */
+	@SuppressWarnings("unchecked")
+	public PersistentPropertyImpl(PropertyDefinition<?> pd, List<T> values) {
+		if (pd == null) {
+			throw new IllegalArgumentException("Type must be set!");
+		}
+		propertyDefinition = (PropertyDefinition<T>) pd;
+		initialize(pd);
+		setValues(values);
+	}
+
+	public PropertyDefinition<T> getDefinition() {
+		return propertyDefinition;
+	}
+
+	public PropertyType getType() {
+		return propertyDefinition.getPropertyType();
+	}
+
+	public String getValueAsString() {
+		List<T> values = getValues();
+		if (values.size() == 0) {
+			return null;
+		}
+		switch (propertyDefinition.getPropertyType()) {
+		default:
+			return values.get(0).toString();
+		}
+	}
+
+	public boolean isMultiValued() {
+		return propertyDefinition.getCardinality() == Cardinality.MULTI;
+	}
 }



Mime
View raw message