Hi Steve.

Yes it is. Just go to:
https://github.com/apache/plc4x/tree/feature/code-gen/protocols/s7

the protocols/s7 module in the "code-gen" branch. But you have to rename the 
org/apache/plc4x/protocols/protocol.dfdl.xsd to something else (I currently 
duplicated the file as a workaround)

As part of the maven build the testsuite is executed and it should demonstrate 
the problem.

Chris


Am 09.05.19, 15:48 schrieb "Steve Lawrence" <[email protected]>:

    Hmmmm, so with the XML catalog it doesn't even need to look in the jar.
    I don't see an obvious reason why things would fail to open the file://...
    
    Are your changes available in a github repo/branch somewhere? I could
    test it out on my machine and see if I can reproduce.
    
    I think the first step I'd take is to modify DaffodilXMLLoader.scala to
    not catch the IOException and just let it bubble up so we can see the
    actual error. Ultimately, this wants to become an SDE instead of an Assert.
    
    - Steve
    
    On 5/9/19 9:19 AM, Christofer Dutz wrote:
    > Some more information:
    > If I put the external file in the same module it works using this code ..
    > And I am using the daffodil-built-in-catalog.xml to provide the location 
of the schema.
    > 
    > So if I set the logging as you suggested this output is produced:
    > 
    > 2019-05-09 15:14:51:480  org.apache.daffodil.dsom.Import 
Resolver[Computing resolvedLocation]
    > 2019-05-09 15:14:51:483  org.apache.daffodil.dsom.Import Resolver[
    > importElementNS='None'
    > resolvedNamespaceURI='None'
    > 
schemaLocationProperty='Some(file:/var/folders/4m/d8xs244900sd8ypzndkf4_3w0000gn/T/s7Schema3372165014658428820.dfdl.xsd)'
    > 
resolvedSchemaLocation='Some(org.apache.daffodil.api.URISchemaSource@bd8ade61)']
    > 2019-05-09 15:14:51:485  org.apache.daffodil.dsom.DFDLSchemaFile 
Resolver[Loading 
file:/var/folders/4m/d8xs244900sd8ypzndkf4_3w0000gn/T/s7Schema3372165014658428820.dfdl.xsd.]
    > 2019-05-09 15:14:51:493  org.apache.daffodil.xml.DFDLCatalogResolver 
Resolver[nsURI = http://www.w3.org/2001/XMLSchema, baseURI = 
file:/var/folders/4m/d8xs244900sd8ypzndkf4_3w0000gn/T/s7Schema3372165014658428820.dfdl.xsd,
 systemId = null]
    > 2019-05-09 15:14:51:493  org.apache.daffodil.xml.DFDLCatalogResolver 
Resolver[Unable to resolve.]
    > 2019-05-09 15:14:51:560  org.apache.daffodil.xml.DFDLCatalogResolver 
Resolver[nsURI = http://plc4x.apache.org/s7, baseURI = 
file:/var/folders/4m/d8xs244900sd8ypzndkf4_3w0000gn/T/s7Schema3372165014658428820.dfdl.xsd,
 systemId = null]
    > 2019-05-09 15:14:51:561  org.apache.daffodil.xml.DFDLCatalogResolver 
Resolver[Found via XML Catalog: 
file:/Users/christofer.dutz/Projects/Apache/PLC4X/protocols/s7/target/classes/org/apache/plc4x/protocols/s7/protocol.dfdl.xsd.]
    > 
    > org.apache.daffodil.exceptions.Abort: Invariant broken. Unexpected 
exception type org.apache.daffodil.exceptions.Abort: Invariant broken. found 
resource but couldn't open
    > org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
    > org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:175)
    > 
org.apache.daffodil.xml.DFDLCatalogResolver.resolveResource(DaffodilXMLLoader.scala:244)
    > org.apache.xerces.util.DOMEntityResolverWrapper.resolveEntity(Unknown 
Source)
    > org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
    > org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:175)
    > 
org.apache.daffodil.dsom.DFDLSchemaFile.$anonfun$iiXMLSchemaDocument$1(DFDLSchemaFile.scala:155)
    > org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    > 
    >   at org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
    >   at 
org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:175)
    >   at 
