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},
172 new Filter[] {filter});
173
174
175
176 try {
177 DBUpgrader.verify();
178 }
179 catch (Exception e) {
180 _log.error(e, e);
181 }
182 }
183
184 public static void initPermissions() {
185 try {
186 PortalInstances.addCompanyId(TestPropsValues.getCompanyId());
187
188 setUser(TestPropsValues.getUser());
189 }
190 catch (Exception e) {
191 _log.error(e, e);
192 }
193 }
194
195 public static void initServices() {
196
197
198
199 _setThreadLocals();
200
201
202
203 try {
204 SearchEngineHelperUtil.initialize(TestPropsValues.getCompanyId());
205 }
206 catch (Exception e) {
207 _log.error(e, e);
208 }
209 }
210
211 public static void initStaticServices() {
212
213
214
215 PortalRegisterTestUtil.registerIndexers();
216
217
218
219 if (TestPropsValues.DL_FILE_ENTRY_PROCESSORS_TRIGGER_SYNCHRONOUSLY) {
220 ServiceDependencyManager serviceDependencyManager =
221 new ServiceDependencyManager();
222
223 Filter audioProcessorFilter = _registerDestinationFilter(
224 DestinationNames.DOCUMENT_LIBRARY_AUDIO_PROCESSOR);
225 Filter imageProcessFilter = _registerDestinationFilter(
226 DestinationNames.DOCUMENT_LIBRARY_IMAGE_PROCESSOR);
227 Filter pdfProcessorFilter = _registerDestinationFilter(
228 DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR);
229 Filter rawMetaDataProcessorFilter = _registerDestinationFilter(
230 DestinationNames.DOCUMENT_LIBRARY_RAW_METADATA_PROCESSOR);
231 Filter videoProcessorFilter = _registerDestinationFilter(
232 DestinationNames.DOCUMENT_LIBRARY_VIDEO_PROCESSOR);
233
234 serviceDependencyManager.registerDependencies(
235 audioProcessorFilter, imageProcessFilter, pdfProcessorFilter,
236 rawMetaDataProcessorFilter, videoProcessorFilter);
237
238 serviceDependencyManager.waitForDependencies();
239
240 _replaceWithSynchronousDestination(
241 DestinationNames.DOCUMENT_LIBRARY_AUDIO_PROCESSOR);
242 _replaceWithSynchronousDestination(
243 DestinationNames.DOCUMENT_LIBRARY_IMAGE_PROCESSOR);
244 _replaceWithSynchronousDestination(
245 DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR);
246 _replaceWithSynchronousDestination(
247 DestinationNames.DOCUMENT_LIBRARY_RAW_METADATA_PROCESSOR);
248 _replaceWithSynchronousDestination(
249 DestinationNames.DOCUMENT_LIBRARY_VIDEO_PROCESSOR);
250 }
251
252
253
254 _checkClassNames();
255
256
257
258 try {
259 _checkResourceActions();
260 }
261 catch (Exception e) {
262 _log.error(e, e);
263 }
264
265
266
267 PortalRegisterTestUtil.registerWorkflowHandlers();
268
269
270
271 try {
272 CompanyLocalServiceUtil.checkCompany(
273 TestPropsValues.COMPANY_WEB_ID);
274 }
275 catch (Exception e) {
276 _log.error(e, e);
277 }
278 }
279
280 public static Date newDate() throws Exception {
281 return new Date();
282 }
283
284 public static Date newDate(int month, int day, int year) throws Exception {
285 Calendar calendar = new GregorianCalendar();
286
287 calendar.set(Calendar.MONTH, month);
288 calendar.set(Calendar.DATE, day);
289 calendar.set(Calendar.YEAR, year);
290
291 return calendar.getTime();
292 }
293
294 public static void setUser(User user) throws Exception {
295 if (user == null) {
296 return;
297 }
298
299 PrincipalThreadLocal.setName(user.getUserId());
300
301 PermissionChecker permissionChecker =
302 PermissionCheckerFactoryUtil.create(user);
303
304 PermissionThreadLocal.setPermissionChecker(permissionChecker);
305 }
306
307 private static void _checkClassNames() {
308 PortalUtil.getClassNameId(LiferayRepository.class.getName());
309 }
310
311 private static void _checkResourceActions() throws Exception {
312 for (int i = 0; i < 200; i++) {
313 String portletId = String.valueOf(i);
314
315 Portlet portlet = new PortletImpl();
316
317 portlet.setPortletId(portletId);
318 portlet.setPortletModes(new HashMap<String, Set<String>>());
319
320 List<String> portletActions =
321 ResourceActionsUtil.getPortletResourceActions(portletId);
322
323 ResourceActionLocalServiceUtil.checkResourceActions(
324 portletId, portletActions);
325
326 List<String> modelNames =
327 ResourceActionsUtil.getPortletModelResources(portletId);
328
329 for (String modelName : modelNames) {
330 List<String> modelActions =
331 ResourceActionsUtil.getModelResourceActions(modelName);
332
333 ResourceActionLocalServiceUtil.checkResourceActions(
334 modelName, modelActions);
335 }
336 }
337 }
338
339 private static Filter _registerDestinationFilter(String destinationName) {
340 Registry registry = RegistryUtil.getRegistry();
341
342 return registry.getFilter(
343 "(&(destination.name=" + destinationName +
344 ")(objectClass=" + Destination.class.getName() + "))");
345 }
346
347 private static void _replaceWithSynchronousDestination(String name) {
348 BaseDestination baseDestination = new SynchronousDestination();
349
350 baseDestination.setName(name);
351
352 MessageBus messageBus = MessageBusUtil.getMessageBus();
353
354 messageBus.replace(baseDestination);
355 }
356
357 private static void _setThreadLocals() {
358 LocaleThreadLocal.setThemeDisplayLocale(new Locale("en", "US"));
359
360 ServiceContext serviceContext = new ServiceContext();
361
362 serviceContext.setPathMain("path");
363 serviceContext.setPortalURL("http:
364
365 ServiceContextThreadLocal.pushServiceContext(serviceContext);
366 }
367
368 private static final Log _log = LogFactoryUtil.getLog(
369 ServiceTestUtil.class);
370
371 }