001
014
015 package com.liferay.portal.service.test;
016
017 import com.liferay.portal.jcr.JCRFactoryUtil;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.messaging.BaseDestination;
021 import com.liferay.portal.kernel.messaging.Destination;
022 import com.liferay.portal.kernel.messaging.DestinationNames;
023 import com.liferay.portal.kernel.messaging.MessageBus;
024 import com.liferay.portal.kernel.messaging.MessageBusUtil;
025 import com.liferay.portal.kernel.messaging.SynchronousDestination;
026 import com.liferay.portal.kernel.messaging.sender.SynchronousMessageSender;
027 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelper;
028 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelperUtil;
029 import com.liferay.portal.kernel.search.SearchEngineUtil;
030 import com.liferay.portal.kernel.test.util.RoleTestUtil;
031 import com.liferay.portal.kernel.test.util.TestPropsValues;
032 import com.liferay.portal.kernel.util.FileUtil;
033 import com.liferay.portal.kernel.util.LocaleThreadLocal;
034 import com.liferay.portal.kernel.util.PropsKeys;
035 import com.liferay.portal.model.Portlet;
036 import com.liferay.portal.model.Role;
037 import com.liferay.portal.model.User;
038 import com.liferay.portal.model.impl.PortletImpl;
039 import com.liferay.portal.repository.liferayrepository.LiferayRepository;
040 import com.liferay.portal.security.auth.PrincipalThreadLocal;
041 import com.liferay.portal.security.permission.PermissionChecker;
042 import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
043 import com.liferay.portal.security.permission.PermissionThreadLocal;
044 import com.liferay.portal.security.permission.ResourceActionsUtil;
045 import com.liferay.portal.service.CompanyLocalServiceUtil;
046 import com.liferay.portal.service.ResourceActionLocalServiceUtil;
047 import com.liferay.portal.service.ServiceContext;
048 import com.liferay.portal.service.ServiceContextThreadLocal;
049 import com.liferay.portal.tools.DBUpgrader;
050 import com.liferay.portal.util.PortalInstances;
051 import com.liferay.portal.util.PortalUtil;
052 import com.liferay.portal.util.PropsUtil;
053 import com.liferay.portal.util.PropsValues;
054 import com.liferay.registry.Filter;
055 import com.liferay.registry.Registry;
056 import com.liferay.registry.RegistryUtil;
057 import com.liferay.registry.dependency.ServiceDependencyListener;
058 import com.liferay.registry.dependency.ServiceDependencyManager;
059
060 import java.util.Calendar;
061 import java.util.Date;
062 import java.util.GregorianCalendar;
063 import java.util.HashMap;
064 import java.util.List;
065 import java.util.Locale;
066 import java.util.Set;
067
068
074 public class ServiceTestUtil {
075
076 public static final int THREAD_COUNT = 25;
077
078
081 @Deprecated
082 public static void addResourcePermission(
083 Role role, String resourceName, int scope, String primKey,
084 String actionId)
085 throws Exception {
086
087 RoleTestUtil.addResourcePermission(
088 role, resourceName, scope, primKey, actionId);
089 }
090
091
094 @Deprecated
095 public static void addResourcePermission(
096 String roleName, String resourceName, int scope, String primKey,
097 String actionId)
098 throws Exception {
099
100 RoleTestUtil.addResourcePermission(
101 roleName, resourceName, scope, primKey, actionId);
102 }
103
104
107 @Deprecated
108 public static Role addRole(String roleName, int roleType) throws Exception {
109 return RoleTestUtil.addRole(roleName, roleType);
110 }
111
112
115 @Deprecated
116 public static Role addRole(
117 String roleName, int roleType, String resourceName, int scope,
118 String primKey, String actionId)
119 throws Exception {
120
121 return RoleTestUtil.addRole(
122 roleName, roleType, resourceName, scope, primKey, actionId);
123 }
124
125 public static void destroyServices() {
126 _deleteDirectories();
127 }
128
129 public static void initPermissions() {
130 try {
131 PortalInstances.addCompanyId(TestPropsValues.getCompanyId());
132
133 setUser(TestPropsValues.getUser());
134 }
135 catch (Exception e) {
136 _log.error(e, e);
137 }
138 }
139
140 public static void initMainServletServices() {
141
142
143
144 try {
145 DBUpgrader.upgrade();
146 }
147 catch (Throwable t) {
148 _log.error(t, t);
149 }
150
151
152
153 MessageBusUtil messageBusUtil = new MessageBusUtil();
154
155 messageBusUtil.setSynchronousMessageSenderMode(
156 SynchronousMessageSender.Mode.DEFAULT);
157
158
159
160 ServiceDependencyManager schedulerServiceDependencyManager =
161 new ServiceDependencyManager();
162
163 schedulerServiceDependencyManager.addServiceDependencyListener(
164 new ServiceDependencyListener() {
165
166 @Override
167 public void dependenciesFulfilled() {
168 try {
169 SchedulerEngineHelperUtil.start();
170 }
171 catch (Exception e) {
172 _log.error(e, e);
173 }
174 }
175
176 @Override
177 public void destroy() {
178 }
179
180 });
181
182 final Registry registry = RegistryUtil.getRegistry();
183
184 Filter filter = registry.getFilter(
185 "(objectClass=com.liferay.portal.scheduler.quartz.internal." +
186 "QuartzSchemaManager)");
187
188 schedulerServiceDependencyManager.registerDependencies(
189 new Class[] {SchedulerEngineHelper.class},
190 new Filter[] {filter});
191
192
193
194 try {
195 DBUpgrader.verify();
196 }
197 catch (Exception e) {
198 _log.error(e, e);
199 }
200 }
201
202 private static Filter _registerDestinationFilter(String destinationName) {
203 Registry registry = RegistryUtil.getRegistry();
204
205 return registry.getFilter(
206 "(&(destination.name=" + destinationName +
207 ")(objectClass=" + Destination.class.getName() + "))");
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.registerTrashHandlers();
267
268
269
270 PortalRegisterTestUtil.registerWorkflowHandlers();
271
272
273
274 PortalRegisterTestUtil.registerAssetRendererFactories();
275
276
277
278 try {
279 CompanyLocalServiceUtil.checkCompany(
280 TestPropsValues.COMPANY_WEB_ID);
281 }
282 catch (Exception e) {
283 _log.error(e, e);
284 }
285 }
286
287 public static void initServices() {
288
289
290
291 try {
292 JCRFactoryUtil.prepare();
293 }
294 catch (Exception e) {
295 _log.error(e, e);
296 }
297
298
299
300 _setThreadLocals();
301
302
303
304 _deleteDirectories();
305
306
307
308 try {
309 SearchEngineUtil.initialize(TestPropsValues.getCompanyId());
310 }
311 catch (Exception e) {
312 _log.error(e, e);
313 }
314 }
315
316 public static Date newDate() throws Exception {
317 return new Date();
318 }
319
320 public static Date newDate(int month, int day, int year) throws Exception {
321 Calendar calendar = new GregorianCalendar();
322
323 calendar.set(Calendar.MONTH, month);
324 calendar.set(Calendar.DATE, day);
325 calendar.set(Calendar.YEAR, year);
326
327 return calendar.getTime();
328 }
329
330 public static void setUser(User user) throws Exception {
331 if (user == null) {
332 return;
333 }
334
335 PrincipalThreadLocal.setName(user.getUserId());
336
337 PermissionChecker permissionChecker =
338 PermissionCheckerFactoryUtil.create(user);
339
340 PermissionThreadLocal.setPermissionChecker(permissionChecker);
341 }
342
343 private static void _checkClassNames() {
344 PortalUtil.getClassNameId(LiferayRepository.class.getName());
345 }
346
347 private static void _checkResourceActions() throws Exception {
348 for (int i = 0; i < 200; i++) {
349 String portletId = String.valueOf(i);
350
351 Portlet portlet = new PortletImpl();
352
353 portlet.setPortletId(portletId);
354 portlet.setPortletModes(new HashMap<String, Set<String>>());
355
356 List<String> portletActions =
357 ResourceActionsUtil.getPortletResourceActions(portletId);
358
359 ResourceActionLocalServiceUtil.checkResourceActions(
360 portletId, portletActions);
361
362 List<String> modelNames =
363 ResourceActionsUtil.getPortletModelResources(portletId);
364
365 for (String modelName : modelNames) {
366 List<String> modelActions =
367 ResourceActionsUtil.getModelResourceActions(modelName);
368
369 ResourceActionLocalServiceUtil.checkResourceActions(
370 modelName, modelActions);
371 }
372 }
373 }
374
375 private static void _deleteDirectories() {
376 FileUtil.deltree(PropsValues.DL_STORE_FILE_SYSTEM_ROOT_DIR);
377
378 FileUtil.deltree(
379 PropsUtil.get(PropsKeys.JCR_JACKRABBIT_REPOSITORY_ROOT));
380 }
381
382 private static void _replaceWithSynchronousDestination(String name) {
383 BaseDestination baseDestination = new SynchronousDestination();
384
385 baseDestination.setName(name);
386
387 MessageBus messageBus = MessageBusUtil.getMessageBus();
388
389 messageBus.replace(baseDestination);
390 }
391
392 private static void _setThreadLocals() {
393 LocaleThreadLocal.setThemeDisplayLocale(new Locale("en", "US"));
394
395 ServiceContext serviceContext = new ServiceContext();
396
397 serviceContext.setPathMain("path");
398 serviceContext.setPortalURL("http:
399
400 ServiceContextThreadLocal.pushServiceContext(serviceContext);
401 }
402
403 private static final Log _log = LogFactoryUtil.getLog(
404 ServiceTestUtil.class);
405
406 }