use of org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP in project liferay-ide by liferay.
the class AlloyContentDescriberForJSP method describe.
@Override
public int describe(InputStream contents, IContentDescription description) throws IOException {
int retval = new ContentDescriberForJSP().describe(contents, description);
try {
Class<?> contentsClass = contents.getClass();
Field inputStreamField = contentsClass.getDeclaredField("in");
inputStreamField.setAccessible(true);
InputStream inputStream = (InputStream) inputStreamField.get(contents);
Class<?> ipStream = inputStream.getClass();
Field fileStoreField = ipStream.getDeclaredField("target");
fileStoreField.setAccessible(true);
IFileStore fileStore = (IFileStore) fileStoreField.get(inputStream);
if (fileStore != null) {
IFile[] files = CoreUtil.getWorkspaceRoot().findFilesForLocationURI(fileStore.toURI());
for (IFile file : files) {
if (ProjectUtil.isPortletProject(file.getProject()) || LiferayNature.hasNature(file.getProject())) {
return VALID;
}
}
}
} catch (Exception e) {
}
return retval;
}
use of org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP in project liferay-ide by liferay.
the class AlloyContentDescriberForJSP method describe.
@Override
public int describe(Reader contents, IContentDescription description) throws IOException {
int retval = new ContentDescriberForJSP().describe(contents, description);
try {
Class<?> reader = contents.getClass();
Field documentReaderField = reader.getDeclaredField("in");
documentReaderField.setAccessible(true);
Object documentReader = documentReaderField.get(contents);
Class<?> docReader = documentReader.getClass();
Field fDocumentField = docReader.getDeclaredField("fDocument");
fDocumentField.setAccessible(true);
Object fDocument = fDocumentField.get(documentReader);
Class<?> documentClass = fDocument.getClass();
Class<?> superDocument = documentClass.getSuperclass().getSuperclass();
Field fDocumentListenersField = superDocument.getDeclaredField("fDocumentListeners");
fDocumentListenersField.setAccessible(true);
ListenerList<?> fDocumentListeners = (ListenerList<?>) fDocumentListenersField.get(fDocument);
Object[] listeners = fDocumentListeners.getListeners();
for (Object listener : listeners) {
try {
Class<?> listenerClass = listener.getClass();
Class<?> enclosingClass = listenerClass.getEnclosingClass();
Class<?> superClass = enclosingClass.getSuperclass();
Field fFileField = superClass.getDeclaredField("fFile");
fFileField.setAccessible(true);
// get enclosing instance of listener
Field thisField = listenerClass.getDeclaredField("this$0");
thisField.setAccessible(true);
Object enclosingObject = thisField.get(listener);
Object fFile = fFileField.get(enclosingObject);
if (fFile instanceof IFile) {
IFile file = (IFile) fFile;
if (ProjectUtil.isPortletProject(file.getProject()) || LiferayNature.hasNature(file.getProject())) {
return VALID;
}
}
} catch (Exception e) {
}
}
} catch (Exception e) {
}
return retval;
}
Aggregations