|
|
|
Re: JMERGE without Eclipse [message #428590 is a reply to message #428375] |
Tue, 24 March 2009 20:58 |
Stefan Ocke Messages: 3 Registered: July 2009 |
Junior Member |
|
|
I had some success with code like this. Perhaps its useful for others.
Please note especially setting of JavaCore options:
public void merge(File src, File target) {
JControlModel model = new JControlModel();
ASTFacadeHelper astFacadeHelper = new ASTFacadeHelper() {
Map options;
@SuppressWarnings("unchecked")
@Override
public Map getJavaCoreOptions() {
if (options == null) {
options = new HashMap();
options.put(JavaCore.COMPILER_COMPLIANCE,
JavaCore.VERSION_1_6);
options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_6);
options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM,
JavaCore.VERSION_1_6);
options.put(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER,
JavaCore.ERROR);
options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER,
JavaCore.ERROR);
options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE,
JavaCore.ENABLED);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
Map cfo = DefaultCodeFormatterConstants
.getEclipseDefaultSettings();
options.putAll(cfo);
options
.put(
DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_AFTER_PA CKAGE,
"1");
}
return options;
}
};
String mergexml = this.getClass().getClassLoader().getResource(
"merge.xml").getFile();
model.initialize(astFacadeHelper, mergexml);
JMerger jMerger = new JMerger(model);
String sourceCnt = "package jmerge; \npublic class Foobar{
java.lang.String s; int x; \n\n/**\n * @generated\n */\npublic void
doIt(){System.out.println(\"Hello\");}}";
jMerger.setSourceCompilationUnit(jMerger
.createCompilationUnitForContents(sourceCnt));
String targetCnt = "package jmerge; \npublic class Foobar{ public double
y; private int x;public void doIt(){} }";
jMerger.setTargetCompilationUnit(jMerger
.createCompilationUnitForContents(targetCnt));
jMerger.merge();
String result = jMerger.getTargetCompilationUnit().getContents();
System.out.println(result);
}
|
|
|
Re: JMERGE without Eclipse [message #428592 is a reply to message #428590] |
Tue, 24 March 2009 21:40 |
Ed Merks Messages: 33136 Registered: July 2009 |
Senior Member |
|
|
Stefan,
Thanks for sharing! :-)
Stefan Ocke wrote:
> I had some success with code like this. Perhaps its useful for
> others. Please note especially setting of JavaCore options:
>
> public void merge(File src, File target) {
> JControlModel model = new JControlModel();
> ASTFacadeHelper astFacadeHelper = new ASTFacadeHelper() {
> Map options;
>
> @SuppressWarnings("unchecked")
> @Override
> public Map getJavaCoreOptions() {
> if (options == null) {
> options = new HashMap();
>
> options.put(JavaCore.COMPILER_COMPLIANCE,
> JavaCore.VERSION_1_6);
> options.put(JavaCore.COMPILER_SOURCE,
> JavaCore.VERSION_1_6);
>
> options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM,
> JavaCore.VERSION_1_6);
> options.put(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER,
> JavaCore.ERROR);
> options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER,
> JavaCore.ERROR);
>
> options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE,
> JavaCore.ENABLED);
>
> //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT,
> JavaCore.ENABLED);
>
>
> Map cfo = DefaultCodeFormatterConstants
> .getEclipseDefaultSettings();
>
> options.putAll(cfo);
>
> options
> .put(
>
> DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_AFTER_PA CKAGE,
> "1");
>
> }
> return options;
> }
>
> };
>
> String mergexml = this.getClass().getClassLoader().getResource(
> "merge.xml").getFile();
>
> model.initialize(astFacadeHelper, mergexml);
>
> JMerger jMerger = new JMerger(model);
>
> String sourceCnt = "package jmerge; \npublic class Foobar{
> java.lang.String s; int x; \n\n/**\n * @generated\n */\npublic void
> doIt(){System.out.println(\"Hello\");}}";
>
> jMerger.setSourceCompilationUnit(jMerger
> .createCompilationUnitForContents(sourceCnt));
>
> String targetCnt = "package jmerge; \npublic class Foobar{
> public double y; private int x;public void doIt(){} }";
>
> jMerger.setTargetCompilationUnit(jMerger
> .createCompilationUnitForContents(targetCnt));
>
>
> jMerger.merge();
>
>
> String result = jMerger.getTargetCompilationUnit().getContents();
>
> System.out.println(result);
>
> }
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Powered by
FUDForum. Page generated in 0.01744 seconds