org.apache.daffodil.dsom.DFDLSchemaFile.$anonfun$iiXMLSchemaDocument$1(DFDLSchemaFile.scala:155)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at 
org.apache.daffodil.dsom.DFDLSchemaFile.iiXMLSchemaDocument$lzycompute(DFDLSchemaFile.scala:137)
    >   at 
org.apache.daffodil.dsom.DFDLSchemaFile.iiXMLSchemaDocument(DFDLSchemaFile.scala:137)
    >   at org.apache.daffodil.dsom.Import.$anonfun$mapPair$3(Import.scala:66)
    >   at scala.Option.getOrElse(Option.scala:121)
    >   at org.apache.daffodil.dsom.Import.$anonfun$mapPair$1(Import.scala:45)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at org.apache.daffodil.dsom.Import.mapPair(Import.scala:43)
    >   at 
org.apache.daffodil.dsom.IIBase.$anonfun$notSeenThisBefore$1(IIBase.scala:140)
    >   at 
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at org.apache.daffodil.dsom.IIBase.notSeenThisBefore(IIBase.scala:139)
    >   at 
org.apache.daffodil.dsom.IIBase.$anonfun$iiSchemaFileMaybe$1(IIBase.scala:257)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at org.apache.daffodil.dsom.IIBase.iiSchemaFileMaybe(IIBase.scala:256)
    >   at 
org.apache.daffodil.dsom.IIBase.$anonfun$seenAfter$1(IIBase.scala:165)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at org.apache.daffodil.dsom.IIBase.seenAfter(IIBase.scala:164)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.$anonfun$getImportsOrIncludes$1(SchemaDocIncludesAndImportsMixin.scala:147)
    >   at 
scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:157)
    >   at 
scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:157)
    >   at scala.collection.Iterator.foreach(Iterator.scala:944)
    >   at scala.collection.Iterator.foreach$(Iterator.scala:944)
    >   at scala.collection.AbstractIterator.foreach(Iterator.scala:1432)
    >   at scala.collection.IterableLike.foreach(IterableLike.scala:71)
    >   at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
    >   at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
    >   at scala.collection.TraversableOnce.foldLeft(TraversableOnce.scala:157)
    >   at scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:155)
    >   at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.getImportsOrIncludes(SchemaDocIncludesAndImportsMixin.scala:143)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.getImportsOrIncludes$(SchemaDocIncludesAndImportsMixin.scala:139)
    >   at 
org.apache.daffodil.dsom.XMLSchemaDocument.getImportsOrIncludes(SchemaDocument.scala:64)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.$anonfun$ismli_$1(SchemaDocIncludesAndImportsMixin.scala:158)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.ismli_(SchemaDocIncludesAndImportsMixin.scala:157)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.importStatementsMap(SchemaDocIncludesAndImportsMixin.scala:155)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.importStatementsMap$(SchemaDocIncludesAndImportsMixin.scala:155)
    >   at 
org.apache.daffodil.dsom.XMLSchemaDocument.importStatementsMap(SchemaDocument.scala:64)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.$anonfun$sali_$1(SchemaDocIncludesAndImportsMixin.scala:165)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.sali_(SchemaDocIncludesAndImportsMixin.scala:164)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.seenAfter(SchemaDocIncludesAndImportsMixin.scala:162)
    >   at 
org.apache.daffodil.dsom.SchemaDocIncludesAndImportsMixin.seenAfter$(SchemaDocIncludesAndImportsMixin.scala:162)
    >   at 
org.apache.daffodil.dsom.XMLSchemaDocument.seenAfter(SchemaDocument.scala:64)
    >   at 
org.apache.daffodil.dsom.SchemaSetIncludesAndImportsMixin.$anonfun$allSchemaFiles$1(SchemaSetIncludesAndImportsMixins.scala:63)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >   at 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.value$lzycompute(OOLAG.scala:583)
    >   at org.apache.daffodil.oolag.OOLAG$OOLAGValue.value(OOLAG.scala:581)
    >   at 
org.apache.daffodil.dsom.SchemaSetIncludesAndImportsMixin.allSchemaFiles(SchemaSetIncludesAndImportsMixins.scala:61)
    >   at 
org.apache.daffodil.dsom.SchemaSetIncludesAndImportsMixin.allSchemaFiles$(SchemaSetIncludesAndImportsMixins.scala:61)
    >   at org.apache.daffodil.dsom.SchemaSet.allSchemaFiles(SchemaSet.scala:61)
    >   at 
