modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
| 2
modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
| 17 +-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
| 57 +++++-----
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
| 4
modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
| 4
modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
| 7 -
modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
| 2
9 files changed, 52 insertions(+), 46 deletions(-)
New commits:
commit c8a8e505db51c460edfdbf9ab72c5e8ac6e55f61
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Dec 22 16:29:00 2011 -0600
[BZ 769986] The version field is no longer required when uploading a package. If the
user types a version then the display version is used to capture that information.
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
index 2a08598..666cac8 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
@@ -136,7 +136,7 @@ public class CreateNewPackageUIBean {
return response;
}
- public String createNewPackage(String packageName, String version, int
architectureId, int packageTypeId) {
+ private String createNewPackage(String packageName, String displayVersion, int
architectureId, int packageTypeId) {
// Collect the necessary information
Subject subject = EnterpriseFacesContextUtility.getSubject();
@@ -155,11 +155,6 @@ public class CreateNewPackageUIBean {
return null;
}
- if (version == null || version.trim().equals("")) {
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Package
version must be specified");
- return null;
- }
-
if (repoOption == null) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"A repository deployment option must be specified");
@@ -189,8 +184,8 @@ public class CreateNewPackageUIBean {
repoId = determineRepo(repoOption, subject, resource.getId());
} catch (ContentException ce) {
String errorMessages = ThrowableUtil.getAllMessages(ce);
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Failed to determine repository. Cause: "
- + errorMessages);
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
+ "Failed to determine repository. Cause: " +
errorMessages);
return "failure";
}
} else {
@@ -199,7 +194,7 @@ public class CreateNewPackageUIBean {
repoId =
FacesContextUtility.getRequiredRequestParameter("id");
}
}
-
+
try {
PackageVersion packageVersion = null;
try {
@@ -221,31 +216,38 @@ public class CreateNewPackageUIBean {
//store information about uploaded file for packageDetails as
most of it is already available
Map<String, String> packageUploadDetails = new
HashMap<String, String>();
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_SIZE,
String.valueOf(fileItem.getFileSize()));
-
packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE,
String.valueOf(System
- .currentTimeMillis()));
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_SIZE,
+ String.valueOf(fileItem.getFileSize()));
+
packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE,
+ String.valueOf(System.currentTimeMillis()));
packageUploadDetails.put(ContentManagerLocal.UPLOAD_OWNER,
subject.getName());
packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_NAME,
fileItem.getFileName());
+ String sha = null;
+ String md5 = null;
try {//Easier to implement here than in server side bean.
Shouldn't affect performance too much.
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_MD5, new
MessageDigestGenerator(
-
MessageDigestGenerator.MD5).calcDigestString(fileItem.getFile()));
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_SHA256,
new MessageDigestGenerator(
-
MessageDigestGenerator.SHA_256).calcDigestString(fileItem.getFile()));
+ md5 = new
MessageDigestGenerator(MessageDigestGenerator.MD5).calcDigestString(fileItem
+ .getFile());
+ sha = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(fileItem
+ .getFile());
} catch (IOException e1) {
log.warn("Error calculating file digest(s)", e1);
}
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_MD5, md5);
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_SHA256,
sha);
+
packageUploadDetails.put(ContentManagerLocal.UPLOAD_DISPLAY_VERSION, displayVersion);
+
Integer iRepoId = usingARepo ? Integer.parseInt(repoId) : null;
packageVersion =
contentManager.getUploadedPackageVersion(subject, packageName, packageTypeId,
- version, architectureId, packageStream, packageUploadDetails,
iRepoId);
+ formatVersion(sha), architectureId, packageStream,
packageUploadDetails, iRepoId);
} catch (NoResultException nre) {
//eat the exception. Some of the queries return no results if no
package yet exists which is fine.
} catch (Exception e) {
String errorMessages = ThrowableUtil.getAllMessages(e);
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Failed to create package [" + packageName
- + "] in repository. Cause: " + errorMessages);
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Failed to create package ["
+ + packageName + "] in repository. Cause: " +
errorMessages);
return "failure";
}
} finally {
@@ -258,7 +260,6 @@ public class CreateNewPackageUIBean {
return "failure";
}
-
int[] packageVersionList = new int[] { packageVersion.getId() };
// Put the package ID in the session so it can fit into the deploy existing
package workflow
@@ -320,7 +321,7 @@ public class CreateNewPackageUIBean {
public SelectItem[] getPackageTypesWithResourceTypeNames() {
return getPackageTypes(true);
}
-
+
private SelectItem[] getPackageTypes(boolean includeResourceTypeResolution) {
Resource resource = EnterpriseFacesContextUtility.getResourceIfExists();
@@ -346,7 +347,7 @@ public class CreateNewPackageUIBean {
return items;
}
-
+
public SelectItem[] getSubscribedRepos() {
Resource resource = EnterpriseFacesContextUtility.getResource();
@@ -385,7 +386,7 @@ public class CreateNewPackageUIBean {
if (!isResourcePackage()) {
return true;
}
-
+
boolean isPackageBacked = isResourcePackageBacked();
boolean backingPackageExists = lookupBackingPackage() != null;
@@ -395,7 +396,7 @@ public class CreateNewPackageUIBean {
public boolean isResourcePackage() {
return EnterpriseFacesContextUtility.getResourceIfExists() != null;
}
-
+
public boolean isResourcePackageBacked() {
Resource resource = EnterpriseFacesContextUtility.getResource();
ResourceType resourceType = resource.getResourceType();
@@ -446,10 +447,10 @@ public class CreateNewPackageUIBean {
if (packageName != null) {
return packageName;
}
-
+
UploadNewPackageUIBean uploadUIBean =
FacesContextUtility.getManagedBean(UploadNewPackageUIBean.class);
UploadItem fileItem = uploadUIBean.getFileItem();
-
+
return fileItem == null ? null : fileItem.getFileName();
}
@@ -540,4 +541,8 @@ public class CreateNewPackageUIBean {
return repoId;
}
+
+ private String formatVersion(String sha) {
+ return "[sha256=" + sha + "]";
+ }
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
index 2e7e95e..3fe6228 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
@@ -80,6 +80,8 @@ public class DeployPackagesUIBean extends PagedDataTableUIBean {
// Going forward, we'll need to create this earlier and store the user
entered configuration in these
// objects. jdobies, Mar 3, 2008
+ // The following code is completely unnecessary as the package version ids are
already
+ // stored in session.
ContentUIManagerLocal contentUIManager = LookupUtil.getContentUIManager();
int[] packagesVersionsIdsToDeploy = new int[packageIds.length];
for (int iterator = 0; iterator < packageIds.length; iterator++) {
@@ -92,7 +94,7 @@ public class DeployPackagesUIBean extends PagedDataTableUIBean {
try {
ContentManagerLocal contentManager = LookupUtil.getContentManager();
- contentManager.deployPackages(subject, new int[] { resource.getId() }, new
int[] {}, notes);
+ contentManager.deployPackages(subject, new int[] { resource.getId() },
packagesVersionsIdsToDeploy, notes);
} catch (Exception e) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Could not
send deploy request to agent", e);
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
index b45e738..15c3f35 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
@@ -688,10 +688,10 @@
<ui:remove><!-- row 3 --></ui:remove>
<h:panelGroup style="float: right">
- <b>Version <span
class="required-marker-text">*</span></b>
+ <b>Version</b>
</h:panelGroup>
<h:panelGroup style="clear: both">
- <h:inputText id="initialVersion"
value="#{CreateNewPackageUIBean.version}" required="true"/>
+ <h:inputText id="initialVersion"
value="#{CreateNewPackageUIBean.version}"/>
<h:message for="initialVersion"
styleClass="ValidationErrorText"/>
</h:panelGroup>
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
index dba508b..0b6c45b 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
+++
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
@@ -89,19 +89,16 @@
<h:panelGrid columns="2">
<h:panelGroup style="float: right">
- <b>Version <span
class="required-marker-text">*</span></b>
+ <b>Version</b>
</h:panelGroup>
<h:panelGroup style="clear: both">
- <h:inputText id="updateVersion"
value="#{CreateNewPackageUIBean.version}" required="true"/>
- <h:message for="updateVersion"
styleClass="ValidationErrorText"/>
+ <h:inputText id="updateVersion"
value="#{CreateNewPackageUIBean.version}"/>
</h:panelGroup>
</h:panelGrid>
</rich:panel>
- <div class="note-panel"><span
class="required-marker-text">*</span><span> denotes a required
field.</span></div>
-
<rich:panel>
<f:facet name="header">Repository</f:facet>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 29c3c85..5b03fd2 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -1712,13 +1712,14 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
packageVersion.setFileSize(Long.valueOf(contentDetails.get(UPLOAD_FILE_SIZE)).longValue());
packageVersion.setSHA256(contentDetails.get(UPLOAD_SHA256));
-
+
//populate extra details, persist
if (packageUploadDetails != null) {
packageVersion.setFileCreatedDate(Long.valueOf(packageUploadDetails
.get(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE)));
packageVersion.setFileName(packageUploadDetails.get(ContentManagerLocal.UPLOAD_FILE_NAME));
packageVersion.setMD5(packageUploadDetails.get(ContentManagerLocal.UPLOAD_MD5));
+
packageVersion.setDisplayVersion(packageUploadDetails.get(ContentManagerLocal.UPLOAD_DISPLAY_VERSION));
}
entityManager.merge(packageVersion);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
index 1957091..566b4fc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
@@ -76,6 +76,8 @@ public interface ContentManagerLocal {
public static final String UPLOAD_MD5 = "md5";
+ public static final String UPLOAD_DISPLAY_VERSION = "displayVersion";
+
/**
* This is currently ignored as the SHA is computed upon
* persist.
commit 2f99226848b0e2f2b213bda257379444de36a180
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Dec 22 16:26:46 2011 -0600
[BZ 769986] Updated JSF content view to correctly display the version of packages.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
index 2bfc04f..ba4eff0 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
@@ -53,7 +53,7 @@ import org.rhq.core.domain.resource.Resource;
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_ID_AND_PKG_VER_ID, query =
"SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND
ip.packageVersion.id = :packageVersionId"),
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_AND_PACKAGE, query =
"SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND
ip.packageVersion.generalPackage.id = :packageId "),
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_AND_PACKAGE_VER, query =
"SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND
ip.packageVersion.id = :packageVersionId "),
- @NamedQuery(name = InstalledPackage.QUERY_FIND_PACKAGE_LIST_ITEM_COMPOSITE, query =
"SELECT new org.rhq.core.domain.content.composite.PackageListItemComposite(ip.id,
gp.name, pt.displayName, ip.packageVersion.version, ip.installationDate ) "
+ @NamedQuery(name = InstalledPackage.QUERY_FIND_PACKAGE_LIST_ITEM_COMPOSITE, query =
"SELECT new org.rhq.core.domain.content.composite.PackageListItemComposite(ip.id,
gp.name, pt.displayName, ip.packageVersion.version, ip.packageVersion.displayVersion,
ip.installationDate ) "
+ " FROM InstalledPackage ip JOIN ip.resource res LEFT JOIN
ip.packageVersion pv LEFT JOIN pv.generalPackage gp LEFT JOIN gp.packageType pt "
+ "WHERE res.id = :resourceId "
+ " AND (:packageTypeFilterId = pt.id OR :packageTypeFilterId is null)
"
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
index 76e886e..e51d530 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
@@ -37,22 +37,17 @@ public class PackageListItemComposite implements Serializable {
private final String packageName;
private final String packageTypeName;
private final String version;
+ private final String displayVersion;
private final Long timestamp;
- public PackageListItemComposite(int id, String packageName, String packageTypeName,
String version) {
- this.id = id;
- this.packageName = packageName;
- this.packageTypeName = packageTypeName;
- this.version = version;
- this.timestamp = null;
- }
-
- public PackageListItemComposite(int id, String packageName, String packageTypeName,
String version, Long timestamp) {
+ public PackageListItemComposite(int id, String packageName, String packageTypeName,
String version,
+ String displayVersion, Long timestamp) {
this.id = id;
this.packageName = packageName;
this.packageTypeName = packageTypeName;
this.version = version;
this.timestamp = timestamp;
+ this.displayVersion = displayVersion;
}
public int getId() {
@@ -71,6 +66,10 @@ public class PackageListItemComposite implements Serializable {
return version;
}
+ public String getDisplayVersion() {
+ return displayVersion;
+ }
+
public Long getTimestamp() {
return timestamp;
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
index 7ff59f3..bc551d1 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
+++
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
@@ -105,7 +105,7 @@
</onc:sortableColumnHeader>
</f:facet>
- <h:outputText value="#{item.version}"/>
+ <h:outputText value="#{ not empty item.displayVersion ?
item.displayVersion : item.version }"/>
</rich:column>
<rich:column>