Donnerstag, 29. November 2012

JMeter Einschließende URL-Muster

JMeter 2.8

Zeichnet man mit dem JMeter HTTP Proxy Server einen Geschäftsfall auf liefert der Browser, bzw. oft dessen Plugin ziemliches Störfeuer.

Um das loszuwerden sind einschließende URL Muster hilfreich, damit wird viel von dem unnötigen Zeugs einfach nicht aufgezeichnet. Diese Muster sind leider nicht ganz einfach zu erraten, darum hier ein Screen:




Freitag, 23. November 2012

Einbindung von Source eines Submoduls für GWT/Maven

GWT 2.5.0
gwt-maven-plugin 2.5.0
Maven 3.0.3

Bei einem mehrmoduligen GWT/Maven Projekts ist das Model oft in einem anderen Modul als im eigentlichen GWT Modul (web Modul). Für das gwt-maven-plugin werden auf der Homepage 2 Möglichkeiten vorgeschlagen das zu lösen:

http://mojo.codehaus.org/gwt-maven-plugin/user-guide/project.html

Erster Vorschlag das Goal gwt:resources hinzuzufügen funktioniert ausgezeichnet, allerdings möchte man das Problem manchmal nicht über zusätzliche Commandline Befehle lösen sondern über die pom Konfiguration. Hier wird vorgeschlagen das ganze über das Attribut compileSourcesArtifacts zu lösen, das funktioniert aus mir nicht ganz erklärlichen Gründen nicht.

Meine Lösung war dann genau wie vorgeschlagen das zusätzliche gwt.xml im Submodul anzulegen:


  
  


 und dieses im gwt.xml des GWT Moduls zu mit "inherits" einzubinden.


Damit funktioniert das Ganze leider noch nicht, im pom.xml des Moduls, wovon das Model eingebunden werden soll muß man noch folgendes eintragen:

 
  
   
    src/main/java
    
     **/*.java
    
   
   
    src/main/resources
    
     **/*.xml
    
   
  
 



Mittwoch, 7. November 2012

Java: Deep Copy von Listen

Eine "tiefe" Kopie einer beliebigen Liste in Java ist gar nicht so selbstverständlich wie man meinen möchte, die meisten Ansätze kopieren nämlich zwar die Liste, aber der Inhalt bleibt Referenz und somit wird die Kopie nicht "tief".

Eine kleine Methode löst mir das Problem:

public static List<ResultLine> deepCopyListResultLine(List<ResultLine> list) {
  List<ResultLine> resList = new ArrayList<ResultLine>();
  for (ResultLine line : list) {
   resList.add(new ResultLine(line));
  }
  return resList;
 }


Voraussetzung ist natürlich dass das Objekt über einen Konstruktor verfügt der diese Art der Duplizierung möglich macht:

public class ResultLine implements Serializable {

 public ResultLine() {

 }

 public ResultLine(ResultLine line) {
  this.plz = line.getPlz();
  this.app = line.getApp();
  this.eighty = line.getEighty();
  this.eightyAnz = line.getEightyAnz();
  this.firstTen = line.getFirstTen();
  this.firstTenAnz = line.getLastTenAnz();
  this.lastTen = line.getLastTen();
  this.lastTenAnz = line.getLastTenAnz();
  this.ldkz = line.getLdkz();
  this.makler = line.isMakler();
  this.mobile = line.isMobile();
  this.sessionAnz = line.getSessionAnz();
 }

Auf diese Weise ist ein "tiefes" Kopieren kein Problem mehr.