Skip to content
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.

Commit

Permalink
BZ-996490: now rule names are indexed by project in UI you can switch…
Browse files Browse the repository at this point in the history
… projects and you wont have problem anymore
  • Loading branch information
porcelli committed Jan 7, 2014
1 parent 0c14783 commit cce5836
Show file tree
Hide file tree
Showing 9 changed files with 142 additions and 79 deletions.
@@ -0,0 +1,26 @@
package org.guvnor.common.services.project.events;

import java.util.Collection;
import java.util.Map;

import org.guvnor.common.services.project.model.Project;

public class RuleNameUpdateEvent {

private final Project project;
private final Map<String, Collection<String>> ruleNames;

public RuleNameUpdateEvent( final Project project,
final Map<String, Collection<String>> ruleNames ) {
this.project = project;
this.ruleNames = ruleNames;
}

public Map<String, Collection<String>> getRuleNames() {
return ruleNames;
}

public Project getProject() {
return project;
}
}
Expand Up @@ -4,37 +4,48 @@
import java.util.Collection;
import java.util.HashMap;

import org.guvnor.common.services.shared.rulenames.RuleNameUpdateEvent;
import org.guvnor.common.services.project.events.RuleNameUpdateEvent;
import org.guvnor.common.services.project.model.Project;
import org.guvnor.common.services.project.service.ProjectService;
import org.junit.Test;
import org.uberfire.backend.vfs.Path;

import static junit.framework.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;

