Hi,
I'm struggling a bit here with writing a Plugin for xjc. My goal is to
prefix all generated package names (created from the targetNamespace)
with my own package, so that I end up with a structure like
my.company.some.namespace
I started with the Camelcase Plugin as this one changes the class name
and changed the NameConverter.Standard subclass to return some arbitrary
string for toPackageName(). However it seems like my plugin isn't used
at all.
I call xjc via:
C:\_users\pakulat\jaxb_md_generation>java
-Dcom.sun.tools.xjc.Options.findServices=true -jar
..\jaxb-ri\lib\jaxb-xjc.jar -classpath plugins\addpackageprefix.jar
-verbose -d java-src schema\iso19119.xsd -addpackageprefix
My Plugin class and NameConverter.Standard subclass are shown below.
jaxb tells me that he tries to create an instance of the class but
nothing else happens. I added a file-write to the NameConverter but the
file is not created...
Andreas
/* Plugin class */
import org.xml.sax.ErrorHandler;
import com.sun.tools.xjc.BadCommandLineException;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.Plugin;
import com.sun.tools.xjc.outline.Outline;
public class AddPackagePrefixPlugin extends Plugin
{
protected final String OPTION_NAME = "addpackageprefix";
public String getOptionName() {
return OPTION_NAME;
}
public String getUsage() {
return " -" + OPTION_NAME +
" : prefixes every package with de.zgdv.geo.metadata";
}
public void onActivated(Options opts) throws BadCommandLineException {
opts.setNameConverter( new AddPackagePrefixNameConverter(), this );
}
public boolean run( Outline model, Options opts, ErrorHandler
errorHandler ) {
return true;
}
}
/* NameConverter.Standard subclass */
import java.io.FileWriter;
import java.io.IOException;
import com.sun.tools.xjc.ConsoleErrorReporter;
import com.sun.xml.bind.api.impl.NameConverter;
public class AddPackagePrefixNameConverter extends NameConverter.Standard
{
public String toPackageName(String s) {
try{
FileWriter fw = new FileWriter("C:\\\\temp\\\\testfile");
fw.write(s);
fw.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
String str = super.toPackageName(s);
return "de.zgdv.geo.metadata."+str;
}
}