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