org.apache.daffodil.dsom.SchemaSet.$anonfun$isValid$2(SchemaSet.scala:128)
    >   at 
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
    >   at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60)
    >   at 
org.apache.daffodil.dsom.SchemaSet.isValid$lzycompute(SchemaSet.scala:127)
    >   at org.apache.daffodil.dsom.SchemaSet.isValid(SchemaSet.scala:126)
    >   at 
org.apache.daffodil.compiler.ProcessorFactory.$anonfun$isError$3(Compiler.scala:110)
    >   at 
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
    >   at org.apache.daffodil.oolag.OOLAG$.keepGoing(OOLAG.scala:60)
    >   at 
org.apache.daffodil.compiler.ProcessorFactory.$anonfun$isError$1(Compiler.scala:109)
    >   at 
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
    >   at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
    >   at 
org.apache.daffodil.ExecutionMode$.$anonfun$usingCompilerMode$1(ExecutionMode.scala:64)
    >   at 
org.apache.daffodil.compiler.ProcessorFactory.isError(Compiler.scala:109)
    >   at 
org.apache.daffodil.compiler.Compiler.compileSource(Compiler.scala:320)
    >   at 
org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.compileProcessor(DaffodilTDMLDFDLProcessor.scala:94)
    >   at 
org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.$anonfun$getProcessor$1(DaffodilTDMLDFDLProcessor.scala:112)
    >   at 
org.apache.daffodil.tdml.SchemaCache.doCompile$lzycompute$1(SchemaCache.scala:95)
    >   at 
org.apache.daffodil.tdml.SchemaCache.doCompile$1(SchemaCache.scala:95)
    >   at 
org.apache.daffodil.tdml.SchemaCache.$anonfun$compileAndCache$1(SchemaCache.scala:108)
    >   at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:82)
    >   at 
org.apache.daffodil.tdml.SchemaCache$Cache.getOrElseUpdate(SchemaCache.scala:51)
    >   at 
org.apache.daffodil.tdml.SchemaCache.compileAndCache(SchemaCache.scala:107)
    >   at 
org.apache.daffodil.tdml.processor.TDMLDFDLProcessorFactory.getProcessor(DaffodilTDMLDFDLProcessor.scala:112)
    >   at org.apache.daffodil.tdml.TestCase.run(TDMLRunner.scala:759)
    >   at 
org.apache.daffodil.tdml.DFDLTestSuite.runOneTest(TDMLRunner.scala:382)
    >   at 
org.apache.plc4x.protocols.AbstractProtocolTest.lambda$getTestsuiteTests$0(AbstractProtocolTest.java:59)
    >   at 
org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:141)
    >   at 
org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:41)
    >   at 
org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor.execute(DynamicTestTestDescriptor.java:24)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
    >   at 
org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$0(HierarchicalTestExecutor.java:115)
    >   at java.base/java.util.Optional.ifPresent(Optional.java:183)
    >   at 
org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.lambda$invokeTestMethod$1(TestFactoryTestDescriptor.java:92)
    >   at 
org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
    >   at 
org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.invokeTestMethod(TestFactoryTestDescriptor.java:79)
    >   at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
    >   at 
org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
    >   at 
org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    >   at 
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    >   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
    >   at 
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    >   at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    >   at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    >   at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    >   at 
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
    >   at 
org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    >   at 
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    >   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
    >   at 
java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    >   at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    >   at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    >   at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    >   at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    >   at 
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
    >   at 
org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
    >   at 
org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
    >   at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
    >   at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
    >   at 
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
    >   at 
com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
    >   at 
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    >   at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    >   at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    > 
    > Does that help any further? 
    > 
    > Chris
    > 
    > 
    > 
    > Am 09.05.19, 14:45 schrieb "Steve Lawrence" <[email protected]>:
    > 
    >     Yeah, this looks like a bug. Based on where that exception is thrown, 
it
    >     does look like it's able to find the file in the jar, but cannot open 
