use of com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry in project Payara by payara.
the class StringSubstitutionEngine method doSubstitution.
/**
* Perform's string substitution for a given group.
*
* @param groups Groups for which the string substitution
* has to be performed.
* @throws StringSubstitutionException If any error occurs during
* substitution.
*/
private void doSubstitution(Group group) throws StringSubstitutionException {
List<? extends FileEntry> fileList = group.getFileEntry();
List<? extends Archive> archiveList = group.getArchive();
if (!isValid(fileList) && !isValid(archiveList)) {
if (_logger.isLoggable(Level.FINER)) {
_logger.log(Level.FINER, _strings.get("noSubstitutableGroupEntry", group.getId()));
}
return;
}
List<? extends ChangePairRef> refList = group.getChangePairRef();
if (!isValid(refList)) {
if (_logger.isLoggable(Level.FINE)) {
_logger.log(Level.FINE, _strings.get("noChangePairForGroup", group.getId()));
}
return;
}
String groupMode = null;
ModeType modeType = group.getMode();
if (modeType != null) {
groupMode = modeType.value();
}
buildChangePairsMap();
Map<String, String> substitutionMap = new HashMap<String, String>();
for (ChangePairRef ref : refList) {
String name = ref.getName();
String localMode = ref.getMode();
// then inherit the mode of the group
if (localMode == null || localMode.length() == 0) {
localMode = groupMode;
}
Pair pair = _changePairsMap.get(name);
if (pair == null) {
_logger.log(Level.INFO, SLogger.MISSING_CHANGE_PAIR, new Object[] { name, group.getId() });
continue;
}
String beforeString = pair.getBefore();
String afterString = pair.getAfter();
if (localMode == null || localMode.length() == 0) {
if (_logger.isLoggable(Level.FINEST)) {
_logger.log(Level.FINEST, _strings.get("noModeValue", group.getId()));
}
} else {
try {
afterString = ModeProcessor.processModeType(ModeType.fromValue(localMode), afterString);
} catch (Exception e) {
_logger.log(Level.WARNING, SLogger.INVALID_MODE_TYPE, localMode);
}
}
substitutionMap.put(beforeString, afterString);
}
SubstitutionAlgorithm algorithm = new SubstitutionAlgorithmFactory().getAlgorithm(substitutionMap);
for (FileEntry fileEntry : fileList) {
fileEntry.setName(_attrPreprocessor.substitutePath(fileEntry.getName()));
List<? extends Substitutable> substituables = _substitutableFactory.getFileEntrySubstituables(fileEntry);
for (Substitutable substituable : substituables) {
algorithm.substitute(substituable);
substituable.finish();
}
}
for (Archive archive : archiveList) {
if (archive == null || archive.getName().isEmpty()) {
continue;
}
try {
archive.setName(_attrPreprocessor.substitutePath(archive.getName()));
List<? extends Substitutable> substituables = _substitutableFactory.getArchiveEntrySubstitutable(archive);
if (!isValid(substituables)) {
continue;
}
for (Substitutable substituable : substituables) {
algorithm.substitute(substituable);
substituable.finish();
}
} catch (Exception e) {
LogHelper.log(_logger, Level.WARNING, SLogger.ERR_ARCHIVE_SUBSTITUTION, e, archive.getName());
}
}
}
use of com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry in project Payara by payara.
the class TestFileEntryFactory method testGetFileInvalidInput.
/**
* Test get files for invalid file name.
*/
@Test
public void testGetFileInvalidInput() {
FileEntry fileEntry = new FileEntry();
fileEntry.setName(_classFile.getAbsolutePath() + File.separator + "zzzzzzzzz.class");
List<Substitutable> substitutables = _factory.getFileElements(fileEntry);
Assert.assertTrue(substitutables.isEmpty());
}
use of com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry in project Payara by payara.
the class TestFileEntryFactory method testGetFilesUsingRegex.
/**
* Test get file by using regex pattern.
*/
@Test
public void testGetFilesUsingRegex() {
FileEntry fileEntry = new FileEntry();
if (!_classFile.exists()) {
Assert.fail("Not able to locate Test class :" + TestFileEntryFactory.class.getSimpleName());
}
fileEntry.setName(_classFile.getParentFile().getAbsolutePath() + File.separator + "(.*+)");
fileEntry.setRegex("yes");
List<Substitutable> substitutables = _factory.getFileElements(fileEntry);
boolean fileFound = false;
for (Substitutable substitutable : substitutables) {
if (substitutable.getName().endsWith(_classFile.getAbsolutePath())) {
fileFound = true;
break;
}
}
Assert.assertTrue(fileFound);
}
use of com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry in project Payara by payara.
the class TestFileEntryFactory method testGetFile.
/**
* Test get file by mentioning the absolute path of an file.
*/
@Test
public void testGetFile() {
FileEntry fileEntry = new FileEntry();
fileEntry.setName(_classFile.getAbsolutePath());
List<Substitutable> substitutables = _factory.getFileElements(fileEntry);
Assert.assertTrue(!substitutables.isEmpty());
Assert.assertTrue(substitutables.size() == 1);
Assert.assertTrue(substitutables.get(0).getName().equals(_classFile.getAbsolutePath()));
}
use of com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry in project Payara by payara.
the class TestStringSubstitutionFactory method testStringSubstitutorValidStream.
/**
* Test String substitution for valid stream.
*/
@Test
public void testStringSubstitutorValidStream() {
InputStream invalidStream = TestStringSubstitutionFactory.class.getClassLoader().getResourceAsStream(_stringSubsPath);
try {
StringSubstitutor substitutor = StringSubstitutionFactory.createStringSubstitutor(invalidStream);
substitutor.setAttributePreprocessor(new AttributePreprocessorImpl(_substitutionMap));
backUpTestFile();
substitutor.substituteAll();
for (Group group : substitutor.getStringSubsDefinition().getGroup()) {
if (group.getId().equals(VALID_GROUP_ID)) {
validateSubstitutedArchiveEntries(group);
for (FileEntry fileEntry : group.getFileEntry()) {
if (fileEntry.getName().equalsIgnoreCase(_testFileName) && !validateTestFile(new File(fileEntry.getName()))) {
Assert.fail("Substitution failed in the test file.");
break;
}
}
}
}
restoreTestFile();
} catch (StringSubstitutionException e) {
Assert.fail("Exception occurred during string substitution process.", e);
}
}
Aggregations