FileInputStream in = new FileInputStream(distributionFile);
try {
PatchInfo patchInfo = PatchParser.parse(in, true);
if (patchInfo == null) {
throw new UnknownRecipeException();
}
if (patchInfo.is(Patch.class)) {
Patch patch = patchInfo.as(Patch.class);
String version = patch.getType() == Patch.Type.ONE_OFF ? patch.getTargetVersion() + "+" + patch.getId()
: patch.getTargetVersion();
DeploymentProperties props = new DeploymentProperties(0, patch.getIdentityName(),
version, patch.getDescription(), DestinationComplianceMode.full);
ConfigurationDefinition config = new ConfigurationDefinition("wildfly-patch", null);
PropertyDefinitionSimple patchIdProp = new PropertyDefinitionSimple("patchId", "The ID of the patch",
true,
PropertySimpleType.STRING);
patchIdProp.setDefaultValue(patch.getId());
patchIdProp.setReadOnly(true);
PropertyDefinitionSimple patchTypeProp = new PropertyDefinitionSimple("patchType",
"The type of the patch",
true, PropertySimpleType.STRING);
patchTypeProp.setDefaultValue(patch.getType().toString());
patchTypeProp.setReadOnly(true);
config.put(patchIdProp);
config.put(patchTypeProp);
addCommonProperties(config);
parseResults = new RecipeParseResults(props, config, null);
fileName = patch.getId();
recipe = patch.getContents();
} else if (patchInfo.is(PatchBundle.class)) {
PatchBundle patchBundle = patchInfo.as(PatchBundle.class);
Patch lastPatch = null;
StringBuilder allPatchIds = new StringBuilder();
for (PatchBundle.Element p : patchBundle) {
lastPatch = p.getPatch();
allPatchIds.append(p.getPatch().getId()).append("#");
}
allPatchIds.replace(allPatchIds.length() - 1, allPatchIds.length(), "");
if (lastPatch == null) {
throw new UnknownRecipeException("Not a Wildfly patch");
}
DeploymentProperties props = new DeploymentProperties(0, lastPatch.getIdentityName(),
lastPatch.getTargetVersion(), lastPatch.getDescription(), DestinationComplianceMode.full);