Skip to content

Commit

Permalink
Closes #90
Browse files Browse the repository at this point in the history
  • Loading branch information
jpav committed Oct 10, 2013
1 parent 788f644 commit be008d6
Show file tree
Hide file tree
Showing 11 changed files with 463 additions and 443 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@
*/
@SuppressWarnings( "javadoc" )
public class ITXsdDependencyProcessor extends BaseIntegrationTest {

DependencyProcessor processor;

/**
* {@inheritDoc}
*
Expand All @@ -60,111 +60,111 @@ public class ITXsdDependencyProcessor extends BaseIntegrationTest {
public void before() throws Exception {
super.before();
this.processor = new XsdDependencyProcessor();
this.modelTypeManager.install( "sramp" );
this.modelTypeManager.install( "xsd" );
modelTypeManager().install( "sramp" );
modelTypeManager().install( "xsd" );
}

@Test
public void shouldNotFindDependenciesInMusicXsd() throws Exception {
final URL xsdUrl = getClass().getClassLoader().getResource( "music.xsd" );
final String path = this.modeler.importFile( new File( xsdUrl.toURI() ), null );
final String path = modeler().importFile( new File( xsdUrl.toURI() ), null );
assertThat( path, is( "/music.xsd" ) );

final ModelType xsdModelType = xsdModelType();
final ModelImpl model = ( ModelImpl ) this.modeler.generateModel( path, ARTIFACT_NAME, xsdModelType );
this.manager.run( new Task< Node >() {
final ModelImpl model = ( ModelImpl ) modeler().generateModel( path, ARTIFACT_NAME, xsdModelType );

manager().run( new Task< Node >() {

@Override
public Node run( final Session session ) throws Exception {
final Node modelNode = session.getNode( model.absolutePath() );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler() );
assertThat( dependenciesPath, nullValue() );

return null;
}
} );
}

@Test
public void shouldSetDependencyPathsOfBooksXsd() throws Exception {
final URL xsdUrl = getClass().getClassLoader().getResource( "Books/Books.xsd" );
final String path = this.modeler.importFile( new File( xsdUrl.toURI() ), null );
final String path = modeler().importFile( new File( xsdUrl.toURI() ), null );
assertThat( path, is( "/Books.xsd" ) );

final ModelType xsdModelType = xsdModelType();
final ModelImpl model = ( ModelImpl ) this.modeler.generateModel( path, ARTIFACT_NAME, xsdModelType );
this.manager.run( new Task< Node >() {
final ModelImpl model = ( ModelImpl ) modeler().generateModel( path, ARTIFACT_NAME, xsdModelType );

manager().run( new Task< Node >() {

@Override
public Node run( final Session session ) throws Exception {
final Node modelNode = session.getNode( model.absolutePath() );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler() );
assertThat( dependenciesPath, notNullValue() );

final Node dependenciesNode = session.getNode( dependenciesPath );
assertThat( dependenciesNode.getNodes().getSize(), is( 1L ) );

final Node dependencyNode = dependenciesNode.getNodes().nextNode();
assertThat( dependencyNode.getPrimaryNodeType().getName(), is( ModelerLexicon.DEPENDENCY_NODE ) );
assertThat( dependencyNode.getProperty( ModelerLexicon.PATH_PROPERTY ).getString(), is( "/data/types/BookDatatypes.xsd" ) );

final String input =
dependencyNode.getProperty( ModelerLexicon.SOURCE_REFERENCE_PROPERTY ).getValues()[ 0 ].getString();
assertThat( input, is( "../data/types/BookDatatypes.xsd" ) );

return null;
}
} );
}

@Test
public void shouldSetDependencyPathsOfMoviesXsd() throws Exception {
final URL xsdUrl = getClass().getClassLoader().getResource( "Movies/Movies.xsd" );
final String path = this.modeler.importFile( new File( xsdUrl.toURI() ), null );
final String path = modeler().importFile( new File( xsdUrl.toURI() ), null );
assertThat( path, is( "/Movies.xsd" ) );

final ModelType xsdModelType = xsdModelType();
final ModelImpl model = ( ModelImpl ) this.modeler.generateModel( path, ARTIFACT_NAME, xsdModelType );
this.manager.run( new Task< Node >() {
final ModelImpl model = ( ModelImpl ) modeler().generateModel( path, ARTIFACT_NAME, xsdModelType );

manager().run( new Task< Node >() {

@Override
public Node run( final Session session ) throws Exception {
final Node modelNode = session.getNode( model.absolutePath() );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler );
final String dependenciesPath = processor.process( modelNode, xsdModelType, modeler() );
assertThat( dependenciesPath, notNullValue() );

final Node dependenciesNode = session.getNode( dependenciesPath );
assertThat( dependenciesNode.getNodes().getSize(), is( 1L ) );

final Node dependencyNode = dependenciesNode.getNodes().nextNode();
assertThat( dependencyNode.getPrimaryNodeType().getName(), is( ModelerLexicon.DEPENDENCY_NODE ) );
assertThat( dependencyNode.getProperty( ModelerLexicon.PATH_PROPERTY ).getString(), is( model.absolutePath() + "/MovieDatatypes.xsd" ) );

final String input =
dependencyNode.getProperty( ModelerLexicon.SOURCE_REFERENCE_PROPERTY ).getValues()[ 0 ].getString();
assertThat( input, is( "MovieDatatypes.xsd" ) );

return null;
}
} );

}
private ModelType xsdModelType() {

private ModelType xsdModelType() throws Exception {
ModelType xsdModelType = null;
for ( final ModelType type : modelTypeManager.modelTypes() ) {

for ( final ModelType type : modelTypeManager().modelTypes() ) {
if ( type.name().equals( XsdLexicon.MODEL_ID ) ) {
xsdModelType = type;
break;
}
}

assertThat( xsdModelType, notNullValue() );
return xsdModelType;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -37,75 +37,75 @@

@SuppressWarnings( "javadoc" )
public class ITModeler extends BaseIntegrationTest {

private static final String XSD_MODEL_TYPE_NAME = "org.modeshape.modeler.xsd.Xsd";

@Test
public void shouldCreateModelOfSuppliedType() throws Exception {
modelTypeManager.install( "xml" );
modelTypeManager.install( "sramp" );
modelTypeManager.install( "xsd" );
modelTypeManager().install( "xml" );
modelTypeManager().install( "sramp" );
modelTypeManager().install( "xsd" );
final String path = importArtifact( XSD_ARTIFACT );
ModelType modelType = null;
for ( final ModelType type : modelTypeManager.modelTypesForArtifact( path ) ) {
for ( final ModelType type : modelTypeManager().modelTypesForArtifact( path ) ) {
if ( type.name().equals( XSD_MODEL_TYPE_NAME ) ) {
modelType = type;
break;
}
}
final Model model = modeler.generateModel( path, ARTIFACT_NAME, modelType );
final Model model = modeler().generateModel( path, ARTIFACT_NAME, modelType );
assertThat( model, notNullValue() );
manager.run( new Task< Void >() {
manager().run( new Task< Void >() {

@Override
public Void run( final Session session ) throws Exception {
assertThat( session.getRootNode().hasNode( ARTIFACT_NAME ), is( true ) );
return null;
}
} );
}

@Test( expected = ModelerException.class )
public void shouldFailToCreateModelIfFileIsInvalid() throws Exception {
modelTypeManager.install( "xml" );
modeler.generateModel( importArtifact( XML_DECLARATION + "<stuff>" ),
ARTIFACT_NAME,
modelTypeManager.modelTypes().iterator().next() );
modelTypeManager().install( "xml" );
modeler().generateModel( importArtifact( XML_DECLARATION + "<stuff>" ),
ARTIFACT_NAME,
modelTypeManager().modelTypes().iterator().next() );
}

@Test( expected = ModelerException.class )
public void shouldFailToCreateModelIfTypeIsInapplicable() throws Exception {
modelTypeManager.install( "xml" );
modeler.generateModel( importArtifact( "stuff" ), ARTIFACT_NAME, modelTypeManager.modelTypes().iterator().next() );
modelTypeManager().install( "xml" );
modeler().generateModel( importArtifact( "stuff" ), ARTIFACT_NAME, modelTypeManager().modelTypes().iterator().next() );
}

@Test
public void shouldNotFindDependencyProcessorForXsdModelNode() throws Exception {
modelTypeManager.install( "sramp" );
modelTypeManager.install( "xsd" );
modelTypeManager().install( "sramp" );
modelTypeManager().install( "xsd" );

// find XSD model type
ModelType xsdModelType = null;
for ( final ModelType type : modelTypeManager.modelTypes() ) {

for ( final ModelType type : modelTypeManager().modelTypes() ) {
if ( type.name().equals( XSD_MODEL_TYPE_NAME ) ) {
xsdModelType = type;
break;
}
}

assertThat( xsdModelType, notNullValue() );

final String path = importArtifact( XSD_ARTIFACT );
final ModelImpl model = ( ModelImpl ) modeler.generateModel( path, ARTIFACT_NAME, xsdModelType );
modeler.manager.run( new Task< Void >() {
final ModelImpl model = ( ModelImpl ) modeler().generateModel( path, ARTIFACT_NAME, xsdModelType );
modeler().manager.run( new Task< Void >() {

@Override
public Void run( final Session session ) throws Exception {
assertThat( modelTypeManager.dependencyProcessor( session.getNode( model.absolutePath() ) ), nullValue() );
assertThat( modelTypeManager().dependencyProcessor( session.getNode( model.absolutePath() ) ), nullValue() );
return null;
}
} );
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,9 @@
import org.modeshape.modeler.test.BaseTest;

@SuppressWarnings( "javadoc" )
public abstract class BaseIntegrationTest extends BaseTest {}
public abstract class BaseIntegrationTest extends BaseTest {

public String importArtifact( final String content ) throws Exception {
return modeler().importArtifact( stream( content ), ARTIFACT_NAME );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,32 +41,29 @@
import org.modeshape.modeler.ModelerException;
import org.modeshape.modeler.integration.BaseIntegrationTest;

/**
* Tests for {@link ModelTypeManagerImpl}.
*/
@SuppressWarnings( "javadoc" )
public class ITModelTypeManager extends BaseIntegrationTest {

@Test
public void shouldAllowRequestWhenModelTypeDoesNotHaveDependencyProcessor() throws Exception {
manager.run( new Task< Void >() {
manager().run( new Task< Void >() {

@Override
public Void run( final Session session ) throws Exception {
final Node rootNode = session.getRootNode();
final Node modelNode = rootNode.addNode( "elvis" );
modelNode.addMixin( ModelerLexicon.MODEL_MIXIN );
assertThat( modelTypeManager.dependencyProcessor( modelNode ), nullValue() );
assertThat( modelTypeManager().dependencyProcessor( modelNode ), nullValue() );
return null;
}
} );
}

@Test( expected = ModelerException.class )
public void shouldFailToProcessDependenciesWhenNotAModelNode() throws Exception {
final ModelTypeManagerImpl modelTypeMgr = modelTypeManager;
modelTypeManager.manager.run( new Task< Void >() {
final ModelTypeManagerImpl modelTypeMgr = modelTypeManager();
modelTypeManager().manager.run( new Task< Void >() {

@Override
public Void run( final Session session ) throws Exception {
final Node rootNode = session.getRootNode();
Expand All @@ -75,48 +72,48 @@ public Void run( final Session session ) throws Exception {
}
} );
}

@Test
public void shouldGetApplicablemodelTypeManager() throws Exception {
modelTypeManager.install( "sramp" );
modelTypeManager.install( "xsd" );
final Set< ModelType > types = modelTypeManager.modelTypesForArtifact( importArtifact( XSD_ARTIFACT ) );
public void shouldGetApplicableModelTypeManager() throws Exception {
modelTypeManager().install( "sramp" );
modelTypeManager().install( "xsd" );
final Set< ModelType > types = modelTypeManager().modelTypesForArtifact( importArtifact( XSD_ARTIFACT ) );
assertThat( types, notNullValue() );
assertThat( types.isEmpty(), is( false ) );
}

@Test
public void shouldGetModelTypeCategories() throws Exception {
assertThat( modelTypeManager.installableModelTypeCategories().isEmpty(), is( false ) );
assertThat( modelTypeManager().installableModelTypeCategories().isEmpty(), is( false ) );
}

@Test
public void shouldIniitializeModelTypeRepositories() throws Exception {
assertThat( modelTypeManager.modelTypeRepositories().contains( new URL( ModelTypeManager.JBOSS_MODEL_TYPE_REPOSITORY ) ), is( true ) );
assertThat( modelTypeManager.modelTypeRepositories().contains( new URL( ModelTypeManager.MAVEN_MODEL_TYPE_REPOSITORY ) ), is( true ) );
assertThat( modelTypeManager().modelTypeRepositories().contains( new URL( ModelTypeManager.JBOSS_MODEL_TYPE_REPOSITORY ) ), is( true ) );
assertThat( modelTypeManager().modelTypeRepositories().contains( new URL( ModelTypeManager.MAVEN_MODEL_TYPE_REPOSITORY ) ), is( true ) );
}

@Test
public void shouldInstallModelTypes() throws Exception {
final Collection< String > potentialSequencerClassNames = modelTypeManager.install( "java" );
final Collection< String > potentialSequencerClassNames = modelTypeManager().install( "java" );
assertThat( potentialSequencerClassNames.isEmpty(), is( true ) );
assertThat( modelTypeManager.modelTypes().isEmpty(), is( false ) );
assertThat( modelTypeManager().modelTypes().isEmpty(), is( false ) );
}

@Test
public void shouldOnlyInstallModelTypeCategoryOnce() throws Exception {
modelTypeManager.install( "java" );
assertThat( modelTypeManager.modelTypes().isEmpty(), is( false ) );
final int size = modelTypeManager.modelTypes().size();
modelTypeManager.install( "java" );
assertThat( modelTypeManager.modelTypes().size(), is( size ) );
modelTypeManager().install( "java" );
assertThat( modelTypeManager().modelTypes().isEmpty(), is( false ) );
final int size = modelTypeManager().modelTypes().size();
modelTypeManager().install( "java" );
assertThat( modelTypeManager().modelTypes().size(), is( size ) );
}

@Test
public void shouldReturnUninstantiablePotentialSequencerClassNames() throws Exception {
Collection< String > potentialSequencerClassNames = modelTypeManager.install( "xsd" );
Collection< String > potentialSequencerClassNames = modelTypeManager().install( "xsd" );
assertThat( potentialSequencerClassNames.isEmpty(), is( false ) );
potentialSequencerClassNames = modelTypeManager.install( "sramp" );
potentialSequencerClassNames = modelTypeManager().install( "sramp" );
assertThat( potentialSequencerClassNames.isEmpty(), is( true ) );
}
}
Loading

0 comments on commit be008d6

Please sign in to comment.