Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcdumoulin2012-03-30 22:38:21 +0000
committercdumoulin2012-03-30 22:38:21 +0000
commit5f081dba7069bf876e7ce3db59a498bbccd1cbee (patch)
treeaeaa1cae882909513aee37fe7bbe91ca1bffd1db
parent20b42a66226efa97096f1d42a11657d93634545a (diff)
downloadorg.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.
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/GeneratorPreference.java6
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTField.java30
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.jdtsynchronizer/src/org/eclipse/papyrus/java/generator/jdtsynchronizer/impl/SynchJDTMethod.java43
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/GeneratorPreferenceImpl.java5
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceConstants.java2
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferenceInitializer.java1
-rw-r--r--extraplugins/java/org.eclipse.papyrus.java.generator.ui/src/org/eclipse/papyrus/java/generator/ui/preference/PreferencePage.java6
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()));

Back to the top