Author: chathura
Date: Tue Jan 1 23:14:02 2008
New Revision: 11730
Log:
Changed versioning impl to version only the resource content changes.
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/Resource.java
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/mediatypes/builtin/DefaultMediaTypeHandler.java
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/Resource.java
==============================================================================
--- trunk/registry/modules/core/src/main/java/org/wso2/registry/Resource.java
(original)
+++ trunk/registry/modules/core/src/main/java/org/wso2/registry/Resource.java
Tue Jan 1 23:14:02 2008
@@ -36,6 +36,13 @@
private String parentPath;
/**
+ * Used to detect whether the resource content is modified after it is
retrieved from the
+ * Registry. If this is set to true at the time of adding the resource
back to the Registry,
+ * new version will be created.
+ */
+ private boolean contentModified;
+
+ /**
* Normal resources have the state RegistryConstants.ACTIVE_STATE (100)
Deleted resources have
* the state RegistryConstants.DELETED_STATE (101)
*/
@@ -149,6 +156,7 @@
public void setContent(Object content) {
this.content = content;
+ this.contentModified = true;
}
private String preparePath(String path) {
@@ -197,4 +205,18 @@
public void setDependsOn(String[] dependsOn) {
this.dependsOn = dependsOn;
}
+
+ public boolean isContentModified() {
+ return contentModified;
+ }
+
+ /**
+ * This method is used to explicitly set the content modified state of the
resource. Normal
+ * users of the Registry API should not call this method.
+ *
+ * @param contentModified
+ */
+ public void setContentModified(boolean contentModified) {
+ this.contentModified = contentModified;
+ }
}
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
Tue Jan 1 23:14:02 2008
@@ -255,6 +255,7 @@
versionResults.getTimestamp(DatabaseConstants.VERSION_UPDATED_TIME));
resource.setContent(versionResults.getBytes(DatabaseConstants.VERSION_CONTENT_FIELD));
}
+
// get resource children
if (resource.isDirectory()) {
String[] children = getLatestChildPaths(resource.getId(),
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/mediatypes/builtin/DefaultMediaTypeHandler.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/mediatypes/builtin/DefaultMediaTypeHandler.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/mediatypes/builtin/DefaultMediaTypeHandler.java
Tue Jan 1 23:14:02 2008
@@ -88,6 +88,11 @@
}
}
+ // we are just getting the content from the database. not a content
modification.
+ if (resource != null) {
+ resource.setContentModified(false);
+ }
+
return resource;
}
@@ -119,7 +124,10 @@
resource.setState(RegistryConstants.ACTIVE_STATE);
resource.setLastUpdaterUserName(userID);
resourceDAO.update(path, resource, conn);
- resourceDAO.addResourceVersion(resource, conn);
+
+ if (resource.isContentModified()) {
+ resourceDAO.addResourceVersion(resource, conn);
+ }
} else {
_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev