String projectName = metadataFacet.getProjectName(); String groupId = metadataFacet.getProjectGroupName(); String version = metadataFacet.getProjectVersion(); File folder = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject();
private Project createSubmoduleProject(final Project parent, String moduleName, String artifactId, Class<? extends ProjectFacet>... requiredProjectFacets) { ProjectFactory projectFactory = getProjectFactory(); MavenBuildSystem buildSystem = getBuildSystem(); DirectoryResource location = parent.getRoot().reify(DirectoryResource.class) .getOrCreateChildDirectory(moduleName); List<Class<? extends ProjectFacet>> facets = new ArrayList<>(); facets.add(ResourcesFacet.class); facets.addAll(Arrays.asList(requiredProjectFacets)); Project project = projectFactory.createProject(location, buildSystem, facets); MetadataFacet metadata = project.getFacet(MetadataFacet.class); metadata.setProjectName(artifactId); return project; }
/** * @param project */ private void generateReadme(Project project) { String readmeTemplate = Streams.toString(getClass().getResourceAsStream("README.asciidoc")); FileResource<?> child = project.getRoot().reify(DirectoryResource.class) .getChildOfType(FileResource.class, "README.asciidoc"); // TODO: Replace with template addon MetadataFacet metadata = project.getFacet(MetadataFacet.class); readmeTemplate = readmeTemplate.replaceAll("\\{\\{ADDON_GROUP_ID\\}\\}", metadata.getProjectGroupName()); readmeTemplate = readmeTemplate.replaceAll("\\{\\{ADDON_ARTIFACT_ID\\}\\}", metadata.getProjectName()); child.createNewFile(); child.setContents(readmeTemplate); }
@Override public Result execute(UIExecutionContext context) throws Exception { AddonProjectConfigurator configurator = SimpleContainer .getServices(getClass().getClassLoader(), AddonProjectConfigurator.class).get(); Project project = getSelectedProject(context); AddonId addonId = AddonId.fromCoordinates(addon.getValue()); configurator.installSelectedAddons(project, Collections.singleton(addonId), false); return Results.success("Addon " + addonId + " added as a dependency to project " + project.getFacet(MetadataFacet.class).getProjectName()); }
generateReadme(project); MetadataFacet metadata = project.getFacet(MetadataFacet.class); String projectName = metadata.getProjectName(); metadata.setProjectName(projectName + "-parent"); Project testsProject = createSubmoduleProject(project, "tests", projectName + "-tests", AddonTestFacet.class); Dependency apiProjectDependency = apiProject.getFacet(MetadataFacet.class).getOutputDependency(); Dependency implProjectDependency = implProject.getFacet(MetadataFacet.class).getOutputDependency(); spiProject.getFacet(MetadataFacet.class).getOutputDependency()) .setClassifier(FORGE_ADDON_CLASSIFIER); addonProject.getFacet(MetadataFacet.class).getOutputDependency()) .setClassifier(FORGE_ADDON_CLASSIFIER);
public static void modifyJavaClass(Project project, String className, Optional<String> packageName, JavaClassSourceDecorator decorator) { final String packageLocation = packageName.orElseGet(() -> project.getFacet(MetadataFacet.class).getProjectGroupName()); final JavaSourceFacet sourceFacet = project.getFacet(JavaSourceFacet.class); final DirectoryResource targetPackage = sourceFacet.getPackage(packageLocation); final JavaResource sbAppResource = targetPackage.getChild(className).as(JavaResource.class); if (sbAppResource.exists()) { JavaClassSource sbApp = Roaster.parse(JavaClassSource.class, sbAppResource.getResourceInputStream()); decorator.modify(sbApp); sourceFacet.saveJavaSource(sbApp); } }
metadataFacet.setProjectName(named.getValue()); metadataFacet.setProjectVersion(version.getValue()); metadataFacet.setProjectGroupName(topLevelPackage.getValue()); if (project.hasFacet(PackagingFacet.class))
@Override public void initializeUI(UIBuilder builder) throws Exception { InputComponentFactory factory = builder.getInputComponentFactory(); coordinate = factory.createInput("coordinate", String.class).setLabel("Coordinate") .setDescription("The addon's \"groupId:artifactId,version\" coordinate") .setNote("The addon's \"groupId:artifactId,version\" coordinate").setRequired(true); ProjectFactory projectFactory = SimpleContainer.getServices(getClass().getClassLoader(), ProjectFactory.class) .get(); Project project = Projects.getSelectedProject(projectFactory, builder.getUIContext()); if (project != null) { MetadataFacet facet = project.getFacet(MetadataFacet.class); Coordinate c = facet.getOutputDependency().getCoordinate(); coordinate.setDefaultValue(AddonId.from(c.getGroupId() + ":" + c.getArtifactId(), c.getVersion()) .toCoordinates()); } List<String> defaultCoords = Arrays.asList(CoordinateUtils.FORGE_ADDON_GROUP_ID); coordinate.setCompleter((UIContext context, InputComponent<?, String> input, String value) -> { Iterable<String> items = Collections.emptySet(); if (Strings.isNullOrEmpty(value)) { items = defaultCoords; } return items; }); builder.add(coordinate); }
@Override public Result execute(UIExecutionContext context) throws Exception { Furnace furnace = SimpleContainer.getFurnace(getClass().getClassLoader()); FacetFactory facetFactory = SimpleContainer.getServices(getClass().getClassLoader(), FacetFactory.class).get(); DependencyInstaller dependencyInstaller = SimpleContainer .getServices(getClass().getClassLoader(), DependencyInstaller.class).get(); UIContext uiContext = context.getUIContext(); Project project = getSelectedProject(uiContext); facetFactory.install(project, FurnaceVersionFacet.class); project.getFacet(FurnaceVersionFacet.class).setVersion(furnace.getVersion().toString()); facetFactory.install(project, AddonTestFacet.class); for (AddonId addonId : addonDependencies.getValue()) { DependencyBuilder dependency = DependencyBuilder.create(addonId.getName()) .setVersion(addonId.getVersion().toString()).setScopeType("test"); if (!dependencyInstaller.isInstalled(project, dependency)) { dependencyInstaller.install(project, dependency); } } return Results .success("Project " + project.getFacet(MetadataFacet.class).getProjectName() + " is now configured for testing"); }
Coordinate coordinate = project.getFacet(MetadataFacet.class).getOutputDependency().getCoordinate(); try
String name = facet.getProjectGroupName() + ":" + facet.getProjectName(); AddonId selectedAddonId = AddonId.from(name, facet.getProjectVersion()); if (choices.contains(selectedAddonId))
if (facet != null) { if (Strings.isNullOrBlank(named)) { named = facet.getProjectName();
Coordinate buildCoordinate = project.getFacet(MetadataFacet.class).getOutputDependency().getCoordinate(); try
String projectName = metadataFacet.getProjectName(); String projectGroupId = metadataFacet.getProjectGroupName(); String projectVersion = metadataFacet.getProjectVersion(); File folder = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject();
@Override public Result execute(UIExecutionContext context) throws Exception { Map<Object, Object> attributeMap = context.getUIContext().getAttributeMap(); Project project = (Project) attributeMap.get(Project.class); if (project.hasFacet(JavaSourceFacet.class)) { JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); MetadataFacet metadata = project.getFacet(MetadataFacet.class); if (createMain.getValue()) { JavaClassSource javaClass = Roaster .create(JavaClassSource.class) .setPackage(facet.getBasePackage()) .setName("Main") .addMethod("public static void main(String[] args) {}") .setBody("System.out.println(\"Hi there! I was forged as part of the project you call " + metadata.getProjectName() + ".\");") .getOrigin(); facet.saveJavaSource(javaClass); } } return null; } }
@Override public Result execute(UIExecutionContext context) throws Exception { UIContext uiContext = context.getUIContext(); Project project = (Project) uiContext.getAttributeMap().get(Project.class); Archetype chosenArchetype = archetype.getValue(); String coordinate = chosenArchetype.getGroupId() + ":" + chosenArchetype.getArtifactId() + ":" + chosenArchetype.getVersion(); DependencyQueryBuilder depQuery = DependencyQueryBuilder.create(coordinate); String repository = chosenArchetype.getRepository(); if (!Strings.isNullOrEmpty(repository)) { if (repository.endsWith(".xml")) { int lastRepositoryPath = repository.lastIndexOf('/'); if (lastRepositoryPath > -1) repository = repository.substring(0, lastRepositoryPath); } if (!repository.isEmpty()) { depQuery.setRepositories(new DependencyRepository("archetype", repository)); } } Dependency resolvedArtifact = dependencyResolver.resolveArtifact(depQuery); FileResource<?> artifact = resolvedArtifact.getArtifact(); MetadataFacet metadataFacet = project.getFacet(MetadataFacet.class); File fileRoot = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject(); ArchetypeHelper archetypeHelper = new ArchetypeHelper(artifact.getResourceInputStream(), fileRoot, metadataFacet.getProjectGroupName(), metadataFacet.getProjectName(), metadataFacet.getProjectVersion()); JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); archetypeHelper.setPackageName(facet.getBasePackage()); archetypeHelper.execute(); return Results.success(); }
File fileRoot = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject(); ArchetypeHelper archetypeHelper = new ArchetypeHelper(artifact.getResourceInputStream(), fileRoot, metadataFacet.getProjectGroupName(), metadataFacet.getProjectName(), metadataFacet.getProjectVersion()); JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); archetypeHelper.setPackageName(facet.getBasePackage());
@Override public Result execute(UIExecutionContext context) throws Exception { UIContext uiContext = context.getUIContext(); Project project = (Project) uiContext.getAttributeMap().get(Project.class); String coordinate = getArchetypeGroupId() + ":" + getArchetypeArtifactId() + ":" + getArchetypeVersion(); DependencyQueryBuilder depQuery = DependencyQueryBuilder.create(coordinate); String repository = getArchetypeRepository(); if (repository != null) { depQuery.setRepositories(new DependencyRepository("archetype", repository)); } DependencyResolver resolver = SimpleContainer .getServices(AbstractArchetypeSelectionWizardStep.class.getClassLoader(), DependencyResolver.class) .get(); Dependency resolvedArtifact = resolver.resolveArtifact(depQuery); FileResource<?> artifact = resolvedArtifact.getArtifact(); MetadataFacet metadataFacet = project.getFacet(MetadataFacet.class); File fileRoot = project.getRoot().reify(DirectoryResource.class).getUnderlyingResourceObject(); ArchetypeHelper archetypeHelper = new ArchetypeHelper(artifact.getResourceInputStream(), fileRoot, metadataFacet.getProjectGroupName(), metadataFacet.getProjectName(), metadataFacet.getProjectVersion()); JavaSourceFacet facet = project.getFacet(JavaSourceFacet.class); archetypeHelper.setPackageName(facet.getBasePackage()); archetypeHelper.execute(); return Results.success(); }