java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/frontend/action/common/test/DownloadActionTest.java | 8 ++++++++
1 file changed, 8 insertions(+)
New commits:
commit 50a2c2bba64a682d6b7ffab86f4660149d127548
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 17:46:21 2009 -0400
unit test fix
diff --git a/java/code/src/com/redhat/rhn/frontend/action/common/test/DownloadActionTest.java b/java/code/src/com/redhat/rhn/frontend/action/common/test/DownloadActionTest.java
index dd3ca58..f57463c 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/common/test/DownloadActionTest.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/common/test/DownloadActionTest.java
@@ -57,6 +57,7 @@ public class DownloadActionTest extends RhnMockStrutsTestCase {
public void testKsDownload() throws Exception {
// /ks/dist/f9-x86_64-distro/images/boot.iso
addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/images/boot.iso");
+ request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/images/boot.iso");
actionPerform();
assertNull(getActualForward());
assertEquals("application/octet-stream", getResponse().getContentType());
@@ -77,6 +78,7 @@ public class DownloadActionTest extends RhnMockStrutsTestCase {
TestUtils.saveAndFlush(p);
addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/Server/" + fileName);
+ request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/Server/" + fileName);
actionPerform();
// assertEquals("/kickstart/DownloadFile.do", getActualForward());
assertNotNull(request.getAttribute("params"));
@@ -94,6 +96,9 @@ public class DownloadActionTest extends RhnMockStrutsTestCase {
addRequestParameter("url", "/ks/dist/session/" + encodedSession + "/" +
tree.getLabel() + "/images/boot.iso");
+ request.setQueryString("url=/ks/dist/session/" + encodedSession + "/" +
+ tree.getLabel() + "/images/boot.iso");
+
actionPerform();
assertNull(getActualForward());
assertNotNull(request.getAttribute("params"));
@@ -119,6 +124,8 @@ public class DownloadActionTest extends RhnMockStrutsTestCase {
addRequestParameter("url", "/ks/dist/session/" + encodedSession + "/" +
tree.getLabel() + "/Server/" + fileName);
+ request.setQueryString("url=/ks/dist/session/" + encodedSession + "/" +
+ tree.getLabel() + "/Server/" + fileName);
actionPerform();
assertNotNull(request.getAttribute("params"));
@@ -136,6 +143,7 @@ public class DownloadActionTest extends RhnMockStrutsTestCase {
KickstartSessionTest.createKickstartSession(ksdata, user);
TestUtils.saveAndFlush(ksession);
addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/images/");
+ request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/images/");
actionPerform();
assertNull(getActualForward());
assertEquals("text/plain", getResponse().getContentType());
15 years
Branch 'VADER' - web/modules
by Shannon Hughes
web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit 0269d4dc8ce1169f260ebfabc82167f46e6895a5
Author: Shannon Hughes <shughes(a)redhat.com>
Date: Thu Apr 30 17:15:19 2009 -0400
492588 - changed query to use rhnSharedChannelView to support shared channels in activation keys
diff --git a/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml b/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
index 32000de..b3b446c 100644
--- a/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
+++ b/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
@@ -349,10 +349,10 @@ SELECT ACh.channel_name NAME, ACh.channel_id ID, ACh.channel_depth AS DEPTH,
WHERE CF.id = CFM.channel_family_id
AND CFM.channel_id = ACh.channel_id) CHANNEL_FAMILY_LABEL,
(SELECT COUNT(C2.id)
- FROM rhnChannel C2
+ FROM rhnSharedChannelView C2
WHERE C2.parent_channel = C.id) CHILDREN, ACh.parent_or_self_label, ACh.channel_label,
AT.label PACKAGING_TYPE
- FROM rhnArchType AT, rhnChannelArch CA, rhnChannel C, rhnAvailableChannels ACh
+ FROM rhnArchType AT, rhnChannelArch CA, rhnSharedChannelView C, rhnAvailableChannels ACh
WHERE ACh.org_id = :org_id
AND C.id = ACh.channel_id
AND CA.id = C.channel_arch_id
15 years
web/modules
by Shannon Hughes
web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit 8b8d7037c9667432b41c6dbedab509e43f273b04
Author: Shannon Hughes <shughes(a)redhat.com>
Date: Thu Apr 30 17:15:19 2009 -0400
492588 - changed query to use rhnSharedChannelView to support shared channels in activation keys
diff --git a/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml b/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
index 32000de..b3b446c 100644
--- a/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
+++ b/web/modules/rhn/RHN/DB/DataSource/xml/Channel_queries.xml
@@ -349,10 +349,10 @@ SELECT ACh.channel_name NAME, ACh.channel_id ID, ACh.channel_depth AS DEPTH,
WHERE CF.id = CFM.channel_family_id
AND CFM.channel_id = ACh.channel_id) CHANNEL_FAMILY_LABEL,
(SELECT COUNT(C2.id)
- FROM rhnChannel C2
+ FROM rhnSharedChannelView C2
WHERE C2.parent_channel = C.id) CHILDREN, ACh.parent_or_self_label, ACh.channel_label,
AT.label PACKAGING_TYPE
- FROM rhnArchType AT, rhnChannelArch CA, rhnChannel C, rhnAvailableChannels ACh
+ FROM rhnArchType AT, rhnChannelArch CA, rhnSharedChannelView C, rhnAvailableChannels ACh
WHERE ACh.org_id = :org_id
AND C.id = ACh.channel_id
AND CA.id = C.channel_arch_id
15 years
2 commits - java/buildconf java/code
by Justin Sherrill
java/buildconf/builder/config/satellite/rhn.conf | 1 -
java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
New commits:
commit 678b550327f9da2c5f09c6a7eb2af50b4f0c947b
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 16:49:19 2009 -0400
changing junit tests to use joust
diff --git a/java/buildconf/builder/config/satellite/rhn.conf b/java/buildconf/builder/config/satellite/rhn.conf
index 01eb764..06eb7a6 100644
--- a/java/buildconf/builder/config/satellite/rhn.conf
+++ b/java/buildconf/builder/config/satellite/rhn.conf
@@ -38,7 +38,6 @@ web.default_db=rhnsat/rhnsat@rhnsat
web.legacy_user_enabled = 1
web.legacy_save_enabled = 1
-#hibernate.connection.url=jdbc:log:oracle.jdbc.driver.OracleDriver:oracle:thin:@joust.rhndev.redhat.com:1521:rhnsat
hibernate.connection.url=jdbc:log:oracle.jdbc.driver.OracleDriver:oracle:thin:@joust.rhndev.redhat.com:1521:rhnsat
hibernate.connection.driver_class=net.rkbloom.logdriver.LogDriver
commit ff068a40e341ce3ea73ccfa7dd269430d8e50903
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 16:49:38 2009 -0400
fixing unit test
diff --git a/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml b/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
index a580dc5..aff608f 100644
--- a/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
@@ -412,7 +412,7 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<query name="Action.findDependentActions"><![CDATA[
- from Action a where a.prerequisite in (:action_ids)
+ from Action a where a.prerequisite.id in (:action_ids)
]]></query>
<sql-query name="Action.findLastActionByServerIdAndActionTypeIdAndUserId">
15 years
Branch 'VADER' - 2 commits - java/buildconf java/code
by Justin Sherrill
java/buildconf/builder/config/satellite/rhn.conf | 3 +--
java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
New commits:
commit ab8290e583a4ba7eb0bb4453d5ac0b0019a01d37
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 16:49:38 2009 -0400
fixing unit test
diff --git a/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml b/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
index a580dc5..aff608f 100644
--- a/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/action/Action_legacyUser.hbm.xml
@@ -412,7 +412,7 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<query name="Action.findDependentActions"><![CDATA[
- from Action a where a.prerequisite in (:action_ids)
+ from Action a where a.prerequisite.id in (:action_ids)
]]></query>
<sql-query name="Action.findLastActionByServerIdAndActionTypeIdAndUserId">
commit 6a84da13a138fd0a0410323b84dfd98af2a1b933
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 16:49:19 2009 -0400
changing junit tests to use joust
diff --git a/java/buildconf/builder/config/satellite/rhn.conf b/java/buildconf/builder/config/satellite/rhn.conf
index 8acd5be..06eb7a6 100644
--- a/java/buildconf/builder/config/satellite/rhn.conf
+++ b/java/buildconf/builder/config/satellite/rhn.conf
@@ -38,8 +38,7 @@ web.default_db=rhnsat/rhnsat@rhnsat
web.legacy_user_enabled = 1
web.legacy_save_enabled = 1
-#hibernate.connection.url=jdbc:log:oracle.jdbc.driver.OracleDriver:oracle:thin:@joust.rhndev.redhat.com:1521:rhnsat
-hibernate.connection.url=jdbc:log:oracle.jdbc.driver.OracleDriver:oracle:thin:@test02-vmx.rhndev.redhat.com:1521:rhnsat
+hibernate.connection.url=jdbc:log:oracle.jdbc.driver.OracleDriver:oracle:thin:@joust.rhndev.redhat.com:1521:rhnsat
hibernate.connection.driver_class=net.rkbloom.logdriver.LogDriver
web.product_name = Spacewalk
15 years
Branch 'VADER' - java/code
by jdob
java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java | 222 ++++------
java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java | 7
java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp | 2
3 files changed, 98 insertions(+), 133 deletions(-)
New commits:
commit cf9b8bf8a88c40dd0a025d7b88fa70266445433e
Author: Jason Dobies <jason.dobies(a)redhat.com>
Date: Thu Apr 30 15:35:11 2009 -0400
497122 - Fixed error message where no selected organizations would appear as a selection error.
Also ported the code to follow the common model for ListTag 3.0 and fixed a small error in ListTag where ignoring empty selections would cause the dispatch to not be registered.
diff --git a/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java b/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
index 71eb7cf..9daadbb 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
@@ -14,19 +14,15 @@
*/
package com.redhat.rhn.frontend.action.multiorg;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-
+import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
-
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.security.PermissionException;
import com.redhat.rhn.domain.channel.Channel;
@@ -36,167 +32,131 @@ import com.redhat.rhn.domain.org.OrgFactory;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
-import com.redhat.rhn.frontend.action.DispatchedAction;
import com.redhat.rhn.frontend.dto.OrgChannelDto;
import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.frontend.struts.RhnHelper;
-import com.redhat.rhn.frontend.struts.SessionSetHelper;
import com.redhat.rhn.frontend.struts.StrutsDelegate;
import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
-import com.redhat.rhn.frontend.taglibs.list.collection.WebSessionSet;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListSessionSetHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
import com.redhat.rhn.manager.channel.ChannelManager;
import com.redhat.rhn.manager.org.OrgManager;
import com.redhat.rhn.manager.system.SystemManager;
/**
- * OrgChannelListAction
- * @version $Rev$
+ * Handles the (un)enabling of organizations trusted to a channel.
*/
-public class OrgChannelListAction extends DispatchedAction {
-
- @Override
- protected ActionForward setupAction(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
+public class OrgChannelListAction extends RhnAction implements Listable {
+
+ /** {@inheritDoc} */
+ public ActionForward execute(ActionMapping actionMapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
throws Exception {
-
- RequestContext ctx = new RequestContext(request);
- new OrgSet(request);
- Long cid = ctx.getParamAsLong("cid");
- Channel c = ChannelManager.lookupByIdAndUser(cid,
- ctx.getLoggedInUser());
- checkProtected(c);
-
- request.setAttribute("channel_name", c.getName());
- request.setAttribute(ListTagHelper.PARENT_URL,
- request.getRequestURI() + "?" +
- RequestContext.CID + "=" + c.getId());
-
- return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
- }
-
- @Override
- protected ActionForward commitAction(ActionMapping mapping,
- ActionForm formIn, HttpServletRequest request,
- HttpServletResponse response) {
+
+ // Before we do anything, make sure the channel is actually configured
+ // with protected access
RequestContext context = new RequestContext(request);
- OrgSet orgSet = new OrgSet(request);
- User user = context.getLoggedInUser();
Long cid = context.getParamAsLong("cid");
- Channel c = ChannelManager.lookupByIdAndUser(cid, user);
- checkProtected(c);
-
- Set <String> set = SessionSetHelper.lookupAndBind(request, orgSet.getDecl());
- List <OrgChannelDto> mylist = OrgManager.orgChannelTrusts(cid, user.getOrg());
- processSets(c, set, mylist);
- String strMode = set.size() != 1 ? "orgs.trust.channels.plural.jsp.enabled" :
- "orgs.trust.channels.single.jsp.enabled";
- getStrutsDelegate().saveMessage(strMode,
- new String [] {String.valueOf(set.size())}, request);
-
- request.setAttribute("channel_name", c.getName());
- Map params = new HashMap();
- params.put(RequestContext.CID, c.getId().toString());
- StrutsDelegate strutsDelegate = getStrutsDelegate();
- return strutsDelegate.forwardParams
- (mapping.findForward("success"), params);
+ Channel channel = ChannelManager.lookupByIdAndUser(cid, context.getLoggedInUser());
+
+ if (!channel.isProtected()) {
+ throw new PermissionException("Channel does not have protected access");
+ }
+
+ request.setAttribute("channel_name", channel.getName());
+ request.setAttribute(ListTagHelper.PARENT_URL,
+ request.getRequestURI() + "?" +
+ RequestContext.CID + "=" + channel.getId());
+
+ // Begin normal ListTag 3.0 usage
+ ListSessionSetHelper helper = new ListSessionSetHelper(this, request);
+ helper.ignoreEmptySelection();
+ helper.execute();
+
+ if (helper.isDispatched()) {
+ Set<String> selectedItems = helper.getSet();
+
+ handleDispatch(context.getLoggedInUser(), channel, selectedItems);
+
+ helper.destroy();
+
+ String messageKey =
+ selectedItems.size() != 1 ? "orgs.trust.channels.plural.jsp.enabled" :
+ "orgs.trust.channels.single.jsp.enabled";
+ getStrutsDelegate().saveMessage(messageKey,
+ new String [] {String.valueOf(selectedItems.size())}, request);
+
+ request.setAttribute("channel_name", channel.getName());
+ Map<String, String> params = new HashMap<String, String>();
+ params.put(RequestContext.CID, channel.getId().toString());
+ StrutsDelegate strutsDelegate = getStrutsDelegate();
+ return strutsDelegate.forwardParams
+ (actionMapping.findForward("success"), params);
+
+ }
+
+ return actionMapping.findForward(RhnHelper.DEFAULT_FORWARD);
}
-
- /**
- *
- * @param c Channel object we are setting trusted org access to
- * @param selectedSet set of orgs selected in form
- * @param original trusted org permissions before form manipulation
- * @return
- */
- private boolean processSets(Channel c, Set <String> selectedSet,
- List <OrgChannelDto> original) {
- boolean retval = false;
- Set<Org> s = c.getTrustedOrgs();
- for (OrgChannelDto item : original) {
- Org org = OrgFactory.lookupById(item.getId());
- if (!item.isSelected() && selectedSet.contains(org.getId().toString())) {
- s.add(org);
- retval = true;
- }
- else if (item.isSelected() && !selectedSet.contains(org.getId().toString())) {
- s.remove(org);
- unsubscribeSystems(org, c);
- retval = true;
- }
- }
- return retval;
+
+ /** {@inheritDoc} */
+ public List getResult(RequestContext context) {
+ User user = context.getLoggedInUser();
+ Org org = user.getOrg();
+ Long cid = context.getParamAsLong(RequestContext.CID);
+ return OrgManager.orgChannelTrusts(cid, org);
}
-
- /**
- *
- * @param orgIn Org to check systems
- * @param c Channel to unsusbcribe
- */
+
+ private void handleDispatch(User user, Channel channel, Set<String> selectedOrgs) {
+
+ // Load the current list of trusts for the channel
+ List<OrgChannelDto> trusts =
+ OrgManager.orgChannelTrusts(channel.getId(), user.getOrg());
+
+ Set<Org> s = channel.getTrustedOrgs();
+ for (OrgChannelDto item : trusts) {
+ Org org = OrgFactory.lookupById(item.getId());
+ if (!item.isSelected() && selectedOrgs.contains(org.getId().toString())) {
+ s.add(org);
+ }
+ else if (item.isSelected() && !selectedOrgs.contains(org.getId().toString())) {
+ s.remove(org);
+ unsubscribeSystems(org, channel);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
private void unsubscribeSystems(Org orgIn, Channel c) {
User u = UserFactory.findRandomOrgAdmin(orgIn);
- DataResult<Map<String, Object>> myList =
+ DataResult<Map<String, Object>> myList =
SystemManager.systemsSubscribedToChannel(c, u);
+
for (Map<String, Object> m : myList) {
- Long sid = (Long)m.get("id");
+ Long sid = (Long) m.get("id");
Server s = SystemManager.lookupByIdAndUser(sid, u);
+
if (s.isSubscribed(c)) {
// check if this is a base custom channel
if (c.getParentChannel() == null) {
// unsubscribe children first if subscribed
- List<Channel> children = c
- .getAccessibleChildrenFor(u);
- Iterator<Channel> i = children.iterator();
- while (i.hasNext()) {
- Channel child = (Channel) i.next();
+ List<Channel> children = c.getAccessibleChildrenFor(u);
+
+ for (Channel child : children) {
if (s.isSubscribed(child)) {
// unsubscribe server from child channel
-
child.getTrustedOrgs().remove(orgIn);
ChannelFactory.save(child);
- s = SystemManager.
- unsubscribeServerFromChannel(s, child, true);
+ s = SystemManager.unsubscribeServerFromChannel(s, child, true);
}
}
}
// unsubscribe server from channel
- s = SystemManager.unsubscribeServerFromChannel(s, c, true);
+ SystemManager.unsubscribeServerFromChannel(s, c, true);
}
}
}
-
- /**
- *
- * @param c Channel object to check access for
- */
- private void checkProtected(Channel c) {
- if (!c.isProtected()) {
- PermissionException pex =
- new PermissionException("Channel does not have protected access");
- throw pex;
- }
- }
-
- private static class OrgSet extends WebSessionSet {
-
- public OrgSet(HttpServletRequest request) {
- super(request);
- }
-
- @Override
- protected List getResult() {
- RequestContext context = getContext();
- User user = context.getLoggedInUser();
- Org org = user.getOrg();
- Long cid = context.getParamAsLong(RequestContext.CID);
- return OrgManager.orgChannelTrusts(cid, org);
- }
-
- @Override
- protected String getDecl() {
- return super.getDecl() +
- getContext().getLoggedInUser().getOrg().getId();
- }
-
- }
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
index 4142edc..d6a8e8f 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
@@ -143,8 +143,11 @@ abstract class ListSetHelper extends ListHelper {
if (request.getParameter(RequestContext.DISPATCH) != null) {
// if its one of the Dispatch actions handle it..
update();
-
- if (size() > 0) {
+
+ // We can consider the request dispatched (in other words valid) if the
+ // user selected something or we explicitly indicated that we allow no
+ // selections
+ if (size() > 0 || ignoreEmptySelection) {
dispatched = true;
return;
}
diff --git a/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp b/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
index 30284b1..bcba877 100644
--- a/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
+++ b/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
@@ -34,6 +34,8 @@
</p>
<rl:listset name="orgChannelProtectionSet">
+ <html:hidden property="cid" value="${param.cid}"/>
+
<!-- Start of Files list -->
<rl:list dataset="dataset"
name="list"
15 years
java/code
by jdob
java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java | 222 ++++------
java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java | 7
java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp | 2
3 files changed, 98 insertions(+), 133 deletions(-)
New commits:
commit 83c6c97c67e7d3a251c89a3c23e7ebad0d7e97dc
Author: Jason Dobies <jason.dobies(a)redhat.com>
Date: Thu Apr 30 15:35:11 2009 -0400
497122 - Fixed error message where no selected organizations would appear as a selection error.
Also ported the code to follow the common model for ListTag 3.0 and fixed a small error in ListTag where ignoring empty selections would cause the dispatch to not be registered.
diff --git a/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java b/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
index 71eb7cf..9daadbb 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/multiorg/OrgChannelListAction.java
@@ -14,19 +14,15 @@
*/
package com.redhat.rhn.frontend.action.multiorg;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-
+import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
-
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.security.PermissionException;
import com.redhat.rhn.domain.channel.Channel;
@@ -36,167 +32,131 @@ import com.redhat.rhn.domain.org.OrgFactory;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
-import com.redhat.rhn.frontend.action.DispatchedAction;
import com.redhat.rhn.frontend.dto.OrgChannelDto;
import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.frontend.struts.RhnHelper;
-import com.redhat.rhn.frontend.struts.SessionSetHelper;
import com.redhat.rhn.frontend.struts.StrutsDelegate;
import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
-import com.redhat.rhn.frontend.taglibs.list.collection.WebSessionSet;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListSessionSetHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
import com.redhat.rhn.manager.channel.ChannelManager;
import com.redhat.rhn.manager.org.OrgManager;
import com.redhat.rhn.manager.system.SystemManager;
/**
- * OrgChannelListAction
- * @version $Rev$
+ * Handles the (un)enabling of organizations trusted to a channel.
*/
-public class OrgChannelListAction extends DispatchedAction {
-
- @Override
- protected ActionForward setupAction(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
+public class OrgChannelListAction extends RhnAction implements Listable {
+
+ /** {@inheritDoc} */
+ public ActionForward execute(ActionMapping actionMapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
throws Exception {
-
- RequestContext ctx = new RequestContext(request);
- new OrgSet(request);
- Long cid = ctx.getParamAsLong("cid");
- Channel c = ChannelManager.lookupByIdAndUser(cid,
- ctx.getLoggedInUser());
- checkProtected(c);
-
- request.setAttribute("channel_name", c.getName());
- request.setAttribute(ListTagHelper.PARENT_URL,
- request.getRequestURI() + "?" +
- RequestContext.CID + "=" + c.getId());
-
- return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
- }
-
- @Override
- protected ActionForward commitAction(ActionMapping mapping,
- ActionForm formIn, HttpServletRequest request,
- HttpServletResponse response) {
+
+ // Before we do anything, make sure the channel is actually configured
+ // with protected access
RequestContext context = new RequestContext(request);
- OrgSet orgSet = new OrgSet(request);
- User user = context.getLoggedInUser();
Long cid = context.getParamAsLong("cid");
- Channel c = ChannelManager.lookupByIdAndUser(cid, user);
- checkProtected(c);
-
- Set <String> set = SessionSetHelper.lookupAndBind(request, orgSet.getDecl());
- List <OrgChannelDto> mylist = OrgManager.orgChannelTrusts(cid, user.getOrg());
- processSets(c, set, mylist);
- String strMode = set.size() != 1 ? "orgs.trust.channels.plural.jsp.enabled" :
- "orgs.trust.channels.single.jsp.enabled";
- getStrutsDelegate().saveMessage(strMode,
- new String [] {String.valueOf(set.size())}, request);
-
- request.setAttribute("channel_name", c.getName());
- Map params = new HashMap();
- params.put(RequestContext.CID, c.getId().toString());
- StrutsDelegate strutsDelegate = getStrutsDelegate();
- return strutsDelegate.forwardParams
- (mapping.findForward("success"), params);
+ Channel channel = ChannelManager.lookupByIdAndUser(cid, context.getLoggedInUser());
+
+ if (!channel.isProtected()) {
+ throw new PermissionException("Channel does not have protected access");
+ }
+
+ request.setAttribute("channel_name", channel.getName());
+ request.setAttribute(ListTagHelper.PARENT_URL,
+ request.getRequestURI() + "?" +
+ RequestContext.CID + "=" + channel.getId());
+
+ // Begin normal ListTag 3.0 usage
+ ListSessionSetHelper helper = new ListSessionSetHelper(this, request);
+ helper.ignoreEmptySelection();
+ helper.execute();
+
+ if (helper.isDispatched()) {
+ Set<String> selectedItems = helper.getSet();
+
+ handleDispatch(context.getLoggedInUser(), channel, selectedItems);
+
+ helper.destroy();
+
+ String messageKey =
+ selectedItems.size() != 1 ? "orgs.trust.channels.plural.jsp.enabled" :
+ "orgs.trust.channels.single.jsp.enabled";
+ getStrutsDelegate().saveMessage(messageKey,
+ new String [] {String.valueOf(selectedItems.size())}, request);
+
+ request.setAttribute("channel_name", channel.getName());
+ Map<String, String> params = new HashMap<String, String>();
+ params.put(RequestContext.CID, channel.getId().toString());
+ StrutsDelegate strutsDelegate = getStrutsDelegate();
+ return strutsDelegate.forwardParams
+ (actionMapping.findForward("success"), params);
+
+ }
+
+ return actionMapping.findForward(RhnHelper.DEFAULT_FORWARD);
}
-
- /**
- *
- * @param c Channel object we are setting trusted org access to
- * @param selectedSet set of orgs selected in form
- * @param original trusted org permissions before form manipulation
- * @return
- */
- private boolean processSets(Channel c, Set <String> selectedSet,
- List <OrgChannelDto> original) {
- boolean retval = false;
- Set<Org> s = c.getTrustedOrgs();
- for (OrgChannelDto item : original) {
- Org org = OrgFactory.lookupById(item.getId());
- if (!item.isSelected() && selectedSet.contains(org.getId().toString())) {
- s.add(org);
- retval = true;
- }
- else if (item.isSelected() && !selectedSet.contains(org.getId().toString())) {
- s.remove(org);
- unsubscribeSystems(org, c);
- retval = true;
- }
- }
- return retval;
+
+ /** {@inheritDoc} */
+ public List getResult(RequestContext context) {
+ User user = context.getLoggedInUser();
+ Org org = user.getOrg();
+ Long cid = context.getParamAsLong(RequestContext.CID);
+ return OrgManager.orgChannelTrusts(cid, org);
}
-
- /**
- *
- * @param orgIn Org to check systems
- * @param c Channel to unsusbcribe
- */
+
+ private void handleDispatch(User user, Channel channel, Set<String> selectedOrgs) {
+
+ // Load the current list of trusts for the channel
+ List<OrgChannelDto> trusts =
+ OrgManager.orgChannelTrusts(channel.getId(), user.getOrg());
+
+ Set<Org> s = channel.getTrustedOrgs();
+ for (OrgChannelDto item : trusts) {
+ Org org = OrgFactory.lookupById(item.getId());
+ if (!item.isSelected() && selectedOrgs.contains(org.getId().toString())) {
+ s.add(org);
+ }
+ else if (item.isSelected() && !selectedOrgs.contains(org.getId().toString())) {
+ s.remove(org);
+ unsubscribeSystems(org, channel);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
private void unsubscribeSystems(Org orgIn, Channel c) {
User u = UserFactory.findRandomOrgAdmin(orgIn);
- DataResult<Map<String, Object>> myList =
+ DataResult<Map<String, Object>> myList =
SystemManager.systemsSubscribedToChannel(c, u);
+
for (Map<String, Object> m : myList) {
- Long sid = (Long)m.get("id");
+ Long sid = (Long) m.get("id");
Server s = SystemManager.lookupByIdAndUser(sid, u);
+
if (s.isSubscribed(c)) {
// check if this is a base custom channel
if (c.getParentChannel() == null) {
// unsubscribe children first if subscribed
- List<Channel> children = c
- .getAccessibleChildrenFor(u);
- Iterator<Channel> i = children.iterator();
- while (i.hasNext()) {
- Channel child = (Channel) i.next();
+ List<Channel> children = c.getAccessibleChildrenFor(u);
+
+ for (Channel child : children) {
if (s.isSubscribed(child)) {
// unsubscribe server from child channel
-
child.getTrustedOrgs().remove(orgIn);
ChannelFactory.save(child);
- s = SystemManager.
- unsubscribeServerFromChannel(s, child, true);
+ s = SystemManager.unsubscribeServerFromChannel(s, child, true);
}
}
}
// unsubscribe server from channel
- s = SystemManager.unsubscribeServerFromChannel(s, c, true);
+ SystemManager.unsubscribeServerFromChannel(s, c, true);
}
}
}
-
- /**
- *
- * @param c Channel object to check access for
- */
- private void checkProtected(Channel c) {
- if (!c.isProtected()) {
- PermissionException pex =
- new PermissionException("Channel does not have protected access");
- throw pex;
- }
- }
-
- private static class OrgSet extends WebSessionSet {
-
- public OrgSet(HttpServletRequest request) {
- super(request);
- }
-
- @Override
- protected List getResult() {
- RequestContext context = getContext();
- User user = context.getLoggedInUser();
- Org org = user.getOrg();
- Long cid = context.getParamAsLong(RequestContext.CID);
- return OrgManager.orgChannelTrusts(cid, org);
- }
-
- @Override
- protected String getDecl() {
- return super.getDecl() +
- getContext().getLoggedInUser().getOrg().getId();
- }
-
- }
}
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
index 4142edc..d6a8e8f 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/helper/ListSetHelper.java
@@ -143,8 +143,11 @@ abstract class ListSetHelper extends ListHelper {
if (request.getParameter(RequestContext.DISPATCH) != null) {
// if its one of the Dispatch actions handle it..
update();
-
- if (size() > 0) {
+
+ // We can consider the request dispatched (in other words valid) if the
+ // user selected something or we explicitly indicated that we allow no
+ // selections
+ if (size() > 0 || ignoreEmptySelection) {
dispatched = true;
return;
}
diff --git a/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp b/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
index 30284b1..bcba877 100644
--- a/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
+++ b/java/code/webapp/WEB-INF/pages/multiorg/channels/orglist.jsp
@@ -34,6 +34,8 @@
</p>
<rl:listset name="orgChannelProtectionSet">
+ <html:hidden property="cid" value="${param.cid}"/>
+
<!-- Start of Files list -->
<rl:list dataset="dataset"
name="list"
15 years
Branch 'VADER' - java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java | 2 --
java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java | 8 ++++++--
2 files changed, 6 insertions(+), 4 deletions(-)
New commits:
commit 7df72086c169e49ebaefc4e84430ae18da193066
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 15:28:10 2009 -0400
498441 - fixing issue where removing package from a channel didnt regenerate repo cache
diff --git a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
index b70a15f..cfd1237 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
@@ -119,8 +119,6 @@ public class ChannelPackagesAddConfirmAction extends RhnAction {
packList.addAll(set.getElementValues());
ErrataCacheManager.insertCacheForChannelPackagesAsync(chanList, packList);
ChannelManager.refreshWithNewestPackages(chan, "web.channel_package_add");
- ChannelManager.queueChannelChange(chan.getLabel(),
- "web.channel_package_add", "web.channel_package_add");
set.clear();
}
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
index efd45fd..cf77333 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -144,7 +144,7 @@ public class ChannelManager extends BaseManager {
* @param label the label
*/
public static void refreshWithNewestPackages(Channel channel, String label) {
- ChannelFactory.refreshNewestPackageCache(channel, label);
+ refreshWithNewestPackages(channel.getId(), label);
}
/**
@@ -156,7 +156,11 @@ public class ChannelManager extends BaseManager {
* @param label the label
*/
public static void refreshWithNewestPackages(Long channelId, String label) {
- ChannelFactory.refreshNewestPackageCache(channelId, label);
+ Channel chan = ChannelFactory.lookupById(channelId);
+ ChannelFactory.refreshNewestPackageCache(channelId, label);
+ if (chan != null) {
+ ChannelManager.queueChannelChange(chan.getLabel(), label, label);
+ }
}
/**
15 years
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java | 2 --
java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java | 8 ++++++--
2 files changed, 6 insertions(+), 4 deletions(-)
New commits:
commit 579fffa5b28318ffee703549c774a61009979b19
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Apr 30 15:28:10 2009 -0400
498441 - fixing issue where removing package from a channel didnt regenerate repo cache
diff --git a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
index b70a15f..cfd1237 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ChannelPackagesAddConfirmAction.java
@@ -119,8 +119,6 @@ public class ChannelPackagesAddConfirmAction extends RhnAction {
packList.addAll(set.getElementValues());
ErrataCacheManager.insertCacheForChannelPackagesAsync(chanList, packList);
ChannelManager.refreshWithNewestPackages(chan, "web.channel_package_add");
- ChannelManager.queueChannelChange(chan.getLabel(),
- "web.channel_package_add", "web.channel_package_add");
set.clear();
}
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
index efd45fd..cf77333 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -144,7 +144,7 @@ public class ChannelManager extends BaseManager {
* @param label the label
*/
public static void refreshWithNewestPackages(Channel channel, String label) {
- ChannelFactory.refreshNewestPackageCache(channel, label);
+ refreshWithNewestPackages(channel.getId(), label);
}
/**
@@ -156,7 +156,11 @@ public class ChannelManager extends BaseManager {
* @param label the label
*/
public static void refreshWithNewestPackages(Long channelId, String label) {
- ChannelFactory.refreshNewestPackageCache(channelId, label);
+ Channel chan = ChannelFactory.lookupById(channelId);
+ ChannelFactory.refreshNewestPackageCache(channelId, label);
+ if (chan != null) {
+ ChannelManager.queueChannelChange(chan.getLabel(), label, label);
+ }
}
/**
15 years
Branch 'VADER' - java/code
by Brad Buckingham
java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 10 ++++++++++
1 file changed, 10 insertions(+)
New commits:
commit 66b40db71571aca6acb98d604c580267f4e91fb0
Author: Brad Buckingham <bbuckingham(a)redhat.com>
Date: Thu Apr 30 11:44:36 2009 -0400
498275 - api - system.obtainReactivationKey updated to replace existing key
In the UI, if a user generates a reactivation key, the new key replaces the
old one; however, with the current API it simply creates a new key. As
a result, there will be multiple reactivation keys for the system; however,
only one is seen from the UI.
This update will remove any existing reactivation keys for the system before
creating the new one.
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
index 508bff4..067167f 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
@@ -79,6 +79,7 @@ import com.redhat.rhn.domain.server.ServerGroupFactory;
import com.redhat.rhn.domain.server.VirtualInstance;
import com.redhat.rhn.domain.server.VirtualInstanceFactory;
import com.redhat.rhn.domain.token.ActivationKey;
+import com.redhat.rhn.domain.token.ActivationKeyFactory;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.dto.ActivationKeyDto;
import com.redhat.rhn.frontend.dto.ErrataOverview;
@@ -161,6 +162,15 @@ public class SystemHandler extends BaseHandler {
if (!SystemManager.serverHasFeature(server.getId(), "ftr_agent_smith")) {
throw new PermissionCheckFailureException();
}
+
+ // if there are any existing reactivation keys, remove them before
+ // creating a new one... there should only be 1; however, earlier
+ // versions of the API did not remove the existing reactivation keys;
+ // therefore, it is possible that multiple will be returned...
+ List<ActivationKey> existingKeys = ActivationKeyFactory.lookupByServer(server);
+ for (ActivationKey key : existingKeys) {
+ ActivationKeyFactory.removeKey(key);
+ }
String note = "Reactivation key for " + server.getName() + ".";
ActivationKey key = ActivationKeyManager.getInstance().
15 years