it
    >     for some reason. Unfortunately, our code to open it looks like this:
    >     
    >       try {
    >         uri.toURL.openStream() // This will work.
    >       } catch {
    >         case _: java.io.IOException => Assert.invariantFailed("found
    >     resource but couldn't open")
    >       }
    >     
    >     So the comment "This will work" is clearly wrong, and we end up 
masking
    >     the reason why it failed. That definitely needs to be fixed.
    >     
    >     If you bump the log level to LogLevel.Resolver, e.g.:
    >     
    >       Daffodil.setLoggingLevel(LogLevel.Resolver);
    >     
    >     Then it should output to the console a log starting with "Found on
    >     classpath" followed by the URI that import resolved to. That might 
help
    >     us figure out why it can't open a stream to the file if something 
looks off.
    >     
    >     - Steve
    >     
    >     
    >     
    >     On 5/9/19 8:04 AM, Christofer Dutz wrote:
    >     > Hi Steve,
    >     > 
    >     > well if that's the case, then I am having trouble doing this.
    >     > 
    >     > So In this case I have a base schema in "base.jar" and I add a 
dependency to this in "protocol" module.
    >     > If I try to use it I get an error message that daffodil has found 
something but it unable to open it.
    >     > 
    >     > [ERROR] getTestsuiteTests[40]  Time elapsed: 0.013 s  <<< ERROR!
    >     > org.apache.daffodil.exceptions.Abort: 
    >     > Invariant broken. Unexpected exception type 
org.apache.daffodil.exceptions.Abort: Invariant broken. found resource but 
couldn't open
    >     > org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
    >     > 
org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:175)
    >     > 
org.apache.daffodil.xml.DFDLCatalogResolver.resolveResource(DaffodilXMLLoader.scala:244)
    >     > 
org.apache.xerces.util.DOMEntityResolverWrapper.resolveEntity(Unknown Source)
    >     > org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
    >     > 
org.apache.daffodil.exceptions.Assert$.invariantFailed(Assert.scala:175)
    >     > 
org.apache.daffodil.dsom.DFDLSchemaFile.$anonfun$iiXMLSchemaDocument$1(DFDLSchemaFile.scala:155)
    >     > 
org.apache.daffodil.oolag.OOLAG$OOLAGValue.liftedTree1$1(OOLAG.scala:585)
    >     >     at 
org.apache.plc4x.protocols.AbstractProtocolTest.lambda$getTestsuiteTests$0(AbstractProtocolTest.java:54)
    >     > 
    >     > 
    >     > Chris
    >     > 
    >     > 
    >     > 
    >     > Am 09.05.19, 13:25 schrieb "Steve Lawrence" <[email protected]>:
    >     > 
    >     >     You should be able to import/include files in jars on the 
classpath
    >     >     using the full path inside the jar, i.e. what "jar -jt foo.jar" 
outputs.
    >     >     So if foo.jar was on your classpath and contained the following
    >     >     
    >     >       $ jar -jt foo.jar
    >     >       META-INF/MANIFEST.MF
    >     >       com/foo/dfdl/types.dfdl.xsd
    >     >     
    >     >     Your schema could reference the types.dfdl.xsd file with:
    >     >     
    >     >       <xs:include schemaLocation="com/foo/dfdl/types.dfdl.xsd" />
    >     >     
    >     >     You don't need to specify  which jar to import from or even 
that the
    >     >     file comes from a jar. Daffodil will just search for that path 
in all
    >     >     jars on the classpath.
    >     >     
    >     >     - Steve
    >     >     
    >     >     
    >     >     On 5/9/19 6:19 AM, Christofer Dutz wrote:
    >     >     > Hi all,
    >     >     > 
    >     >     > after solving my last problem, I am stuck with another one … 
as I mentioned in 
    >     >     > the other thread I have one DFDL schema, which defines all 
the simple types that 
    >     >     > will be used by any PLC4X schema.
    >     >     > 
    >     >     > In order to do so, this is located in a dedicated maven 
module and a dedicated jar.
    >     >     > 
    >     >     > Now I added a dependency to that jar an now want to reference 
this in my 
    >     >     > protocol jar.
    >     >     > 
    >     >     > No matter what I try, DFDL always complains about not being 
able to resolve this.
    >     >     > 
    >     >     > So how can I reference and/or import schemas contained in 
another jar that’s in 
    >     >     > my classpath?
    >     >     > 
    >     >     > Chris
    >     >     > 
    >     >     
    >     >     
    >     > 
    >     
    >     
    > 
    
    

Reply via email to