public class RuleNamesServiceImplTest {

@Test
public void testBasic() throws Exception {
RuleNamesServiceImpl ruleNamesService = new RuleNamesServiceImpl();

HashMap<String, Collection<String>> ruleNames = new HashMap<String, Collection<String>>();
final ProjectService projectService = mock( ProjectService.class );
final Project project = mock( Project.class );
final Path path = mock( Path.class );
when( projectService.resolveProject( any( Path.class ) ) ).thenReturn( project );

ArrayList<String> rules = new ArrayList<String>();
rules.add("Rule 1");
rules.add("Rule 2");
ruleNames.put("testPackage", rules);
final RuleNamesServiceImpl ruleNamesService = new RuleNamesServiceImpl( projectService );

ruleNamesService.onRuleNamesUpdated(new RuleNameUpdateEvent(ruleNames));
final HashMap<String, Collection<String>> ruleNames = new HashMap<String, Collection<String>>();

assertEquals(2, ruleNamesService.getRuleNames().size());
assertEquals("Rule 1", ruleNamesService.getRuleNames().get(0));
assertEquals("Rule 2", ruleNamesService.getRuleNames().get(1));
final ArrayList<String> rules = new ArrayList<String>();
rules.add( "Rule 1" );
rules.add( "Rule 2" );
ruleNames.put( "testPackage", rules );

assertEquals(2, ruleNamesService.getRuleNamesForPackage("testPackage").size());
assertEquals("Rule 1", ruleNamesService.getRuleNamesForPackage("testPackage").toArray()[0]);
assertEquals("Rule 2", ruleNamesService.getRuleNamesForPackage("testPackage").toArray()[1]);
ruleNamesService.onRuleNamesUpdated( new RuleNameUpdateEvent( project, ruleNames ) );

assertEquals(1, ruleNamesService.getRuleNamesMap().keySet().size());
assertTrue(ruleNamesService.getRuleNamesMap().keySet().contains("testPackage"));
assertEquals("Rule 1", ruleNamesService.getRuleNamesMap().get("testPackage").toArray()[0]);
assertEquals("Rule 2", ruleNamesService.getRuleNamesMap().get("testPackage").toArray()[1]);
assertEquals( 2, ruleNamesService.getRuleNames( path ).size() );
assertEquals( "Rule 1", ruleNamesService.getRuleNames( path ).get( 0 ) );
assertEquals( "Rule 2", ruleNamesService.getRuleNames( path ).get( 1 ) );

assertEquals( 2, ruleNamesService.getRuleNamesForPackage( path, "testPackage" ).size() );
assertEquals( "Rule 1", ruleNamesService.getRuleNamesForPackage( path, "testPackage" ).toArray()[ 0 ] );
assertEquals( "Rule 2", ruleNamesService.getRuleNamesForPackage( path, "testPackage" ).toArray()[ 1 ] );

assertEquals( 1, ruleNamesService.getRuleNamesMap( path ).keySet().size() );
assertTrue( ruleNamesService.getRuleNamesMap( path ).keySet().contains( "testPackage" ) );
assertEquals( "Rule 1", ruleNamesService.getRuleNamesMap( path ).get( "testPackage" ).toArray()[ 0 ] );
assertEquals( "Rule 2", ruleNamesService.getRuleNamesMap( path ).get( "testPackage" ).toArray()[ 1 ] );
}
}
Expand Up @@ -37,11 +37,12 @@
import org.guvnor.common.services.project.builder.model.BuildResults;
import org.guvnor.common.services.project.builder.model.IncrementalBuildResults;
import org.guvnor.common.services.project.builder.service.BuildValidationHelper;
import org.guvnor.common.services.project.events.RuleNameUpdateEvent;
import org.guvnor.common.services.project.model.GAV;
import org.guvnor.common.services.project.model.Package;
import org.guvnor.common.services.project.model.Project;
import org.guvnor.common.services.project.model.ProjectImports;
import org.guvnor.common.services.project.service.ProjectService;
import org.guvnor.common.services.shared.rulenames.RuleNameUpdateEvent;
import org.guvnor.common.services.shared.validation.model.ValidationMessage;
import org.kie.api.KieServices;
import org.kie.api.builder.KieBuilder;
Expand Down Expand Up @@ -78,6 +79,7 @@ public class Builder {
private final static String DEFAULTPKG = "defaultpkg";

private KieBuilder kieBuilder;
private final Project project;
private final KieServices kieServices;
private final KieFileSystem kieFileSystem;
private final Path moduleDirectory;
Expand All @@ -100,12 +102,14 @@ public class Builder {

private KieContainer kieContainer;

public Builder( final Path moduleDirectory,
public Builder( final Project project,
final Path moduleDirectory,
final GAV gav,
final IOService ioService,
final ProjectService projectService,
final Event<RuleNameUpdateEvent> ruleNameUpdateEvent,
final List<BuildValidationHelper> buildValidationHelpers ) {
this.project = project;
this.moduleDirectory = moduleDirectory;
this.gav = gav;
this.ioService = ioService;
Expand Down Expand Up @@ -272,7 +276,7 @@ private void fireRuleNameUpdateEvent() {

ruleNames.put( DEFAULTPKG, kieModuleMetaData.getRuleNamesInPackage( DEFAULTPKG ) );

ruleNameUpdateEvent.fire( new RuleNameUpdateEvent( ruleNames ) );
ruleNameUpdateEvent.fire( new RuleNameUpdateEvent( project, ruleNames ) );
}

public IncrementalBuildResults deleteResource( final Path resource ) {
Expand Down
Expand Up @@ -34,7 +34,7 @@
import org.guvnor.common.services.project.model.Project;
import org.guvnor.common.services.project.service.POMService;
import org.guvnor.common.services.project.service.ProjectService;
import org.guvnor.common.services.shared.rulenames.RuleNameUpdateEvent;
import org.guvnor.common.services.project.events.RuleNameUpdateEvent;
import org.uberfire.backend.server.util.Paths;
import org.uberfire.backend.vfs.Path;
import org.uberfire.commons.validation.PortablePreconditions;
Expand Down Expand Up @@ -89,7 +89,8 @@ public synchronized Builder assertBuilder( final Project project ) {
if ( builder == null ) {
final Path pathToPom = project.getPomXMLPath();
final POM pom = pomService.load( pathToPom );
builder = new Builder( Paths.convert( project.getRootPath() ),
builder = new Builder( project,
Paths.convert( project.getRootPath() ),
pom.getGav(),
ioService,
projectService,
Expand Down
Expand Up @@ -32,20 +32,18 @@
import org.guvnor.common.services.project.builder.model.BuildResults;
import org.guvnor.common.services.project.builder.service.BuildValidationHelper;
import org.guvnor.common.services.project.model.GAV;
import org.guvnor.common.services.project.model.Project;
import org.guvnor.common.services.project.service.ProjectService;
import org.guvnor.common.services.shared.rulenames.RuleNameUpdateEvent;
import org.guvnor.m2repo.backend.server.ExtendedM2RepoService;
import org.jboss.weld.environment.se.StartMain;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.kie.scanner.KieModuleMetaData;
import org.uberfire.io.IOService;
import org.uberfire.java.nio.fs.file.SimpleFileSystemProvider;
import org.kie.scanner.KieModuleMetaData;
import org.uberfire.backend.server.util.Paths;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.*;

public class BuildServiceImplTest {

Expand All @@ -64,13 +62,15 @@ public void setUp() throws Exception {
public void testBuilderSimpleKProject() throws Exception {
IOService ioService = getReference( IOService.class );
ProjectService projectService = getReference( ProjectService.class );
final Project project = mock( Project.class );

URL url = this.getClass().getResource( "/GuvnorM2RepoDependencyExample1" );
SimpleFileSystemProvider p = new SimpleFileSystemProvider();
org.uberfire.java.nio.file.Path path = p.getPath( url.toURI() );

ruleNameUpdateEvent = mock( Event.class );
final Builder builder = new Builder( path,
final Builder builder = new Builder( project,
path,
new GAV(),
ioService,
projectService,
Expand All @@ -87,13 +87,15 @@ public void testBuilderSimpleKProject() throws Exception {
public void testBuilderKProjectHasDependency() throws Exception {
IOService ioService = getReference( IOService.class );
ProjectService projectService = getReference( ProjectService.class );
final Project project = mock( Project.class );

URL url = this.getClass().getResource( "/GuvnorM2RepoDependencyExample2" );
SimpleFileSystemProvider p = new SimpleFileSystemProvider();
org.uberfire.java.nio.file.Path path = p.getPath( url.toURI() );

ruleNameUpdateEvent = mock( Event.class );
final Builder builder = new Builder( path,
final Builder builder = new Builder( project,
path,
new GAV(),
ioService,
projectService,
Expand All @@ -117,13 +119,15 @@ public void testBuilderKProjectHasDependency() throws Exception {
public void testBuilderKProjectHasSnapshotDependency() throws Exception {
IOService ioService = getReference( IOService.class );
ProjectService projectService = getReference( ProjectService.class );
final Project project = mock( Project.class );

URL url = this.getClass().getResource( "/GuvnorM2RepoDependencyExample2Snapshot" );
SimpleFileSystemProvider p = new SimpleFileSystemProvider();
org.uberfire.java.nio.file.Path path = p.getPath( url.toURI() );

ruleNameUpdateEvent = mock( Event.class );
final Builder builder = new Builder( path,
final Builder builder = new Builder( project,
path,
new GAV(),
ioService,
projectService,
Expand All @@ -147,13 +151,15 @@ public void testBuilderKProjectHasSnapshotDependency() throws Exception {
public void testBuilderKProjectHasDependencyMetaData() throws Exception {
IOService ioService = getReference( IOService.class );
ProjectService projectService = getReference( ProjectService.class );
final Project project = mock( Project.class );

URL url = this.getClass().getResource( "/GuvnorM2RepoDependencyExample2" );
SimpleFileSystemProvider p = new SimpleFileSystemProvider();
org.uberfire.java.nio.file.Path path = p.getPath( url.toURI() );

ruleNameUpdateEvent = mock( Event.class );
final Builder builder = new Builder( path,
final Builder builder = new Builder( project,
path,
new GAV(),
ioService,
projectService,
Expand Down Expand Up @@ -204,13 +210,15 @@ public void testBuilderKProjectHasDependencyMetaData() throws Exception {
public void testKProjectContainsXLS() throws Exception {
IOService ioService = getReference( IOService.class );
ProjectService projectService = getReference( ProjectService.class );
final Project project = mock( Project.class );

URL url = this.getClass().getResource( "/ExampleWithExcel" );
SimpleFileSystemProvider p = new SimpleFileSystemProvider();
org.uberfire.java.nio.file.Path path = p.getPath( url.toURI() );

ruleNameUpdateEvent = mock( Event.class );
final Builder builder = new Builder( path,
final Builder builder = new Builder( project,
path,
new GAV(),
ioService,
projectService,
Expand Down
Expand Up @@ -173,11 +173,11 @@ public void testResourceAdded() throws Exception {
incrementalBuildResults.getRemovedMessages().size() );

assertEquals( "Updated",
ruleNamesService.getRuleNames().get( 0 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 0 ) );
assertEquals( "Deleted",
ruleNamesService.getRuleNames().get( 1 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 1 ) );
assertEquals( "Added",
ruleNamesService.getRuleNames().get( 2 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 2 ) );
}

@Test
Expand Down Expand Up @@ -210,11 +210,11 @@ public void testResourceUpdated() throws Exception {
incrementalBuildResults.getRemovedMessages().size() );

assertEquals( "Updated",
ruleNamesService.getRuleNames().get( 0 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 0 ) );
assertEquals( "Deleted",
ruleNamesService.getRuleNames().get( 1 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 1 ) );
assertEquals( "Added",
ruleNamesService.getRuleNames().get( 2 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 2 ) );
}

@Test
Expand Down Expand Up @@ -307,9 +307,9 @@ public void testResourceDeleted() throws Exception {
incrementalBuildResults.getRemovedMessages().size() );

assertEquals( "Updated",
ruleNamesService.getRuleNames().get( 0 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 0 ) );
assertEquals( "Added",
ruleNamesService.getRuleNames().get( 1 ) );
ruleNamesService.getRuleNames( resourcePath ).get( 1 ) );
}

@Test
Expand Down

This file was deleted.

Expand Up @@ -5,14 +5,16 @@
import java.util.Map;

import org.jboss.errai.bus.server.annotations.Remote;
import org.uberfire.backend.vfs.Path;

@Remote
public interface RuleNamesService {

//Rule names methods - for "extends" use
Map<String, Collection<String>> getRuleNamesMap();
Map<String, Collection<String>> getRuleNamesMap( final Path path );

List<String> getRuleNames();
List<String> getRuleNames( final Path path );

Collection<String> getRuleNamesForPackage( String packageName );
Collection<String> getRuleNamesForPackage( final Path path,
final String packageName );
}

0 comments on commit cce5836

Please sign in to comment.