001
014
015 package com.liferay.portal.service.test;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.messaging.BaseDestination;
020 import com.liferay.portal.kernel.messaging.Destination;
021 import com.liferay.portal.kernel.messaging.DestinationNames;
022 import com.liferay.portal.kernel.messaging.MessageBus;
023 import com.liferay.portal.kernel.messaging.MessageBusUtil;
024 import com.liferay.portal.kernel.messaging.SynchronousDestination;
025 import com.liferay.portal.kernel.messaging.sender.SynchronousMessageSender;
026 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelper;
027 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelperUtil;
028 import com.liferay.portal.kernel.search.SearchEngineHelperUtil;
029 import com.liferay.portal.kernel.test.util.RoleTestUtil;
030 import com.liferay.portal.kernel.test.util.TestPropsValues;
031 import com.liferay.portal.kernel.util.LocaleThreadLocal;
032 import com.liferay.portal.model.Portlet;
033 import com.liferay.portal.model.Role;
034 import com.liferay.portal.model.User;
035 import com.liferay.portal.model.impl.PortletImpl;
036 import com.liferay.portal.repository.liferayrepository.LiferayRepository;
037 import com.liferay.portal.security.auth.PrincipalThreadLocal;
038 import com.liferay.portal.security.permission.PermissionChecker;
039 import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
040 import com.liferay.portal.security.permission.PermissionThreadLocal;
041 import com.liferay.portal.security.permission.ResourceActionsUtil;
042 import com.liferay.portal.service.CompanyLocalServiceUtil;
043 import com.liferay.portal.service.ResourceActionLocalServiceUtil;
044 import com.liferay.portal.service.ServiceContext;
045 import com.liferay.portal.service.ServiceContextThreadLocal;
046 import com.liferay.portal.tools.DBUpgrader;
047 import com.liferay.portal.util.PortalInstances;
048 import com.liferay.portal.util.PortalUtil;
049 import com.liferay.registry.Filter;
050 import com.liferay.registry.Registry;
051 import com.liferay.registry.RegistryUtil;
052 import com.liferay.registry.dependency.ServiceDependencyListener;
053 import com.liferay.registry.dependency.ServiceDependencyManager;
054
055 import java.util.Calendar;
056 import java.util.Date;
057 import java.util.GregorianCalendar;
058 import java.util.HashMap;
059 import java.util.List;
060 import java.util.Locale;
061 import java.util.Set;
062
063
069 public class ServiceTestUtil {
070
071 public static final int RETRY_COUNT = 10;
072
073 public static final int THREAD_COUNT = 10;
074
075
078 @Deprecated
079 public static void addResourcePermission(
080 Role role, String resourceName, int scope, String primKey,
081 String actionId)
082 throws Exception {
083
084 RoleTestUtil.addResourcePermission(
085 role, resourceName, scope, primKey, actionId);
086 }
087
088
091 @Deprecated
092 public static void addResourcePermission(
093 String roleName, String resourceName, int scope, String primKey,
094 String actionId)
095 throws Exception {
096
097 RoleTestUtil.addResourcePermission(
098 roleName, resourceName, scope, primKey, actionId);
099 }
100
101
104 @Deprecated
105 public static Role addRole(String roleName, int roleType) throws Exception {
106 return RoleTestUtil.addRole(roleName, roleType);
107 }
108
109
112 @Deprecated
113 public static Role addRole(
114 String roleName, int roleType, String resourceName, int scope,
115 String primKey, String actionId)
116 throws Exception {
117
118 return RoleTestUtil.addRole(
119 roleName, roleType, resourceName, scope, primKey, actionId);
120 }
121
122 public static void initMainServletServices() {
123
124
125
126 try {
127 DBUpgrader.upgrade();
128 }
129 catch (Throwable t) {
130 _log.error(t, t);
131 }
132
133
134
135 MessageBusUtil messageBusUtil = new MessageBusUtil();
136
137 messageBusUtil.setSynchronousMessageSenderMode(
138 SynchronousMessageSender.Mode.DEFAULT);
139
140
141
142 ServiceDependencyManager schedulerServiceDependencyManager =
143 new ServiceDependencyManager();
144
145 schedulerServiceDependencyManager.addServiceDependencyListener(
146 new ServiceDependencyListener() {
147
148 @Override
149 public void dependenciesFulfilled() {
150 try {
151 SchedulerEngineHelperUtil.start();
152 }
153 catch (Exception e) {
154 _log.error(e, e);
155 }
156 }
157
158 @Override
159 public void destroy() {
160 }
161
162 });
163
164 final Registry registry = RegistryUtil.getRegistry();
165
166 Filter filter = registry.getFilter(
167 "(objectClass=com.liferay.portal.scheduler.quartz.internal." +
168 "QuartzSchemaManager)");
169
170 schedulerServiceDependencyManager.registerDependencies(
171 new Class[] {SchedulerEngineHelper.class}, new Filter[] {filter});
172
173
174
175 try {
176 DBUpgrader.verify();
177 }
178 catch (Exception e) {
179 _log.error(e, e);
180 }
181 }
182
183 public static void initPermissions() {
184 try {
185 PortalInstances.addCompanyId(TestPropsValues.getCompanyId());
186
187 setUser(TestPropsValues.getUser());
188 }
189 catch (Exception e) {
190 _log.error(e, e);
191 }
192 }
193
194 public static void initServices() {
195
196
197
198 _setThreadLocals();
199
200
201
202 try {
203 SearchEngineHelperUtil.initialize(TestPropsValues.getCompanyId());
204 }
205 catch (Exception e) {
206 _log.error(e, e);
207 }
208 }
209
210 public static void initStaticServices() {
211
212
213
214 PortalRegisterTestUtil.registerIndexers();
215
216
217
218 if (TestPropsValues.DL_FILE_ENTRY_PROCESSORS_TRIGGER_SYNCHRONOUSLY) {
219 ServiceDependencyManager serviceDependencyManager =
220 new ServiceDependencyManager();
221
222 Filter audioProcessorFilter = _registerDestinationFilter(
223 DestinationNames.DOCUMENT_LIBRARY_AUDIO_PROCESSOR);
224 Filter imageProcessFilter = _registerDestinationFilter(
225 DestinationNames.DOCUMENT_LIBRARY_IMAGE_PROCESSOR);
226 Filter pdfProcessorFilter = _registerDestinationFilter(
227 DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR);
228 Filter rawMetaDataProcessorFilter = _registerDestinationFilter(
229 DestinationNames.DOCUMENT_LIBRARY_RAW_METADATA_PROCESSOR);
230 Filter videoProcessorFilter = _registerDestinationFilter(
231 DestinationNames.DOCUMENT_LIBRARY_VIDEO_PROCESSOR);
232
233 serviceDependencyManager.registerDependencies(
234 audioProcessorFilter, imageProcessFilter, pdfProcessorFilter,
235 rawMetaDataProcessorFilter, videoProcessorFilter);
236
237 serviceDependencyManager.waitForDependencies();
238
239 _replaceWithSynchronousDestination(
240 DestinationNames.DOCUMENT_LIBRARY_AUDIO_PROCESSOR);
241 _replaceWithSynchronousDestination(
242 DestinationNames.DOCUMENT_LIBRARY_IMAGE_PROCESSOR);
243 _replaceWithSynchronousDestination(
244 DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR);
245 _replaceWithSynchronousDestination(
246 DestinationNames.DOCUMENT_LIBRARY_RAW_METADATA_PROCESSOR);
247 _replaceWithSynchronousDestination(
248 DestinationNames.DOCUMENT_LIBRARY_VIDEO_PROCESSOR);
249 }
250
251
252
253 _checkClassNames();
254
255
256
257 try {
258 _checkResourceActions();
259 }
260 catch (Exception e) {
261 _log.error(e, e);
262 }
263
264
265
266 PortalRegisterTestUtil.registerWorkflowHandlers();
267
268
269
270 try {
271 CompanyLocalServiceUtil.checkCompany(
272 TestPropsValues.COMPANY_WEB_ID);
273 }
274 catch (Exception e) {
275 _log.error(e, e);
276 }
277 }
278
279 public static Date newDate() throws Exception {
280 return new Date();
281 }
282
283 public static Date newDate(int month, int day, int year) throws Exception {
284 Calendar calendar = new GregorianCalendar();
285
286 calendar.set(Calendar.MONTH, month);
287 calendar.set(Calendar.DATE, day);
288 calendar.set(Calendar.YEAR, year);
289
290 return calendar.getTime();
291 }
292
293 public static void setUser(User user) throws Exception {
294 if (user == null) {
295 return;
296 }
297
298 PrincipalThreadLocal.setName(user.getUserId());
299
300 PermissionChecker permissionChecker =
301 PermissionCheckerFactoryUtil.create(user);
302
303 PermissionThreadLocal.setPermissionChecker(permissionChecker);
304 }
305
306 private static void _checkClassNames() {
307 PortalUtil.getClassNameId(LiferayRepository.class.getName());
308 }
309
310 private static void _checkResourceActions() throws Exception {
311 for (int i = 0; i < 200; i++) {
312 String portletId = String.valueOf(i);
313
314 Portlet portlet = new PortletImpl();
315
316 portlet.setPortletId(portletId);
317 portlet.setPortletModes(new HashMap<String, Set<String>>());
318
319 List<String> portletActions =
320 ResourceActionsUtil.getPortletResourceActions(portletId);
321
322 ResourceActionLocalServiceUtil.checkResourceActions(
323 portletId, portletActions);
324
325 List<String> modelNames =
326 ResourceActionsUtil.getPortletModelResources(portletId);
327
328 for (String modelName : modelNames) {
329 List<String> modelActions =
330 ResourceActionsUtil.getModelResourceActions(modelName);
331
332 ResourceActionLocalServiceUtil.checkResourceActions(
333 modelName, modelActions);
334 }
335 }
336 }
337
338 private static Filter _registerDestinationFilter(String destinationName) {
339 Registry registry = RegistryUtil.getRegistry();
340
341 return registry.getFilter(
342 "(&(destination.name=" + destinationName +
343 ")(objectClass=" + Destination.class.getName() + "))");
344 }
345
346 private static void _replaceWithSynchronousDestination(String name) {
347 BaseDestination baseDestination = new SynchronousDestination();
348
349 baseDestination.setName(name);
350
351 MessageBus messageBus = MessageBusUtil.getMessageBus();
352
353 messageBus.replace(baseDestination);
354 }
355
356 private static void _setThreadLocals() {
357 LocaleThreadLocal.setThemeDisplayLocale(new Locale("en", "US"));
358
359 ServiceContext serviceContext = new ServiceContext();
360
361 serviceContext.setPathMain("path");
362 serviceContext.setPortalURL("http:
363
364 ServiceContextThreadLocal.pushServiceContext(serviceContext);
365 }
366
367 private static final Log _log = LogFactoryUtil.getLog(
368 ServiceTestUtil.class);
369
370 }