use of com.intellij.javaee.model.xml.ParamValue in project intellij-plugins by JetBrains.
the class StrutsConstantValueReference method getElementConverterPair.
/**
* Gets the DomElement and corresponding converter.
*
* @return {@code null} on errors or if one of both could not be resolved.
*/
@Nullable
private Pair<DomElement, Converter> getElementConverterPair() {
final DomElement paramValueElement = DomUtil.getDomElement(myElement);
assert paramValueElement != null;
final DomElement domElement = paramValueElement.getParent();
assert domElement instanceof ParamValue;
final ParamValue initParamElement = (ParamValue) domElement;
final String paramName = initParamElement.getParamName().getStringValue();
if (StringUtil.isEmpty(paramName)) {
return null;
}
final StrutsConstantManager constantManager = StrutsConstantManager.getInstance(myElement.getProject());
@SuppressWarnings({ "ConstantConditions" }) final Converter converter = constantManager.findConverter(myElement, StrutsConstantKey.create(paramName));
if (converter == null) {
return null;
}
return Pair.create(paramValueElement, converter);
}
use of com.intellij.javaee.model.xml.ParamValue in project intellij-plugins by JetBrains.
the class StrutsConstantManagerImpl method getStringValue.
/**
* Returns the plain String value for the given constant.
*
* @param context Current context.
* @param strutsModel StrutsModel.
* @param name Name of constant.
* @return {@code null} if no value could be resolved.
*/
@Nullable
private static String getStringValue(@NotNull final PsiFile context, @NotNull final StrutsModel strutsModel, @NotNull @NonNls final String name) {
final Project project = context.getProject();
final Module module = ModuleUtilCore.findModuleForPsiElement(context);
assert module != null : context;
// collect all properties with matching key
final List<IProperty> properties = PropertiesImplUtil.findPropertiesByKey(project, name);
String value = null;
// 1. default.properties from struts2-core.jar
final IProperty strutsDefaultProperty = ContainerUtil.find(properties, property -> {
final VirtualFile virtualFile = property.getPropertiesFile().getVirtualFile();
return virtualFile != null && virtualFile.getFileSystem() instanceof JarFileSystem && StringUtil.endsWith(virtualFile.getPath(), STRUTS_DEFAULT_PROPERTIES) && ModuleUtilCore.moduleContainsFile(module, virtualFile, true);
});
if (strutsDefaultProperty != null) {
value = strutsDefaultProperty.getValue();
}
// 2. <constant> from StrutsModel
final Condition<Constant> constantNameCondition = constant -> Comparing.equal(constant.getName().getStringValue(), name);
final List<DomFileElement<StrutsRoot>> domFileElements = new ArrayList<>();
collectStrutsXmls(domFileElements, strutsModel, "struts-default.xml", true);
collectStrutsXmls(domFileElements, strutsModel, "struts-plugin.xml", true);
collectStrutsXmls(domFileElements, strutsModel, "struts.xml", false);
for (final DomFileElement<StrutsRoot> domFileElement : domFileElements) {
final Constant constant = ContainerUtil.find(domFileElement.getRootElement().getConstants(), constantNameCondition);
final String strutsXmlValue = constant != null ? constant.getValue().getStringValue() : null;
if (strutsXmlValue != null) {
value = strutsXmlValue;
}
}
// 3. struts.properties in current module
final IProperty strutsProperty = ContainerUtil.find(properties, property -> {
final VirtualFile virtualFile = property.getPropertiesFile().getVirtualFile();
return virtualFile != null && Comparing.equal(virtualFile.getName(), STRUTS_PROPERTIES_FILENAME) && ModuleUtilCore.moduleContainsFile(module, virtualFile, false);
});
if (strutsProperty != null) {
value = strutsProperty.getValue();
}
// 4. web.xml
final WebFacet webFacet = WebUtil.getWebFacet(context);
if (webFacet == null) {
// should not happen in real projects..
return value;
}
final WebApp webApp = webFacet.getRoot();
if (webApp == null) {
// no web.xml
return value;
}
final Filter filter = ContainerUtil.find(webApp.getFilters(), WEB_XML_STRUTS_FILTER_CONDITION);
if (filter != null) {
final ParamValue initParam = ContainerUtil.find(filter.getInitParams(), (Condition<ParamValue>) paramValue -> Comparing.equal(paramValue.getParamName().getStringValue(), name));
if (initParam != null) {
value = initParam.getParamValue().getStringValue();
}
}
return value;
}
use of com.intellij.javaee.model.xml.ParamValue in project intellij-plugins by JetBrains.
the class Struts2TilesModelProvider method findConfiguredTilesPaths.
/**
* Returns the configured tiles.xml file paths (if configured).
*
* @param webApp Web application.
* @return File names.
*/
private static Set<String> findConfiguredTilesPaths(final WebApp webApp) {
@NonNls final Set<String> tilesConfigNames = new THashSet<>();
final ParamValue tilesParamValue = ContainerUtil.find(webApp.getContextParams(), TILES_CONTEXT_PARAM_CONDITION);
if (tilesParamValue == null) {
return tilesConfigNames;
}
final String paramValue = tilesParamValue.getParamValue().getStringValue();
if (paramValue == null) {
return tilesConfigNames;
}
for (final String file : StringUtil.split(paramValue, ",")) {
tilesConfigNames.add(file.trim());
}
return tilesConfigNames;
}
Aggregations