Skip to content

Commit 2276d09

Browse files
committed
Updated deps, isolated us from possible problems due to scala/scala-module-dependency-sample#14
1 parent a4d997f commit 2276d09

9 files changed

+63
-11
lines changed

build.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ lazy val root = (project in hereDir).
99
version := "1.0",
1010
scalaVersion := "2.11.8",
1111
libraryDependencies ++= Seq( "org.scala-lang.modules" %% "scala-xml" % "1.0.6",
12-
"org.apache.spark" %% "spark-core" % "2.0.1" % "provided",
12+
"org.apache.spark" %% "spark-core" % "2.1.0" % "provided",
1313
"org.json4s" %% "json4s-native" % "3.4.2",
14-
"org.apache.commons" % "commons-io" % "1.3.2"),
14+
"commons-io" % "commons-io" % "2.5"),
1515
mainClass in assembly := Some("com.geopipe.modeltools.BatchGeometrySingle"),
1616
assemblyOption in assembly := (assemblyOption in assembly).value.copy(prependShellScript = Some(defaultShellScript))
1717
)

src/main/scala/com/geopipe/modeltools/BatchedGeometryRewriter.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.geopipe.modeltools
22

33
import scala.xml._
4-
import scala.xml.transform._
54

65
import org.json4s._
76

src/main/scala/com/geopipe/modeltools/TransformerPipeline.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.geopipe.modeltools
22

33
import scala.xml._
4-
import scala.xml.transform._
4+
import scala.xml.transform.RewriteRule
55

66
import com.geopipe.profiling.TicToc.{tic,toc}
7+
import com.geopipe.xml.RuleApplicator
78

89
abstract class PipelineRuleStage[+T] extends RewriteRule {
910
def sideChannel:Map[Class[_],T]
@@ -19,7 +20,7 @@ class TransformerPipeline[+T](pipeline:Seq[Node => PipelineRuleStage[T]]) {
1920
toc(s"rewriterAlloc at stage $i")
2021

2122
tic
22-
val ret = (new RuleTransformer(stage))(collada)
23+
val ret = (new RuleApplicator(stage))(collada)
2324
toc(s"rewriter execution at stage $i")
2425
i += 1
2526
(ret, sideChannel ++ stage.sideChannel)

src/main/scala/com/geopipe/modeltools/UniqueEffectsRewriter.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.geopipe.modeltools
22

33
import scala.xml._
4-
import scala.xml.transform._
4+
import scala.xml.transform.RewriteRule
55

66
import com.geopipe.profiling.TicToc.{tic,toc}
7+
import com.geopipe.xml.RuleApplicator
78

89
class UniqueEffectsRewriter(collada:Node) extends PipelineRuleStage[Nothing] {
910

@@ -32,7 +33,7 @@ class UniqueEffectsRewriter(collada:Node) extends PipelineRuleStage[Nothing] {
3233
val effectId = nodeHere \@ "id"
3334
uniqueEffects.find{case (testId, testNode) =>
3435
val tryReplaceWith = Map(effectId -> testId)
35-
val replacer = new RuleTransformer(new ReplaceEffectIdRewriter(tryReplaceWith))
36+
val replacer = new RuleApplicator(new ReplaceEffectIdRewriter(tryReplaceWith))
3637
val replacement = replacer(nodeHere)
3738
Utility.trim(testNode) xml_== Utility.trim(replacement)
3839
}.fold( (uniqueEffects + ((effectId, nodeHere)), replaceWith) ){

src/main/scala/com/geopipe/modeltools/UniqueImagesRewriter.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.geopipe.modeltools
22

33
import scala.xml._
4-
import scala.xml.transform._
54

65
import com.geopipe.profiling.TicToc.{tic,toc}
76

src/main/scala/com/geopipe/modeltools/UpdateHelpers.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.geopipe.modeltools
22

33
import scala.xml._
4-
import scala.xml.transform._
4+
import scala.xml.transform.RewriteRule
5+
6+
import com.geopipe.xml.RuleApplicator
57

68
trait ElemMatchAndUpdate {
79
private[this] val self = this // Apparently can't use this as an extractor directly???
@@ -139,7 +141,7 @@ class EffectNeedsUpdate(replacements:Map[String,String]) extends ElemMatchAndUpd
139141

140142
val updatedTextures = textureNeedsUpdate.collectUpdates(textures)
141143

142-
val techniqueTransformer = new RuleTransformer(new TechniqueRewriter(updatedTextures))
144+
val techniqueTransformer = new RuleApplicator(new TechniqueRewriter(updatedTextures))
143145
val updatedTechniques = (effectProfile \ "technique").map(t => (t -> techniqueTransformer(t))).toMap
144146

145147
val paramUpdater = new ParamNeedsUpdate(updatedSurfaces, updatedSamplers, replacements)

src/main/scala/com/geopipe/modeltools/Utilities.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.geopipe.modeltools
22

33

44
import scala.xml._
5-
import scala.xml.transform._
65
import scala.language.implicitConversions
76

87

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.geopipe.xml
2+
3+
import scala.xml.Node
4+
import scala.xml.transform.RewriteRule
5+
6+
class RuleApplicator(rule:RewriteRule) extends SaneTransformer {
7+
override def transform(n: Node): Seq[Node] = rule.transform(super.transform(n))
8+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.geopipe.xml
2+
3+
import scala.xml.{Node,Group,Elem,NodeBuffer}
4+
import scala.xml.transform.RewriteRule
5+
6+
class SaneTransformer extends Function1[Node, Node] {
7+
protected def unchanged(n: Node, ns: Seq[Node]) = ns.length == 1 && (ns.head == n)
8+
9+
/**
10+
* Call transform(Node) for each node in ns, append results
11+
* to NodeBuffer.
12+
*/
13+
def transform(it: Iterator[Node], nb: NodeBuffer): Seq[Node] = it.foldLeft(nb)(_ ++= transform(_)).toSeq
14+
15+
/**
16+
* Call transform(Node) to each node in ns, yield ns if nothing changes,
17+
* otherwise a new sequence of concatenated results.
18+
*/
19+
def transform(ns: Seq[Node]): Seq[Node] = {
20+
val changed = ns flatMap transform
21+
if (changed.length != ns.length || (changed, ns).zipped.exists(_ != _)) {
22+
changed
23+
} else { ns }
24+
}
25+
26+
def transform(n: Node): Seq[Node] = {
27+
if (n.doTransform) n match {
28+
case Group(xs) => Group(transform(xs)) // un-group the hack Group tag
29+
case _ =>
30+
val ch = n.child
31+
val nch = transform(ch)
32+
if (ch eq nch) n
33+
else Elem(n.prefix, n.label, n.attributes, n.scope, nch.isEmpty, nch: _*)
34+
} else { n }
35+
}
36+
37+
def apply(n: Node): Node = {
38+
val seq = transform(n)
39+
if (seq.length > 1) {
40+
throw new UnsupportedOperationException("transform must return single node for root")
41+
} else { seq.head }
42+
}
43+
}

0 commit comments

Comments
 (0)