001: /**
002: * $Id: TasksDispatcher.java,v 1.7 2007/01/26 03:50:15 portalbld 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.service.provider.impl;
014:
015: import com.sun.portal.service.ProvisionRequest;
016: import com.sun.portal.service.ProvisionResponse;
017:
018: import com.sun.portal.service.MembershipRequest;
019: import com.sun.portal.service.MembershipResponse;
020: import com.sun.portal.service.ServiceException;
021:
022: import com.iplanet.sso.SSOException;
023: import com.iplanet.sso.SSOToken;
024: import com.sun.portal.desktop.dp.DPChannel;
025: import com.sun.portal.desktop.dp.DPRoot;
026: import com.sun.portal.taskadmin.TaskAdminException;
027: import java.io.IOException;
028: import java.util.HashMap;
029:
030: import com.sun.portal.providers.service.provision.ProviderProvisionProperties;
031: import com.sun.portal.providers.service.provision.ProviderProvisionEvent;
032: import com.sun.portal.providers.service.provision.ProviderMembershipEvent;
033: import com.sun.portal.providers.service.provision.ProviderProvisionRoles;
034: import com.sun.portal.log.common.PortalLogger;
035: import java.util.logging.Logger;
036: import java.util.logging.Level;
037: import javax.servlet.ServletContext;
038:
039: import java.util.Iterator;
040: import java.util.Map;
041:
042: /**
043: * THIS CLASS HAS NOT BEEN UPDATED TO REFLECT THE LATEST CHANGES IN COMMUNITY FRAMEWORK.
044: * SINCE THERE ARE NO PROVIDERS USING THIS FRAMEWORK - WE SHOULD REMOVE THIS IN NEXT RELEASE
045: * OR MAKE IT CONSISTENT WITH REST OF THE FRAMEWORK.
046: * @author mjain
047: */
048: public class TasksDispatcher {
049:
050: private static TasksDispatcher _instance;
051:
052: private TaskProvision _taskProvision;
053: private TaskMembership _taskMembership;
054: private ServletContext _context;
055: private Logger _logger = PortalLogger
056: .getLogger(TasksDispatcher.class);
057:
058: /** Creates a new instance of ProvisionDispatcher */
059: static void init(ServletContext context) throws ServiceException {
060: _instance = new TasksDispatcher(context);
061: }
062:
063: static TasksDispatcher getInstance() {
064: return _instance;
065: }
066:
067: TasksDispatcher(ServletContext context) throws ServiceException {
068: _context = context;
069: _taskProvision = new TaskProvision(context);
070: _taskMembership = new TaskMembership(context);
071: }
072:
073: void handleProvisionEvent(String providerName,
074: ProvisionRequest request, ProvisionResponse response)
075: throws ServiceException {
076: /*j
077: try {
078:
079: //
080: // get SSOToken to be passed
081:
082: SSOToken ssoToken = request.getSSOToken();
083:
084: //
085: // Create/Edit the DPChannel and create a new map of ProviderProvisionProperties
086: // that maps the role names to ProviderProvisionProperties
087: // this is passed in the ProvisionEvent.
088: //
089: Map provisionPropertiesMap = new HashMap();
090:
091: Map dpRoots = request.getDPRoots();
092: Iterator iter = dpRoots.keySet().iterator();
093:
094: while ( iter.hasNext()) {
095: String roleName = (String)iter.next();
096: DPRoot dpRoot = (DPRoot) dpRoots.get(roleName);
097:
098: DPChannel dpChannel = dpRoot.getChannel(request.getServiceInstanceName());
099:
100:
101:
102: if ( dpChannel == null) {
103: if (_logger.isLoggable(Level.FINE)) {
104: String msg = "Channel Missing:" +
105: "role:" + roleName +
106: ":providerName:" + providerName +
107: " Channel couldn't be created/found in the dpRoot";
108: _logger.log(Level.FINE, msg);
109: }
110: continue;
111: }
112:
113: // Get ProvisionPreferences
114:
115: ProviderProvisionProperties provisionProperties = new DPProviderProvisionPropertiesImpl(
116: ssoToken,
117: request.getCommunityPrincipalId(),
118: dpRoot,
119: request.getServiceInstanceName(),
120: false);
121:
122: provisionPropertiesMap.put(getProviderRoleName(roleName),
123: provisionProperties);
124:
125: }
126:
127:
128:
129: //
130: // Ready to create Provision Event
131: //
132:
133: ProviderProvisionEvent event = new ProviderProvisionEvent(
134: request.getCommunityPrincipalId(),
135: providerName,
136: request.getServiceInstanceName(),
137: provisionPropertiesMap,
138: ssoToken);
139:
140: _taskProvision.provision(providerName, event);
141:
142: }
143: catch(TaskAdminException ex) {
144: throw new ServiceException("Task Admin Error:" +
145: ":providerName:" + providerName , ex);
146: }
147:
148: */
149:
150: }
151:
152: void memberAdded(String providerName, MembershipRequest request,
153: MembershipResponse response) throws ServiceException {
154: /*
155: try {
156:
157: ProviderProvisionProperties provisionProperties = null;
158: //
159: // get SSOToken to be passed
160:
161: SSOToken ssoToken = request.getSSOToken();
162:
163: //
164: // Create Membership Event
165: //
166:
167: // see if we have portlet preferences for this role.
168: DPRoot dpRoot = request.getDPRootForRole();
169: if ( dpRoot != null) {
170: DPChannel dpChannel = request.getDPRootForRole().
171: getChannel(request.getServiceInstanceName());
172:
173: if ( dpChannel == null) {
174:
175: if (_logger.isLoggable(Level.FINE)) {
176: String msg = "Channel Missing:" +
177: ":providerName:" + providerName +
178: " Channel couldn't be found in the dpRoot";
179: _logger.log(Level.FINE, msg);
180: }
181: }
182: else {
183: provisionProperties = new DPProviderProvisionPropertiesImpl(
184: ssoToken,
185: request.getCommunityPrincipalId(),
186: request.getDPRootForRole(),
187: request.getServiceInstanceName(), true);
188:
189:
190: }
191: }
192:
193: ProviderMembershipEvent event = new ProviderMembershipEvent(
194: request.getCommunityPrincipalId(),
195: providerName,
196: request.getServiceInstanceName(),
197: request.getMemberId(),
198: provisionProperties,
199: getProviderRoleName(request.getRole()),
200: ssoToken);
201:
202:
203: _taskMembership.memberAdded(providerName, event);
204:
205: }
206: catch(TaskAdminException ex) {
207: throw new ServiceException("Task Admin Error:" +
208: ":providerName:" + providerName , ex);
209: }
210: */
211:
212: }
213:
214: void memberRemoved(String providerName, MembershipRequest request,
215: MembershipResponse response) throws ServiceException {
216: /*
217:
218: try {
219:
220: ProviderProvisionProperties provisionProperties = null;
221: //
222: // get SSOToken to be passed
223:
224: SSOToken ssoToken = request.getSSOToken();
225:
226: //
227: // Create Membership Event
228: //
229:
230: // see if we have portlet preferences for this role.
231: DPRoot dpRoot = request.getDPRootForRole();
232: if ( dpRoot != null) {
233: DPChannel dpChannel = request.getDPRootForRole().
234: getChannel(request.getServiceInstanceName());
235:
236: if ( dpChannel == null) {
237:
238: if (_logger.isLoggable(Level.FINE)) {
239: String msg = "Channel Missing:" +
240: ":providerName:" + providerName +
241: " Channel couldn't be found in the dpRoot";
242: _logger.log(Level.FINE, msg);
243: }
244: }
245: else {
246: provisionProperties = new DPProviderProvisionPropertiesImpl(
247: ssoToken,
248: request.getCommunityPrincipalId(),
249: request.getDPRootForRole(),
250: request.getServiceInstanceName(), true);
251:
252:
253: }
254: }
255: ProviderMembershipEvent event = new ProviderMembershipEvent(
256: request.getCommunityPrincipalId(),
257: providerName,
258: request.getServiceInstanceName(),
259: request.getMemberId(),
260: provisionProperties,
261: getProviderRoleName(request.getRole()),
262: ssoToken);
263:
264:
265: _taskMembership.memberRemoved(providerName, event);
266:
267: }
268: catch(TaskAdminException ex) {
269: throw new ServiceException("Task Admin Error:" +
270: ":providerName:" + providerName , ex);
271: }
272: */
273:
274: }
275:
276: private String getProviderRoleName(String serviceRoleName) {
277: if (ProviderProvisionRoles.OWNER_ROLE.equals(serviceRoleName)) {
278: return ProviderProvisionRoles.OWNER_ROLE;
279: } else if (ProviderProvisionRoles.MEMBER_ROLE
280: .equals(serviceRoleName)) {
281: return ProviderProvisionRoles.MEMBER_ROLE;
282: } else if (ProviderProvisionRoles.VISITOR_ROLE
283: .equals(serviceRoleName)) {
284: return ProviderProvisionRoles.VISITOR_ROLE;
285: } else {
286: throw new AssertionError("Unsupported role:"
287: + serviceRoleName);
288: }
289: }
290:
291: }
|