下面列出了怎么用hudson.model.ModelObject的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* {@inheritDoc}
*/
@Nonnull
@Override
public Collection<? extends Action> createFor(@Nonnull ModelObject target) {
// we do not report actions as it might appear multiple times, we simply add it to Actionable
BlueOceanUrlObjectFactory f = getFirst();
if(f != null) {
// TODO remove this if block once we are using a core > 2.126
// Work around JENKINS-51584
if (target instanceof hudson.model.Queue.Item) {
return Collections.emptyList();
}
BlueOceanUrlObject blueOceanUrlObject = f.get(target);
BlueOceanUrlAction a = new BlueOceanUrlAction(blueOceanUrlObject);
return Collections.singleton(a);
}
return Collections.emptyList();
}
private @CheckForNull BluePipeline getJobResource(ModelObject modelObject){
BluePipeline blueResource = null;
if(modelObject instanceof Job){
ItemGroup parent = ((Job) modelObject).getParent();
if(parent instanceof ComputedFolder){
blueResource = (BluePipeline) BluePipelineFactory
.resolve((ComputedFolder)parent);
if(blueResource instanceof BlueMultiBranchPipeline){
return blueResource;
}
}else {
blueResource = (BluePipeline) BluePipelineFactory
.resolve((Job)modelObject);
}
}
return blueResource;
}
private static FolderPropertyImpl propertyOf(ModelObject object) {
if (object instanceof AbstractFolder) {
FolderPropertyImpl prop = ((AbstractFolder<?>)object).getProperties().get(FolderPropertyImpl.class);
if(prop == null){
ItemGroup parent = ((AbstractFolder)object).getParent();
if(parent instanceof Jenkins){
return null;
}
return propertyOf(parent);
}else{
return prop;
}
}
return null;
}
@SuppressWarnings("ParameterNumber")
private <T extends ModelObject> T createTrendDetails(final String link, final Run<?, ?> owner,
final AnalysisResult result,
final Report allIssues, final Report newIssues,
final Report outstandingIssues, final Report fixedIssues,
final Charset sourceEncoding, final IssuesDetail parent, final Class<T> actualType) {
DetailFactory detailFactory = new DetailFactory();
Object details = detailFactory.createTrendDetails(link, owner,
result, allIssues, newIssues, outstandingIssues, fixedIssues, sourceEncoding, parent);
assertThat(details).isInstanceOf(actualType);
return actualType.cast(details);
}
private String computeUrl(ModelObject modelObject){
String url = null;
for(BlueOceanUrlMapper mapper: BlueOceanUrlMapper.all()){
url = mapper.getUrl(modelObject);
if(url != null){
break;
}
}
if(url == null){
url = BlueOceanUrlMapperImpl.getLandingPagePath();
}
return url;
}
private boolean isBranch(ModelObject modelObject){
if(modelObject instanceof Job){
ItemGroup parent = ((Job) modelObject).getParent();
if(parent instanceof ComputedFolder){
BluePipeline blueResource = (BluePipeline) BluePipelineFactory
.resolve((Job)modelObject);
return (blueResource instanceof BlueMultiBranchPipeline);
}
}
return false;
}
private BlueOrganization getOrganization(ModelObject modelObject ){
BlueOrganization organization = null;
if(modelObject instanceof Item){
organization = OrganizationFactory.getInstance().getContainingOrg((Item) modelObject);
}else if(modelObject instanceof ItemGroup){
organization = OrganizationFactory.getInstance().getContainingOrg((ItemGroup) modelObject);
}else if(modelObject instanceof Run){
organization = OrganizationFactory.getInstance().getContainingOrg(((Run) modelObject).getParent());
}
return organization;
}
public BlueOceanUrlObjectImpl(ModelObject modelObject) {
this.mappedUrl = computeUrl(modelObject);
}
/**
* {@inheritDoc}
*/
@Override
public Class<ModelObject> type() {
return ModelObject.class;
}
@Nonnull
@Override
public BlueOceanUrlObject get(@Nonnull final ModelObject object) {
return new BlueOceanUrlObjectImpl(object);
}
@Override
public String getUrl(@Nonnull ModelObject modelObject) {
return modelObject instanceof FreeStyleProject ? "/customerUrlMapper/"+((FreeStyleProject)modelObject).getName() : null;
}
@Override
public CredentialsStore getStore(@CheckForNull ModelObject object) {
FolderPropertyImpl property = propertyOf(object);
return property != null ? property.getStore() : null;
}
@Override
public Set<CredentialsScope> getScopes(ModelObject object) {
return Collections.singleton(CredentialsScope.GLOBAL);
}
private boolean isApplicable(ModelObject object){
return object instanceof AbstractFolder &&
((AbstractFolder)object).getProperties().get(FolderPropertyImpl.class) != null;
}
@Nonnull
@Override
public ModelObject getContext() {
return owner;
}
/**
* Registers the given value as a {@link StringCredentials} into the default {@link CredentialsProvider}.
* Returns the generated credential id for the registered credentials.
*/
public static String registerStringCredentials(ModelObject context, String value) throws IOException {
String credentialsId = UUID.randomUUID().toString();
setStringCredentials(context, credentialsId, value);
return credentialsId;
}
/**
* Registers the given value as a {@link StringCredentials} into the default {@link CredentialsProvider} using the
* specified credentials id.
*/
public static void setStringCredentials(ModelObject context, String credentialsId, String value) throws IOException {
StringCredentials creds = new StringCredentialsImpl(CredentialsScope.GLOBAL, credentialsId, null, Secret.fromString(value));
CredentialsProvider.lookupStores(context).iterator().next().addCredentials(Domain.global(), creds);
}
/**
* Gives BlueOcean URL for given Jenkins {@link ModelObject}.
*
* @param modelObject Jenkins ModelObject
* @return Gives url for this model object, returns null if it can't compute URL for this model object
*/
@CheckForNull
public abstract String getUrl(@Nonnull ModelObject modelObject);
/**
* Gives {@link BlueOceanUrlObject} for given {@link ModelObject}.
*
* @param object Jenkins {@link ModelObject}
* @return BlueOceanUrlObject
*/
public abstract @Nonnull BlueOceanUrlObject get(@Nonnull ModelObject object);