Skip to content

Commit

Permalink
FORGE-1064: ProjectFactoryImpl now has built-in listeners using Impor…
Browse files Browse the repository at this point in the history
…ted<ProjectListener>
  • Loading branch information
gastaldi committed Aug 26, 2013
1 parent 4b7e8a2 commit 7a00bf3
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 2 deletions.
Expand Up @@ -7,12 +7,15 @@

package org.jboss.forge.addon.projects;

import org.jboss.forge.furnace.services.Exported;

/**
* Listens for project actions
*
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*
*
*/
@Exported
public interface ProjectListener
{
public void projectCreated(Project project);
Expand Down
Expand Up @@ -48,6 +48,9 @@ public class ProjectFactoryImpl implements ProjectFactory
@Inject
private FacetFactory factory;

@Inject
private Imported<ProjectListener> builtInListeners;

private final List<ProjectListener> projectListeners = new ArrayList<ProjectListener>();

@Override
Expand Down Expand Up @@ -178,6 +181,10 @@ public Project createProject(DirectoryResource target, Iterable<Class<? extends

private void fireProjectCreated(Project project)
{
for (ProjectListener listener : builtInListeners)
{
listener.projectCreated(project);
}
for (ProjectListener listener : projectListeners)
{
listener.projectCreated(project);
Expand Down
@@ -0,0 +1,26 @@
/**
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.jboss.forge.addon.projects.impl;

import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectListener;

/**
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class MockProjectListener implements ProjectListener
{
static volatile Project project;

@Override
public void projectCreated(Project project)
{
MockProjectListener.project = project;
}
}
Expand Up @@ -121,4 +121,12 @@ public void testContainsProject()
Assert.assertFalse(projectFactory.containsProject(projectRoot));
}

@Test
public void testProjectListenerExportedService()
{
Project project = projectFactory.createTempProject();
Assert.assertNotNull(project);
Assert.assertSame(project, MockProjectListener.project);
}

}

0 comments on commit 7a00bf3

Please sign in to comment.