Search in sources :

Example 1 with FileEntry

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());
        }
    }
}
Also used : Archive(com.sun.enterprise.admin.servermgmt.xml.stringsubs.Archive) HashMap(java.util.HashMap) ChangePairRef(com.sun.enterprise.admin.servermgmt.xml.stringsubs.ChangePairRef) StringSubstitutionException(com.sun.enterprise.admin.servermgmt.stringsubs.StringSubstitutionException) SubstitutionAlgorithm(com.sun.enterprise.admin.servermgmt.stringsubs.SubstitutionAlgorithm) ModeType(com.sun.enterprise.admin.servermgmt.xml.stringsubs.ModeType) Substitutable(com.sun.enterprise.admin.servermgmt.stringsubs.Substitutable) FileEntry(com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry) ChangePair(com.sun.enterprise.admin.servermgmt.xml.stringsubs.ChangePair)

Example 2 with FileEntry

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());
}
Also used : Substitutable(com.sun.enterprise.admin.servermgmt.stringsubs.Substitutable) FileEntry(com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry) Test(org.testng.annotations.Test)

Example 3 with FileEntry

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);
}
Also used : Substitutable(com.sun.enterprise.admin.servermgmt.stringsubs.Substitutable) FileEntry(com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry) Test(org.testng.annotations.Test)

Example 4 with FileEntry

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()));
}
Also used : Substitutable(com.sun.enterprise.admin.servermgmt.stringsubs.Substitutable) FileEntry(com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry) Test(org.testng.annotations.Test)

Example 5 with FileEntry

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);
    }
}
Also used : Group(com.sun.enterprise.admin.servermgmt.xml.stringsubs.Group) AttributePreprocessorImpl(com.sun.enterprise.admin.servermgmt.stringsubs.impl.AttributePreprocessorImpl) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) FileEntry(com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry) File(java.io.File) Test(org.testng.annotations.Test)

Aggregations

FileEntry (com.sun.enterprise.admin.servermgmt.xml.stringsubs.FileEntry)8 Substitutable (com.sun.enterprise.admin.servermgmt.stringsubs.Substitutable)7 Test (org.testng.annotations.Test)7 File (java.io.File)3 StringSubstitutionException (com.sun.enterprise.admin.servermgmt.stringsubs.StringSubstitutionException)1 SubstitutionAlgorithm (com.sun.enterprise.admin.servermgmt.stringsubs.SubstitutionAlgorithm)1 AttributePreprocessorImpl (com.sun.enterprise.admin.servermgmt.stringsubs.impl.AttributePreprocessorImpl)1 Archive (com.sun.enterprise.admin.servermgmt.xml.stringsubs.Archive)1 ChangePair (com.sun.enterprise.admin.servermgmt.xml.stringsubs.ChangePair)1 ChangePairRef (com.sun.enterprise.admin.servermgmt.xml.stringsubs.ChangePairRef)1 Group (com.sun.enterprise.admin.servermgmt.xml.stringsubs.Group)1 ModeType (com.sun.enterprise.admin.servermgmt.xml.stringsubs.ModeType)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 HashMap (java.util.HashMap)1