package hudson.plugins.promoted_builds.inheritance; import org.apache.log4j.Logger; import hudson.Extension; import hudson.model.JobProperty; import hudson.plugins.project_inheritance.projects.InheritanceProject; import hudson.plugins.project_inheritance.projects.inheritance.InheritanceSelector; import hudson.plugins.promoted_builds.JobPropertyImpl; /** * * @author Jacek Tomaka * @since TODO */ @Extension(optional=true) public class JobPropertyImplSelector extends InheritanceSelector<JobProperty<?>> { private static final long serialVersionUID = 1L; private static final Logger logger = Logger.getLogger(JobPropertyImplSelector.class); @Override public boolean isApplicableFor(Class<?> clazz){ return JobProperty.class.isAssignableFrom(clazz); } @Override public InheritanceSelector.MODE getModeFor(Class<?> clazz){ if (JobPropertyImpl.class.isAssignableFrom(clazz)) return MODE.USE_LAST; return MODE.NOT_RESPONSIBLE; } @Override public String getObjectIdentifier(JobProperty<?> obj){ if ( obj!=null && JobPropertyImpl.class.getName().equals(obj.getClass().getName())){ return JobPropertyImplSelector.class.getName(); } return null; } @Override public JobPropertyImpl merge(JobProperty<?> prior, JobProperty<?> latter, InheritanceProject caller){ return null; } @Override public JobProperty<?> handleSingleton(JobProperty<?> jobProperty, InheritanceProject caller){ if (jobProperty == null || caller == null) return jobProperty; if (caller.isAbstract) return jobProperty; if (!JobPropertyImpl.class.isAssignableFrom(jobProperty.getClass())) return jobProperty; JobPropertyImpl jobPropertyImpl = (JobPropertyImpl)jobProperty; try { JobPropertyImpl newJobProperty = new JobPropertyImpl(jobPropertyImpl, caller); return newJobProperty; } catch (Exception ex){ logger.error("Error during hacking up JobPropertyImpl", ex ); } return jobProperty; } }