001
014
015 package com.liferay.portal.repository.proxy;
016
017 import com.liferay.portal.kernel.bean.ClassLoaderBeanHandler;
018 import com.liferay.portal.kernel.repository.LocalRepository;
019 import com.liferay.portal.kernel.repository.model.FileEntry;
020 import com.liferay.portal.kernel.repository.model.FileVersion;
021 import com.liferay.portal.kernel.repository.model.Folder;
022 import com.liferay.portal.kernel.util.ListUtil;
023 import com.liferay.portal.kernel.util.ProxyUtil;
024
025 import java.util.ArrayList;
026 import java.util.Collections;
027 import java.util.List;
028
029
032 public abstract class RepositoryModelProxyBean {
033
034 public RepositoryModelProxyBean(ClassLoader classLoader) {
035 _classLoader = classLoader;
036 }
037
038 protected FileEntryProxyBean newFileEntryProxyBean(FileEntry fileEntry) {
039 if (fileEntry == null) {
040 return null;
041 }
042
043 FileEntry fileEntryProxy = (FileEntry)newProxyInstance(
044 fileEntry, FileEntry.class);
045
046 return new FileEntryProxyBean(fileEntryProxy, _classLoader);
047 }
048
049 protected FileVersionProxyBean newFileVersionProxyBean(
050 FileVersion fileVersion) {
051
052 if (fileVersion == null) {
053 return null;
054 }
055
056 FileVersion fileVersionProxy = (FileVersion)newProxyInstance(
057 fileVersion, FileVersion.class);
058
059 return new FileVersionProxyBean(fileVersionProxy, _classLoader);
060 }
061
062 protected FolderProxyBean newFolderProxyBean(Folder folder) {
063 if (folder == null) {
064 return null;
065 }
066
067 Folder folderProxy = (Folder)newProxyInstance(folder, Folder.class);
068
069 return new FolderProxyBean(folderProxy, _classLoader);
070 }
071
072 protected LocalRepositoryProxyBean newLocalRepositoryProxyBean(
073 LocalRepository localRepository) {
074
075 LocalRepository localRepositoryProxy =
076 (LocalRepository)newProxyInstance(
077 localRepository, LocalRepository.class);
078
079 return new LocalRepositoryProxyBean(localRepositoryProxy, _classLoader);
080 }
081
082 protected Object newProxyBean(Object bean) {
083 if (bean instanceof FileEntry) {
084 return newFileEntryProxyBean((FileEntry)bean);
085 }
086 else if (bean instanceof FileVersion) {
087 return newFileVersionProxyBean((FileVersion)bean);
088 }
089 else if (bean instanceof Folder) {
090 return newFolderProxyBean((Folder)bean);
091 }
092 else {
093 return bean;
094 }
095 }
096
097 protected Object newProxyInstance(Object bean, Class<?> clazz) {
098 if (bean == null) {
099 return null;
100 }
101
102 return ProxyUtil.newProxyInstance(
103 _classLoader, new Class[] {clazz},
104 new ClassLoaderBeanHandler(bean, _classLoader));
105 }
106
107 protected List<FileEntry> toFileEntryProxyBeans(
108 List<FileEntry> fileEntries) {
109
110 if ((fileEntries == null) || fileEntries.isEmpty()) {
111 return fileEntries;
112 }
113
114 List<FileEntry> fileEntryProxyBeans = new ArrayList<FileEntry>(
115 fileEntries.size());
116
117 for (FileEntry fileEntry : fileEntries) {
118 fileEntryProxyBeans.add(newFileEntryProxyBean(fileEntry));
119 }
120
121 if (ListUtil.isUnmodifiableList(fileEntries)) {
122 return Collections.unmodifiableList(fileEntryProxyBeans);
123 }
124
125 return fileEntryProxyBeans;
126 }
127
128 protected List<FileVersion> toFileVersionProxyBeans(
129 List<FileVersion> fileVersions) {
130
131 if ((fileVersions == null) || fileVersions.isEmpty()) {
132 return fileVersions;
133 }
134
135 List<FileVersion> fileVersionProxyBeans = new ArrayList<FileVersion>(
136 fileVersions.size());
137
138 for (FileVersion fileVersion : fileVersions) {
139 fileVersionProxyBeans.add(newFileVersionProxyBean(fileVersion));
140 }
141
142 if (ListUtil.isUnmodifiableList(fileVersions)) {
143 return Collections.unmodifiableList(fileVersionProxyBeans);
144 }
145
146 return fileVersionProxyBeans;
147 }
148
149 protected List<Folder> toFolderProxyBeans(List<Folder> folders) {
150 if ((folders == null) || folders.isEmpty()) {
151 return folders;
152 }
153
154 List<Folder> folderProxyBeans = new ArrayList<Folder>(folders.size());
155
156 for (Folder folder : folders) {
157 folderProxyBeans.add(newFolderProxyBean(folder));
158 }
159
160 if (ListUtil.isUnmodifiableList(folders)) {
161 return Collections.unmodifiableList(folderProxyBeans);
162 }
163
164 return folderProxyBeans;
165 }
166
167 protected List<Object> toObjectProxyBeans(List<Object> objects) {
168 if ((objects == null) || objects.isEmpty()) {
169 return objects;
170 }
171
172 List<Object> objectProxyBeans = new ArrayList<Object>();
173
174 for (Object object : objects) {
175 objectProxyBeans.add(newProxyBean(object));
176 }
177
178 if (ListUtil.isUnmodifiableList(objects)) {
179 return Collections.unmodifiableList(objectProxyBeans);
180 }
181
182 return objectProxyBeans;
183 }
184
185 private final ClassLoader _classLoader;
186
187 }