Example usage for org.apache.maven.model.profile ProfileActivationContext getProjectProperties

List of usage examples for org.apache.maven.model.profile ProfileActivationContext getProjectProperties

Introduction

In this page you can find the example usage for org.apache.maven.model.profile ProfileActivationContext getProjectProperties.

Prototype

Map<String, String> getProjectProperties();

Source Link

Document

Gets current calculated project properties

Usage

From source file:com.coutemeier.maven.jsr223.profileactivator.JSR223ProfileActivator.java

License:Open Source License

private boolean evaluateExpression(Profile profile, ProfileActivationContext context,
        ModelProblemCollector problemCollector) {
    Activation activation = profile.getActivation();
    ActivationProperty property = activation.getProperty();
    String engineName = property.getName().substring(1);
    String script = property.getValue();
    if (engineName == null || engineName.trim().length() == 0) {
        engineName = DEFAULT_SCRIPT_ENGINE_NAME;
    }//from  w  ww  . ja  v  a 2 s.co  m

    // create a JavaScript engine
    ScriptEngine engine = ScriptEngineHelper.getEngine(engineName);
    // We haven't foud a script engine, so we can't evaluate the script
    if (engine == null) {
        final String message = "[JSR223ProfileActivator] Script engine unknown " + profile.getId();
        logger.debug(message);
        problemCollector.add(new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE).setMessage(message)
                .setLocation(property.getLocation("")));
        return false;
    }
    logger.debug("[JSR223ProfileActivator] ScriptEngine {}. Trying to evaluate the expression {}", engineName,
            script);

    String name = ScriptEngineHelper.getPropertyNameForJSR223(context);
    engine.put(name, new ExpressionManager(context.getSystemProperties(), context.getProjectProperties(),
            context.getUserProperties()));

    try {
        Object value = engine.eval(script);
        logger.debug("[JSR223ProfileActivator] Expression evaluated value: {}", value);
        return true;

    } catch (ScriptException cause) {
        final String message = "[JSR223ProfileActivator] There has been an error evaluating the expression in the profile "
                + profile.getId() + ": " + cause.getMessage();
        logger.debug(message);
        problemCollector.add(new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE).setMessage(message)
                .setLocation(property.getLocation("")));
    }
    return false;
}

From source file:com.coutemeier.maven.jsr223.profileactivator.ScriptEngineHelper.java

License:Open Source License

/**
 * Returns the name of the variable which will be created to use the interpolator in the script.
 * The priority of the search is as following:
 * <ol>//from   ww w .  j ava  2s . c o  m
 *      <li>If <code>JSR223_PROPERTY_NAME</code> exists in system properties, then return it.</li>
 *      <li>If <code>JSR223_PROPERTY_NAME</code> exists in project properties, then return it.</li>
 *      <li>Return <code>JSR223_PROPERTY_NAME_DEFAULT (<b>aitor</b>) as the name of the variable.</li>
 * <ol>
 *
 * @param context the context of the profile activation section of the pom.
 * @return the name of the variable present in system properties or project properties, or <code>aitor</code> if
 * doesn't exists none of them.
 * @since 0.1.0
 */
public static final String getPropertyNameForJSR223(ProfileActivationContext context) {
    String name = context.getSystemProperties().get(JSR223_PROPERTY_NAME);
    if (name == null || name.trim().length() == 0) {
        name = context.getProjectProperties().get(JSR223_PROPERTY_NAME);
    }

    if (name == null || name.trim().length() == 0) {
        name = JSR223_PROPERTY_NAME_DEFAULT;
    }
    return name;
}

From source file:com.github.sviperll.maven.profiledep.ActivatingProfileSelector.java

@Override
public List<Profile> getActiveProfiles(Collection<Profile> availableProfiles, ProfileActivationContext context,
        ModelProblemCollector problems) {
    ProfileActivationContext effectiveContext = createProfileActivationContext(context);
    List<Profile> activatedProfiles = defaultProfileSelector.getActiveProfiles(availableProfiles,
            effectiveContext, problems);
    updateAdditionalProfileIDs(context.getProjectProperties());
    return activatedProfiles;
}

From source file:com.github.sviperll.maven.profiledep.ActivatingProfileSelector.java

private ProfileActivationContext createProfileActivationContext(ProfileActivationContext source) {
    DefaultProfileActivationContext result = new DefaultProfileActivationContext();
    result.setProjectDirectory(source.getProjectDirectory());
    Properties projectProperties = new Properties();
    projectProperties.putAll(source.getProjectProperties());
    result.setProjectProperties(projectProperties);
    result.setSystemProperties(source.getSystemProperties());
    result.setUserProperties(source.getUserProperties());

    List<String> activeProfileIds = new ArrayList<String>();
    activeProfileIds.addAll(source.getActiveProfileIds());
    activeProfileIds.addAll(additionalProfileIDs);
    result.setActiveProfileIds(activeProfileIds);

    List<String> inactiveProfileIds = new ArrayList<String>();
    inactiveProfileIds.addAll(source.getInactiveProfileIds());
    inactiveProfileIds.addAll(additionallyExcludedProfileIDs);
    result.setInactiveProfileIds(inactiveProfileIds);
    return result;
}

From source file:com.github.sviperll.maven.profiledep.ContextModifyingProfileSelector.java

private ProfileActivationContext createProfileActivationContext(ProfileActivationContext source) {
    DefaultProfileActivationContext result = new DefaultProfileActivationContext();
    result.setProjectDirectory(source.getProjectDirectory());
    Properties projectProperties = new Properties();
    projectProperties.putAll(source.getProjectProperties());
    result.setProjectProperties(projectProperties);
    result.setSystemProperties(source.getSystemProperties());
    result.setUserProperties(source.getUserProperties());

    List<String> activeProfileIds = new ArrayList<String>();
    activeProfileIds.addAll(additionalProfileIDs);
    activeProfileIds.removeAll(source.getInactiveProfileIds());
    activeProfileIds.addAll(source.getActiveProfileIds());
    result.setActiveProfileIds(activeProfileIds);

    List<String> inactiveProfileIds = new ArrayList<String>();
    inactiveProfileIds.addAll(additionallyExcludedProfileIDs);
    inactiveProfileIds.removeAll(source.getActiveProfileIds());
    inactiveProfileIds.addAll(source.getInactiveProfileIds());
    result.setInactiveProfileIds(inactiveProfileIds);

    return result;
}