1 28 29 package com.idaremedia.antx.feedback; 30 31 import org.apache.tools.ant.BuildException; 32 import org.apache.tools.ant.Project; 33 import org.apache.tools.ant.types.Reference; 34 35 import com.idaremedia.apis.DiagnosticsEmitter; 36 import com.idaremedia.apis.DiagnosticsEmitterFactory; 37 38 import com.idaremedia.antx.AntX; 39 import com.idaremedia.antx.FixtureOverlay; 40 import com.idaremedia.antx.NoiseLevel; 41 import com.idaremedia.antx.apis.BuildError; 42 import com.idaremedia.antx.apis.ProblemHandler; 43 import com.idaremedia.antx.helpers.Setting; 44 import com.idaremedia.antx.starters.TaskSet; 45 46 116 117 public class EmitConfigureTask extends TaskSet 118 implements FixtureOverlay, EmitConfiguration, EmitConfigurable 119 { 120 123 public EmitConfigureTask() 124 { 125 super(AntX.feedback+"EmitConfigureTask:"); 126 m_ecImpl.setController(this); 127 } 128 129 130 133 protected EmitConfigureTask(String iam, boolean delayConfigure) 134 { 135 super(iam,delayConfigure); 136 m_ecImpl.setController(this); 137 } 138 139 140 144 public void setProject(Project P) 145 { 146 super.setProject(P); 147 m_ecImpl.setProject(P); 148 } 149 150 151 155 160 public void setProperties(String nameList) 161 { 162 m_ecImpl.setProperties(nameList); 163 } 164 165 166 171 public String getDefaultProperties() 172 { 173 return m_ecImpl.getOwnProperties(); 174 } 175 176 177 185 public boolean getPropertiesNameList(StringBuffer list) 186 { 187 return m_ecImpl.getPropertiesNameList(list); 188 } 189 190 191 196 public void setNoiseLevel(NoiseLevel nl) 197 { 198 m_ecImpl.setNoiseLevel(nl); 199 } 200 201 202 207 public NoiseLevel getDefaultNoiseLevel() 208 { 209 return m_ecImpl.getOwnNoiseLevel(); 210 } 211 212 213 217 public NoiseLevel getNoiseLevel() 218 { 219 NoiseLevel nl= getDefaultNoiseLevel(); 220 if (nl==null) { 221 EmitConfiguration defaults= getDefaults(); 222 if (defaults!=DefaultEmitConfiguration.INSTANCE) { 225 nl= defaults.getNoiseLevel(); 226 } 227 } 228 return nl; 229 } 230 231 232 237 public void setEcho(String wantIt) 238 { 239 m_ecImpl.setEcho(wantIt); 240 } 241 242 243 247 public Setting getDefaultEcho() 248 { 249 return m_ecImpl.getOwnEcho(); 250 } 251 252 253 259 public boolean shouldEcho() 260 { 261 return m_ecImpl.shouldEcho(); 262 } 263 264 268 273 public void setGroupingSeparator(String separator) 274 { 275 m_ecImpl.setGroupingSeparator(separator); 276 } 277 278 279 284 public String getGroupingPathSeparator() 285 { 286 return m_ecImpl.getGroupingPathSeparator(); 287 } 288 289 290 297 public void setFrom(String grpId) 298 { 299 m_ecImpl.setFrom(grpId); 300 } 301 302 303 308 public String getDefaultFrom() 309 { 310 return m_ecImpl.getOwnFrom(); 311 } 312 313 314 318 public String getFrom() 319 { 320 return m_ecImpl.getFrom(); 321 } 322 323 324 330 public void setWrt(String wrt) 331 { 332 require_(wrt!=null,"setDfltWrt- nonzro wrt"); 333 m_ecImpl.setWrt(wrt); 334 } 335 336 337 342 public String getDefaultWrt() 343 { 344 return m_ecImpl.getOwnWrt(); 345 } 346 347 351 358 public void setEmitterFactory(Class emitterFactoryClass) 359 { 360 m_ecImpl.setEmitterFactory(emitterFactoryClass); 361 } 362 363 364 369 public DiagnosticsEmitterFactory getDefaultEmitterFactory() 370 { 371 return m_ecImpl.getOwnEmitterFactory(); 372 } 373 374 375 381 public DiagnosticsEmitter getEmitter() 382 { 383 ensure_(m_emitr!=null,"getEmtr- been exec'd at least once"); 384 return m_emitr; 385 } 386 387 388 396 public DiagnosticsEmitter getCustomEmitter(String grpId) 397 { 398 return m_ecImpl.getCustomEmitter(grpId); 399 } 400 401 402 408 private void setupDefaultEmitter() 409 { 410 EmitConfiguration ec = ignoreAllInherited() ? null : m_inheritedInstance; 411 m_ecImpl.setDefaultConfiguration(ec); 412 m_emitr = m_ecImpl.getEmitter(); 413 } 414 415 416 420 426 public void setTimestampFormat(String format) 427 { 428 m_ecImpl.setTimestampFormat(format); 429 } 430 431 432 436 public final String getDefaultTimestampFormat() 437 { 438 return m_ecImpl.getOwnTimestampFormat(); 439 } 440 441 442 449 public String stampify(long ms) 450 { 451 return m_ecImpl.stampify(ms); 452 } 453 454 455 459 public void setTimestamp(String wantIt) 460 { 461 m_ecImpl.setTimestamp(wantIt); 462 } 463 464 465 469 public final Setting getDefaultIncludeTimestamp() 470 { 471 return m_ecImpl.getOwnTimestamp(); 472 } 473 474 475 482 public boolean wantTimestamp() 483 { 484 return m_ecImpl.wantTimestamp(); 485 } 486 487 488 492 498 protected final boolean ignoreAllInherited() 499 { 500 return m_noInherited; 501 } 502 503 504 511 public void setInheritance(boolean passthru) 512 { 513 m_noInherited = !passthru; 514 } 515 516 517 523 public void setWith(Reference ecImplRef) 524 { 525 require_(ecImplRef!=null,"setRef- nonzro ref"); 526 m_ecImpl.setRefid(ecImplRef); 527 m_ecImplReference = ecImplRef; 528 } 529 530 531 536 public Reference getWith() 537 { 538 return m_ecImplReference; 539 } 540 541 542 550 public void setWithDefaults(Reference dfltRef) 551 { 552 m_ecImpl.setDefaults(dfltRef); 553 } 554 555 556 560 public final Reference getWithDefaults() 561 { 562 return m_ecImpl.getOwnDefaults(); 563 } 564 565 566 571 protected final void verifyReferences() 572 { 573 if (getWith()!=null) { 574 EmitConfiguration definition = (EmitConfiguration)getReferencedObject 575 (getProject(), getWith().getRefId(), EmitConfiguration.class); 576 if (definition==this) { String ermsg = uistrs().get("emit.circular.defaults"); 578 log(ermsg, Project.MSG_ERR); 579 throw new BuildException(ermsg,getLocation()); 580 } 581 } 582 if (getWithDefaults()!=null) { 583 EmitConfiguration defaults = (EmitConfiguration)getReferencedObject 584 (getProject(), getWithDefaults().getRefId(), EmitConfiguration.class); 585 if (defaults==this) { String ermsg = uistrs().get("emit.circular.defaults"); 587 log(ermsg, Project.MSG_ERR); 588 throw new BuildException(ermsg,getLocation()); 589 } 590 } 591 } 592 593 594 602 public EmitConfiguration getDefaults() 603 { 604 EmitConfiguration ec = ignoreAllInherited() ? null : m_inheritedInstance; 605 if (ec==null) { 606 ec= m_ecImpl.getDefaults(); 607 } 608 return ec; 609 } 610 611 612 613 621 protected void performNestedTasks() 622 throws BuildException 623 { 624 synchronized(m_runlock) { 625 boolean installed=false; 626 try { 627 m_inheritedInstance= EmitContext.getConfiguration(); 631 setupDefaultEmitter(); 632 EmitConfiguration cur= EmitContext.installConfiguration(this,m_problemHandler); 633 installed=true; 634 verify_(cur==m_inheritedInstance,"perform- same defaults"); 635 super.performNestedTasks(); 636 637 } finally { 638 if (installed) { 639 m_inheritedInstance = null; 640 EmitConfiguration ec = EmitContext.getConfiguration(); 641 if (ec!=this) { 642 String ME= uistrs().dget("task.emit.whoami","EmitConfiguration"); 643 String ermsg = uistrs().get("context.stack.corrupted",ME); 644 m_problemHandler.problem(ermsg, Project.MSG_ERR); 645 throw new BuildError(ermsg,getLocation()); 646 } 647 EmitContext.unwindConfiguration(m_problemHandler); 648 } } 650 } 651 } 652 653 654 659 protected synchronized void verifyCanExecute_(String calr) 660 { 661 super.verifyCanExecute_(calr); 662 663 verifyReferences(); 664 } 665 666 667 668 private EmitConfigurationType m_ecImpl= new EmitConfigurationType(); 669 private Object m_runlock= new int[0]; 670 private boolean m_noInherited; private EmitConfiguration m_inheritedInstance; private DiagnosticsEmitter m_emitr; private Reference m_ecImplReference; 675 676 private ProblemHandler m_problemHandler = new ProblemHandler() 677 { public void problem(Object nugget, int weight) 679 { 680 EmitConfigureTask.this.log(String.valueOf(nugget), weight); 681 Emit.broadcast(EmitConfigureTask.this.getDefaults().getEmitter(), 682 nugget,null,NoiseLevel.fromNativeIndex(weight)); 683 } 684 }; 685 } 686 687 688 | Popular Tags |