001: /**
002: * $Id: Producer.java,v 1.4 2005/10/05 13:25:06 as154356 Exp $
003: * Copyright 2005 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.wsrp.producer.admin.mbeans;
014:
015: import java.util.Collections;
016: import java.util.HashSet;
017: import java.util.Iterator;
018: import java.util.List;
019: import java.util.Properties;
020: import java.util.Set;
021: import java.util.logging.Level;
022: import java.util.logging.Logger;
023:
024: import com.iplanet.am.util.Locale;
025: import com.sun.portal.admin.common.PSMBeanException;
026: import com.sun.portal.admin.common.context.PortalDomainContext;
027: import com.sun.portal.admin.common.context.PSConfigContext;
028: import com.sun.portal.admin.server.AdminServerUtil;
029: import com.sun.portal.admin.server.PASModule;
030: import com.sun.portal.admin.server.mbeans.PSResource;
031: import com.sun.portal.log.common.PortalLogger;
032: import com.sun.portal.wsrp.common.WSRPSpecKeys;
033: import com.sun.portal.wsrp.common.stubs.GetServiceDescription;
034: import com.sun.portal.wsrp.common.stubs.ModelDescription;
035: import com.sun.portal.wsrp.common.stubs.Property;
036: import com.sun.portal.wsrp.common.stubs.PropertyDescription;
037: import com.sun.portal.wsrp.common.stubs.RegistrationData;
038: import com.sun.portal.wsrp.common.stubs.ServiceDescription;
039: import com.sun.portal.wsrp.producer.impl.ProducerImpl;
040: import com.sun.portal.wsrp.producer.registration.RegistrationManager;
041: import com.sun.portal.wsrp.producer.registration.RegistrationRecord;
042: import com.sun.portal.wsrp.producer.registration.validator.RegistrationValidator;
043: import com.iplanet.sso.SSOToken;
044: import com.iplanet.sso.SSOTokenManager;
045: import com.iplanet.sso.SSOException;
046:
047: public class Producer extends PSResource implements ProducerMBean {
048: public static final char TAB = '\t';
049:
050: public static final String[] DEFAULT_CONSUMER_MODES = {
051: WSRPSpecKeys.MODE_VIEW, WSRPSpecKeys.MODE_EDIT,
052: WSRPSpecKeys.MODE_HELP };
053:
054: public static final String[] DEFAULT_CONSUMER_WINDOW_STATES = {
055: WSRPSpecKeys.WINDOW_STATE_NORMAL,
056: WSRPSpecKeys.WINDOW_STATE_MINIMIZED,
057: WSRPSpecKeys.WINDOW_STATE_MAXIMIZED };
058:
059: public static final String[] DEFAULT_CONSUMER_USER_SCOPES = {
060: WSRPSpecKeys.CACHE_PER_USER, WSRPSpecKeys.CACHE_FOR_ALL };
061:
062: protected String lang = null;
063:
064: private static Logger logger = PortalLogger
065: .getLogger(Producer.class);
066:
067: public void init(PSConfigContext cc, PortalDomainContext pdc,
068: List path) {
069: super .init(cc, pdc, path);
070: lang = Locale.getDefaultLocale().toString().replace('_', '-');
071: }
072:
073: public Set listConsumerRegistrations() throws PSMBeanException {
074: try {
075: //SSOToken ssoToken = getSSOToken();
076: SSOToken ssoToken = AdminServerUtil.getSSOToken();
077: String portalId = path.get(2).toString();
078: ProducerImpl producer = new ProducerImpl(ssoToken, getID(),
079: portalId);
080:
081: Set registrationRecords = producer.getRegistrationManager()
082: .getRegistrationRecords();
083:
084: Set result = new HashSet(registrationRecords.size());
085:
086: for (Iterator i = registrationRecords.iterator(); i
087: .hasNext();) {
088: RegistrationRecord rr = (RegistrationRecord) i.next();
089: StringBuffer sb = new StringBuffer(rr
090: .getRegistrationHandle());
091: sb.append(TAB);
092: sb.append(rr.isEnabled());
093: sb.append(TAB);
094: sb.append(rr.getConsumerName());
095: result.add(sb.toString());
096: }
097:
098: return result;
099: } catch (Exception e) {
100: logger.log(Level.SEVERE, "PSWS_CSPWPAB0001", e);
101: throw new PSMBeanException("wsrp.producer", e.getMessage());
102: }
103: }
104:
105: public void createConsumerRegistration(Properties registrationData)
106: throws PSMBeanException {
107:
108: String consumerName = registrationData
109: .getProperty(ProducerAttributes.CONSUMER_NAME);
110:
111: if ((consumerName == null)
112: || (consumerName.trim().length() == 0)) {
113: logger.log(Level.SEVERE, "PSWS_CSPWPAB0002", consumerName);
114: throw new PSMBeanException("wsrp.producer");
115: }
116:
117: consumerName = consumerName.trim();
118: String consumerAgent = registrationData
119: .getProperty(ProducerAttributes.CONSUMER_AGENT);
120:
121: if ((consumerAgent == null)
122: || (consumerAgent.trim().length() == 0)) {
123: logger.log(Level.SEVERE, "PSWS_CSPWPAB0003", consumerAgent);
124: throw new PSMBeanException("wsrp.producer");
125: }
126:
127: consumerAgent = consumerAgent.trim();
128: String mgs = registrationData
129: .getProperty(ProducerAttributes.METHOD_GET_SUPPORTED);
130: boolean methodGetSupported = Boolean.valueOf(mgs)
131: .booleanValue();
132: String enabled = registrationData
133: .getProperty(ProducerAttributes.ENABLED);
134: boolean status = Boolean.valueOf(enabled).booleanValue();
135: Property[] properties = null;
136: GetServiceDescription gsd = new GetServiceDescription();
137:
138: try {
139: //SSOToken ssoToken = getSSOToken();
140: SSOToken ssoToken = AdminServerUtil.getSSOToken();
141: String portalId = path.get(2).toString();
142:
143: ProducerImpl producer = new ProducerImpl(ssoToken, getID(),
144: portalId);
145:
146: ServiceDescription sd = producer
147: .getServiceDescriptionManager()
148: .getServiceDescription(gsd);
149:
150: ModelDescription rpd = sd
151: .getRegistrationPropertyDescription();
152:
153: if (rpd != null) {
154: PropertyDescription[] propDesc = rpd
155: .getPropertyDescriptions();
156:
157: if ((propDesc != null) && (propDesc.length > 0)) {
158: properties = new Property[propDesc.length];
159:
160: for (int i = 0; i < propDesc.length; i++) {
161: String propName = propDesc[i].getName();
162: String key = "RegistrationProperties["
163: + propName + "]";
164: String value = registrationData
165: .getProperty(key);
166: properties[i] = new Property(propName, lang,
167: value, null);
168: }
169: }
170: }
171:
172: RegistrationData regData = new RegistrationData(
173: consumerName, consumerAgent, methodGetSupported,
174: DEFAULT_CONSUMER_MODES,
175: DEFAULT_CONSUMER_WINDOW_STATES,
176: DEFAULT_CONSUMER_USER_SCOPES, null, properties,
177: null);
178:
179: RegistrationManager rm = producer.getRegistrationManager();
180: RegistrationValidator regValidator = rm
181: .getRegistrationValidator();
182: int resultCode = regValidator.validate(regData, sd);
183:
184: if (resultCode < 0) {
185: String key = rm.getRegistrationValidatorClassName()
186: + resultCode;
187: throw new PSMBeanException(key);
188: }
189:
190: rm.addRegistration(regData, status);
191: } catch (Exception e) {
192: logger.log(Level.SEVERE, "PSWS_CSPWPAB0004", e);
193: throw new PSMBeanException("wsrp.producer", e.getMessage());
194: }
195: }
196:
197: public void deleteConsumerRegistration(String registrationHandle)
198: throws PSMBeanException {
199:
200: try {
201: //SSOToken ssoToken = getSSOToken();
202: SSOToken ssoToken = AdminServerUtil.getSSOToken();
203: String portalId = path.get(2).toString();
204:
205: ProducerImpl producer = new ProducerImpl(ssoToken, getID(),
206: portalId);
207:
208: RegistrationManager rm = producer.getRegistrationManager();
209: rm.removeRegistrations(Collections
210: .singleton(registrationHandle));
211: } catch (Exception e) {
212: logger.log(Level.SEVERE, "PSWS_CSPWPAB0005", e);
213: throw new PSMBeanException("wsrp.producer", e.getMessage());
214: }
215: }
216: }
|