001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.service.base;
016    
017    import aQute.bnd.annotation.ProviderType;
018    
019    import com.liferay.portal.kernel.bean.BeanReference;
020    import com.liferay.portal.kernel.dao.db.DB;
021    import com.liferay.portal.kernel.dao.db.DBManagerUtil;
022    import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
023    import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
024    import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
025    import com.liferay.portal.kernel.dao.orm.DefaultActionableDynamicQuery;
026    import com.liferay.portal.kernel.dao.orm.DynamicQuery;
027    import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
028    import com.liferay.portal.kernel.dao.orm.IndexableActionableDynamicQuery;
029    import com.liferay.portal.kernel.dao.orm.Projection;
030    import com.liferay.portal.kernel.exception.PortalException;
031    import com.liferay.portal.kernel.exception.SystemException;
032    import com.liferay.portal.kernel.module.framework.service.IdentifiableOSGiService;
033    import com.liferay.portal.kernel.search.Indexable;
034    import com.liferay.portal.kernel.search.IndexableType;
035    import com.liferay.portal.kernel.util.OrderByComparator;
036    import com.liferay.portal.model.PersistedModel;
037    import com.liferay.portal.model.Subscription;
038    import com.liferay.portal.service.BaseLocalServiceImpl;
039    import com.liferay.portal.service.PersistedModelLocalServiceRegistry;
040    import com.liferay.portal.service.SubscriptionLocalService;
041    import com.liferay.portal.service.persistence.ClassNamePersistence;
042    import com.liferay.portal.service.persistence.SubscriptionPersistence;
043    import com.liferay.portal.service.persistence.UserFinder;
044    import com.liferay.portal.service.persistence.UserPersistence;
045    import com.liferay.portal.util.PortalUtil;
046    
047    import com.liferay.portlet.asset.service.persistence.AssetEntryFinder;
048    import com.liferay.portlet.asset.service.persistence.AssetEntryPersistence;
049    import com.liferay.portlet.messageboards.service.persistence.MBThreadFinder;
050    import com.liferay.portlet.messageboards.service.persistence.MBThreadPersistence;
051    
052    import java.io.Serializable;
053    
054    import java.util.List;
055    
056    import javax.sql.DataSource;
057    
058    /**
059     * Provides the base implementation for the subscription local service.
060     *
061     * <p>
062     * This implementation exists only as a container for the default service methods generated by ServiceBuilder. All custom service methods should be put in {@link com.liferay.portal.service.impl.SubscriptionLocalServiceImpl}.
063     * </p>
064     *
065     * @author Brian Wing Shun Chan
066     * @see com.liferay.portal.service.impl.SubscriptionLocalServiceImpl
067     * @see com.liferay.portal.service.SubscriptionLocalServiceUtil
068     * @generated
069     */
070    @ProviderType
071    public abstract class SubscriptionLocalServiceBaseImpl
072            extends BaseLocalServiceImpl implements SubscriptionLocalService,
073                    IdentifiableOSGiService {
074            /*
075             * NOTE FOR DEVELOPERS:
076             *
077             * Never modify or reference this class directly. Always use {@link com.liferay.portal.service.SubscriptionLocalServiceUtil} to access the subscription local service.
078             */
079    
080            /**
081             * Adds the subscription to the database. Also notifies the appropriate model listeners.
082             *
083             * @param subscription the subscription
084             * @return the subscription that was added
085             */
086            @Indexable(type = IndexableType.REINDEX)
087            @Override
088            public Subscription addSubscription(Subscription subscription) {
089                    subscription.setNew(true);
090    
091                    return subscriptionPersistence.update(subscription);
092            }
093    
094            /**
095             * Creates a new subscription with the primary key. Does not add the subscription to the database.
096             *
097             * @param subscriptionId the primary key for the new subscription
098             * @return the new subscription
099             */
100            @Override
101            public Subscription createSubscription(long subscriptionId) {
102                    return subscriptionPersistence.create(subscriptionId);
103            }
104    
105            /**
106             * Deletes the subscription with the primary key from the database. Also notifies the appropriate model listeners.
107             *
108             * @param subscriptionId the primary key of the subscription
109             * @return the subscription that was removed
110             * @throws PortalException if a subscription with the primary key could not be found
111             */
112            @Indexable(type = IndexableType.DELETE)
113            @Override
114            public Subscription deleteSubscription(long subscriptionId)
115                    throws PortalException {
116                    return subscriptionPersistence.remove(subscriptionId);
117            }
118    
119            /**
120             * Deletes the subscription from the database. Also notifies the appropriate model listeners.
121             *
122             * @param subscription the subscription
123             * @return the subscription that was removed
124             * @throws PortalException
125             */
126            @Indexable(type = IndexableType.DELETE)
127            @Override
128            public Subscription deleteSubscription(Subscription subscription)
129                    throws PortalException {
130                    return subscriptionPersistence.remove(subscription);
131            }
132    
133            @Override
134            public DynamicQuery dynamicQuery() {
135                    Class<?> clazz = getClass();
136    
137                    return DynamicQueryFactoryUtil.forClass(Subscription.class,
138                            clazz.getClassLoader());
139            }
140    
141            /**
142             * Performs a dynamic query on the database and returns the matching rows.
143             *
144             * @param dynamicQuery the dynamic query
145             * @return the matching rows
146             */
147            @Override
148            public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery) {
149                    return subscriptionPersistence.findWithDynamicQuery(dynamicQuery);
150            }
151    
152            /**
153             * Performs a dynamic query on the database and returns a range of the matching rows.
154             *
155             * <p>
156             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.SubscriptionModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
157             * </p>
158             *
159             * @param dynamicQuery the dynamic query
160             * @param start the lower bound of the range of model instances
161             * @param end the upper bound of the range of model instances (not inclusive)
162             * @return the range of matching rows
163             */
164            @Override
165            public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery, int start,
166                    int end) {
167                    return subscriptionPersistence.findWithDynamicQuery(dynamicQuery,
168                            start, end);
169            }
170    
171            /**
172             * Performs a dynamic query on the database and returns an ordered range of the matching rows.
173             *
174             * <p>
175             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.SubscriptionModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
176             * </p>
177             *
178             * @param dynamicQuery the dynamic query
179             * @param start the lower bound of the range of model instances
180             * @param end the upper bound of the range of model instances (not inclusive)
181             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
182             * @return the ordered range of matching rows
183             */
184            @Override
185            public <T> List<T> dynamicQuery(DynamicQuery dynamicQuery, int start,
186                    int end, OrderByComparator<T> orderByComparator) {
187                    return subscriptionPersistence.findWithDynamicQuery(dynamicQuery,
188                            start, end, orderByComparator);
189            }
190    
191            /**
192             * Returns the number of rows matching the dynamic query.
193             *
194             * @param dynamicQuery the dynamic query
195             * @return the number of rows matching the dynamic query
196             */
197            @Override
198            public long dynamicQueryCount(DynamicQuery dynamicQuery) {
199                    return subscriptionPersistence.countWithDynamicQuery(dynamicQuery);
200            }
201    
202            /**
203             * Returns the number of rows matching the dynamic query.
204             *
205             * @param dynamicQuery the dynamic query
206             * @param projection the projection to apply to the query
207             * @return the number of rows matching the dynamic query
208             */
209            @Override
210            public long dynamicQueryCount(DynamicQuery dynamicQuery,
211                    Projection projection) {
212                    return subscriptionPersistence.countWithDynamicQuery(dynamicQuery,
213                            projection);
214            }
215    
216            @Override
217            public Subscription fetchSubscription(long subscriptionId) {
218                    return subscriptionPersistence.fetchByPrimaryKey(subscriptionId);
219            }
220    
221            /**
222             * Returns the subscription with the primary key.
223             *
224             * @param subscriptionId the primary key of the subscription
225             * @return the subscription
226             * @throws PortalException if a subscription with the primary key could not be found
227             */
228            @Override
229            public Subscription getSubscription(long subscriptionId)
230                    throws PortalException {
231                    return subscriptionPersistence.findByPrimaryKey(subscriptionId);
232            }
233    
234            @Override
235            public ActionableDynamicQuery getActionableDynamicQuery() {
236                    ActionableDynamicQuery actionableDynamicQuery = new DefaultActionableDynamicQuery();
237    
238                    actionableDynamicQuery.setBaseLocalService(com.liferay.portal.service.SubscriptionLocalServiceUtil.getService());
239                    actionableDynamicQuery.setClassLoader(getClassLoader());
240                    actionableDynamicQuery.setModelClass(Subscription.class);
241    
242                    actionableDynamicQuery.setPrimaryKeyPropertyName("subscriptionId");
243    
244                    return actionableDynamicQuery;
245            }
246    
247            @Override
248            public IndexableActionableDynamicQuery getIndexableActionableDynamicQuery() {
249                    IndexableActionableDynamicQuery indexableActionableDynamicQuery = new IndexableActionableDynamicQuery();
250    
251                    indexableActionableDynamicQuery.setBaseLocalService(com.liferay.portal.service.SubscriptionLocalServiceUtil.getService());
252                    indexableActionableDynamicQuery.setClassLoader(getClassLoader());
253                    indexableActionableDynamicQuery.setModelClass(Subscription.class);
254    
255                    indexableActionableDynamicQuery.setPrimaryKeyPropertyName(
256                            "subscriptionId");
257    
258                    return indexableActionableDynamicQuery;
259            }
260    
261            protected void initActionableDynamicQuery(
262                    ActionableDynamicQuery actionableDynamicQuery) {
263                    actionableDynamicQuery.setBaseLocalService(com.liferay.portal.service.SubscriptionLocalServiceUtil.getService());
264                    actionableDynamicQuery.setClassLoader(getClassLoader());
265                    actionableDynamicQuery.setModelClass(Subscription.class);
266    
267                    actionableDynamicQuery.setPrimaryKeyPropertyName("subscriptionId");
268            }
269    
270            /**
271             * @throws PortalException
272             */
273            @Override
274            public PersistedModel deletePersistedModel(PersistedModel persistedModel)
275                    throws PortalException {
276                    return subscriptionLocalService.deleteSubscription((Subscription)persistedModel);
277            }
278    
279            @Override
280            public PersistedModel getPersistedModel(Serializable primaryKeyObj)
281                    throws PortalException {
282                    return subscriptionPersistence.findByPrimaryKey(primaryKeyObj);
283            }
284    
285            /**
286             * Returns a range of all the subscriptions.
287             *
288             * <p>
289             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portal.model.impl.SubscriptionModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
290             * </p>
291             *
292             * @param start the lower bound of the range of subscriptions
293             * @param end the upper bound of the range of subscriptions (not inclusive)
294             * @return the range of subscriptions
295             */
296            @Override
297            public List<Subscription> getSubscriptions(int start, int end) {
298                    return subscriptionPersistence.findAll(start, end);
299            }
300    
301            /**
302             * Returns the number of subscriptions.
303             *
304             * @return the number of subscriptions
305             */
306            @Override
307            public int getSubscriptionsCount() {
308                    return subscriptionPersistence.countAll();
309            }
310    
311            /**
312             * Updates the subscription in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners.
313             *
314             * @param subscription the subscription
315             * @return the subscription that was updated
316             */
317            @Indexable(type = IndexableType.REINDEX)
318            @Override
319            public Subscription updateSubscription(Subscription subscription) {
320                    return subscriptionPersistence.update(subscription);
321            }
322    
323            /**
324             * Returns the subscription local service.
325             *
326             * @return the subscription local service
327             */
328            public SubscriptionLocalService getSubscriptionLocalService() {
329                    return subscriptionLocalService;
330            }
331    
332            /**
333             * Sets the subscription local service.
334             *
335             * @param subscriptionLocalService the subscription local service
336             */
337            public void setSubscriptionLocalService(
338                    SubscriptionLocalService subscriptionLocalService) {
339                    this.subscriptionLocalService = subscriptionLocalService;
340            }
341    
342            /**
343             * Returns the subscription persistence.
344             *
345             * @return the subscription persistence
346             */
347            public SubscriptionPersistence getSubscriptionPersistence() {
348                    return subscriptionPersistence;
349            }
350    
351            /**
352             * Sets the subscription persistence.
353             *
354             * @param subscriptionPersistence the subscription persistence
355             */
356            public void setSubscriptionPersistence(
357                    SubscriptionPersistence subscriptionPersistence) {
358                    this.subscriptionPersistence = subscriptionPersistence;
359            }
360    
361            /**
362             * Returns the counter local service.
363             *
364             * @return the counter local service
365             */
366            public com.liferay.counter.service.CounterLocalService getCounterLocalService() {
367                    return counterLocalService;
368            }
369    
370            /**
371             * Sets the counter local service.
372             *
373             * @param counterLocalService the counter local service
374             */
375            public void setCounterLocalService(
376                    com.liferay.counter.service.CounterLocalService counterLocalService) {
377                    this.counterLocalService = counterLocalService;
378            }
379    
380            /**
381             * Returns the class name local service.
382             *
383             * @return the class name local service
384             */
385            public com.liferay.portal.service.ClassNameLocalService getClassNameLocalService() {
386                    return classNameLocalService;
387            }
388    
389            /**
390             * Sets the class name local service.
391             *
392             * @param classNameLocalService the class name local service
393             */
394            public void setClassNameLocalService(
395                    com.liferay.portal.service.ClassNameLocalService classNameLocalService) {
396                    this.classNameLocalService = classNameLocalService;
397            }
398    
399            /**
400             * Returns the class name persistence.
401             *
402             * @return the class name persistence
403             */
404            public ClassNamePersistence getClassNamePersistence() {
405                    return classNamePersistence;
406            }
407    
408            /**
409             * Sets the class name persistence.
410             *
411             * @param classNamePersistence the class name persistence
412             */
413            public void setClassNamePersistence(
414                    ClassNamePersistence classNamePersistence) {
415                    this.classNamePersistence = classNamePersistence;
416            }
417    
418            /**
419             * Returns the asset entry local service.
420             *
421             * @return the asset entry local service
422             */
423            public com.liferay.portlet.asset.service.AssetEntryLocalService getAssetEntryLocalService() {
424                    return assetEntryLocalService;
425            }
426    
427            /**
428             * Sets the asset entry local service.
429             *
430             * @param assetEntryLocalService the asset entry local service
431             */
432            public void setAssetEntryLocalService(
433                    com.liferay.portlet.asset.service.AssetEntryLocalService assetEntryLocalService) {
434                    this.assetEntryLocalService = assetEntryLocalService;
435            }
436    
437            /**
438             * Returns the asset entry persistence.
439             *
440             * @return the asset entry persistence
441             */
442            public AssetEntryPersistence getAssetEntryPersistence() {
443                    return assetEntryPersistence;
444            }
445    
446            /**
447             * Sets the asset entry persistence.
448             *
449             * @param assetEntryPersistence the asset entry persistence
450             */
451            public void setAssetEntryPersistence(
452                    AssetEntryPersistence assetEntryPersistence) {
453                    this.assetEntryPersistence = assetEntryPersistence;
454            }
455    
456            /**
457             * Returns the asset entry finder.
458             *
459             * @return the asset entry finder
460             */
461            public AssetEntryFinder getAssetEntryFinder() {
462                    return assetEntryFinder;
463            }
464    
465            /**
466             * Sets the asset entry finder.
467             *
468             * @param assetEntryFinder the asset entry finder
469             */
470            public void setAssetEntryFinder(AssetEntryFinder assetEntryFinder) {
471                    this.assetEntryFinder = assetEntryFinder;
472            }
473    
474            /**
475             * Returns the message boards thread local service.
476             *
477             * @return the message boards thread local service
478             */
479            public com.liferay.portlet.messageboards.service.MBThreadLocalService getMBThreadLocalService() {
480                    return mbThreadLocalService;
481            }
482    
483            /**
484             * Sets the message boards thread local service.
485             *
486             * @param mbThreadLocalService the message boards thread local service
487             */
488            public void setMBThreadLocalService(
489                    com.liferay.portlet.messageboards.service.MBThreadLocalService mbThreadLocalService) {
490                    this.mbThreadLocalService = mbThreadLocalService;
491            }
492    
493            /**
494             * Returns the message boards thread persistence.
495             *
496             * @return the message boards thread persistence
497             */
498            public MBThreadPersistence getMBThreadPersistence() {
499                    return mbThreadPersistence;
500            }
501    
502            /**
503             * Sets the message boards thread persistence.
504             *
505             * @param mbThreadPersistence the message boards thread persistence
506             */
507            public void setMBThreadPersistence(MBThreadPersistence mbThreadPersistence) {
508                    this.mbThreadPersistence = mbThreadPersistence;
509            }
510    
511            /**
512             * Returns the message boards thread finder.
513             *
514             * @return the message boards thread finder
515             */
516            public MBThreadFinder getMBThreadFinder() {
517                    return mbThreadFinder;
518            }
519    
520            /**
521             * Sets the message boards thread finder.
522             *
523             * @param mbThreadFinder the message boards thread finder
524             */
525            public void setMBThreadFinder(MBThreadFinder mbThreadFinder) {
526                    this.mbThreadFinder = mbThreadFinder;
527            }
528    
529            /**
530             * Returns the user local service.
531             *
532             * @return the user local service
533             */
534            public com.liferay.portal.service.UserLocalService getUserLocalService() {
535                    return userLocalService;
536            }
537    
538            /**
539             * Sets the user local service.
540             *
541             * @param userLocalService the user local service
542             */
543            public void setUserLocalService(
544                    com.liferay.portal.service.UserLocalService userLocalService) {
545                    this.userLocalService = userLocalService;
546            }
547    
548            /**
549             * Returns the user persistence.
550             *
551             * @return the user persistence
552             */
553            public UserPersistence getUserPersistence() {
554                    return userPersistence;
555            }
556    
557            /**
558             * Sets the user persistence.
559             *
560             * @param userPersistence the user persistence
561             */
562            public void setUserPersistence(UserPersistence userPersistence) {
563                    this.userPersistence = userPersistence;
564            }
565    
566            /**
567             * Returns the user finder.
568             *
569             * @return the user finder
570             */
571            public UserFinder getUserFinder() {
572                    return userFinder;
573            }
574    
575            /**
576             * Sets the user finder.
577             *
578             * @param userFinder the user finder
579             */
580            public void setUserFinder(UserFinder userFinder) {
581                    this.userFinder = userFinder;
582            }
583    
584            public void afterPropertiesSet() {
585                    persistedModelLocalServiceRegistry.register("com.liferay.portal.model.Subscription",
586                            subscriptionLocalService);
587            }
588    
589            public void destroy() {
590                    persistedModelLocalServiceRegistry.unregister(
591                            "com.liferay.portal.model.Subscription");
592            }
593    
594            /**
595             * Returns the OSGi service identifier.
596             *
597             * @return the OSGi service identifier
598             */
599            @Override
600            public String getOSGiServiceIdentifier() {
601                    return SubscriptionLocalService.class.getName();
602            }
603    
604            protected Class<?> getModelClass() {
605                    return Subscription.class;
606            }
607    
608            protected String getModelClassName() {
609                    return Subscription.class.getName();
610            }
611    
612            /**
613             * Performs a SQL query.
614             *
615             * @param sql the sql query
616             */
617            protected void runSQL(String sql) {
618                    try {
619                            DataSource dataSource = subscriptionPersistence.getDataSource();
620    
621                            DB db = DBManagerUtil.getDB();
622    
623                            sql = db.buildSQL(sql);
624                            sql = PortalUtil.transformSQL(sql);
625    
626                            SqlUpdate sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(dataSource,
627                                            sql, new int[0]);
628    
629                            sqlUpdate.update();
630                    }
631                    catch (Exception e) {
632                            throw new SystemException(e);
633                    }
634            }
635    
636            @BeanReference(type = com.liferay.portal.service.SubscriptionLocalService.class)
637            protected SubscriptionLocalService subscriptionLocalService;
638            @BeanReference(type = SubscriptionPersistence.class)
639            protected SubscriptionPersistence subscriptionPersistence;
640            @BeanReference(type = com.liferay.counter.service.CounterLocalService.class)
641            protected com.liferay.counter.service.CounterLocalService counterLocalService;
642            @BeanReference(type = com.liferay.portal.service.ClassNameLocalService.class)
643            protected com.liferay.portal.service.ClassNameLocalService classNameLocalService;
644            @BeanReference(type = ClassNamePersistence.class)
645            protected ClassNamePersistence classNamePersistence;
646            @BeanReference(type = com.liferay.portlet.asset.service.AssetEntryLocalService.class)
647            protected com.liferay.portlet.asset.service.AssetEntryLocalService assetEntryLocalService;
648            @BeanReference(type = AssetEntryPersistence.class)
649            protected AssetEntryPersistence assetEntryPersistence;
650            @BeanReference(type = AssetEntryFinder.class)
651            protected AssetEntryFinder assetEntryFinder;
652            @BeanReference(type = com.liferay.portlet.messageboards.service.MBThreadLocalService.class)
653            protected com.liferay.portlet.messageboards.service.MBThreadLocalService mbThreadLocalService;
654            @BeanReference(type = MBThreadPersistence.class)
655            protected MBThreadPersistence mbThreadPersistence;
656            @BeanReference(type = MBThreadFinder.class)
657            protected MBThreadFinder mbThreadFinder;
658            @BeanReference(type = com.liferay.portal.service.UserLocalService.class)
659            protected com.liferay.portal.service.UserLocalService userLocalService;
660            @BeanReference(type = UserPersistence.class)
661            protected UserPersistence userPersistence;
662            @BeanReference(type = UserFinder.class)
663            protected UserFinder userFinder;
664            @BeanReference(type = PersistedModelLocalServiceRegistry.class)
665            protected PersistedModelLocalServiceRegistry persistedModelLocalServiceRegistry;
666    }