diff options
author | cdumoulin | 2012-03-30 22:38:21 +0000 |
---|---|---|
committer | cdumoulin | 2012-03-30 22:38:21 +0000 |
commit | 5f081dba7069bf876e7ce3db59a498bbccd1cbee (patch) | |
tree | aeaa1cae882909513aee37fe7bbe91ca1bffd1db | |
parent | 20b42a66226efa97096f1d42a11657d93634545a (diff) | |
download | org.eclipse.papyrus-5f081dba7069bf876e7ce3db59a498bbccd1cbee.tar.gz org.eclipse.papyrus-5f081dba7069bf876e7ce3db59a498bbccd1cbee.tar.xz org.eclipse.papyrus-5f081dba7069bf876e7ce3db59a498bbccd1cbee.zip |
ASSIGNED - bug 375759: [Java Code Generator] Improve generator
https://bugs.eclipse.org/bugs/show_bug.cgi?id=375759
- add flag stopOnFirstError. It can be set in preferences. Setting it to false allow to generate all the classes, regardless of errors.
7 files changed, 81 insertions, 12 deletions
diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/GeneratorPreference.java b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/GeneratorPreference.java index a08d4b2858e..6ef3958c37a 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/GeneratorPreference.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/GeneratorPreference.java @@ -60,5 +60,11 @@ public interface GeneratorPreference { * @return generic class to use for the association * (multi-value)
*/
public String genericClassForMultiValue();
+
+ /**
+ * Return true if we want to stop on first error, false if we want to continue anyway.
+ * @return
+ */
+ public boolean stopOnFirstError();
}
diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTField.java b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTField.java index 0cba67a423a..0d3b883d56f 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTField.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTField.java @@ -113,20 +113,40 @@ public class SynchJDTField extends SynchJDTCommentable { } catch (JavaModelException e) { - e.printStackTrace(); +// e.printStackTrace(); String msg = "Can't generate field (class='" + field.getOwner().getQualifiedName() + "', msg= " + e.getMessage() + ", buffer=" + buffer.toString() + ")"; - System.err.println(msg); - throw new JDTVisitorException( msg, e.getCause()); +// System.err.println(msg); +// throw new JDTVisitorException( msg, e.getCause()); + propagateException(msg, e); } catch (Exception e) { - e.printStackTrace(); - throw new JDTVisitorException(e.getMessage(), e.getCause()); +// e.printStackTrace(); +// throw new JDTVisitorException(e.getMessage(), e.getCause()); + propagateException(e.getMessage(), e); } } + /** + * Propagate a {@link JDTVisitorException} if the flag is not set + * @param msg + * @param e + * @throws JDTVisitorException + */ + private void propagateException(String msg, Throwable e) throws JDTVisitorException { + + if(preference.stopOnFirstError()) { + throw new JDTVisitorException(msg, e.getCause()); + } + else { + // Show error + System.err.println(msg); + e.printStackTrace(); + } + } + @Override protected BodyDeclaration searchElementToInsert(CompilationUnit cu, IJavaElement field) { diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTMethod.java b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTMethod.java index 76178bf8bef..75c0b530927 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTMethod.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTMethod.java @@ -188,11 +188,13 @@ public class SynchJDTMethod extends SynchJDTCommentable { // add javadoc to method
createJavaDocFor(imethod, imethod.getCompilationUnit(), method.getComment(), "");
} catch (JavaModelException e) {
- e.printStackTrace();
- throw new JDTVisitorException(e.getMessage(), e.getCause());
+// e.printStackTrace();
+// throw new JDTVisitorException(e.getMessage(), e.getCause());
+ propagateException(e.getMessage(), e);
} catch (Exception e) {
- e.printStackTrace();
- throw new JDTVisitorException(e.getMessage(), e.getCause());
+// e.printStackTrace();
+// throw new JDTVisitorException(e.getMessage(), e.getCause());
+ propagateException(e.getMessage(), e);
}
@@ -205,9 +207,16 @@ public class SynchJDTMethod extends SynchJDTCommentable { @Override
- // search the method to insert Javadoc
- protected BodyDeclaration searchElementToInsert(CompilationUnit cu,
- IJavaElement method) {
+ /**
+ * search the method to insert Javadoc
+ *
+ * @see org.eclipse.papyrus.java.generator.jdtsynchronizer.impl.SynchJDTCommentable#searchElementToInsert(org.eclipse.jdt.core.dom.CompilationUnit, org.eclipse.jdt.core.IJavaElement)
+ *
+ * @param cu
+ * @param method
+ * @return
+ */
+ protected BodyDeclaration searchElementToInsert(CompilationUnit cu, IJavaElement method) {
// search Itype parent
if(method.getParent() instanceof IType) {
@@ -280,4 +289,24 @@ public class SynchJDTMethod extends SynchJDTCommentable { return lst;
}
+
+
+ /**
+ * Propagate a {@link JDTVisitorException} if the flag is not set
+ * @param msg
+ * @param e
+ * @throws JDTVisitorException
+ */
+ private void propagateException(String msg, Throwable e) throws JDTVisitorException {
+
+ if(preference.stopOnFirstError()) {
+ throw new JDTVisitorException(msg, e.getCause());
+ }
+ else {
+ // Show error
+ System.err.println(msg);
+ e.printStackTrace();
+ }
+ }
+
}
diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/GeneratorPreferenceImpl.java b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/GeneratorPreferenceImpl.java index 2efd34cc20e..b1ca5e6aec5 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/GeneratorPreferenceImpl.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/GeneratorPreferenceImpl.java @@ -79,4 +79,9 @@ public class GeneratorPreferenceImpl implements GeneratorPreference { return store.getString(PreferenceConstants.P_GENERIC_CLASS_FOR_MULTIVALUE);
}
+ @Override
+ public boolean stopOnFirstError() {
+ return store.getBoolean(PreferenceConstants.P_STOP_ON_FIRST_ERROR);
+ }
+
}
diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceConstants.java b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceConstants.java index a8b04c64e53..21c3e780eef 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceConstants.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceConstants.java @@ -32,4 +32,6 @@ public class PreferenceConstants { public static final String P_FILTER_OF_PACKAGE_NOT_TO_GENERATE = "filterOfPackageNotToGenerate"; public static final String P_GENERIC_CLASS_FOR_MULTIVALUE = "genericClassForMultiValue"; + + public static final String P_STOP_ON_FIRST_ERROR = "stopOnFirstError"; } diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceInitializer.java b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceInitializer.java index c2087a5d9aa..1bf8a6ff96e 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceInitializer.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceInitializer.java @@ -39,6 +39,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer { store.setDefault(PreferenceConstants.P_GENERATE_SETTERS, true); store.setDefault(PreferenceConstants.P_FILTER_OF_PACKAGE_NOT_TO_GENERATE, "java.*;javax.*"); store.setDefault(PreferenceConstants.P_GENERIC_CLASS_FOR_MULTIVALUE, "java.util.List"); + store.setDefault(PreferenceConstants.P_STOP_ON_FIRST_ERROR, true); } } diff --git a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferencePage.java b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferencePage.java index a75139c8852..27590e494b5 100644 --- a/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferencePage.java +++ b/extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferencePage.java @@ -52,6 +52,12 @@ public class PreferencePage // implements methods of inherits interfaces and abstract class addField(new BooleanFieldEditor( + PreferenceConstants.P_STOP_ON_FIRST_ERROR, + "Stop on first error", + getFieldEditorParent())); + + // implements methods of inherits interfaces and abstract class + addField(new BooleanFieldEditor( PreferenceConstants.P_IMPLEMENT_METHODS_OF_INTERFACES_AND_ABSTRACT_CLASS, "Implement methods of inherits interfaces and abstract class", getFieldEditorParent())); |