下面列出了怎么用hudson.model.Saveable的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Fired when a saveable object is created. But for now this is customized to only log
* the saveable fingerprint instances.
*
* @param o the saveable object.
* @param file the XmlFile for this saveable object.
*/
@Override
public void onChange(Saveable o, XmlFile file) {
if(o instanceof Fingerprint){
UseCredentials useCredentials = LogEventFactory.getEvent(UseCredentials.class);
Fingerprint fp = (Fingerprint) o;
useCredentials.setFileName(fp.getFileName());
useCredentials.setName(fp.getDisplayName());
useCredentials.setTimestamp(formatDateISO(fp.getTimestamp().getTime()));
Hashtable<String, Fingerprint.RangeSet> usages = fp.getUsages();
if (usages != null) {
usages.values().forEach(value -> {
useCredentials.setUsage(value.toString());
useCredentials.logEvent();
});
}
}
}
/**
* {@inheritDoc}
*/
@Override
public void onChange(Saveable o, XmlFile file) {
if (!(o instanceof Item)) {
// must be an Item
return;
}
SCMTriggerItem item = SCMTriggerItem.SCMTriggerItems.asSCMTriggerItem((Item) o);
if (item == null) {
// more specifically must be an SCMTriggerItem
return;
}
SCMTrigger trigger = item.getSCMTrigger();
if (trigger == null || trigger.isIgnorePostCommitHooks()) {
// must have the trigger enabled and not opted out of post commit hooks
return;
}
for (SCM scm : item.getSCMs()) {
if (scm instanceof GitSCM) {
// we have a winner
GiteaWebhookListener.register(item, (GitSCM) scm);
}
}
}
@NonNull
@Override
public T configure(CNode c, ConfigurationContext context) throws ConfiguratorException {
final Mapping mapping = (c != null ? c.asMapping() : Mapping.EMPTY);
final T instance = instance(mapping, context);
if (instance instanceof Saveable) {
try (BulkChange bc = new BulkChange((Saveable) instance) ){
configure(mapping, instance, false, context);
bc.commit();
} catch (IOException e) {
throw new ConfiguratorException("Failed to save "+instance, e);
}
} else {
configure(mapping, instance, false, context);
}
return instance;
}
public ConfigChangedEventImpl(Saveable config, XmlFile file, Map<String, Set<String>> tags) {
super(tags);
String fileName = DatadogUtilities.getFileName(file);
String userId = DatadogUtilities.getUserId();
setAggregationKey(fileName);
String title = "User " + userId + " changed file " + fileName;
setTitle(title);
String text = "%%% \nUser " + userId + " changed file " + fileName + " \n%%%";
setText(text);
if (userId != null && "system".equals(userId.toLowerCase())){
setPriority(Priority.LOW);
setAlertType(AlertType.INFO);
}else{
setPriority(Priority.NORMAL);
setAlertType(AlertType.WARNING);
}
}
@Override
public Object decode(Class targetClass, Object fromDBObject, MappedField optionalExtraInfo) {
if (fromDBObject == null) return null;
BasicDBList rawList = (BasicDBList) fromDBObject;
List list = new ArrayList();
for (Object obj : rawList) {
DBObject dbObj = (DBObject) obj;
list.add(getMapper().fromDBObject(optionalExtraInfo.getSubClass(), dbObj, getMapper().createEntityCache()));
}
Saveable owner = null; // TODO figure out how to associate the deserialized project here
return new DescribableList(owner, list);
}
@Override
public void onChange(Saveable config, XmlFile file) {
try {
final boolean emitSystemEvents = DatadogUtilities.getDatadogGlobalDescriptor().isEmitSystemEvents();
if (!emitSystemEvents) {
return;
}
logger.fine("Start DatadogSaveableListener#onChange");
// Get Datadog Client Instance
DatadogClient client = ClientFactory.getClient();
// Get the list of global tags to apply
Map<String, Set<String>> tags = DatadogUtilities.getTagsFromGlobalTags();
// Send event
DatadogEvent event = new ConfigChangedEventImpl(config, file, tags);
client.event(event);
// Submit counter
String hostname = DatadogUtilities.getHostname("null");
client.incrementCounter("jenkins.config.changed", hostname, tags);
logger.fine("End DatadogSaveableListener#onChange");
} catch (Exception e) {
logger.warning("Unexpected exception occurred - " + e.getMessage());
}
}
@DataBoundConstructor
public JiraExtPublisherStep(IssueStrategyExtension issueStrategy, List<JiraOperationExtension> extensions)
{
this.issueStrategy = issueStrategy;
this.extensions = new DescribableList<>(Saveable.NOOP, Util.fixNull(extensions));
}
public PodTemplateToolLocation(Saveable owner) {
super(owner);
}
public PodTemplateToolLocation(Saveable owner, Collection<? extends NodeProperty<?>> initialList) {
super(owner,initialList);
}
@Override
public void onChange(Saveable o, XmlFile file) {
if (o instanceof Item) {
enforceProjectStateOnUpdated((Item) o);
}
}
/**
* @param testDataPublishers Test data publishers.
*
* @since 1.2
*/
@DataBoundSetter public final void setTestDataPublishers(@Nonnull List<TestDataPublisher> testDataPublishers) {
this.testDataPublishers = new DescribableList<TestDataPublisher,Descriptor<TestDataPublisher>>(Saveable.NOOP);
this.testDataPublishers.addAll(testDataPublishers);
}
/**
* @param testDataPublishers Test data publishers.
*
* @since 1.2
*/
@DataBoundSetter public final void setTestDataPublishers(@Nonnull List<TestDataPublisher> testDataPublishers) {
this.testDataPublishers = new DescribableList<TestDataPublisher,Descriptor<TestDataPublisher>>(Saveable.NOOP);
this.testDataPublishers.addAll(testDataPublishers);
}