This is an automated email from the git hooks/post-receive script. New commit to annotated tag v2.0.0-beta-1 in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 8f386d69ffeeb5c6b247c4134cc4376c8f9922e0 Author: Tony Chemit <chemit@codelutin.com> Date: Wed Oct 7 14:22:07 2009 +0000 refactor jaxx 2.x --- .../src/main/java/jaxx/DefaultInitializer.java | 52 -- .../src/main/java/jaxx/ScriptException.java | 45 -- .../src/main/java/jaxx/SwingInitializer.java | 107 ---- .../compiler/BoxedCompiledObjectDecorator.java | 27 - .../main/java/jaxx/{ => compiler}/ClassMap.java | 18 +- .../main/java/jaxx/compiler/CompiledObject.java | 26 +- .../jaxx/compiler/CompiledObjectDecorator.java | 76 --- .../jaxx/{ => compiler}/CompilerException.java | 10 +- .../main/java/jaxx/compiler/CompilerOptions.java | 406 -------------- .../src/main/java/jaxx/compiler/DataBinding.java | 13 +- .../src/main/java/jaxx/compiler/DataSource.java | 73 ++- .../compiler/DefaultCompiledObjectDecorator.java | 128 ----- .../compiler/DefaultCompilerConfiguration.java | 247 +++++++++ .../src/main/java/jaxx/compiler/EventHandler.java | 15 +- .../compiler/HelpRootCompiledObjectDecorator.java | 93 ---- .../src/main/java/jaxx/compiler/I18nHelper.java | 9 +- .../src/main/java/jaxx/compiler/JAXXCompiler.java | 469 ++++++++-------- .../java/jaxx/compiler/JAXXCompilerLaunchor.java | 68 +-- .../java/jaxx/compiler/JAXXObjectGenerator.java | 598 --------------------- .../src/main/java/jaxx/compiler/JavaArgument.java | 9 +- .../src/main/java/jaxx/compiler/JavaField.java | 11 +- .../src/main/java/jaxx/compiler/JavaFile.java | 33 +- .../src/main/java/jaxx/compiler/JavaMethod.java | 122 ++--- .../main/java/jaxx/compiler/ScriptInitializer.java | 7 +- .../src/main/java/jaxx/compiler/ScriptManager.java | 67 +-- .../jaxx/{css => compiler}/StylesheetHelper.java | 286 +++++----- .../src/main/java/jaxx/compiler/SwingCompiler.java | 73 --- .../main/java/jaxx/compiler/SwingGenerator.java | 26 - .../src/main/java/jaxx/compiler/SymbolTable.java | 14 +- .../UnsupportedAttributeException.java | 8 +- .../{ => compiler}/UnsupportedTagException.java | 2 +- .../java/jaxx/compiler/ValidatorGenerator.java | 89 --- .../beans}/BeanInfoUtil.java | 2 +- .../beans}/JAXXBeanDescriptor.java | 7 +- .../beans}/JAXXBeanInfo.java | 13 +- .../beans}/JAXXEventSetDescriptor.java | 15 +- .../beans}/JAXXFeatureDescriptor.java | 23 +- .../beans}/JAXXIntrospector.java | 65 +-- .../beans}/JAXXPropertyDescriptor.java | 37 +- .../jaxx/compiler/{ => generators}/Generator.java | 7 +- .../java/jaxx/{ => compiler/parser}/css/CSS.jj | 0 .../java/jaxx/{ => compiler/parser}/css/CSS.jjt | 0 .../jaxx/{ => compiler/parser}/css/CSSParser.java | 2 +- .../parser}/css/CSSParserConstants.java | 2 +- .../parser}/css/CSSParserTokenManager.java | 2 +- .../parser}/css/CSSParserTreeConstants.java | 2 +- .../parser}/css/JJTCSSParserState.java | 2 +- .../java/jaxx/{ => compiler/parser}/css/Node.java | 2 +- .../{ => compiler/parser}/css/ParseException.java | 4 +- .../parser}/css/SimpleCharStream.java | 2 +- .../jaxx/{ => compiler/parser}/css/SimpleNode.java | 2 +- .../java/jaxx/{ => compiler/parser}/css/Token.java | 2 +- .../{ => compiler/parser}/css/TokenMgrError.java | 2 +- .../parser/java}/JJTJavaParserState.java | 2 +- .../{parser => compiler/parser/java}/Java1.5.jj | 0 .../{parser => compiler/parser/java}/Java1.5.jjt | 0 .../parser/java}/JavaCharStream.java | 2 +- .../parser/java}/JavaParser.java | 2 +- .../parser/java}/JavaParserConstants.java | 2 +- .../parser/java}/JavaParserTokenManager.java | 2 +- .../parser/java}/JavaParserTreeConstants.java | 2 +- .../{parser => compiler/parser/java}/Node.java | 2 +- .../parser/java}/ParseException.java | 4 +- .../parser/java}/SimpleNode.java | 4 +- .../{parser => compiler/parser/java}/Token.java | 2 +- .../parser/java}/TokenMgrError.java | 2 +- .../{ => compiler}/reflect/ClassDescriptor.java | 48 +- .../reflect/ClassDescriptorLoader.java | 155 +++--- .../{ => compiler}/reflect/FieldDescriptor.java | 10 +- .../{ => compiler}/reflect/JavaFileParser.java | 51 +- .../{ => compiler}/reflect/MemberDescriptor.java | 9 +- .../{ => compiler}/reflect/MethodDescriptor.java | 16 +- .../java/jaxx/compiler/spi/DefaultInitializer.java | 271 ++++++++++ .../java/jaxx/{ => compiler}/spi/Initializer.java | 16 +- .../tags/DefaultComponentHandler.java | 16 +- .../{ => compiler}/tags/DefaultObjectHandler.java | 37 +- .../jaxx/{ => compiler}/tags/ScriptHandler.java | 17 +- .../jaxx/{ => compiler}/tags/StyleHandler.java | 50 +- .../java/jaxx/{ => compiler}/tags/TagHandler.java | 8 +- .../java/jaxx/{ => compiler}/tags/TagManager.java | 74 +-- .../tags/swing/ApplicationHandler.java | 14 +- .../{ => compiler}/tags/swing/CellHandler.java | 22 +- .../tags/swing/CompiledItemContainer.java | 13 +- .../{ => compiler}/tags/swing/ItemHandler.java | 46 +- .../tags/swing/JAXXComboBoxHandler.java | 14 +- .../{ => compiler}/tags/swing/JAXXListHandler.java | 15 +- .../jaxx/compiler/tags/swing/JAXXTabHandler.java | 11 + .../{ => compiler}/tags/swing/JAXXTreeHandler.java | 13 +- .../tags/swing/JCheckBoxHandler.java | 11 +- .../tags/swing/JComboBoxHandler.java | 16 +- .../tags/swing/JInternalFrameHandler.java | 14 +- .../{ => compiler}/tags/swing/JListHandler.java | 14 +- .../{ => compiler}/tags/swing/JMenuHandler.java | 10 +- .../tags/swing/JPasswordFieldHandler.java | 6 +- .../tags/swing/JPopupMenuHandler.java | 11 +- .../tags/swing/JProgressBarHandler.java | 10 +- .../tags/swing/JRadioButtonHandler.java | 18 +- .../tags/swing/JScrollPaneHandler.java | 13 +- .../{ => compiler}/tags/swing/JSliderHandler.java | 10 +- .../{ => compiler}/tags/swing/JSpinnerHandler.java | 14 +- .../tags/swing/JSplitPaneHandler.java | 14 +- .../tags/swing/JTabbedPaneHandler.java | 17 +- .../tags/swing/JTextComponentHandler.java | 20 +- .../{ => compiler}/tags/swing/JToolBarHandler.java | 11 +- .../{ => compiler}/tags/swing/JTreeHandler.java | 10 +- .../{ => compiler}/tags/swing/JWindowHandler.java | 15 +- .../jaxx/{ => compiler}/tags/swing/RowHandler.java | 8 +- .../jaxx/{ => compiler}/tags/swing/TabHandler.java | 19 +- .../{ => compiler}/tags/swing/TableHandler.java | 22 +- .../tags/validator/BeanValidatorHandler.java | 36 +- .../validator/ExcludeFieldValidatorHandler.java | 18 +- .../tags/validator/FieldValidatorHandler.java | 18 +- .../jaxx/{ => compiler/tools}/PrintTagInfo.java | 13 +- .../tools/jaxxcapture/AbstractContextNode.java | 4 +- .../tools/jaxxcapture/CapturedObject.java | 4 +- .../tools/jaxxcapture/ContextNode.java | 5 +- .../tools/jaxxcapture/JAXXCapture.java | 86 ++- .../tools/jaxxcapture/LiteralNode.java | 2 +- .../tools/jaxxcapture/MethodNode.java | 2 +- .../tools/jaxxcapture/PropertyNode.java | 2 +- .../tools/jaxxcapture/ValueNode.java | 2 +- .../jaxxcapture/handlers/JTabbedPaneHandler.java | 11 +- .../tools/jaxxcapture/handlers/ObjectHandler.java | 18 +- .../tools/jaxxcapture/handlers/TableHandler.java | 10 +- .../jaxx/{ => compiler}/types/ColorConverter.java | 14 +- .../types/GridBagConstraintsConverter.java | 11 +- .../jaxx/{ => compiler}/types/InsetsConverter.java | 11 +- .../{ => compiler}/types/KeyStrokeConverter.java | 11 +- .../{ => compiler}/types/PrimitiveConverter.java | 10 +- .../jaxx/{ => compiler}/types/TypeConverter.java | 9 +- .../jaxx/{ => compiler}/types/TypeManager.java | 17 +- .../main/java/jaxx/tags/swing/JAXXTabHandler.java | 28 - .../jaxx/tags/validator/ValidatorInitializer.java | 22 - .../META-INF/services/jaxx.compiler.Generator | 3 - .../services/jaxx.compiler.generators.Generator | 3 + .../services/jaxx.compiler.spi.Initializer | 1 + .../META-INF/services/jaxx.spi.Initializer | 3 - jaxx-compiler/src/site/rst/JAXXContext.rst | 6 +- .../{junit => compiler}/JavaFileParserTest.java | 8 +- .../jaxx/{junit => compiler}/JavaMethodTest.java | 2 +- .../beans}/BeanIntoUtilTest.java | 4 +- .../reflect}/ClassDescriptorTest.java | 12 +- .../{junit => compiler/tags}/TagManagerTest.java | 21 +- .../types}/ColorConverterTest.java | 4 +- .../types}/InsetsConverterTest.java | 4 +- .../types}/PrimitiveConverterTest.java | 4 +- .../src/main/java/jaxx/demo/DemoTreeHelper.java | 29 +- jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx | 2 +- .../src/main/java/jaxx/demo/DemoUIHandler.java | 10 +- jaxx-demo/src/main/java/jaxx/demo/RunDemo.java | 2 +- .../demo/component/jaxx/editor/I18nEditorDemo.jaxx | 110 ++-- .../component/jaxx/editor/NumberEditorDemo.jaxx | 294 +++++----- .../jaxx/editor/NumberEditorDemoModel.java | 96 ++-- .../jaxx/{tree => navigation}/BaseContent.jaxx | 0 .../FullNavigationTreeDemo.jaxx | 0 .../FullNavigationTreeHelper.java | 38 +- .../component/jaxx/{tree => navigation}/Movie.java | 2 +- .../jaxx/{tree => navigation}/People.java | 2 +- .../main/resources/i18n/jaxx-demo-en_GB.properties | 18 + .../main/resources/i18n/jaxx-demo-fr_FR.properties | 18 + jaxx-demo/src/main/resources/log4j.properties | 7 +- .../main/java/jaxx/{ => runtime}/Base64Coder.java | 2 +- .../java/jaxx/runtime/DataBindingListener.java | 1 + .../jaxx/runtime/DataBindingUpdateListener.java | 1 + .../src/main/java/jaxx/runtime/JAXXAction.java | 5 +- .../src/main/java/jaxx/runtime/JAXXObject.java | 40 +- .../java/jaxx/runtime/JAXXObjectDescriptor.java | 2 +- .../src/main/java/jaxx/runtime/SwingUtil.java | 3 +- jaxx-runtime/src/main/java/jaxx/runtime/Util.java | 18 +- .../jaxx/runtime/{ => context}/DataContext.java | 3 +- .../{ => context}/DefaultApplicationContext.java | 3 +- .../runtime/{ => context}/DefaultJAXXContext.java | 5 +- .../jaxx/runtime/{ => context}/JAXXContext.java | 4 +- .../runtime/{ => context}/JAXXContextEntryDef.java | 2 +- .../runtime/{ => context}/JAXXInitialContext.java | 4 +- .../main/java/jaxx/runtime/css/DataBinding.java | 3 +- .../main/java/jaxx/runtime/css/Pseudoclasses.java | 21 +- .../src/main/java/jaxx/{ => runtime}/css/Rule.java | 8 +- .../main/java/jaxx/{ => runtime}/css/Selector.java | 13 +- .../java/jaxx/{ => runtime}/css/Stylesheet.java | 6 +- .../{beaninfos => runtime/swing}/HBoxBeanInfo.java | 30 +- .../java/jaxx/runtime/swing/JaxxHelpBroker.java | 2 +- .../jaxx/runtime/swing/LocaleListCellRenderer.java | 24 +- .../{beaninfos => runtime/swing}/VBoxBeanInfo.java | 30 +- .../NavigationTreeContextHelper.java | 6 +- .../NavigationTreeHandler.java | 6 +- .../NavigationTreeHandlerWithCardLayout.java | 4 +- .../{tree => navigation}/NavigationTreeHelper.java | 4 +- .../{tree => navigation}/NavigationTreeModel.java | 4 +- .../NavigationTreeModelBuilder.java | 6 +- .../{tree => navigation}/NavigationTreeNode.java | 6 +- .../NavigationTreeNodeRenderer.java | 2 +- .../NavigationTreeNodeRendererDecoratorImpl.java | 2 +- .../NavigationTreeNodeRendererI18nImpl.java | 2 +- .../swing/{tree => navigation}/package.html | 0 .../swing/wizard/WizardOperationAction.java | 2 +- .../swing/wizard/WizardOperationActionThread.java | 2 +- .../jaxx/runtime/swing/wizard/WizardUILancher.java | 4 +- .../DefaultApplicationContextTest.java | 12 +- .../{ => context}/DefaultJAXXContextTest.java | 3 +- .../NavigationTreeModelTest.java | 17 +- .../java/jaxx/runtime/swing/editor/I18nEditor.jaxx | 58 +- .../swing/editor/config/ConfigUIBuilder.java | 6 +- .../jaxx-runtime-swing-widget-en_GB.properties | 70 --- .../jaxx-runtime-swing-widget-fr_FR.properties | 71 --- .../resources/i18n/jaxx-widgets-en_GB.properties | 140 ++--- .../resources/i18n/jaxx-widgets-fr_FR.properties | 141 ++--- .../org/nuiton/jaxx/plugin/AbstractJaxxMojo.java | 4 +- .../org/nuiton/jaxx/plugin/JaxxGeneratorMojo.java | 435 ++++++++------- .../nuiton/jaxx/plugin/JaxxHelpGeneratorMojo.java | 15 - .../java/org/nuiton/jaxx/plugin/Bug1750Test.java | 2 +- .../java/org/nuiton/jaxx/plugin/CompilerTest.java | 31 +- .../java/org/nuiton/jaxx/plugin/JaxxBaseTest.java | 17 +- .../nuiton/jaxx/plugin/Bug1722Test/Bug_1722.xml | 2 +- .../nuiton/jaxx/plugin/Bug1750Test/Bug_1750.xml | 2 +- .../nuiton/jaxx/plugin/Bug1751Test/Bug_1751.xml | 2 +- .../nuiton/jaxx/plugin/CompilerTest/CSSTests.xml | 2 +- .../jaxx/plugin/CompilerTest/ClassReferences.xml | 2 +- .../jaxx/plugin/CompilerTest/ClientProperty.xml | 2 +- .../ErrorJaxxContextImplementorClass.xml | 4 +- .../org/nuiton/jaxx/plugin/CompilerTest/Errors.xml | 2 +- .../org/nuiton/jaxx/plugin/CompilerTest/Force.xml | 2 +- .../org/nuiton/jaxx/plugin/CompilerTest/Icon.xml | 2 +- .../jaxx/plugin/CompilerTest/Initializers.xml | 2 +- .../jaxx/plugin/CompilerTest/InnerClasses.xml | 2 +- .../org/nuiton/jaxx/plugin/CompilerTest/NoLog.xml | 2 +- .../plugin/CompilerTest/OverridingDataBindings.xml | 2 +- .../org/nuiton/jaxx/plugin/CompilerTest/Script.xml | 2 +- .../plugin/CompilerTest/SpecialSubclassing.xml | 2 +- .../nuiton/jaxx/plugin/CompilerTest/WithLog.xml | 2 +- .../CompilerTest/errors/ItemDuplicateValues.jaxx | 4 +- .../plugin/CompilerTest/errors/ItemNoValue.jaxx | 4 +- .../CompilerValidatorTest/ValidatorErrors.xml | 2 +- .../plugin/CompilerValidatorTest/ValidatorOk.xml | 2 +- .../nuiton/jaxx/plugin/DecoratorTest/Decorator.xml | 2 +- .../nuiton/jaxx/plugin/Evolution74Test/error.xml | 2 +- .../org/nuiton/jaxx/plugin/Evolution74Test/ok.xml | 2 +- .../org/nuiton/jaxx/plugin/I18nTest/I18nText.xml | 2 +- .../org/nuiton/jaxx/plugin/I18nTest/I18nTitle.xml | 2 +- .../jaxx/plugin/I18nTest/I18nToolTipText.xml | 2 +- src/site/rst/JAXXContext.rst | 6 +- 241 files changed, 2859 insertions(+), 4231 deletions(-) diff --git a/jaxx-compiler/src/main/java/jaxx/DefaultInitializer.java b/jaxx-compiler/src/main/java/jaxx/DefaultInitializer.java deleted file mode 100644 index 762f5af..0000000 --- a/jaxx-compiler/src/main/java/jaxx/DefaultInitializer.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx; - -import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.ScriptHandler; -import jaxx.tags.StyleHandler; -import jaxx.tags.TagManager; -import jaxx.types.PrimitiveConverter; -import jaxx.types.TypeManager; - -import java.awt.Component; -import jaxx.compiler.CompiledObjectDecorator; -import jaxx.compiler.DefaultCompiledObjectDecorator; - -/** Initializes support for java. */ -public class DefaultInitializer implements jaxx.spi.Initializer { - - @Override - public void initialize() { - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(Object.class), DefaultObjectHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(Component.class), DefaultComponentHandler.class); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "script", new ScriptHandler()); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "style", new StyleHandler()); - - PrimitiveConverter primitiveConverter = new PrimitiveConverter(); - TypeManager.registerTypeConverter(boolean.class, primitiveConverter); - TypeManager.registerTypeConverter(Boolean.class, primitiveConverter); - TypeManager.registerTypeConverter(byte.class, primitiveConverter); - TypeManager.registerTypeConverter(Byte.class, primitiveConverter); - TypeManager.registerTypeConverter(short.class, primitiveConverter); - TypeManager.registerTypeConverter(Short.class, primitiveConverter); - TypeManager.registerTypeConverter(int.class, primitiveConverter); - TypeManager.registerTypeConverter(Integer.class, primitiveConverter); - TypeManager.registerTypeConverter(long.class, primitiveConverter); - TypeManager.registerTypeConverter(Long.class, primitiveConverter); - TypeManager.registerTypeConverter(float.class, primitiveConverter); - TypeManager.registerTypeConverter(Float.class, primitiveConverter); - TypeManager.registerTypeConverter(double.class, primitiveConverter); - TypeManager.registerTypeConverter(Double.class, primitiveConverter); - TypeManager.registerTypeConverter(char.class, primitiveConverter); - TypeManager.registerTypeConverter(Character.class, primitiveConverter); - TypeManager.registerTypeConverter(String.class, primitiveConverter); - - CompiledObjectDecorator.registerDecorator("default", DefaultCompiledObjectDecorator.class); - } -} \ No newline at end of file diff --git a/jaxx-compiler/src/main/java/jaxx/ScriptException.java b/jaxx-compiler/src/main/java/jaxx/ScriptException.java deleted file mode 100644 index 1a4ea3d..0000000 --- a/jaxx-compiler/src/main/java/jaxx/ScriptException.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx; - -/** Thrown by the runtime engine when a script error occurs. */ -public class ScriptException extends RuntimeException { - private static final long serialVersionUID = 5687529939397610336L; - - /** Creates a new <code>ScriptException</code>. */ - public ScriptException() { - } - - - /** - * Creates a new <code>ScriptException</code> with the specified detail message. - * - * @param msg the exception's detail message - */ - public ScriptException(String msg) { - super(msg); - } - - - /** - * Creates a new <code>ScriptException</code> with the specified cause. - * - * @param initCause the exception's initCause - */ - public ScriptException(Throwable initCause) { - super(initCause); - } - - - /** - * Creates a new <code>ScriptException</code> with the specified detail message and cause. - * - * @param msg the exception's detail message - * @param initCause the exception's initCause - */ - public ScriptException(String msg, Throwable initCause) { - super(msg, initCause); - } -} \ No newline at end of file diff --git a/jaxx-compiler/src/main/java/jaxx/SwingInitializer.java b/jaxx-compiler/src/main/java/jaxx/SwingInitializer.java deleted file mode 100644 index a832eea..0000000 --- a/jaxx-compiler/src/main/java/jaxx/SwingInitializer.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx; - -import jaxx.beaninfos.BeanInfoUtil; - -import jaxx.compiler.JAXXCompiler; -import jaxx.compiler.BoxedCompiledObjectDecorator; -import jaxx.compiler.CompiledObjectDecorator; -import jaxx.compiler.HelpRootCompiledObjectDecorator; - -import jaxx.reflect.ClassDescriptorLoader; - -import jaxx.runtime.swing.editor.EnumEditor; -import jaxx.runtime.swing.editor.LocaleEditor; - -import jaxx.spi.Initializer; - -import jaxx.runtime.swing.*; -import jaxx.tags.*; -import jaxx.tags.swing.*; -import jaxx.types.*; - -import java.awt.*; -import javax.swing.text.JTextComponent; -import javax.swing.*; - -public class SwingInitializer implements Initializer { - - @Override - public void initialize() { - - BeanInfoUtil.addJaxxBeanInfoPath("jaxx.beaninfos"); - - //TC-20091005 why the namespace was on awt ? ButtonGroup is from javax.swing - TagManager.registerTag("javax.swing.*", "ButtonGroup", new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(JAXXButtonGroup.class))); -// TagManager.registerTag("java.awt.*", "ButtonGroup", new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(JAXXButtonGroup.class))); - - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(Application.class), ApplicationHandler.class); - - // check boxes - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JCheckBox.class), JCheckBoxHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JCheckBoxMenuItem.class), JCheckBoxHandler.class); - - // combo boxes - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JComboBox.class), JComboBoxHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(EnumEditor.class), JComboBoxHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(LocaleEditor.class), JComboBoxHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JAXXComboBox.class), JAXXComboBoxHandler.class); - - // radio boxes - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JRadioButton.class), JRadioButtonHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JRadioButtonMenuItem.class), JRadioButtonHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JToggleButton.class), JRadioButtonHandler.class); - - // Lists - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JList.class), JListHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JAXXList.class), JAXXListHandler.class); - - // Trees - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JTree.class), JTreeHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JAXXTree.class), JAXXTreeHandler.class); - - // Windows - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JDialog.class), JWindowHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JFrame.class), JWindowHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JWindow.class), JWindowHandler.class); - - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JInternalFrame.class), JInternalFrameHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JMenu.class), JMenuHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JPasswordField.class), JPasswordFieldHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JPopupMenu.class), JPopupMenuHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JProgressBar.class), JProgressBarHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JScrollPane.class), JScrollPaneHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JSlider.class), JSliderHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JSpinner.class), JSpinnerHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JSplitPane.class), JSplitPaneHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JTabbedPane.class), JTabbedPaneHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JTextComponent.class), JTextComponentHandler.class); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JToolBar.class), JToolBarHandler.class); - - TagManager.registerDefaultNamespace("JEditorPane", "javax.swing.*"); - TagManager.registerDefaultNamespace("JFormattedTextField", "javax.swing.*"); - TagManager.registerDefaultNamespace("JPasswordField", "javax.swing.*"); - TagManager.registerDefaultNamespace("JTextArea", "javax.swing.*"); - TagManager.registerDefaultNamespace("JTextField", "javax.swing.*"); - TagManager.registerDefaultNamespace("JTextPane", "javax.swing.*"); - - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "tab", new TabHandler()); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(Table.class), TableHandler.class); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "row", new RowHandler()); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "cell", new CellHandler()); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, "item", new ItemHandler()); - - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(JAXXTab.class), JAXXTabHandler.class); - - TypeManager.registerTypeConverter(Color.class, new ColorConverter()); - TypeManager.registerTypeConverter(GridBagConstraints.class, new GridBagConstraintsConverter()); - TypeManager.registerTypeConverter(Insets.class, new InsetsConverter()); - TypeManager.registerTypeConverter(KeyStroke.class, new KeyStrokeConverter()); - - CompiledObjectDecorator.registerDecorator("boxed", BoxedCompiledObjectDecorator.class); - CompiledObjectDecorator.registerDecorator("help", HelpRootCompiledObjectDecorator.class); - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/BoxedCompiledObjectDecorator.java b/jaxx-compiler/src/main/java/jaxx/compiler/BoxedCompiledObjectDecorator.java deleted file mode 100644 index 2c7861e..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/BoxedCompiledObjectDecorator.java +++ /dev/null @@ -1,27 +0,0 @@ -package jaxx.compiler; - -import jaxx.compiler.CompiledObject.ChildRef; -import jaxx.runtime.SwingUtil; - -/** - * A decorator to surround a compiled object (should be a component at least) - * with a JXLayer. - * - * @author tony - * @since 1.2 - */ -public class BoxedCompiledObjectDecorator extends DefaultCompiledObjectDecorator { - - @Override - public void finalizeCompiler(JAXXCompiler compiler, CompiledObject root, CompiledObject object, JavaFile javaFile, String packageName, String className, String fullClassName) { - CompiledObject parent = object.getParent(); - for (ChildRef child : parent.getChilds()) { - if (child.getChild() == object) { - String javaCode = child.getChildJavaCode(); - child.setChildJavaCode(SwingUtil.class.getName()+".boxComponentWithJxLayer(" + javaCode + ")"); - break; - } - } - super.finalizeCompiler(compiler, root, object, javaFile, packageName, className, fullClassName); - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/ClassMap.java b/jaxx-compiler/src/main/java/jaxx/compiler/ClassMap.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/ClassMap.java rename to jaxx-compiler/src/main/java/jaxx/compiler/ClassMap.java index df3f358..fc0e49a 100644 --- a/jaxx-compiler/src/main/java/jaxx/ClassMap.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/ClassMap.java @@ -2,10 +2,10 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx; +package jaxx.compiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -24,9 +24,12 @@ import java.util.List; * @param <T> type of the class */ public class ClassMap<T> extends HashMap<ClassDescriptor, T> { - /** log */ - protected static final Log log = LogFactory.getLog(ClassMap.class); + private static final long serialVersionUID = 5149779660675529037L; + /** + * Logger + */ + protected static final Log log = LogFactory.getLog(ClassMap.class); /** * Keeps track of automatically-added Classes so we can distinguish them from user-added * Classes. Unknown Classes are automatically added to the map during <code>get</code> @@ -34,8 +37,6 @@ public class ClassMap<T> extends HashMap<ClassDescriptor, T> { * for their superclasses are modified. */ private List<ClassDescriptor> autoKeys = new ArrayList<ClassDescriptor>(); - private static final long serialVersionUID = 5149779660675529037L; - /** * Returns the value associated with the key <code>Class</code>. If the class itself does not have @@ -68,7 +69,6 @@ public class ClassMap<T> extends HashMap<ClassDescriptor, T> { return result; } - /** * Associates a value with a class and all of its descendents. * @@ -93,4 +93,4 @@ public class ClassMap<T> extends HashMap<ClassDescriptor, T> { } return super.put(key, value); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObject.java b/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObject.java index 0473f5a..ec1ff95 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObject.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObject.java @@ -4,14 +4,14 @@ */ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.MethodDescriptor; -import jaxx.tags.DefaultComponentHandler; -import jaxx.tags.TagHandler; -import jaxx.tags.TagManager; -import jaxx.types.TypeManager; +import jaxx.compiler.decorators.CompiledObjectDecorator; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.tags.TagManager; +import jaxx.compiler.types.TypeManager; import java.awt.Container; import java.lang.reflect.Method; @@ -69,13 +69,13 @@ public class CompiledObject { /** the type of the override object (can be null if no oveeride) */ private ClassDescriptor overrideType; /** - * the decorator (if null will use {@link DefaultCompiledObjectDecorator}). + * the decorator */ private CompiledObjectDecorator decorator; /** * client properties */ - private Map<String,String> clientProperties; + private Map<String, String> clientProperties; public class ChildRef { @@ -459,14 +459,13 @@ public class CompiledObject { return clientProperties; } - /** * Returns all properties which have been set for this object. * * @return a <code>Map</code> containing all properties defined for this object * @see #addProperty */ - public Map/*<String, String>*/ getProperties() { + public Map<?, ?>/*<String, String>*/ getProperties() { return properties; } @@ -558,6 +557,7 @@ public class CompiledObject { public void registerDataBinding(String src, String property, String assignment, JAXXCompiler compiler) throws CompilerException { compiler.registerDataBinding(src, getId() + "." + property, assignment); } + public String getGenericTypes() { if (getGenericTypesLength() == 0) { // not using it @@ -635,4 +635,4 @@ public class CompiledObject { public int getGenericTypesLength() { return genericTypes == null ? 0 : genericTypes.length; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObjectDecorator.java b/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObjectDecorator.java deleted file mode 100644 index d9d7dd9..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/CompiledObjectDecorator.java +++ /dev/null @@ -1,76 +0,0 @@ -package jaxx.compiler; - -import java.util.Map; -import java.util.TreeMap; -import jaxx.CompilerException; - -/** - * - * A class to decorate a compiled object at generation time. - * - * Contains also a cache of decorator in a dictonnary indexed by fqn of decorator. - * - * Use the {@link #getDecorator(java.lang.String)} to obtain the cached decorator. - * - * Note : The implementation of this class must be stateless. - * - * @author tony - * @since 1.2 - */ -public abstract class CompiledObjectDecorator { - - protected static Map<String, CompiledObjectDecorator> cache; - - public static void registerDecorator(String key, Class<? extends CompiledObjectDecorator> klass) { - synchronized (getCache()) { - if (getCache().containsKey(key)) { - throw new IllegalArgumentException("the decorator with key [" + key + "] is already registred! use another key name"); - } - try { - getCache().put(key, klass.newInstance()); - } catch (InstantiationException ex) { - throw new IllegalArgumentException("could not create decorator " + klass + " for reason " + ex.getMessage(), ex); - } catch (IllegalAccessException ex) { - throw new IllegalArgumentException("could not create decorator " + klass + " for reason " + ex.getMessage(), ex); - } - } - } - - public static CompiledObjectDecorator getDecorator(String name) { - CompiledObjectDecorator decorator = getCache().get(name); - if (decorator == null) { - throw new IllegalArgumentException("could not find decorator with key " + name + " (known decorators : " + getCache().keySet()); - } - return decorator; - } - - public static CompiledObjectDecorator getDecorator(Class<?> type) { - for (CompiledObjectDecorator decorator : getCache().values()) { - if (type == decorator.getClass()) { - return decorator; - } - } - return null; - } - - protected static synchronized Map<String, CompiledObjectDecorator> getCache() { - if (cache == null) { - cache = new TreeMap<String, CompiledObjectDecorator>(); - } - return cache; - } - - public static void reset() { - if (cache != null) { - cache.clear(); - } - } - - public abstract void finalizeCompiler(JAXXCompiler compiler, CompiledObject root, CompiledObject object, JavaFile javaFile, String packageName, String className, String fullClassName); - - public abstract String getCreationCode(JAXXCompiler compiler, CompiledObject object) throws CompilerException; - - public abstract boolean createInitializer(JAXXCompiler compiler, CompiledObject root, CompiledObject object, StringBuffer code, boolean lastWasMethodCall); - - public abstract String createCompleteSetupMethod(JAXXCompiler compiler, CompiledObject object, JavaFile javaFile, StringBuffer initDataBindings); -} diff --git a/jaxx-compiler/src/main/java/jaxx/CompilerException.java b/jaxx-compiler/src/main/java/jaxx/compiler/CompilerException.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/CompilerException.java rename to jaxx-compiler/src/main/java/jaxx/compiler/CompilerException.java index 27a6c72..2da7fa9 100644 --- a/jaxx-compiler/src/main/java/jaxx/CompilerException.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/CompilerException.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx; +package jaxx.compiler; /** Thrown by the compiler when an error occurs. */ public class CompilerException extends RuntimeException { + private static final long serialVersionUID = -9099889519671482440L; /** Creates a new <code>ParseException</code>. */ public CompilerException() { } - /** * Creates a new <code>ParseException</code> with the specified detail message. * @@ -22,7 +22,6 @@ public class CompilerException extends RuntimeException { super(msg); } - /** * Creates a new <code>ParseException</code> with the specified cause. * @@ -32,7 +31,6 @@ public class CompilerException extends RuntimeException { super(initCause); } - /** * Creates a new <code>ParseException</code> with the specified detail message and cause. * @@ -43,10 +41,10 @@ public class CompilerException extends RuntimeException { super(msg, initCause); } - + @Override public void printStackTrace() { super.printStackTrace(); System.err.println("CompilerException printed from:"); Thread.dumpStack(); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/CompilerOptions.java b/jaxx-compiler/src/main/java/jaxx/compiler/CompilerOptions.java deleted file mode 100644 index 9f73694..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/CompilerOptions.java +++ /dev/null @@ -1,406 +0,0 @@ -package jaxx.compiler; - -import org.apache.commons.lang.builder.ToStringBuilder; - -import java.io.File; - -/** - * Stores options which affect the jaxxc tool's operation. These options are generally specified by the - * user on the command line. - */ -public class CompilerOptions { - private File targetDirectory; - private File javacTargetDirectory; - private String classPath; - private String javacOpts; - private boolean keepJavaFiles; - private boolean optimize; - private boolean verbose; - private boolean profile; - /** a flag to enable or disable i18n generation */ - private boolean i18nable; - - /** a flag to add or not logger on generated jaxx files */ - private boolean addLogger; - - /** a flag to not reset compiler after a compile */ - private boolean resetAfterCompile; - - /** the name of implementation of {@link jaxx.runtime.JAXXContext} to be used on {@link jaxx.runtime.JAXXObject}. */ - protected String jaxxContextImplementorClass; - - /** list of fqn of class toimport for all generated jaxx files */ - protected String[] extraImports; - - /** default error ui */ - private Class<?> defaultErrorUI; - - private ClassLoader classLoader; - - private Class<? extends JAXXCompiler> compilerClass; - - /** - * @deprecated prefer use {@link #validatorClass} - */ - @Deprecated - private String validatorFQN; - /** - * the validator class to use. - * - * @since 1.6.0 - */ - private Class<?> validatorClass; - - /** a flag to use {@link javax.swing.UIManager} to retreave icons. */ - private boolean useUIManagerForIcon; - - /** a flag to generate javax help for any */ - private boolean generateHelp; - - private String helpBrokerFQN; - /** - * The prefix to add to i18n key for any help i18n key. - * - * @since 1.3 - */ - protected String helpsetI18nPrefix; - /** - * The suffix to add to i18n key for an help Id. - * - * @since 1.3 - */ - protected String helpsetTitleI18nSuffix; - /** - * The suffix to add to i18n key for an toc Id. - * - * @since 1.3 - */ - protected String helpsetTocI18nSuffix; - /** - * The suffix to add to i18n key for an toc Id. - * - * @since 1.3 - */ - protected String helpsetIndexI18nSuffix; - /** - * The helpset name - * - * @since 1.3 - */ - protected String helpSetName; - /** the default compiled object decorator to use if none specifed via decorator attribute */ - private Class<? extends CompiledObjectDecorator> defaultDecoratorClass; - - /** - * Returns the target directory, generally specified with the "-d" option on the command line. - * - * @return the target directory - * @see #setTargetDirectory - */ - public File getJavacTargetDirectory() { - if (javacTargetDirectory == null) { - // to use the old way : if javacTargetDirectory not specified, - // use same directory as targetDirectory (says where the java sources - // are generated) - return targetDirectory; - } - return javacTargetDirectory; - } - - /** - * Returns the target directory, generally specified with the "-d" option on the command line. - * - * @return the target directory - * @see #setTargetDirectory - */ - public File getTargetDirectory() { - return targetDirectory; - } - - - /** - * Sets the target directory into which compiled classes will be placed. - * - * @param targetDirectory the target directory - * @see #getTargetDirectory - */ - public void setTargetDirectory(File targetDirectory) { - this.targetDirectory = targetDirectory; - } - - public void setJavacTargetDirectory(File javacTargetDirectory) { - this.javacTargetDirectory = javacTargetDirectory; - } - - /** - * Returns the class path to be used during compilation. - * - * @return the class path to be used during compilation - * @see #setClassPath - */ - public String getClassPath() { - return classPath; - } - - /** - * Sets the class path to be used during compilation. - * - * @param classPath the compilation class path - * @see #getClassPath - */ - public void setClassPath(String classPath) { - this.classPath = classPath; - } - - - /** - * Returns the options to be passed into <code>javac</code>. - * - * @return options to be passed into <code>javac</code> - * @see #setJavacOpts - */ - public String getJavacOpts() { - return javacOpts; - } - - - /** - * Sets options to be passed into <code>javac</code>. - * - * @param javacOpts options to be passed into <code>javac</code> - * @see #getJavacOpts - */ - public void setJavacOpts(String javacOpts) { - this.javacOpts = javacOpts; - } - - - /** - * Returns whether or not generated Java files should be preserved after compilation. - * - * @return <code>true</code> if generated Java files should be preserved, <code>false</code> to delete - * @see #setKeepJavaFiles - */ - public boolean getKeepJavaFiles() { - return keepJavaFiles; - } - - - /** - * Sets whether or not generated Java files should be preserved after compilation. - * - * @param keepJavaFiles <code>true</code> if generated Java files should be preserved, <code>false</code> to delete - * @see #getKeepJavaFiles - */ - public void setKeepJavaFiles(boolean keepJavaFiles) { - this.keepJavaFiles = keepJavaFiles; - } - - - /** - * Returns whether or not optimization should be performed. - * - * @return whether or not optimizations should be performed - */ - public boolean getOptimize() { - return optimize; - } - - - /** - * Sets whether or not optimizations should be performed. - * - * @param optimize <code>true</code> to perform optimizations during compilation - * @see #getOptimize - */ - public void setOptimize(boolean optimize) { - this.optimize = optimize; - } - - public boolean isVerbose() { - return verbose; - } - - public void setVerbose(boolean verbose) { - this.verbose = verbose; - } - - public boolean isI18nable() { - return i18nable; - } - - public boolean isUseUIManagerForIcon() { - return useUIManagerForIcon; - } - - public void setI18nable(boolean i18nable) { - this.i18nable = i18nable; - } - - public boolean isAddLogger() { - return addLogger; - } - - public void setAddLogger(boolean addLogger) { - this.addLogger = addLogger; - } - - public String getJaxxContextImplementorClass() { - return jaxxContextImplementorClass; - } - - public void setJaxxContextImplementorClass(String jaxxContextImplementorClass) { - this.jaxxContextImplementorClass = jaxxContextImplementorClass; - } - - public String[] getExtraImports() { - return extraImports; - } - - public void setExtraImports(String[] extraImports) { - this.extraImports = extraImports; - } - - public boolean isResetAfterCompile() { - return resetAfterCompile; - } - - public void setResetAfterCompile(boolean resetAfterCompile) { - this.resetAfterCompile = resetAfterCompile; - } - - public void setUseUIManagerForIcon(boolean useUIManagerForIcon) { - this.useUIManagerForIcon = useUIManagerForIcon; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - - - public void setDefaultErrorUI(Class<?> defaultErrorUI) { - this.defaultErrorUI = defaultErrorUI; - } - - public boolean isKeepJavaFiles() { - return keepJavaFiles; - } - - public boolean isOptimize() { - return optimize; - } - - public Class<?> getDefaultErrorUI() { - return defaultErrorUI; - } - - public ClassLoader getClassLoader() { - return classLoader; - } - - public void setClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader; - } - - public Class<? extends JAXXCompiler> getCompilerClass() { - return compilerClass; - } - - public void setCompilerClass(Class<? extends JAXXCompiler> compilerClass) { - this.compilerClass = compilerClass; - } - - @Deprecated - public String getValidatorFQN() { - return validatorClass.getName(); - } - - @Deprecated - public void setValidatorFQN(String validatorFQN) { - this.validatorFQN = validatorFQN; - } - - public Class<? extends CompiledObjectDecorator> getDefaultDecoratorClass() { - return defaultDecoratorClass; - } - - public void setDefaultDecoratorClass(Class<? extends CompiledObjectDecorator> defaultDecoratorClass) { - this.defaultDecoratorClass = defaultDecoratorClass; - } - - public boolean isProfile() { - return profile; - } - - public void setProfile(boolean profile) { - this.profile = profile; - } - - public boolean isGenerateHelp() { - return generateHelp; - } - - public void setGenerateHelp(boolean generateHelp) { - this.generateHelp = generateHelp; - } - - public String getHelpBrokerFQN() { - return helpBrokerFQN; - } - - public void setHelpBrokerFQN(String helpBrokerFQN) { - this.helpBrokerFQN = helpBrokerFQN; - } - - public String getHelpsetIndexI18nSuffix() { - return helpsetIndexI18nSuffix; - } - - public void setHelpsetIndexI18nSuffix(String helpsetIndexI18nSuffix) { - this.helpsetIndexI18nSuffix = helpsetIndexI18nSuffix; - } - - public String getHelpsetTitleI18nSuffix() { - return helpsetTitleI18nSuffix; - } - - public void setHelpsetTitleI18nSuffix(String helpsetTitleI18nSuffix) { - this.helpsetTitleI18nSuffix = helpsetTitleI18nSuffix; - } - - public String getHelpsetTocI18nSuffix() { - return helpsetTocI18nSuffix; - } - - public void setHelpsetTocI18nSuffix(String helpsetTocI18nSuffix) { - this.helpsetTocI18nSuffix = helpsetTocI18nSuffix; - } - - public String getHelpSetName() { - return helpSetName; - } - - public void setHelpSetName(String helpSetName) { - this.helpSetName = helpSetName; - } - - public String getHelpsetI18nPrefix() { - return helpsetI18nPrefix; - } - - public void setHelpsetI18nPrefix(String helpsetI18nPrefix) { - this.helpsetI18nPrefix = helpsetI18nPrefix; - } - - public Class<?> getValidatorClass() { - return validatorClass; - } - - public void setValidatorClass(Class<?> validatorClass) { - this.validatorClass = validatorClass; - } - - - -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/DataBinding.java b/jaxx-compiler/src/main/java/jaxx/compiler/DataBinding.java index 5aceb84..99518c0 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/DataBinding.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/DataBinding.java @@ -4,32 +4,27 @@ */ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.types.TypeManager; +import jaxx.compiler.types.TypeManager; /** * Represents a data binding in a JAXX file. <code>DataBinding</code> uses {@link DataSource} to * track changes to a source expression and update the destination. */ public class DataBinding { - private String id; + private String id; /** The DatSource which tracks source expression changes. */ private DataSource dataSource; - /** The data binding destination in the form <code><id>.<propertyName></code>. */ private String dest; - /** * A Java snippet which will cause the destination property to be updated with the current value of * the binding. */ private String assignment; - /** The current <code>JAXXCompiler</code>. */ private JAXXCompiler compiler; - /** * Creates a new data binding. * @@ -46,12 +41,10 @@ public class DataBinding { this.compiler = compiler; } - public String getId() { return id; } - /** * Compiles the data binding expression. This method calls methods in <code>JAXXCompiler</code> * to add the Java code that performs the data binding setup. @@ -89,4 +82,4 @@ public class DataBinding { compiler.appendProcessDataBinding(JAXXCompiler.getLineSeparator() + " }"); return true; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/DataSource.java b/jaxx-compiler/src/main/java/jaxx/compiler/DataSource.java index 0f88ea2..6fb37d8 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/DataSource.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/DataSource.java @@ -4,19 +4,17 @@ */ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; -import jaxx.parser.JavaParser; -import jaxx.parser.JavaParserConstants; -import jaxx.parser.JavaParserTreeConstants; -import jaxx.parser.SimpleNode; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.TagManager; -import jaxx.types.TypeManager; +import jaxx.compiler.parser.java.JavaParser; +import jaxx.compiler.parser.java.JavaParserConstants; +import jaxx.compiler.parser.java.JavaParserTreeConstants; +import jaxx.compiler.parser.java.SimpleNode; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.FieldDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.tags.DefaultObjectHandler; +import jaxx.compiler.tags.TagManager; +import jaxx.compiler.types.TypeManager; import java.beans.Introspector; import java.beans.PropertyChangeListener; @@ -34,24 +32,19 @@ import java.util.List; * changed but no event was fired). */ public class DataSource { + private class NULL { } // type attached to "null" constants in parsed expressions - private String id; - /** The Java source code for the expression. */ private String source; - /** The current <code>JAXXCompiler</code>. */ private JAXXCompiler compiler; - /** List of symbols which this data source expression depends on. */ private List<String> dependencySymbols = new ArrayList<String>(); - private StringBuffer addListenerCode = new StringBuffer(); private StringBuffer removeListenerCode = new StringBuffer(); private boolean compiled; - /** the delegate of property to be required */ private String objectCode; @@ -69,7 +62,6 @@ public class DataSource { this.compiler = compiler; } - public String getId() { return id; } @@ -97,17 +89,17 @@ public class DataSource { if (compiled) { throw new IllegalStateException(this + " has already been compiled"); } - String id = compiler.getAutoId(ClassDescriptorLoader.getClassDescriptor(getClass())); + String autoId = compiler.getAutoId(ClassDescriptorLoader.getClassDescriptor(getClass())); JavaParser p = new JavaParser(new StringReader(source + ";")); while (!p.Line()) { SimpleNode node = p.popNode(); - scanNode(node, id); + scanNode(node, autoId); } if (dependencySymbols.size() > 0) { //TC 20081108 prefer add a real JavaField instead of raw code //compiler.appendBodyCode("private PropertyChangeListener " + id + " = " + propertyChangeListenerCode + ";\n"); - compiler.addSimpleField(new JavaField(Modifier.PRIVATE, PropertyChangeListener.class.getName(), id, propertyChangeListenerCode)); + compiler.addSimpleField(new JavaField(Modifier.PRIVATE, PropertyChangeListener.class.getName(), autoId, propertyChangeListenerCode)); } compileListeners(); @@ -126,7 +118,7 @@ public class DataSource { * * @param node node to scan * @param listenerId id of listener - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ private void scanNode(SimpleNode node, String listenerId) throws CompilerException { switch (node.getId()) { @@ -147,17 +139,17 @@ public class DataSource { private ClassDescriptor determineLiteralType(SimpleNode node) { assert node.getId() == JavaParserTreeConstants.JJTLITERAL; if (node.jjtGetNumChildren() == 1) { - int id = node.getChild(0).getId(); - if (id == JavaParserTreeConstants.JJTBOOLEANLITERAL) { + int childId = node.getChild(0).getId(); + if (childId == JavaParserTreeConstants.JJTBOOLEANLITERAL) { return ClassDescriptorLoader.getClassDescriptor(boolean.class); } - if (id == JavaParserTreeConstants.JJTNULLLITERAL) { + if (childId == JavaParserTreeConstants.JJTNULLLITERAL) { return ClassDescriptorLoader.getClassDescriptor(NULL.class); } - throw new RuntimeException("Expected BooleanLiteral or NullLiteral, found " + JavaParserTreeConstants.jjtNodeName[id]); + throw new RuntimeException("Expected BooleanLiteral or NullLiteral, found " + JavaParserTreeConstants.jjtNodeName[childId]); } - int id = node.firstToken.kind; - switch (id) { + int nodeId = node.firstToken.kind; + switch (nodeId) { case JavaParserConstants.INTEGER_LITERAL: if (node.firstToken.image.toLowerCase().endsWith("l")) { return ClassDescriptorLoader.getClassDescriptor(long.class); @@ -173,7 +165,7 @@ public class DataSource { case JavaParserConstants.STRING_LITERAL: return ClassDescriptorLoader.getClassDescriptor(String.class); default: - throw new RuntimeException("Expected literal token, found " + JavaParserConstants.tokenImage[id]); + throw new RuntimeException("Expected literal token, found " + JavaParserConstants.tokenImage[nodeId]); } } @@ -221,8 +213,7 @@ public class DataSource { currentSymbol.setLength(0); accepted = true; recognizeClassNames = false; - } - catch (NoSuchFieldException e) { + } catch (NoSuchFieldException e) { if (j == 0 || j == 1 && tokens[0].equals(compiler.getRootObject().getId())) { // still in root context FieldDescriptor[] newFields = compiler.getScriptFields(); for (FieldDescriptor newField : newFields) { @@ -301,20 +292,19 @@ public class DataSource { return null; } int dotPos = lastNode.lastIndexOf("."); - String objectCode = dotPos == -1 ? "" : lastNode.substring(0, dotPos); + String code = dotPos == -1 ? "" : lastNode.substring(0, dotPos); for (int j = i - 2; j >= 0; j--) { - objectCode = expression.getChild(j).getText() + objectCode; + code = expression.getChild(j).getText() + code; } - if (objectCode.length() == 0) { - objectCode = compiler.getRootObject().getJavaCode(); + if (code.length() == 0) { + code = compiler.getRootObject().getJavaCode(); } String methodName = lastNode.substring(dotPos + 1).trim(); try { MethodDescriptor method = contextClass.getMethodDescriptor(methodName); - trackMemberIfPossible(objectCode, contextClass, method.getName(), true, listenerId); + trackMemberIfPossible(code, contextClass, method.getName(), true, listenerId); return method.getReturnType(); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { // happens for methods defined in the current JAXX file via scripts String propertyName = null; if (methodName.startsWith("is")) { @@ -361,8 +351,7 @@ public class DataSource { handler.getAddMemberListenerCode(objectCode, id, memberName, listenerId, compiler), handler.getRemoveMemberListenerCode(objectCode, id, memberName, listenerId, compiler)); } - } - catch (UnsupportedAttributeException e) { + } catch (UnsupportedAttributeException e) { // ignore -- this is thrown for methods like toString(), for which there is no tracking and // no setting support } diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompiledObjectDecorator.java b/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompiledObjectDecorator.java deleted file mode 100644 index 5e0144a..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompiledObjectDecorator.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package jaxx.compiler; - -import java.lang.reflect.Modifier; -import java.util.Map.Entry; -import jaxx.CompilerException; -import jaxx.types.TypeManager; - -/** - * The default compiledObjectDecorator. - * - * @author tony - * @since 1.2 - */ -public class DefaultCompiledObjectDecorator extends CompiledObjectDecorator { - - @Override - public void finalizeCompiler(JAXXCompiler compiler, CompiledObject root, CompiledObject object, JavaFile javaFile, String packageName, String className, String fullClassName) { - - if (!object.isOverride() && !(object instanceof ScriptInitializer)) { - String id = object.getId(); - int access = id.startsWith("$") ? Modifier.PRIVATE : Modifier.PROTECTED; - if (object == root) { - javaFile.addField(new JavaField(access, fullClassName, id, "this")); - } else { - //TC -20081017 can have generic on compiled Object - javaFile.addField(JavaField.newField(access, JAXXCompiler.getCanonicalName(object), id), object.isJavaBean()); - } - } - - if (!compiler.inlineCreation(object) && object != root) { - javaFile.addMethod(JavaMethod.newMethod(Modifier.PROTECTED, "void", object.getCreationMethodName(), getCreationCode(compiler, object))); - } - } - - @Override - public String getCreationCode(JAXXCompiler compiler, CompiledObject object) throws CompilerException { - if (object instanceof ScriptInitializer) { - return object.getInitializationCode(compiler); - } - StringBuffer result = new StringBuffer(); - if (object.isOverride() && object.getOverrideType()==object.getObjectClass()) { - //TC-20090309 on utilise le super code quand l'objet est de meme type - result.append("super.").append(object.getCreationMethodName()).append("();"); - } else { - result.append(object.getId()); - result.append(" = "); - if (object.isJavaBean() && object.getJavaBeanInitCode() != null) { - result.append(object.getJavaBeanInitCode()).append(";"); - } else { - String constructorParams = object.getConstructorParams(); - if (constructorParams != null) { - //TC - 20081017 compiledObject can have generics - result.append(" new ").append(JAXXCompiler.getCanonicalName(object)).append("(").append(constructorParams).append(");"); - //result.append("(").append(getCanonicalName(object.getObjectClass())).append(") new ").append(getCanonicalName(object.getObjectClass())).append("(").append(constructorParams).append(");"); - } else { - //TC - 20081017 compiledObject can have generics - result.append("new ").append(JAXXCompiler.getCanonicalName(object)).append("();"); - } - } - result.append(JAXXCompiler.getLineSeparator()); - result.append("$objectMap.put(").append(TypeManager.getJavaCode(object.getId())).append(", ").append(object.getId()).append(");"); - } - result.append(JAXXCompiler.getLineSeparator()); - String initCode = object.getInitializationCode(compiler); - if (initCode != null && initCode.length() > 0) { - result.append(initCode); - } - - return result.toString(); - } - - @Override - public String createCompleteSetupMethod(JAXXCompiler compiler, CompiledObject object, JavaFile javaFile, StringBuffer initDataBindings) { - StringBuffer code = new StringBuffer(); - //TC-20090327 generate client properties - if (object.hasClientProperties()) { - // generate putClientProperty invocations - for (Entry<String,String> entry : object.getClientProperties().entrySet()) { - object.appendAdditionCode(object.getJavaCode() + ".putClientProperty(\"" + entry.getKey() + "\", " + entry.getValue() + ");"); - } - - } - //TC - 20081017 only generate the method if not empty ? - if (object.getId().startsWith("$")) { - code.append(object.getAdditionCode()).append(JAXXCompiler.getLineSeparator()); - } else { - String additionCode = object.getAdditionCode(); - if (additionCode.length() > 0) { - code.append(object.getAdditionMethodName()).append("();").append(JAXXCompiler.getLineSeparator()); - additionCode = "if (!allComponentsCreated) {" + JAXXCompiler.getLineSeparator() + " return;" + JAXXCompiler.getLineSeparator() + "}" + JAXXCompiler.getLineSeparator() + additionCode; - javaFile.addMethod(JavaMethod.newMethod(Modifier.PROTECTED, "void", object.getAdditionMethodName(), additionCode)); - } - } - //code.append(getLineSeparator()); - return code.toString(); - } - - @Override - public boolean createInitializer(JAXXCompiler compiler, CompiledObject root, CompiledObject object, StringBuffer code, boolean lastWasMethodCall) { - if (object == root) { - String rootCode = root.getInitializationCode(compiler); - if (rootCode != null && rootCode.length() > 0) { - code.append(rootCode); - code.append(JAXXCompiler.getLineSeparator()); - } - } else { - if (!object.isOverride()) { - if (compiler.inlineCreation(object)) { - if (lastWasMethodCall) { - lastWasMethodCall = false; - code.append(JAXXCompiler.getLineSeparator()); - } - code.append(getCreationCode(compiler, object)); - code.append(JAXXCompiler.getLineSeparator()); - } else { - code.append(object.getCreationMethodName()).append("();"); - code.append(JAXXCompiler.getLineSeparator()); - lastWasMethodCall = true; - } - } - } - return lastWasMethodCall; - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java b/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java new file mode 100644 index 0000000..543cbd1 --- /dev/null +++ b/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java @@ -0,0 +1,247 @@ +package jaxx.compiler; + +import jaxx.compiler.decorators.CompiledObjectDecorator; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +import java.io.File; +import jaxx.runtime.context.JAXXContext; + +/** + * Options of the {@link JAXXCompiler} and {@link JAXXCompilerLaunchor}. + * + */ +public class DefaultCompilerConfiguration implements CompilerConfiguration { + +// private File javacTargetDirectory; +// private String classPath; +// private String javacOpts; +// private boolean keepJavaFiles; + /** + * + */ + private File targetDirectory; + /** + * + */ + private boolean optimize; + /** + * + */ + private boolean verbose; + /** + * + */ + private boolean profile; + /** + * a flag to enable or disable i18n generation + */ + private boolean i18nable; + /** + * a flag to add or not logger on generated jaxx files + */ + private boolean addLogger; + /** + * a flag to not reset compiler after a compile + */ + private boolean resetAfterCompile; + /** + * the name of implementation of {@link jaxx.runtime.context.JAXXContext} + * to be used on {@link jaxx.runtime.JAXXObject}. + */ + protected Class<? extends JAXXContext> jaxxContextClass; + /** + * list of fqn of class to import for all generated jaxx files + */ + protected String[] extraImports; + /** + * default error ui + */ + private Class<?> defaultErrorUI; + /** + * + */ + private ClassLoader classLoader; + /** + * + */ + private Class<? extends JAXXCompiler> compilerClass; + /** + * the validator class to use. + * + * @since 1.6.0 + */ + private Class<?> validatorClass; + /** + * the default compiled object decorator to use if none specifed via + * decorator attribute + */ + private Class<? extends CompiledObjectDecorator> defaultDecoratorClass; + /** + * a flag to use {@link javax.swing.UIManager} to retreave icons. + */ + private boolean useUIManagerForIcon; + /** + * a flag to generate javax help for any + */ + private boolean generateHelp; + /** + * Fully qualified name of help broker, can not use a class here + * since this class should be in sources (so not yet compiled) + */ + private String helpBrokerFQN; + /** + * The prefix to add to i18n key for any help i18n key. + * + * @since 1.3 + */ + protected String helpsetI18nPrefix; + /** + * The suffix to add to i18n key for an help Id. + * + * @since 1.3 + */ + protected String helpsetTitleI18nSuffix; + /** + * The suffix to add to i18n key for an toc Id. + * + * @since 1.3 + */ + protected String helpsetTocI18nSuffix; + /** + * The suffix to add to i18n key for an toc Id. + * + * @since 1.3 + */ + protected String helpsetIndexI18nSuffix; + /** + * The helpset name + * + * @since 1.3 + */ + protected String helpSetName; + + @Override + public File getTargetDirectory() { + return targetDirectory; + } + + @Override + public boolean getOptimize() { + return optimize; + } + + @Override + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + @Override + public boolean isI18nable() { + return i18nable; + } + + @Override + public boolean isUseUIManagerForIcon() { + return useUIManagerForIcon; + } + + @Override + public boolean isAddLogger() { + return addLogger; + } + + @Override + public Class<? extends JAXXContext> getJaxxContextClass() { + return jaxxContextClass; + } + + @Override + public String[] getExtraImports() { + return extraImports; + } + + @Override + public boolean isResetAfterCompile() { + return resetAfterCompile; + } + + @Override + public boolean isOptimize() { + return optimize; + } + + @Override + public Class<?> getDefaultErrorUI() { + return defaultErrorUI; + } + + @Override + public ClassLoader getClassLoader() { + return classLoader; + } + + @Override + public Class<? extends JAXXCompiler> getCompilerClass() { + return compilerClass; + } + + @Override + public Class<? extends CompiledObjectDecorator> getDefaultDecoratorClass() { + return defaultDecoratorClass; + } + + @Override + public boolean isProfile() { + return profile; + } + + @Override + public boolean isGenerateHelp() { + return generateHelp; + } + + @Override + public String getHelpBrokerFQN() { + return helpBrokerFQN; + } + + @Override + public String getHelpsetIndexI18nSuffix() { + return helpsetIndexI18nSuffix; + } + + @Override + public String getHelpsetTitleI18nSuffix() { + return helpsetTitleI18nSuffix; + } + + @Override + public String getHelpsetTocI18nSuffix() { + return helpsetTocI18nSuffix; + } + + @Override + public String getHelpSetName() { + return helpSetName; + } + + @Override + public String getHelpsetI18nPrefix() { + return helpsetI18nPrefix; + } + + @Override + public Class<?> getValidatorClass() { + return validatorClass; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); + } +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/EventHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/EventHandler.java index 01a54a8..506f269 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/EventHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/EventHandler.java @@ -4,10 +4,11 @@ */ package jaxx.compiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; public class EventHandler { + private String eventId; private String objectCode; private ClassDescriptor listenerClass; @@ -24,38 +25,32 @@ public class EventHandler { this.javaCode = javaCode; } - public String getEventId() { return eventId; } - public String getObjectCode() { return objectCode; } - public MethodDescriptor getAddMethod() { return addMethod; } - public ClassDescriptor getListenerClass() { return listenerClass; } - public MethodDescriptor getListenerMethod() { return listenerMethod; } - public String getJavaCode() { return javaCode; } - + @Override public String toString() { return "EventHandler[" + eventId + ", " + listenerClass.getName() + ", " + objectCode + ", " + javaCode + "]"; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/HelpRootCompiledObjectDecorator.java b/jaxx-compiler/src/main/java/jaxx/compiler/HelpRootCompiledObjectDecorator.java deleted file mode 100644 index 14cd185..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/HelpRootCompiledObjectDecorator.java +++ /dev/null @@ -1,93 +0,0 @@ -package jaxx.compiler; - -import java.lang.reflect.Modifier; -import java.util.Iterator; -import java.util.Set; - -/** - * A decorator to place on a root compiled object to process javaHelp on the file. - * - * @author tony - * @since 1.2 - */ -public class HelpRootCompiledObjectDecorator extends DefaultCompiledObjectDecorator { - - /** - * the list of discovered helpId - */ - protected static Set<String> helpIds = new java.util.HashSet<String>(); - - protected String getBrokerFQN(JAXXCompiler compiler) { - String helpBrokerFQN = compiler.getOptions().getHelpBrokerFQN(); - return helpBrokerFQN; - } - - protected String getHelpId(CompiledObject o) { - String helpID = null; - if (o.hasClientProperties()) { - helpID = o.getClientProperty("help"); - } - return helpID; - } - - @Override - public void finalizeCompiler(JAXXCompiler compiler, CompiledObject root, CompiledObject object, JavaFile javaFile, String packageName, String className, String fullClassName) { - super.finalizeCompiler(compiler, root, object, javaFile, packageName, className, fullClassName); - CompilerOptions options = compiler.getOptions(); - - if (options.isGenerateHelp()) { - - // add JaxxHelpUI interface - Class<?> validatorInterface = jaxx.runtime.JaxxHelpUI.class; - String helpBrokerFQN = getBrokerFQN(compiler); - javaFile.addInterface(JAXXCompiler.getCanonicalName(validatorInterface) + "<" + helpBrokerFQN + ">"); - - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC, "void", "registerHelpId", - "broker.installUI(component, helpId);", - new JavaArgument(helpBrokerFQN, "broker"), - new JavaArgument("Component", "component"), - new JavaArgument("String", "helpId"))); - - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC, "void", "showHelp", - "getBroker().showHelp(this, helpId);", - new JavaArgument("String", "helpId"))); - - StringBuilder buffer = new StringBuilder(); - - String lineSeparator = JAXXCompiler.getLineSeparator(); - - if (options.isGenerateHelp()) { - - // add code to init javax help system - Iterator<CompiledObject> itr = compiler.getObjectCreationOrder(); - - for (; itr.hasNext();) { - CompiledObject o = itr.next(); - String helpID = getHelpId(o); - if (helpID != null) { - buffer.append(lineSeparator); - // detects a helpId to register - buffer.append("registerHelpId(_broker, " + o.getJavaCode() + ", " + helpID + ");"); - //keep the helpID for helpSet generation - helpIds.add(helpID); - } - } - } - if (buffer.length() > 0) { - - StringBuilder extraCode = new StringBuilder(helpBrokerFQN).append(" _broker = getBroker();"); - - buffer.append(lineSeparator).append("_broker.prepareUI(this);"); - buffer.append(lineSeparator); - - // add the calls - compiler.appendLateInitializer(extraCode.toString()); - compiler.appendLateInitializer(buffer.toString()); - } - } - } - - public static Set<String> getHelpIds() { - return helpIds; - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/I18nHelper.java b/jaxx-compiler/src/main/java/jaxx/compiler/I18nHelper.java index c928cbd..f38a840 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/I18nHelper.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/I18nHelper.java @@ -1,6 +1,5 @@ package jaxx.compiler; -import jaxx.tags.DefaultComponentHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -16,8 +15,7 @@ import java.util.List; */ public class I18nHelper { - protected static final Log log = LogFactory.getLog(DefaultComponentHandler.class); - + protected static final Log log = LogFactory.getLog(I18nHelper.class); public static final List<String> I18N_ATTRIBUTES = Arrays.asList("text", "title", "toolTipText"); /** @@ -28,7 +26,7 @@ public class I18nHelper { * @return <code>true</code> if wa have an active i18n attribute, <code>false</code> otherwise. */ public static boolean isI18nableAttribute(String attributeName, JAXXCompiler compiler) { - return compiler.getOptions().isI18nable() && isI18nAttribute(attributeName); + return compiler.getConfiguration().isI18nable() && isI18nAttribute(attributeName); } /** @@ -40,6 +38,7 @@ public class I18nHelper { public static boolean isI18nAttribute(String attributeName) { return I18N_ATTRIBUTES.contains(attributeName); } + /** * Add the i18n on a attribute. * <p/> @@ -60,7 +59,7 @@ public class I18nHelper { log.debug(" try i18n support for [" + widgetId + ":" + attributeName + "] : " + attributeValueCode); } if (attributeValueCode.contains("_(") && attributeValueCode.contains(")")) { - compiler.reportWarning("\n\tjaxx supports i18n, no need to add explicit call to I18n._ for attribute '" + attributeName + "' in component '" + widgetId + "' : ["+attributeValueCode+"]"); + compiler.reportWarning("\n\tjaxx supports i18n, no need to add explicit call to I18n._ for attribute '" + attributeName + "' in component '" + widgetId + "' : [" + attributeValueCode + "]"); } else { attributeValueCode = "_(" + attributeValueCode + ")"; } diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java b/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java index b34cd3a..3beaa21 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java @@ -4,22 +4,21 @@ */ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; -import jaxx.UnsupportedTagException; -import jaxx.css.Rule; -import jaxx.css.Stylesheet; -import jaxx.css.StylesheetHelper; -import jaxx.parser.ParseException; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.decorators.CompiledObjectDecorator; +import jaxx.compiler.decorators.CompiledObjectDecoratorManager; +import jaxx.compiler.generators.Generator; +import jaxx.compiler.parser.java.ParseException; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.FieldDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.tags.DefaultObjectHandler; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.tags.TagManager; import jaxx.runtime.ComponentDescriptor; import jaxx.runtime.JAXXObjectDescriptor; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.TagHandler; -import jaxx.tags.TagManager; +import jaxx.runtime.css.Rule; +import jaxx.runtime.css.Stylesheet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; @@ -50,9 +49,7 @@ import java.io.InputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.lang.reflect.Modifier; -import java.net.MalformedURLException; import java.net.URL; -import java.net.URLClassLoader; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Arrays; @@ -76,7 +73,6 @@ public class JAXXCompiler { /** log */ protected static final Log log = LogFactory.getLog(JAXXCompiler.class); - /** * True to throw exceptions when we encounter unresolvable classes, false to ignore. * This is currently set to false until JAXX has full support for inner classes @@ -84,158 +80,225 @@ public class JAXXCompiler { * generally compile without error anyway). */ public static final boolean STRICT_CHECKS = false; + /** + * + */ public static final String JAXX_NAMESPACE = "http://www.jaxxframework.org/"; + /** + * + */ public static final String JAXX_INTERNAL_NAMESPACE = "http://www.jaxxframework.org/internal"; - - /** Maximum length of an inlinable creation method. */ + /** + * Maximum length of an inlinable creation method. + */ public static final int INLINE_THRESHOLD = 300; - + /** + * + */ protected final DefaultObjectHandler firstPassClassTagHandler; - + /** + * + */ protected List<String> staticImports = new ArrayList<String>(); /*---------------------------------------------------------------------------------*/ /*-- compiler fields --------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - - /** flag to detec if an error occurs while compiling jaxx file */ + /** + * flag to detec if an error occurs while compiling jaxx file + */ protected boolean failed; - - /** Object corresponding to the root tag in the document. */ + /** + * Object corresponding to the root tag in the document. + */ protected CompiledObject root; - - /** Contains strings of the form "javax.swing." */ + /** + * Contains strings of the form "javax.swing." + */ protected Set<String> importedPackages = new HashSet<String>(); - - /** Contains strings of the form "javax.swing.Timer" */ + /** + * Contains strings of the form "javax.swing.Timer" + */ protected Set<String> importedClasses = new HashSet<String>(); - - /** Keeps track of open components (components still having children added). */ + /** + * Keeps track of open components (components still having children added). + */ protected Stack<CompiledObject> openComponents = new Stack<CompiledObject>(); - - /** Sequence number used to create automatic variable names. */ + /** + * Sequence number used to create automatic variable names. + */ protected int autogenID = 0; - + /** + * + */ protected List<DataBinding> dataBindings = new ArrayList<DataBinding>(); - + /** + * + */ protected SymbolTable symbolTable = new SymbolTable(); - - /** Base directory used for path resolution (normally the directory in which the .jaxx file resides). */ + /** + * Base directory used for path resolution (normally the directory in + * which the .jaxx file resides). + */ protected File baseDir; - - /** .jaxx file being compiled. */ + /** + * .jaxx file being compiled. + */ protected File src; - - /** Parsed XML of src file. */ + /** + * Parsed XML of src file. + */ protected Document document; - - /** Name of class being compiled. */ + /** + * Name of class being compiled. + */ protected String outputClassName; - + /** + * + */ protected ScriptManager scriptManager = new ScriptManager(this); - - /** Combination of all stylesheets registered using {@link #registerStylesheet}. */ + /** + * Combination of all stylesheets registered using + * {@link #registerStylesheet}. + */ protected Stylesheet stylesheet; - - /** Contains all attributes defined inline on class tags. */ + /** + * Contains all attributes defined inline on class tags. + */ protected List<Rule> inlineStyles = new ArrayList<Rule>(); - /** * Maps objects (expressed in Java code) to event listener classes (e.g. MouseListener) to Lists of EventHandlers. The final list * contains all event handlers of a particular type attached to a particular object (again, as represented by a Java expression). */ protected Map<String, Map<ClassDescriptor, List<EventHandler>>> eventHandlers = new HashMap<String, Map<ClassDescriptor, List<EventHandler>>>(); - - /** Maps of uniqued id for objects used in compiler */ + /** + * Maps of uniqued id for objects used in compiler + */ protected Map<Object, String> uniqueIds = new HashMap<Object, String>(); - - /** Map of event handler method names used in compiler */ + /** + * Map of event handler method names used in compiler + */ protected Map<EventHandler, String> eventHandlerMethodNames = new HashMap<EventHandler, String>(); - - /** ClassLoader which searches the user-specified class path in addition to the normal class path */ + /** + * ClassLoader which searches the user-specified class path in addition to the normal class path + */ protected ClassLoader classLoader; - /** * A list of Runnables which will be run after the first compilation pass. This is primarily used * to trigger the creation of CompiledObjects, which cannot be created during the first pass and must be * created in document order. */ protected List<Runnable> initializers = new ArrayList<Runnable>(); - - /** left brace matcher */ + /** + * left brace matcher + */ protected Matcher leftBraceMatcher = Pattern.compile("^(\\{)|[^\\\\](\\{)").matcher(""); - - /** right brace matcher */ + /** + * right brace matcher + */ protected Matcher rightBraceMatcher = Pattern.compile("^(\\})|[^\\\\](\\})").matcher(""); - - /** extra interfaces which can by passed to root object via the 'implements' attribute */ + /** + * extra interfaces which can by passed to root object via the 'implements' attribute + */ private String[] extraInterfaces; - - /** a flag to generate a abstract class */ + /** + * a flag to generate a abstract class + */ private boolean abstractClass; - - /** the possible generic type of the class */ + /** + * the possible generic type of the class + */ private String genericType; - - /** thepossible generic type of the super class */ + /** + * the possible generic type of the super class + */ private String superGenericType; - - /** Extra code to be added to the instance initializer. */ + /** + * Extra code to be added to the instance initializer. + */ protected StringBuffer initializer = new StringBuffer(); - - /** Extra code to be added at the end of the instance initializer. */ + /** + * Extra code to be added at the end of the instance initializer. + */ protected StringBuffer lateInitializer = new StringBuffer(); - - /** Extra code to be added to the class body. */ + /** + * Extra code to be added to the class body. + */ protected StringBuffer bodyCode = new StringBuffer(); - - /** Code to initialize data bindings. */ + /** + * Code to initialize data bindings. + */ protected StringBuffer initDataBindings = new StringBuffer(); - - /** Body of the applyDataBinding method. */ + /** + * Body of the applyDataBinding method. + */ protected StringBuffer applyDataBinding = new StringBuffer(); - - /** Body of the removeDataBinding method. */ + /** + * Body of the removeDataBinding method. + */ protected StringBuffer removeDataBinding = new StringBuffer(); - - /** Body of the processDataBinding method. */ + /** + * Body of the processDataBinding method. + */ protected StringBuffer processDataBinding = new StringBuffer(); - - /** true if a main() method has been declared in a script */ + /** + * true if a main() method has been declared in a script + */ protected boolean mainDeclared; - - /** the file to be generated */ + /** + * the file to be generated + */ protected JavaFile javaFile; - - - protected CompilerOptions options; - - /** Used for error reporting purposes, so we can report the right line number. */ + /** + * + */ + protected CompilerConfiguration configuration; + /** + * Used for error reporting purposes, so we can report the right line number. + */ protected Stack<Element> tagsBeingCompiled = new Stack<Element>(); - - /** Used for error reporting purposes, so we can report the right source file. */ + /** + * Used for error reporting purposes, so we can report the right source file. + */ protected Stack<File> sourceFiles = new Stack<File>(); - - /** Maps object ID strings to the objects themselves. These are created during the second compilation pass. */ + /** + * Maps object ID strings to the objects themselves. These are created during the second compilation pass. + */ protected Map<String, CompiledObject> objects = new LinkedHashMap<String, CompiledObject>(); - - /** Maps objects to their ID strings. These are created during the second compilation pass. */ + /** + * Maps objects to their ID strings. These are created during the second compilation pass. + */ protected Map<CompiledObject, String> ids = new LinkedHashMap<CompiledObject, String>(); - + /** + * + */ protected CompiledObjectDecorator defaultDecorator; - + /*---------------------------------------------------------------------------------*/ /*-- Constructor methods ----------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ + protected JAXXCompiler(ClassLoader classLoader) { - protected JAXXCompiler(ClassLoader classLoader, DefaultObjectHandler firstPassClassTagHandler, String... staticImports) { - this.firstPassClassTagHandler = firstPassClassTagHandler; - this.options = new CompilerOptions(); + this.firstPassClassTagHandler = new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(Object.class)); + this.configuration = new DefaultCompilerConfiguration(); this.classLoader = classLoader; - if (staticImports == null || staticImports.length == 0) { - staticImports = new String[0]; - } - this.staticImports = Arrays.asList(staticImports); +// this.staticImports = Arrays.asList(new String[]{ +// "java.awt.*", +// "java.awt.event.*", +// "java.beans.*", +// "java.io.*", +// "java.lang.*", +// "java.util.*", +// "javax.swing.*", +// "javax.swing.border.*", +// "javax.swing.event.*", +// "jaxx.runtime.swing.JAXXButtonGroup", +// "jaxx.runtime.swing.HBox", +// "jaxx.runtime.swing.VBox", +// "jaxx.runtime.swing.Table", +// "static org.nuiton.i18n.I18n._", +// "static jaxx.runtime.Util.createImageIcon" +// }); addImport("java.lang.*"); } @@ -245,42 +308,52 @@ public class JAXXCompiler { * @param baseDir classpath location * @param src location of file to compile * @param outputClassName the out file name - * @param options options to pass to javac - * @param firstPassClassTagHandler handler to use for first pass - * @param staticImports statics imports + * @param configuration configuration to pass to javac */ - protected JAXXCompiler(File baseDir, File src, String outputClassName, CompilerOptions options, DefaultObjectHandler firstPassClassTagHandler, String... staticImports) { + public JAXXCompiler(File baseDir, File src, String outputClassName, CompilerConfiguration configuration) { this.baseDir = baseDir; this.src = src; - this.firstPassClassTagHandler = firstPassClassTagHandler; - this.staticImports = Arrays.asList(staticImports); + this.firstPassClassTagHandler = new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(Object.class)); + this.staticImports = Arrays.asList(new String[]{ + "java.awt.*", + "java.awt.event.*", + "java.beans.*", + "java.io.*", + "java.lang.*", + "java.util.*", + "javax.swing.*", + "javax.swing.border.*", + "javax.swing.event.*", + "jaxx.runtime.swing.JAXXButtonGroup", + "jaxx.runtime.swing.HBox", + "jaxx.runtime.swing.VBox", + "jaxx.runtime.swing.Table", + "static org.nuiton.i18n.I18n._", + "static jaxx.runtime.Util.createImageIcon" + }); sourceFiles.push(src); this.outputClassName = outputClassName; - this.options = options; + this.configuration = configuration; addImport(outputClassName.substring(0, outputClassName.lastIndexOf(".") + 1) + "*"); - if (staticImports == null || staticImports.length == 0) { - staticImports = new String[]{"java.lang.*"}; - } for (Object staticImport : staticImports) { addImport((String) staticImport); } - // add extra imports from options - if (options.getExtraImports() != null) { - for (String extraImport : options.getExtraImports()) { + // add extra imports from configuration + if (configuration.getExtraImports() != null) { + for (String extraImport : configuration.getExtraImports()) { addImport(extraImport); } } - defaultDecorator = CompiledObjectDecorator.getDecorator(options.getDefaultDecoratorClass()); + defaultDecorator = CompiledObjectDecoratorManager.getDecorator(configuration.getDefaultDecoratorClass()); if (defaultDecorator == null) { - log.error("could not find default decorator : "+options.getDefaultDecoratorClass()); - throw new IllegalArgumentException("could not find default decorator : " + options.getDefaultDecoratorClass()); + log.error("could not find default decorator : " + configuration.getDefaultDecoratorClass()); + throw new IllegalArgumentException("could not find default decorator : " + configuration.getDefaultDecoratorClass()); } } /*---------------------------------------------------------------------------------*/ /*-- Initializer methods -----------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void runInitializers() { for (Runnable runnable : initializers) { if (log.isDebugEnabled()) { @@ -297,7 +370,6 @@ public class JAXXCompiler { initializers.clear(); } - /** * Registers a <code>Runnable</code> which will be executed after the first * compilation pass is complete. @@ -311,7 +383,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Compile methods --------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void compileFirstPass(final Element tag) throws IOException { tagsBeingCompiled.push(tag); @@ -322,13 +393,14 @@ public class JAXXCompiler { // resolve class tags into fully-qualified class name if (namespace != null && namespace.endsWith("*")) { String packageName = namespace.substring(0, namespace.length() - 1); - if (localName.startsWith(packageName)) // class name is fully-qualified already - { + if (localName.startsWith(packageName)) { + // class name is fully-qualified already fullClassName = TagManager.resolveClassName(localName, this); - } else { // namespace not included in class name, probably need the namespace to resolve + } else { + // namespace not included in class name, probably need the namespace to resolve fullClassName = TagManager.resolveClassName(packageName + localName, this); - if (fullClassName == null && !namespacePrefix) // it was just a default namespace, try again without using the namespace - { + if (fullClassName == null && !namespacePrefix) { + // it was just a default namespace, try again without using the namespace fullClassName = TagManager.resolveClassName(localName, this); } } @@ -336,7 +408,8 @@ public class JAXXCompiler { fullClassName = TagManager.resolveClassName(localName, this); } - if (fullClassName != null) { // we are definitely dealing with a class tag + if (fullClassName != null) { + // we are definitely dealing with a class tag addDependencyClass(fullClassName); namespace = fullClassName.substring(0, fullClassName.lastIndexOf(".") + 1) + "*"; if (symbolTable.getSuperclassName() == null) { @@ -369,7 +442,8 @@ public class JAXXCompiler { } if (handler == firstPassClassTagHandler) { final String finalClassName = fullClassName; - registerInitializer(new Runnable() { // register an initializer which will create the CompiledObject after pass 1 + registerInitializer(new Runnable() { + // register an initializer which will create the CompiledObject after pass 1 @Override public void run() { @@ -384,8 +458,7 @@ public class JAXXCompiler { if (handler != null) { try { handler.compileFirstPass(tag, this); - } - catch (CompilerException e) { + } catch (CompilerException e) { reportError(e); } } else { @@ -399,7 +472,6 @@ public class JAXXCompiler { } } - public void compileSecondPass(Element tag) throws IOException { tagsBeingCompiled.push(tag); @@ -425,11 +497,9 @@ public class JAXXCompiler { document = parseDocument(in); in.close(); compileFirstPass(document.getDocumentElement()); - } - catch (SAXParseException e) { + } catch (SAXParseException e) { reportError(e.getLineNumber(), "Invalid XML: " + e.getMessage()); - } - catch (SAXException e) { + } catch (SAXException e) { reportError(null, "Error parsing XML document: " + e); } } @@ -444,7 +514,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- CompiledObject methods -------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void openComponent(CompiledObject component) throws CompilerException { openComponent(component, null); } @@ -504,7 +573,6 @@ public class JAXXCompiler { return objects.get(id); } - public boolean inlineCreation(CompiledObject object) { return object.getId().startsWith("$") && object.getInitializationCode(this).length() < INLINE_THRESHOLD; } @@ -526,8 +594,7 @@ public class JAXXCompiler { object.setOverride(true); object.setOverrideType(f.getType()); break; - } - catch (NoSuchFieldException e) { + } catch (NoSuchFieldException e) { ancestor = ancestor.getSuperclass(); } } @@ -536,7 +603,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- DataBinding methods ----------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - /** * Examine an attribute value for data binding expressions. Returns a 'cooked' expression which * can be used to determine the resulting value. It is expected that this expression will be used @@ -546,7 +612,7 @@ public class JAXXCompiler { * @param stringValue the string value of the property from the XML * @param type the type of the property, from the <code>JAXXPropertyDescriptor</code> * @return a processed version of the expression - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ public String processDataBindings(String stringValue, ClassDescriptor type) throws CompilerException { int pos = getNextLeftBrace(stringValue, 0); @@ -596,13 +662,11 @@ public class JAXXCompiler { return null; } - public void registerDataBinding(String src, String dest, String assignment) { try { src = checkJavaCode(src); dataBindings.add(new DataBinding(src, dest, assignment, this)); - } - catch (CompilerException e) { + } catch (CompilerException e) { reportError("While parsing data binding for '" + dest.substring(dest.lastIndexOf(".") + 1) + "': " + e.getMessage()); } } @@ -626,13 +690,13 @@ public class JAXXCompiler { public String getEventHandlerMethodName(EventHandler handler) { String result = eventHandlerMethodNames.get(handler); if (result == null) { - if (getOptions().isOptimize()) { + if (getConfiguration().isOptimize()) { result = "$ev" + eventHandlerMethodNames.size(); } else { //TC-20090309 must get the goal property from the event id // to make possible inheritance - String id = handler.getEventId().substring(0,handler.getEventId().indexOf(".")); - + String id = handler.getEventId().substring(0, handler.getEventId().indexOf(".")); + result = "do" + org.apache.commons.lang.StringUtils.capitalize(handler.getListenerMethod().getName()) + "__on__" + id; //result = "do" + org.apache.commons.lang.StringUtils.capitalize(handler.getListenerMethod().getName()) + "__on__" + handler.getObjectCode(); } @@ -644,7 +708,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Script methods ---------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void addScriptField(FieldDescriptor field) { symbolTable.getScriptFields().add(field); } @@ -685,7 +748,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- StyleSheet methods -----------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void applyStylesheets() { for (Object o : new ArrayList<CompiledObject>(objects.values())) { CompiledObject object = (CompiledObject) o; @@ -708,7 +770,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Report methods ---------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void reportWarning(String warning) { Element currentTag = null; if (!tagsBeingCompiled.isEmpty()) { @@ -717,7 +778,6 @@ public class JAXXCompiler { reportWarning(currentTag, warning, 0); } - public void reportWarning(Element tag, String warning, int lineOffset) { String lineNumber = null; if (tag != null) { @@ -729,8 +789,7 @@ public class JAXXCompiler { File srcFile = sourceFiles.peek(); try { srcFile = srcFile.getCanonicalFile(); - } - catch (IOException e) { + } catch (IOException e) { // ignore ? } @@ -742,7 +801,6 @@ public class JAXXCompiler { JAXXCompilerLaunchor.get().warningCount++; } - public void reportError(String error) { Element currentTag = null; if (!tagsBeingCompiled.isEmpty()) { @@ -795,8 +853,7 @@ public class JAXXCompiler { if (errorFile != null) { errorFile = errorFile.getCanonicalFile(); } - } - catch (IOException e) { + } catch (IOException e) { // ignore ? } @@ -812,7 +869,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Getter methods ---------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public Map<String, CompiledObject> getObjects() { return objects; } @@ -822,15 +878,14 @@ public class JAXXCompiler { } /*public List<CompiledBeanValidator> getValidators() { - return validators; + return validators; }*/ - public Map<String, Map<ClassDescriptor, List<EventHandler>>> getEventHandlers() { return eventHandlers; } - public CompilerOptions getOptions() { - return options; + public CompilerConfiguration getConfiguration() { + return configuration; } public String getOutputClassName() { @@ -889,10 +944,10 @@ public class JAXXCompiler { } public MethodDescriptor getScriptMethod(String methodName) { - for (MethodDescriptor m :symbolTable.getScriptMethods()) { - if (methodName.equals(m.getName())) { - return m; - } + for (MethodDescriptor m : symbolTable.getScriptMethods()) { + if (methodName.equals(m.getName())) { + return m; + } } return null; } @@ -909,24 +964,24 @@ public class JAXXCompiler { */ public ClassLoader getClassLoader() { if (classLoader == null) { - if (options.getClassLoader() != null) { - classLoader = options.getClassLoader(); + if (configuration.getClassLoader() != null) { + classLoader = configuration.getClassLoader(); } else { - String classPath = options.getClassPath(); - if (classPath == null) { - classPath = "."; - } - String[] paths = classPath.split(File.pathSeparator); - URL[] urls = new URL[paths.length]; - for (int i = 0; i < paths.length; i++) { - try { - urls[i] = new File(paths[i]).toURI().toURL(); - } - catch (MalformedURLException e) { - throw new RuntimeException(e); - } - } - classLoader = new URLClassLoader(urls, getClass().getClassLoader()); + throw new NullPointerException("compiler configuration requires a classLoader! :\n" + configuration); +// String classPath = configuration.getClassPath(); +// if (classPath == null) { +// classPath = "."; +// } +// String[] paths = classPath.split(File.pathSeparator); +// URL[] urls = new URL[paths.length]; +// for (int i = 0; i < paths.length; i++) { +// try { +// urls[i] = new File(paths[i]).toURI().toURL(); +// } catch (MalformedURLException e) { +// throw new RuntimeException(e); +// } +// } +// classLoader = new URLClassLoader(urls, getClass().getClassLoader()); } } @@ -945,7 +1000,8 @@ public class JAXXCompiler { CompiledObject parent = components[i].getParent(); while (parent != null) { boolean found = false; - for (int j = i + 1; j < components.length; j++) { // found parent after component, swap them + for (int j = i + 1; j < components.length; j++) { + // found parent after component, swap them if (components[j] == parent) { components[j] = components[i]; components[i] = parent; @@ -967,7 +1023,8 @@ public class JAXXCompiler { } } } - descriptors[i] = new ComponentDescriptor(components[i].getId(), components[i] == root ? outputClassName : components[i].getObjectClass().getName(), + descriptors[i] = new ComponentDescriptor( + components[i].getId(), components[i] == root ? outputClassName : components[i].getObjectClass().getName(), components[i].getStyleClass(), parentIndex != -1 ? descriptors[parentIndex] : null); } @@ -982,7 +1039,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Setter methods ---------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void setFailed(boolean failed) { this.failed = failed; } @@ -990,7 +1046,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Buffer ------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public StringBuffer getInitializer() { return initializer; } @@ -1084,7 +1139,6 @@ public class JAXXCompiler { /*---------------------------------------------------------------------------------*/ /*-- Other methods ----------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ - public void addImport(String text) { if (text.endsWith("*")) { importedPackages.add(text.substring(0, text.length() - 1)); @@ -1098,6 +1152,7 @@ public class JAXXCompiler { } public void addDependencyClass(String className) { + if (!JAXXCompilerLaunchor.get().jaxxFileClassNames.contains(className)) { URL jaxxURL = getClassLoader().getResource(className.replace('.', '/') + ".jaxx"); URL classURL = getClassLoader().getResource(className.replace('.', '/') + ".class"); @@ -1108,8 +1163,7 @@ public class JAXXCompiler { if (classFile.lastModified() > jaxxFile.lastModified()) { return; // class file is newer, no need to recompile } - } - catch (Exception e) { + } catch (Exception e) { // do nothing } } @@ -1118,8 +1172,7 @@ public class JAXXCompiler { File jaxxFile = URLtoFile(jaxxURL); try { jaxxFile = jaxxFile.getCanonicalFile(); - } - catch (IOException ex) { + } catch (IOException ex) { // ignore ? } assert jaxxFile.getName().equalsIgnoreCase(className.substring(className.lastIndexOf(".") + 1) + ".jaxx") : @@ -1141,7 +1194,7 @@ public class JAXXCompiler { * * @param javaCode the Java code snippet to test * @return a "cooked" version of the string which has enclosing curly braces removed. - * @throws jaxx.CompilerException if the code cannot be parsed + * @throws CompilerException if the code cannot be parsed */ public String checkJavaCode(String javaCode) { javaCode = scriptManager.trimScript(javaCode); @@ -1265,7 +1318,7 @@ public class JAXXCompiler { } public String getAutoId(ClassDescriptor objectClass) { - if (options.getOptimize()) { + if (configuration.getOptimize()) { return "$" + Integer.toString(autogenID++, 36); } else { String name = objectClass.getName(); @@ -1328,8 +1381,8 @@ public class JAXXCompiler { public void generateCode(Iterable<Generator> generatorIterator) throws IOException { File dest; - if (getOptions().getTargetDirectory() != null) { - dest = new File(getOptions().getTargetDirectory(), getOutputClassName().replace('.', File.separatorChar) + ".java"); + if (getConfiguration().getTargetDirectory() != null) { + dest = new File(getConfiguration().getTargetDirectory(), getOutputClassName().replace('.', File.separatorChar) + ".java"); } else { dest = new File(getBaseDir(), getOutputClassName().substring(getOutputClassName().lastIndexOf(".") + 1) + ".java"); } @@ -1369,7 +1422,6 @@ public class JAXXCompiler { throw new CompilerException(e); } } - /** line separator cached value */ protected static String lineSeparator = System.getProperty("line.separator", "\n"); @@ -1471,8 +1523,7 @@ public class JAXXCompiler { } try { return new File(URLDecoder.decode(urlString.replace('/', File.separatorChar), "utf-8")); - } - catch (UnsupportedEncodingException e) { + } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } @@ -1484,11 +1535,9 @@ public class JAXXCompiler { SAXParser parser; parser = factory.newSAXParser(); return parser; - } - catch (SAXException e) { + } catch (SAXException e) { throw new RuntimeException(e); - } - catch (ParserConfigurationException e) { + } catch (ParserConfigurationException e) { throw new RuntimeException(e); } } @@ -1498,6 +1547,7 @@ public class JAXXCompiler { TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(); transformer.setErrorListener(new ErrorListener() { + @Override public void warning(TransformerException ex) throws TransformerException { throw ex; @@ -1516,6 +1566,7 @@ public class JAXXCompiler { DOMResult result = new DOMResult(); transformer.transform(new SAXSource(new XMLFilterImpl(getSAXParser().getXMLReader()) { + Locator locator; @Override @@ -1531,11 +1582,9 @@ public class JAXXCompiler { } }, new InputSource(in)), result); return (Document) result.getNode(); - } - catch (TransformerConfigurationException e) { + } catch (TransformerConfigurationException e) { throw new RuntimeException(e); - } - catch (TransformerException e) { + } catch (TransformerException e) { Throwable ex = e; while (ex.getCause() != null) { ex = ex.getCause(); diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompilerLaunchor.java b/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompilerLaunchor.java index cacc54a..7d548c7 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompilerLaunchor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompilerLaunchor.java @@ -1,9 +1,7 @@ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.spi.Initializer; -import jaxx.tags.DefaultObjectHandler; +import jaxx.compiler.generators.Generator; +import jaxx.compiler.spi.Initializer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -16,6 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.ServiceLoader; +import jaxx.compiler.generators.GeneratorManager; /** @author chemit */ public class JAXXCompilerLaunchor { @@ -53,10 +52,10 @@ public class JAXXCompilerLaunchor { * * @param base the directory against which to resolve relative paths * @param relativePaths a list of relative paths to .jaxx files being compiled - * @param options the compiler options to use + * @param configuration the compiler configuration to use * @return the new instanciated launchor */ - public static synchronized JAXXCompilerLaunchor newLaunchor(File base, String[] relativePaths, CompilerOptions options) { + public static synchronized JAXXCompilerLaunchor newLaunchor(File base, String[] relativePaths, CompilerConfiguration configuration) { File[] files = new File[relativePaths.length]; String[] classNames = new String[relativePaths.length]; for (int i = 0; i < files.length; i++) { @@ -67,7 +66,7 @@ public class JAXXCompilerLaunchor { classNames[i] = classNames[i].replace('\\', '.'); classNames[i] = classNames[i].replace(':', '.'); } - return newLaunchor(files, classNames, options); + return newLaunchor(files, classNames, configuration); } /** @@ -78,14 +77,14 @@ public class JAXXCompilerLaunchor { * * @param files the .jaxx files to compile * @param classNames the names of the classes being compiled - * @param options the compiler options to use + * @param configuration the compiler configuration to use * @return the new instanciated launchor */ - public static synchronized JAXXCompilerLaunchor newLaunchor(File[] files, String[] classNames, CompilerOptions options) { + public static synchronized JAXXCompilerLaunchor newLaunchor(File[] files, String[] classNames, CompilerConfiguration configuration) { if (singleton != null) { singleton.reset(); } - singleton = new JAXXCompilerLaunchor(files, classNames, options); + singleton = new JAXXCompilerLaunchor(files, classNames, configuration); return singleton; } @@ -124,8 +123,8 @@ public class JAXXCompilerLaunchor { initializer.initialize(); } } - /** options of the launchor and underlines compilers */ - protected CompilerOptions options; + /** configuration of the launchor and underlines compilers */ + protected CompilerConfiguration configuration; /** original list of files to compile */ protected final File[] files; /** original list of classes to compile */ @@ -144,14 +143,14 @@ public class JAXXCompilerLaunchor { protected int compilerCount; protected JAXXProfile profiler; - protected JAXXCompilerLaunchor(File[] files, String[] classNames, CompilerOptions options) { - this.options = options == null ? new CompilerOptions() : options; + protected JAXXCompilerLaunchor(File[] files, String[] classNames, CompilerConfiguration options) { + this.configuration = options == null ? new DefaultCompilerConfiguration() : options; this.files = files; this.classNames = classNames; - if (this.options.isVerbose()) { + if (this.configuration.isVerbose()) { log.info("files : " + Arrays.toString(files)); } - if (this.options.isProfile()) { + if (this.configuration.isProfile()) { profiler = new JAXXProfile(); } } @@ -173,7 +172,7 @@ public class JAXXCompilerLaunchor { } public String getVersion() { - return "1.0.4"; + return "2.0.0"; } /** @@ -192,7 +191,7 @@ public class JAXXCompilerLaunchor { * @return the compiler */ public static JAXXCompiler createDummyCompiler(ClassLoader classLoader) { - return new JAXXCompiler(classLoader, new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(Object.class))) { + return new JAXXCompiler(classLoader) { }; } @@ -262,7 +261,7 @@ public class JAXXCompilerLaunchor { throw new CompilerException("Internal error: " + className + " is already being compiled, attempting to compile it again"); } - File destDir = options.getTargetDirectory(); + File destDir = configuration.getTargetDirectory(); if (destDir != null) { int dotPos = className.lastIndexOf("."); if (dotPos != -1) { @@ -342,10 +341,7 @@ public class JAXXCompilerLaunchor { return false; } assert jaxxFiles.size() == jaxxFileClassNames.size(); - List<Generator> generators = new ArrayList<Generator>(); - for (Generator generator : ServiceLoader.load(Generator.class)) { - generators.add(generator); - } + List<Generator> generators = GeneratorManager.getGenerators(); for (String className : jaxxFileClassNames) { JAXXCompiler compiler = getCompiler(className, "Internal error: could not find compiler for " + className + " during code generation"); addProfileTime(compiler, currentPass.name() + "_start"); @@ -357,7 +353,7 @@ public class JAXXCompilerLaunchor { } } - if (options.isProfile()) { + if (configuration.isProfile()) { // profile pass (only if succes compile) if (!nextStep(LifeCycle.profile_pass, success)) { return false; @@ -379,7 +375,7 @@ public class JAXXCompilerLaunchor { } finally { compilerCount = compilers.size(); //TC - 20081018 only reset when no error was detected - if (options.isResetAfterCompile() && errorCount == 0) { + if (configuration.isResetAfterCompile() && errorCount == 0) { reset(); } } @@ -420,8 +416,8 @@ public class JAXXCompilerLaunchor { } protected JAXXCompiler newCompiler(File parentFile, File file, String className) throws InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchMethodException { - Constructor<? extends JAXXCompiler> cons = options.getCompilerClass().getConstructor(File.class, File.class, String.class, CompilerOptions.class); - return cons.newInstance(parentFile, file, className, options); + Constructor<? extends JAXXCompiler> cons = configuration.getCompilerClass().getConstructor(File.class, File.class, String.class, CompilerConfiguration.class); + return cons.newInstance(parentFile, file, className, configuration); } public static void addProfileTime(JAXXCompiler compiler, String key) { @@ -430,22 +426,4 @@ public class JAXXCompilerLaunchor { p.addTime(compiler, key); } } - - protected static void showUsage() { - System.out.println("Usage: jaxxc <options> <source files>"); - System.out.println(); - System.out.println("Source files must end in extension .jaxx"); - System.out.println("Use JAXX_OPTS environment variable to pass arguments to Java runtime"); - System.out.println(); - System.out.println("Supported options include:"); - System.out.println(" -classpath <paths> paths to search for user classes"); - System.out.println(" -cp <paths> same as -classpath"); - System.out.println(" -d <directory> target directory for generated class files"); - System.out.println(" -java or -j produce .java files, but do not compile them"); - System.out.println(" -keep or -k preserve generated .java files after compilation"); - System.out.println(" -optimize or -o optimize during compilation"); - System.out.println(" -version display version information"); - System.out.println(); - System.out.println("See http://www.jaxxframework.org/ for full documentation."); - } } diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXObjectGenerator.java b/jaxx-compiler/src/main/java/jaxx/compiler/JAXXObjectGenerator.java deleted file mode 100644 index 5d3e8b0..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JAXXObjectGenerator.java +++ /dev/null @@ -1,598 +0,0 @@ -package jaxx.compiler; - -import jaxx.Base64Coder; -import jaxx.CompilerException; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXObject; -import jaxx.runtime.JAXXObjectDescriptor; -import jaxx.types.TypeManager; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.io.IOException; -import java.lang.reflect.Modifier; -import static java.lang.reflect.Modifier.FINAL; -import static java.lang.reflect.Modifier.PROTECTED; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * This class is a refactoring of the {@link jaxx.compiler.JAXXCompiler}. - * <p/> - * We delegate now the generation of a {@link jaxx.runtime.JAXXObject} to this class, the - * {@link jaxx.compiler.JAXXCompiler} now only deals with the compilation of files. - * - * @author chemit - */ -public class JAXXObjectGenerator implements Generator { - - /** log */ - protected static final Log log = LogFactory.getLog(JAXXObjectGenerator.class); - protected static final JavaField ACTIVE_BINDINGS_FIELD = JavaField.newField(PROTECTED, - "java.util.List<Object>", "$activeBindings", "new ArrayList<Object>()"); - protected static final JavaField BINDING_SOURCES_FIELD = JavaField.newField(PROTECTED, - "java.util.Map<String,Object>", "$bindingSources", "new HashMap<String,Object>()"); - protected static final JavaField OBJECT_MAP_FIELD = JavaField.newField(PROTECTED, - "Map<String,Object>", "$objectMap", "new HashMap<String,Object>()"); - protected static final JavaField ALL_COMPONENTS_CREATED_FIELD = JavaField.newField(java.lang.reflect.Modifier.PRIVATE, - "boolean", "allComponentsCreated"); - protected static final JavaField CONTEXT_INITIALIZED = JavaField.newField(java.lang.reflect.Modifier.PRIVATE, - "boolean", "contextInitialized", "true"); - protected static final JavaField PREVIOUS_VALUES_FIELD = JavaField.newField(0, - "java.util.Map", "$previousValues", "new java.util.HashMap()"); - protected static final JavaField DELEGATE_CONTEXT_FIELD = JavaField.newField(PROTECTED, - "jaxx.runtime.JAXXContext", "delegateContext"); - protected static final JavaField PROPERTY_CHANGE_SUPPORT_FIELD = JavaField.newField(0, - "java.beans.PropertyChangeSupport", "$propertyChangeSupport"); - protected static final JavaMethod GET_CONTEXT_VALUE_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> T", "getContextValue", - "return delegateContext.getContextValue(clazz, null);", - new JavaArgument("Class<T>", "clazz")); - protected static final JavaMethod GET_CONTEXT_VALUE_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> T", "getContextValue", - "return delegateContext.getContextValue(clazz, name);", - new JavaArgument("Class<T>", "clazz"), new JavaArgument("String", "name")); - protected static final JavaMethod SET_CONTEXT_VALUE_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> void", "setContextValue", - "delegateContext.setContextValue(o, name);", - new JavaArgument("T", "o"), new JavaArgument("String", "name")); - protected static final JavaMethod SET_CONTEXT_VALUE_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> void", "setContextValue", - "delegateContext.setContextValue(o, null);", - new JavaArgument("T", "o")); - protected static final JavaMethod REMOVE_CONTEXT_VALUE_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> void", "removeContextValue", - "delegateContext.removeContextValue(clazz, name);", - new JavaArgument("Class<T>", "clazz"), new JavaArgument("String", "name")); - protected static final JavaMethod REMOVE_CONTEXT_VALUE_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<T> void", "removeContextValue", - "delegateContext.removeContextValue(clazz, null);", - new JavaArgument("Class<T>", "clazz")); - protected static final JavaMethod GET_PARENT_CONTAINER_MORE_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<O extends Container> O", "getParentContainer", - "return delegateContext.getParentContainer(source, clazz);", - new JavaArgument("Object", "source"), new JavaArgument("Class<O>", "clazz")); - protected static final JavaMethod GET_PARENT_CONTAINER_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "<O extends Container> O", "getParentContainer", - "return delegateContext.getParentContainer(clazz);", - new JavaArgument("Class<O>", "clazz")); - protected static final JavaMethod GET_OBJECT_BY_ID_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "java.lang.Object", "getObjectById", - "return $objectMap.get(id);", - new JavaArgument("String", "id")); - protected static final JavaMethod GET_JAXX_OBJECT_DESCRIPTOR_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC | java.lang.reflect.Modifier.STATIC, "jaxx.runtime.JAXXObjectDescriptor", "$getJAXXObjectDescriptor", - "return jaxx.runtime.Util.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);"); - protected static final JavaMethod PROCESS_DATA_BINDING_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "processDataBinding", - "processDataBinding(dest, false);", - new JavaArgument("String", "dest")); - protected static final JavaMethod FIRE_PROPERTY_CHANGE_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "firePropertyChange", - "super.firePropertyChange(propertyName, oldValue, newValue);", - new JavaArgument("String", "propertyName"), new JavaArgument("Object", "oldValue"), new JavaArgument("Object", "newValue")); - protected static final JavaMethod FIRE_PROPERTY_CHANGE_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "firePropertyChange", - "$getPropertyChangeSupport().firePropertyChange(propertyName, oldValue, newValue);", - new JavaArgument("String", "propertyName"), new JavaArgument("Object", "oldValue"), new JavaArgument("Object", "newValue")); - protected static final JavaMethod GET_PROPERTY_CHANGE_SUPPORT_METHOD = JavaMethod.newMethod(0, "java.beans.PropertyChangeSupport", "$getPropertyChangeSupport", - "if ($propertyChangeSupport == null)\n" + - " $propertyChangeSupport = new PropertyChangeSupport(this);\n" + - "return $propertyChangeSupport;"); - protected static final JavaMethod ADD_PROPERTY_CHANGE_SUPPORT_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "addPropertyChangeListener", - "$getPropertyChangeSupport().addPropertyChangeListener(listener);", - new JavaArgument("java.beans.PropertyChangeListener", "listener")); - protected static final JavaMethod ADD_PROPERTY_CHANGE_SUPPORT_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "addPropertyChangeListener", - "$getPropertyChangeSupport().addPropertyChangeListener(property, listener);", - new JavaArgument("String", "property"), new JavaArgument("java.beans.PropertyChangeListener", "listener")); - protected static final JavaMethod REMOVE_PROPERTY_CHANGE_SUPPORT_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "removePropertyChangeListener", - "$getPropertyChangeSupport().removePropertyChangeListener(listener);", - new JavaArgument("java.beans.PropertyChangeListener", "listener")); - protected static final JavaMethod REMOVE_PROPERTY_CHANGE_SUPPORT_NAMED_METHOD = JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, "void", "removePropertyChangeListener", - "$getPropertyChangeSupport().removePropertyChangeListener(property, listener);", - new JavaArgument("String", "property"), new JavaArgument("java.beans.PropertyChangeListener", "listener")); - - @Override - public void finalizeCompiler(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) { - - String fullClassName = packageName != null ? packageName + "." + className : className; - if (root == null) { - throw new CompilerException("root tag must be a class tag"); - } - //Map<String, CompiledObject> objects = compiler.getObjects(); - ClassDescriptor superclass = root.getObjectClass(); - boolean superclassIsJAXXObject = ClassDescriptorLoader.getClassDescriptor(JAXXObject.class).isAssignableFrom(superclass); - javaFile.setModifiers(Modifier.PUBLIC); - javaFile.setClassName(fullClassName); - javaFile.setSuperClass(JAXXCompiler.getCanonicalName(superclass)); - javaFile.setSuperclassIsJAXXObject(superclassIsJAXXObject); - - javaFile.addInterfaces(compiler.getExtraInterfaces()); - javaFile.setAbstractClass(compiler.isAbstractClass()); - javaFile.setGenericType(compiler.getGenericType()); - javaFile.setSuperGenericType(compiler.getSuperGenericType()); - - for (CompiledObject object : compiler.getObjects().values()) { - CompiledObjectDecorator decorator = object.getDecorator(); - decorator.finalizeCompiler(compiler, root, object, javaFile, packageName, className, fullClassName); - - /*if (!object.isOverride() && !(object instanceof ScriptInitializer)) { - String id = object.getId(); - int access = id.startsWith("$") ? Modifier.PRIVATE : Modifier.PROTECTED; - if (object == root) { - javaFile.addField(new JavaField(access, fullClassName, id, "this")); - } else { - //TC -20081017 can have generic on compiled Object - javaFile.addField(JavaField.newField(access, JAXXCompiler.getCanonicalName(object), id), object.isJavaBean()); - } - } - - if (!compiler.inlineCreation(object) && object != root) { - javaFile.addMethod(JavaMethod.newMethod(Modifier.PROTECTED, "void", object.getCreationMethodName(), getCreationCode(compiler, object))); - }*/ - } - - // DataBinding - for (DataBinding dataBinding : compiler.getDataBindings()) { - if (dataBinding.compile(true)) { - compiler.getInitDataBindings().append("applyDataBinding(").append(TypeManager.getJavaCode(dataBinding.getId())).append(");").append(JAXXCompiler.getLineSeparator()); - } - } - - if (superclassIsJAXXObject) { - boolean hasBind = compiler.getApplyDataBinding().length() > 0; - if (hasBind) { - compiler.appendApplyDataBinding(" else {"); - compiler.appendApplyDataBinding(JAXXCompiler.getLineSeparator()); - compiler.appendApplyDataBinding(" "); - } - compiler.appendApplyDataBinding("super.applyDataBinding($binding);"); - compiler.appendApplyDataBinding(JAXXCompiler.getLineSeparator()); - - if (hasBind) { - compiler.appendApplyDataBinding(" return;"); - compiler.appendApplyDataBinding(JAXXCompiler.getLineSeparator()); - compiler.appendApplyDataBinding("}"); - } - - - hasBind = compiler.getRemoveDataBinding().length() > 0; - if (hasBind) { - compiler.appendRemoveDataBinding(" else {"); - compiler.appendRemoveDataBinding(JAXXCompiler.getLineSeparator()); - compiler.appendRemoveDataBinding(" "); - } - compiler.appendRemoveDataBinding("super.removeDataBinding($binding);"); - compiler.appendRemoveDataBinding(JAXXCompiler.getLineSeparator()); - - if (hasBind) { - compiler.appendRemoveDataBinding("}"); - } - } else { - javaFile.addInterface(JAXXCompiler.getCanonicalName(JAXXObject.class)); - } - } - - @Override - public void prepareJavaFile(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) throws ClassNotFoundException { - - String fullClassName = javaFile.getClassName(); - - String jaxxContextImplementorClass = compiler.getOptions().getJaxxContextImplementorClass(); - boolean superclassIsJAXXObject = javaFile.isSuperclassIsJAXXObject(); - if (!superclassIsJAXXObject) { - // add logger - if (compiler.getOptions().isAddLogger()) { - javaFile.addImport(Log.class); - javaFile.addImport(LogFactory.class); - javaFile.addField(JavaField.newField(Modifier.PUBLIC + Modifier.STATIC + FINAL, "Log", "log", "LogFactory.getLog(" + fullClassName + ".class)")); - } - - // JAXXObject - javaFile.addField(OBJECT_MAP_FIELD); - javaFile.addMethod(GET_OBJECT_BY_ID_METHOD); - javaFile.addField(BINDING_SOURCES_FIELD); - javaFile.addField(ACTIVE_BINDINGS_FIELD); - - // JAXXContext - javaFile.addField(JavaField.newField(PROTECTED | FINAL, JAXXContext.class.getName(), "delegateContext", "new " + jaxxContextImplementorClass + "(this);")); - javaFile.addMethod(SET_CONTEXT_VALUE_METHOD); - javaFile.addMethod(SET_CONTEXT_VALUE_NAMED_METHOD); - javaFile.addMethod(GET_CONTEXT_VALUE_METHOD); - javaFile.addMethod(GET_CONTEXT_VALUE_NAMED_METHOD); - javaFile.addMethod(REMOVE_CONTEXT_VALUE_METHOD); - javaFile.addMethod(REMOVE_CONTEXT_VALUE_NAMED_METHOD); - javaFile.addMethod(GET_PARENT_CONTAINER_METHOD); - javaFile.addMethod(GET_PARENT_CONTAINER_MORE_METHOD); - - // PropertyChangeSupport - addPropertyChangeSupport(root, javaFile); - - // DataBinding - javaFile.addMethod(PROCESS_DATA_BINDING_METHOD); - } - - javaFile.addField(ALL_COMPONENTS_CREATED_FIELD); - boolean overrideContextInitialized = false; - FieldDescriptor[] scriptFields = compiler.getScriptFields(); - for (FieldDescriptor f : scriptFields) { - if ("contextInitialized".equals(f.getName())) { - overrideContextInitialized = true; - break; - } - } - if (!overrideContextInitialized) { - javaFile.addField(CONTEXT_INITIALIZED); - } - javaFile.addField(createJAXXObjectDescriptorField(compiler, javaFile)); - - if (compiler.getStylesheet() != null) { - javaFile.addField(PREVIOUS_VALUES_FIELD); - } - /*for (CompiledObject object : compiler.getObjects().values()) { - List<CompiledObject.ChildRef> refList = object.getChilds(); - if (refList==null || refList.isEmpty()) { - continue; - } - for (ChildRef childRef : refList) { - childRef.addToAdditionCode(buffer); - } - }*/ - //TC 20090228 - only generate constructors if not done in scripts - boolean constructorDetected = false; - MethodDescriptor[] methods = compiler.getScriptMethods(); - for (MethodDescriptor m : methods) { - try { - m.getReturnType(); - if (className.equals(m.getName())) { - constructorDetected = true; - break; - } - } catch (Exception e) { - log.warn("could not find return type " + m); - } - } - if (!constructorDetected) { - javaFile.addMethod(createConstructor(compiler, className, superclassIsJAXXObject)); - javaFile.addMethod(createConstructorWithInitialContext(compiler, className, superclassIsJAXXObject)); - } - - javaFile.addMethod(createInitializer(compiler)); - javaFile.addMethod(GET_JAXX_OBJECT_DESCRIPTOR_METHOD); - - javaFile.addBodyCode(compiler.getBodyCode().toString()); - - javaFile.addMethod(createCompleteSetupMethod(compiler, javaFile, compiler.getInitDataBindings())); - - - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC, "void", "applyDataBinding", - compiler.getApplyDataBinding().toString() + JAXXCompiler.getLineSeparator() + "processDataBinding($binding);", - new JavaArgument("String", "$binding"))); - - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC, "void", "removeDataBinding", - compiler.getRemoveDataBinding().toString(), new JavaArgument("String", "$binding"))); - - javaFile.addMethod(createProcessDataBindingMethod(compiler, superclassIsJAXXObject)); - - addEventHandlers(compiler, javaFile); - - } - - - /*---------------------------------------------------------------------------------*/ - /*-- Create fields ----------------------------------------------------------------*/ - /*---------------------------------------------------------------------------------*/ - protected JavaField createJAXXObjectDescriptorField(JAXXCompiler compiler, JavaFile javaFile) { - try { - JAXXObjectDescriptor descriptor = compiler.getJAXXObjectDescriptor(); - String data = Base64Coder.serialize(descriptor, true); - /*ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(new GZIPOutputStream(buffer)); - out.writeObject(descriptor); - out.close(); - // the use of the weird deprecated constructor is deliberate -- we need to store the data as a String - // in the compiled class file, since byte array initialization is horribly inefficient compared to - // String initialization. So we store the bytes in the String, and we quite explicitly want a 1:1 - // mapping between bytes and chars, with the high byte of the char set to zero. We can then safely - // reconstitute the original byte[] at a later date. This is unquestionably an abuse of the String - // type, but if we could efficiently store a byte[] we wouldn't have to do this. - String data = new String(buffer.toByteArray(), 0);*/ - - int sizeLimit = 65000; // constant strings are limited to 64K, and I'm not brave enough to push right up to the limit - if (data.length() < sizeLimit) { - return JavaField.newField(Modifier.PRIVATE | Modifier.STATIC, "java.lang.String", "$jaxxObjectDescriptor", TypeManager.getJavaCode(data)); - } else { - StringBuffer initializer = new StringBuffer(); - for (int i = 0; i < data.length(); i += sizeLimit) { - String name = "$jaxxObjectDescriptor" + i; - javaFile.addField(new JavaField(Modifier.PRIVATE | Modifier.STATIC, "java.lang.String", name, - TypeManager.getJavaCode(data.substring(i, Math.min(i + sizeLimit, data.length()))))); - if (initializer.length() > 0) { - initializer.append(" + "); - } - initializer.append("String.valueOf(").append(name).append(")"); - } - return JavaField.newField(Modifier.PRIVATE | Modifier.STATIC, "java.lang.String", "$jaxxObjectDescriptor", initializer.toString()); - } - } catch (IOException e) { - throw new RuntimeException("Internal error: can't-happen error", e); - } - } - - /*---------------------------------------------------------------------------------*/ - /*-- Create methods ---------------------------------------------------------------*/ - /*---------------------------------------------------------------------------------*/ - protected void addPropertyChangeSupport(CompiledObject root, JavaFile javaFile) { - ClassDescriptor currentClass = root.getObjectClass(); - MethodDescriptor firePropertyChange = null; - while (firePropertyChange == null && currentClass != null) { - try { - firePropertyChange = currentClass.getDeclaredMethodDescriptor("firePropertyChange", ClassDescriptorLoader.getClassDescriptor(String.class), - ClassDescriptorLoader.getClassDescriptor(Object.class), - ClassDescriptorLoader.getClassDescriptor(Object.class)); - - } catch (NoSuchMethodException e) { - currentClass = currentClass.getSuperclass(); - } - } - - int modifiers = firePropertyChange != null ? firePropertyChange.getModifiers() : 0; - if (Modifier.isPublic(modifiers)) { - // we have all the support we need - } - if (Modifier.isProtected(modifiers)) { - // there is property change support but the firePropertyChange method is protected - javaFile.addMethod(FIRE_PROPERTY_CHANGE_METHOD); - } else { - // either no support at all or firePropertyChange isn't accessible - javaFile.addField(PROPERTY_CHANGE_SUPPORT_FIELD); - javaFile.addMethod(GET_PROPERTY_CHANGE_SUPPORT_METHOD); - javaFile.addMethod(ADD_PROPERTY_CHANGE_SUPPORT_METHOD); - javaFile.addMethod(ADD_PROPERTY_CHANGE_SUPPORT_NAMED_METHOD); - javaFile.addMethod(REMOVE_PROPERTY_CHANGE_SUPPORT_METHOD); - javaFile.addMethod(REMOVE_PROPERTY_CHANGE_SUPPORT_NAMED_METHOD); - javaFile.addMethod(FIRE_PROPERTY_CHANGE_NAMED_METHOD); - } - } - - protected void addEventHandlers(JAXXCompiler compiler, JavaFile javaFile) { - for (Map.Entry<String, Map<ClassDescriptor, List<EventHandler>>> e1 : compiler.getEventHandlers().entrySet()) { - // outer loop is iterating over different objects (well, technically, different Java expressions) - for (Map.Entry<ClassDescriptor, List<EventHandler>> e2 : e1.getValue().entrySet()) { - // iterate over different types of listeners for this particular object (MouseListener, ComponentListener, etc.) - for (EventHandler handler : e2.getValue()) { - // iterate over individual event handlers of a single type - String methodName = compiler.getEventHandlerMethodName(handler); - MethodDescriptor listenerMethod = handler.getListenerMethod(); - if (listenerMethod.getParameterTypes().length != 1) { - throw new CompilerException("Expected event handler " + listenerMethod.getName() + " of class " + handler.getListenerClass() + " to have exactly one argument"); - } - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC, "void", methodName, handler.getJavaCode(), - new JavaArgument(JAXXCompiler.getCanonicalName(listenerMethod.getParameterTypes()[0]), "event"))); - } - } - } - } - - protected JavaMethod createConstructor(JAXXCompiler compiler, String className, boolean superclassIsJAXXObject) throws CompilerException { - StringBuffer code = new StringBuffer(); - String constructorParams = compiler.getRootObject().getConstructorParams(); - if (constructorParams != null) { - code.append(" super(").append(constructorParams).append(");").append(JAXXCompiler.getLineSeparator()); - } else { - if (superclassIsJAXXObject) { - code.append(" super();").append(JAXXCompiler.getLineSeparator()); - } - } - code.append("$initialize();"); - code.append(JAXXCompiler.getLineSeparator()); - return JavaMethod.newMethod(Modifier.PUBLIC, null, className, code.toString()); - } - - protected JavaMethod createConstructorWithInitialContext(JAXXCompiler compiler, String className, boolean superclassIsJAXXObject) throws CompilerException { - StringBuffer code = new StringBuffer(); - String constructorParams = compiler.getRootObject().getConstructorParams(); - if (constructorParams != null) { - code.append(" super(").append(constructorParams).append(");").append(JAXXCompiler.getLineSeparator()); - } else { - if (superclassIsJAXXObject) { - code.append(" super(parentContext);").append(JAXXCompiler.getLineSeparator()); - } - } - if (!superclassIsJAXXObject) { - code.append("if (parentContext instanceof jaxx.runtime.JAXXInitialContext) {"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" ((jaxx.runtime.JAXXInitialContext)parentContext).to(this);"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("} else {"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" setContextValue(parentContext);"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("}"); - code.append(JAXXCompiler.getLineSeparator()); - } - code.append("$initialize();"); - code.append(JAXXCompiler.getLineSeparator()); - return JavaMethod.newMethod(Modifier.PUBLIC, null, className, code.toString(), new JavaArgument("jaxx.runtime.JAXXContext", "parentContext")); - } - - public JavaMethod createInitializer(JAXXCompiler compiler) throws CompilerException { - StringBuffer code = new StringBuffer(); - CompiledObject root = compiler.getRootObject(); - code.append("if (allComponentsCreated || !contextInitialized) {"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" return;"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("}"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("$objectMap.put(").append(TypeManager.getJavaCode(root.getId())).append(", this);"); - code.append(JAXXCompiler.getLineSeparator()); - - Iterator<CompiledObject> i = compiler.getObjectCreationOrder(); - boolean lastWasMethodCall = false; - while (i.hasNext()) { - CompiledObject object = i.next(); - if (object == root) { - continue; - } - CompiledObjectDecorator decorator = object.getDecorator(); - lastWasMethodCall = decorator.createInitializer(compiler, root, object, code, lastWasMethodCall); - /*if (object != root && !object.isOverride()) { - if (compiler.inlineCreation(object)) { - if (lastWasMethodCall) { - lastWasMethodCall = false; - code.append(JAXXCompiler.getLineSeparator()); - } - code.append(getCreationCode(compiler, object)); - code.append(JAXXCompiler.getLineSeparator()); - } else { - code.append(object.getCreationMethodName()).append("();"); - code.append(JAXXCompiler.getLineSeparator()); - lastWasMethodCall = true; - } - }*/ - } - root.getDecorator().createInitializer(compiler, root, root, code, lastWasMethodCall); - /*String rootCode = root.getInitializationCode(compiler); - if (rootCode != null && rootCode.length() > 0) { - code.append(rootCode); - code.append(JAXXCompiler.getLineSeparator()); - }*/ - code.append(JAXXCompiler.getLineSeparator()); - if (compiler.getInitializer().length() > 0) { - code.append(compiler.getInitializer()); - code.append(JAXXCompiler.getLineSeparator()); - } - code.append("$completeSetup();"); - code.append(JAXXCompiler.getLineSeparator()); - return JavaMethod.newMethod(Modifier.PRIVATE, "void", "$initialize", code.toString()); - } - - protected JavaMethod createCompleteSetupMethod(JAXXCompiler compiler, JavaFile javaFile, StringBuffer initDataBindings) { - StringBuffer code = new StringBuffer(); - code.append("allComponentsCreated = true;"); - code.append(JAXXCompiler.getLineSeparator()); - for (CompiledObject object : compiler.getObjects().values()) { - CompiledObjectDecorator decorator = object.getDecorator(); - code.append(decorator.createCompleteSetupMethod(compiler, object, javaFile, initDataBindings)); - - /*//TC - 20081017 only generate the method if not empty ? - if (object.getId().startsWith("$")) { - code.append(object.getAdditionCode()).append(JAXXCompiler.getLineSeparator()); - } else { - String additionCode = object.getAdditionCode(); - if (additionCode.length() > 0) { - code.append(object.getAdditionMethodName()).append("();").append(JAXXCompiler.getLineSeparator()); - additionCode = "if (!allComponentsCreated) {" + JAXXCompiler.getLineSeparator() + " return;" + JAXXCompiler.getLineSeparator() + "}" + JAXXCompiler.getLineSeparator() + additionCode; - javaFile.addMethod(JavaMethod.newMethod(Modifier.PROTECTED, "void", object.getAdditionMethodName(), additionCode)); - } - }*/ - //code.append(getLineSeparator()); - } - - code.append(initDataBindings); - - if (compiler.getLateInitializer().length() > 0) { - code.append(compiler.getLateInitializer()); - code.append(JAXXCompiler.getLineSeparator()); - } - //TC-20090313 add an extra method after complete setup - MethodDescriptor method = compiler.getScriptMethod("$afterCompleteSetup"); - if (method != null) { - code.append("$afterCompleteSetup();").append(JAXXCompiler.getLineSeparator()); - } - return JavaMethod.newMethod(Modifier.PRIVATE, "void", "$completeSetup", code.toString()); - } - - protected JavaMethod createProcessDataBindingMethod(JAXXCompiler compiler, boolean superclassIsJAXXObject) { - StringBuffer code = new StringBuffer(); - //boolean superclassIsJAXXObject = ClassDescriptorLoader.getClassDescriptor(JAXXObject.class).isAssignableFrom(compiler.getRootObject().getObjectClass()); - // the force parameter forces the update to happen even if it is already in activeBindings. This - // is used on superclass invocations b/c by the time the call gets to the superclass, it is already - // marked active and would otherwise be skipped - if (compiler.getProcessDataBinding().length() > 0) { - code.append(" if (!$force && $activeBindings.contains($dest)) { "); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" return;"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("}"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("$activeBindings.add($dest);"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("try {"); - code.append(JAXXCompiler.getLineSeparator()); - if (compiler.getProcessDataBinding().length() > 0) { - code.append(compiler.getProcessDataBinding().toString()); - //code.append(JAXXCompiler.getLineSeparator()); - } - if (superclassIsJAXXObject) { - code.append(" else {"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" super.processDataBinding($dest, true);"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" }"); - code.append(JAXXCompiler.getLineSeparator()); - } - code.append("} finally {"); - code.append(JAXXCompiler.getLineSeparator()); - code.append(" $activeBindings.remove($dest);"); - code.append(JAXXCompiler.getLineSeparator()); - code.append("}"); - code.append(JAXXCompiler.getLineSeparator()); - } else if (superclassIsJAXXObject) { - code.append("super.processDataBinding($dest, true);"); - code.append(JAXXCompiler.getLineSeparator()); - } - return JavaMethod.newMethod(Modifier.PUBLIC, "void", "processDataBinding", code.toString(), - new JavaArgument("String", "$dest"), new JavaArgument("boolean", "$force")); - } - - /*---------------------------------------------------------------------------------*/ - /*-- Create methods code ----------------------------------------------------------*/ - /*---------------------------------------------------------------------------------*/ - - /* protected String getCreationCode(JAXXCompiler compiler, CompiledObject object) throws CompilerException { - if (object instanceof ScriptInitializer) { - return object.getInitializationCode(compiler); - } - CompiledObjectDecorator decorator = object.getDecorator(); - String result = decorator.getCreationCode(compiler, object); - return result;*/ - /*StringBuffer result = new StringBuffer(); - result.append(object.getId()); - result.append(" = "); - if (object.isJavaBean() && object.getJavaBeanInitCode() != null) { - result.append(object.getJavaBeanInitCode()).append(";"); - } else { - String constructorParams = object.getConstructorParams(); - if (constructorParams != null) { - //TC - 20081017 compiledObject can have generics - result.append(" new ").append(JAXXCompiler.getCanonicalName(object)).append("(").append(constructorParams).append(");"); - //result.append("(").append(getCanonicalName(object.getObjectClass())).append(") new ").append(getCanonicalName(object.getObjectClass())).append("(").append(constructorParams).append(");"); - } else { - //TC - 20081017 compiledObject can have generics - result.append("new ").append(JAXXCompiler.getCanonicalName(object)).append("();"); - } - } - result.append(JAXXCompiler.getLineSeparator()); - String initCode = object.getInitializationCode(compiler); - if (initCode != null && initCode.length() > 0) { - result.append(initCode); - } - result.append("$objectMap.put(").append(TypeManager.getJavaCode(object.getId())).append(", ").append(object.getId()).append(");"); - - return result.toString();*/ -// } -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JavaArgument.java b/jaxx-compiler/src/main/java/jaxx/compiler/JavaArgument.java index 638e872..139d70d 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JavaArgument.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JavaArgument.java @@ -10,11 +10,11 @@ package jaxx.compiler; * @see JavaMethod */ public class JavaArgument { + private String name; private String type; private boolean isFinal; - /** * Creates a new <code>JavaArgument</code> with the specified name and type. For example, the method <code>main()</code> * might have a <code>JavaArgument</code> with a name of <code>"arg"</code> and a type of <code>"java.lang.String[]"</code>. @@ -26,7 +26,6 @@ public class JavaArgument { this(type, name, false); } - /** * Creates a new <code>JavaArgument</code> with the specified name, type, and finality. For example, the method <code>main()</code> * might have a <code>JavaArgument</code> with a name of <code>"arg"</code> and a type of <code>"java.lang.String[]"</code>. The @@ -42,7 +41,6 @@ public class JavaArgument { this.isFinal = isFinal; } - /** * Returns the argument's name. * @@ -52,7 +50,6 @@ public class JavaArgument { return name; } - /** * Returns the argument's type as it would be represented in Java source code. * @@ -62,7 +59,6 @@ public class JavaArgument { return type; } - /** * Returns <code>true</code> if the <code>final</code> keyword should appear before the argument. * @@ -72,7 +68,6 @@ public class JavaArgument { return isFinal; } - /** * Returns the Java source code for this argument. * @@ -83,4 +78,4 @@ public class JavaArgument { String result = type + ' ' + name; return isFinal ? "final " + result : result; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JavaField.java b/jaxx-compiler/src/main/java/jaxx/compiler/JavaField.java index 4dcd369..f597b09 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JavaField.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JavaField.java @@ -18,7 +18,6 @@ public class JavaField implements Comparable<JavaField> { private String name; private String initializer; - /** * Constructs a new <code>JavaField</code>. The <code>modifiers</code> parameter is a bit mask of the * constants from {@link java.lang.reflect.Modifier}, and the <code>type</code> of the field should be @@ -32,7 +31,6 @@ public class JavaField implements Comparable<JavaField> { this(modifiers, type, name, null); } - /** * Constructs a new <code>JavaField</code>. The <code>modifiers</code> parameter is a bit mask of the * constants from <code>java.lang.reflect.Modifier</code>, and the <code>type</code> of the field should be @@ -52,7 +50,6 @@ public class JavaField implements Comparable<JavaField> { this.initializer = initializer; } - /** * Returns a bit mask describing the modifier keywords which should appear as part of this field's * declaration. See <code>java.lang.reflect.Modifier</code> for more information on decoding this @@ -64,7 +61,6 @@ public class JavaField implements Comparable<JavaField> { return modifiers; } - /** * Returns the field's name. * @@ -74,7 +70,6 @@ public class JavaField implements Comparable<JavaField> { return name; } - /** * Returns the field's type, as it would be represented in Java source code. * @@ -84,7 +79,6 @@ public class JavaField implements Comparable<JavaField> { return type; } - /** * Returns the Java source code for this field. * @@ -102,12 +96,13 @@ public class JavaField implements Comparable<JavaField> { return result.toString(); } + @Override public int compareTo(JavaField o) { return COMPARATOR.compare(this, o); } - public static final Comparator<JavaField> COMPARATOR = new Comparator<JavaField>() { + @Override public int compare(JavaField o1, JavaField o2) { int result; @@ -184,4 +179,4 @@ public class JavaField implements Comparable<JavaField> { public static JavaField newField(int modifiers, String returnType, String name, String initializer) { return new JavaField(modifiers, returnType, name, initializer); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JavaFile.java b/jaxx-compiler/src/main/java/jaxx/compiler/JavaFile.java index 5dbaaf4..d072593 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JavaFile.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JavaFile.java @@ -20,11 +20,8 @@ import java.util.Map.Entry; public class JavaFile { protected static final String GETTER_PATTERN = "return %1$s;"; - protected static final String BOOLEAN_GETTER_PATTERN = "return %1$s !=null && %1$s;"; - protected static final String SETTER_PATTERN = "%1$s oldValue = this.%2$s;\nthis.%2$s = newValue;\nfirePropertyChange(\"%2$s\", oldValue, newValue);"; - private int modifiers; private String className; private List<String> imports = new ArrayList<String>(); @@ -39,16 +36,13 @@ public class JavaFile { private String genericType; private String superGenericType; - public JavaFile() { } - public JavaFile(int modifiers, String className, String superClass) { this(modifiers, className, superClass, null); } - public JavaFile(int modifiers, String className, String superClass, List<String> interfaces) { this.modifiers = modifiers; this.className = className; @@ -56,51 +50,42 @@ public class JavaFile { this.interfaces = interfaces; } - public void addImport(String importString) { imports.add(importString); } - public void addImport(Class importString) { + public void addImport(Class<?> importString) { imports.add(importString.getName()); } - public String[] getImports() { return imports.toArray(new String[imports.size()]); } - public int getModifiers() { return modifiers; } - public void setModifiers(int modifiers) { this.modifiers = modifiers; } - public String getClassName() { return className; } - public void setClassName(String className) { this.className = className; } - public String getSuperClass() { return superClass; } - public void setSuperClass(String superClass) { this.superClass = superClass; } - public List<String> getInterfaces() { if (interfaces == null) { interfaces = new ArrayList<String>(); @@ -108,7 +93,6 @@ public class JavaFile { return interfaces; } - public void setInterfaces(List<String> interfaces) { this.interfaces = interfaces; } @@ -121,7 +105,6 @@ public class JavaFile { methods.add(method); } - public JavaMethod[] getMethods() { return methods.toArray(new JavaMethod[methods.size()]); } @@ -156,22 +139,18 @@ public class JavaFile { fields.add(field); } - public JavaField[] getFields() { return fields.toArray(new JavaField[fields.size()]); } - public static String addIndentation(String source, int indentation, String lineSeparator) { return indent(source, indentation, false, lineSeparator); } - public static String setIndentation(String source, int indentation, String lineSeparator) { return indent(source, indentation, true, lineSeparator); } - public static String indent(String source, int indentation, boolean trim, String lineSeparator) { if (trim) { source = source.trim(); @@ -190,12 +169,10 @@ public class JavaFile { return result.toString(); } - public void addBodyCode(String bodyCode) { rawBodyCode.append(bodyCode); } - public String getClassBody(String lineSeparator) { StringBuffer result = new StringBuffer(); if (fields.size() > 0) { @@ -237,7 +214,6 @@ public class JavaFile { return result.toString(); } - public String getClassDefinition(String lineSeparator) { StringBuffer result = new StringBuffer(); result.append(getModifiersText(modifiers)); @@ -258,7 +234,7 @@ public class JavaFile { result.append(" implements ").append(interfaces.get(0)); for (int i = 1; i < interfaces.size(); i++) { /*if (i > 0) { - result.append(", "); + result.append(", "); }*/ result.append(", ").append(interfaces.get(i)); } @@ -270,7 +246,6 @@ public class JavaFile { return result.toString(); } - public static String getModifiersText(int modifiers) { if (modifiers == 0) { return ""; @@ -279,7 +254,6 @@ public class JavaFile { } } - /** * Returns the Java source code for this class. * @@ -337,8 +311,7 @@ public class JavaFile { this.abstractClass = abstractClass; } - public void setSuperGenericType(String superGenericType) { this.superGenericType = superGenericType; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/JavaMethod.java b/jaxx-compiler/src/main/java/jaxx/compiler/JavaMethod.java index e8a2e5e..0d8098e 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/JavaMethod.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/JavaMethod.java @@ -20,6 +20,7 @@ import java.util.List; * classes and have a return type of <code>null</code>. */ public class JavaMethod implements Comparable<JavaMethod> { + private int modifiers; private String returnType; private String name; @@ -27,7 +28,6 @@ public class JavaMethod implements Comparable<JavaMethod> { private String[] exceptions; private StringBuffer bodyCode; - /** * Constructs a new no-argument <code>JavaMethod</code> which throws no checked exceptions. The * <code>modifiers</code> parameter is a bit mask of the constants from {@link java.lang.reflect.Modifier}, @@ -42,8 +42,6 @@ public class JavaMethod implements Comparable<JavaMethod> { //public JavaMethod(int modifiers, String returnType, String name) { // this(modifiers, returnType, name, null); //} - - /** * Constructs a new <code>JavaMethod</code> which throws no checked exceptions. The <code>modifiers</code> * parameter is a bit mask of the constants from {@link java.lang.reflect.Modifier}, and the @@ -59,8 +57,6 @@ public class JavaMethod implements Comparable<JavaMethod> { //public JavaMethod(int modifiers, String returnType, String name, JavaArgument[] arguments) { // this(modifiers, returnType, name, arguments, null); //} - - /** * Constructs a new <code>JavaMethod</code>. The <code>modifiers</code> parameter is a bit mask of the * constants from {@link java.lang.reflect.Modifier}, and the <code>returnType</code> and <code>exceptions</code> @@ -77,8 +73,6 @@ public class JavaMethod implements Comparable<JavaMethod> { //public JavaMethod(int modifiers, String returnType, String name, JavaArgument[] arguments, String[] exceptions) { // this(modifiers, returnType, name, arguments, exceptions, null); //} - - /** * Constructs a new <code>JavaMethod</code> containing the specified body code. The <code>modifiers</code> parameter * is a bit mask of the constants from {@link java.lang.reflect.Modifier}, and the <code>returnType</code> and @@ -101,7 +95,6 @@ public class JavaMethod implements Comparable<JavaMethod> { this.bodyCode = new StringBuffer(bodyCode != null ? bodyCode : ""); } - /** * Returns a bit mask describing the modifier keywords which should appear as part of this method's * declaration. See <code>java.lang.reflect.Modifier</code> for more information on decoding this @@ -113,7 +106,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return modifiers; } - /** * Returns the method's return type, as it would be represented in Java source code. * @@ -123,7 +115,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return returnType; } - /** * Returns the method's name. * @@ -133,7 +124,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return name; } - /** * Returns a list of the method's arguments. * @@ -143,7 +133,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return arguments; } - /** * Returns a list of exceptions the method can throw. * @@ -153,7 +142,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return exceptions; } - /** * Returns the Java source code for the method's body. * @@ -163,7 +151,6 @@ public class JavaMethod implements Comparable<JavaMethod> { return bodyCode.toString(); } - /** * Appends additional code to the method's body. * @@ -180,7 +167,6 @@ public class JavaMethod implements Comparable<JavaMethod> { bodyCode.append(extraCode); } - /** * Returns the Java source code for this method. * @@ -217,6 +203,7 @@ public class JavaMethod implements Comparable<JavaMethod> { return result.toString(); } + @Override public int compareTo(JavaMethod o) { return COMPARATOR.compare(this, o); } @@ -232,118 +219,125 @@ public class JavaMethod implements Comparable<JavaMethod> { public enum MethodOrder { statics(Modifier.STATIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Statics methods --------------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Statics methods --------------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { }, - constructors(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Constructors -----------------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Constructors -----------------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return method.returnType == null; } }, - JAXXObject(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- JAXXObject implementation ----------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- JAXXObject implementation ----------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + private List<String> methods = Arrays.asList("applyDataBinding", "firePropertyChange", "getObjectById", "get$objectMap", "processDataBinding", "removeDataBinding"); + @Override public boolean accept(JavaMethod method) { return methods.contains(method.name); } }, - JAXXContext(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- JAXXContext implementation ---------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- JAXXContext implementation ---------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + private List<String> methods = Arrays.asList("getContextValue", "getDelegateContext", "getParentContainer", "removeContextValue", "setContextValue"); + + @Override public boolean accept(JavaMethod method) { return methods.contains(method.name); } }, - JAXXValidation(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- JAXXValidation implementation ------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- JAXXValidation implementation ------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + private List<String> methods = Arrays.asList("getValidator", "getValidatorIds"); + @Override public boolean accept(JavaMethod method) { return methods.contains(method.name); } }, - events(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Event methods ----------------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Event methods ----------------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return (method.name.startsWith("do") && method.name.indexOf("__") > -1); } }, - publicGetters(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- public acessor methods -------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- public acessor methods -------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return (method.name.startsWith("get") || method.name.startsWith("is")); } }, - publicSetters(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- public mutator methods -------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- public mutator methods -------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return (method.name.startsWith("set")); } }, - otherPublic(Modifier.PUBLIC, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- public mutator methods -------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- public mutator methods -------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + @Override public boolean accept(int mod) { return super.accept(mod) && !Modifier.isStatic(mod); } }, - protectedGetters(Modifier.PROTECTED, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- protected acessors methods ---------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- protected acessors methods ---------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return (method.name.startsWith("get") || method.name.startsWith("is")); } }, - createMethod(Modifier.PROTECTED | Modifier.PRIVATE, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- ui creation methods ----------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- ui creation methods ----------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + + @Override public boolean accept(JavaMethod method) { return method.name.startsWith("create") || method.name.startsWith("add") || method.name.equals("$completeSetup") || method.name.equals("$initialize"); } }, - protecteds(Modifier.PROTECTED, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Other protected methods ------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Other protected methods ------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { }, - packageLocal(0, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Package methods --------------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Package methods --------------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { + @Override public boolean accept(int mod) { return !Modifier.isStatic(mod) && !Modifier.isPublic(mod) && !Modifier.isProtected(mod); - }}, - + } + }, privates(Modifier.PRIVATE, "/*---------------------------------------------------------------------------------*/\n" + - "/*-- Private methods --------------------------------------------------------------*/\n" + - "/*---------------------------------------------------------------------------------*/") { + "/*-- Private methods --------------------------------------------------------------*/\n" + + "/*---------------------------------------------------------------------------------*/") { }; - private final String header; - private int modifier; MethodOrder(int modifier, String header) { @@ -436,20 +430,20 @@ public class JavaMethod implements Comparable<JavaMethod> { } return constants; } - public static final Comparator<JavaMethod> COMPARATOR = new Comparator<JavaMethod>() { + @Override public int compare(JavaMethod o1, JavaMethod o2) { /*int result; if ((result = compareStatic(o1, o2)) != 0) { - return result; + return result; } if ((result = compareConstructor(o1, o2)) != 0) { - return result; + return result; } if ((result = compareVisibility(o1, o2)) != 0) { - return result; + return result; }*/ return o1.name.compareTo(o2.name); } @@ -496,4 +490,4 @@ public class JavaMethod implements Comparable<JavaMethod> { return 0; } }; -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/ScriptInitializer.java b/jaxx-compiler/src/main/java/jaxx/compiler/ScriptInitializer.java index e9d1caf..7fd6d5b 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/ScriptInitializer.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/ScriptInitializer.java @@ -4,7 +4,7 @@ */ package jaxx.compiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; /** * A dummy CompiledObject which serves to initialize scripted field. This is handled by @@ -12,9 +12,10 @@ import jaxx.reflect.ClassDescriptorLoader; * ensure that the field is initialized in document order. */ public class ScriptInitializer extends CompiledObject { - public ScriptInitializer(String initializer, JAXXCompiler compiler) { + + public ScriptInitializer(String initializer, JAXXCompiler compiler) { super(compiler.getAutoId(ClassDescriptorLoader.getClassDescriptor(ScriptInitializer.class)), ClassDescriptorLoader.getClassDescriptor(ScriptInitializer.class), compiler, false); appendInitializationCode(initializer); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/ScriptManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/ScriptManager.java index fd6a878..85fc1cd 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/ScriptManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/ScriptManager.java @@ -1,12 +1,11 @@ package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.parser.JavaParser; -import jaxx.parser.JavaParserTreeConstants; -import jaxx.parser.SimpleNode; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; -import jaxx.tags.TagManager; +import jaxx.compiler.parser.java.JavaParser; +import jaxx.compiler.parser.java.JavaParserTreeConstants; +import jaxx.compiler.parser.java.SimpleNode; +import jaxx.compiler.reflect.FieldDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.tags.TagManager; import java.io.StringReader; import java.lang.reflect.Modifier; @@ -15,14 +14,13 @@ import java.util.Arrays; import java.util.List; public class ScriptManager { - private JAXXCompiler compiler; + private JAXXCompiler compiler; ScriptManager(JAXXCompiler compiler) { this.compiler = compiler; } - /** * Strips unnecessary curly braces from around the script, generating a warning if they are found. * @@ -38,7 +36,6 @@ public class ScriptManager { return script; } - public void checkParse(String script) throws CompilerException { script = trimScript(script); JavaParser p = new JavaParser(new StringReader(script)); @@ -47,7 +44,6 @@ public class ScriptManager { } } - public String preprocessScript(String script) throws CompilerException { script = trimScript(script); StringBuffer result = new StringBuffer(); @@ -63,7 +59,6 @@ public class ScriptManager { return result.toString(); } - /** * Scans through a compound symbol (foo.bar.baz) to identify and compile the JAXX class it refers to, if any. * @@ -73,8 +68,9 @@ public class ScriptManager { String[] tokens = symbol.split("\\."); StringBuffer currentSymbol = new StringBuffer(); for (String token : tokens) { - if (currentSymbol.length() > 0) + if (currentSymbol.length() > 0) { currentSymbol.append('.'); + } currentSymbol.append(token.trim()); String contextClass = TagManager.resolveClassName(currentSymbol.toString(), compiler); @@ -84,17 +80,17 @@ public class ScriptManager { } } - private void preprocessScriptNode(SimpleNode node, boolean staticContext) throws CompilerException { // identify static methods and initializers -- we can't fire events statically if (node.getId() == JavaParserTreeConstants.JJTMETHODDECLARATION) { if (node.getParent().getChild(0).getText().indexOf("static") != -1) { staticContext = true; } - } else if (node.getId() == JavaParserTreeConstants.JJTINITIALIZER) + } else if (node.getId() == JavaParserTreeConstants.JJTINITIALIZER) { if (node.getText().trim().startsWith("static")) { staticContext = true; } + } int count = node.jjtGetNumChildren(); for (int i = 0; i < count; i++) { @@ -109,9 +105,7 @@ public class ScriptManager { String lhs = null; if (id == JavaParserTreeConstants.JJTASSIGNMENTEXPRESSION || (id == JavaParserTreeConstants.JJTPOSTFIXEXPRESSION && node.jjtGetNumChildren() == 2)) { lhs = ((SimpleNode) node.jjtGetChild(0)).getText().trim(); - } - else - if (id == JavaParserTreeConstants.JJTPREINCREMENTEXPRESSION || id == JavaParserTreeConstants.JJTPREDECREMENTEXPRESSION) { + } else if (id == JavaParserTreeConstants.JJTPREINCREMENTEXPRESSION || id == JavaParserTreeConstants.JJTPREDECREMENTEXPRESSION) { lhs = ((SimpleNode) node.jjtGetChild(0)).getText().trim(); } if (lhs != null) { @@ -128,7 +122,6 @@ public class ScriptManager { } } - /** * Examines a Line to determine its real type. As all tokens returned by the parser are Lines, and * they are just a tiny wrapper around the real node, this method strips off the wrapper layers to identify @@ -144,8 +137,7 @@ public class ScriptManager { if (node.jjtGetNumChildren() == 1) { return node.getChild(0).getId(); } - } else - if (node.getId() == JavaParserTreeConstants.JJTCLASSORINTERFACEBODYDECLARATION) { + } else if (node.getId() == JavaParserTreeConstants.JJTCLASSORINTERFACEBODYDECLARATION) { int id = node.getChild(0).getId(); if (id == JavaParserTreeConstants.JJTMODIFIERS) { return node.getChild(1).getId(); @@ -159,7 +151,6 @@ public class ScriptManager { return JavaParserTreeConstants.JJTLINE; // generic value implying that it's okay to put into the initializer block } - private SimpleNode findExplicitConstructorInvocation(SimpleNode parent) { if (parent.getId() == JavaParserTreeConstants.JJTEXPLICITCONSTRUCTORINVOCATION) { return parent; @@ -175,32 +166,28 @@ public class ScriptManager { return null; } - private void processConstructor(String modifiers, SimpleNode node) { assert node.getId() == JavaParserTreeConstants.JJTCONSTRUCTORDECLARATION : "expected node to be ConstructorDeclaration, found " + JavaParserTreeConstants.jjtNodeName[node.getId()] + " instead"; assert node.getChild(0).getId() == JavaParserTreeConstants.JJTFORMALPARAMETERS : "expected node 0 to be FormalParameters, found " + JavaParserTreeConstants.jjtNodeName[node.getChild(1).getId()] + " instead"; String code = ""; if (node.getChild(0).jjtGetNumChildren() == 0) { compiler.reportError("The default no-argument constructor may not be redefined"); - } - else { + } else { SimpleNode explicitConstructorInvocation = findExplicitConstructorInvocation(node); if (explicitConstructorInvocation == null || explicitConstructorInvocation.getText().trim().startsWith("super(")) { code = "$initialize();" + JAXXCompiler.getLineSeparator(); if (explicitConstructorInvocation == null) { node.getChild(1).firstToken.image = node.getChild(1).firstToken.image; - } - else { + } else { explicitConstructorInvocation.lastToken.image += code; } } } - compiler.appendBodyCode(modifiers + " "+ node.getText().substring(0,node.getText().length()-1) + code + "}"); + compiler.appendBodyCode(modifiers + " " + node.getText().substring(0, node.getText().length() - 1) + code + "}"); //compiler.bodyCode.append(";\n"); } - private void scanScriptNode(SimpleNode node) throws CompilerException { int nodeType = getLineType(node); if (nodeType == JavaParserTreeConstants.JJTIMPORTDECLARATION) { // have to handle imports early so the preprocessing takes them into account @@ -234,13 +221,11 @@ public class ScriptManager { // FIXME: this check fails for inner classes defined in this file //if (returnType == null) // throw new CompilerException("could not find class '" + rawReturnType + "'"); - } else - if (type == JavaParserTreeConstants.JJTMETHODDECLARATOR) { + } else if (type == JavaParserTreeConstants.JJTMETHODDECLARATOR) { name = child.firstToken.image.trim(); SimpleNode formalParameters = child.getChild(0); assert formalParameters.getId() == JavaParserTreeConstants.JJTFORMALPARAMETERS; - for (int j = 0; j < formalParameters.jjtGetNumChildren(); j++) - { + for (int j = 0; j < formalParameters.jjtGetNumChildren(); j++) { SimpleNode parameter = formalParameters.getChild(j); String rawParameterType = parameter.getChild(1).getText().trim().replaceAll("\\.\\.\\.", "[]"); String parameterType = TagManager.resolveClassName(rawParameterType, compiler); @@ -255,26 +240,23 @@ public class ScriptManager { compiler.appendBodyCode(node.getText()); //compiler.bodyCode.append(";\n"); compiler.addScriptMethod(new MethodDescriptor(name, Modifier.PUBLIC, returnType, parameterTypes.toArray(new String[parameterTypes.size()]), compiler.getClassLoader())); - } else - if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION || + } else if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION || nodeType == JavaParserTreeConstants.JJTINITIALIZER) { String str = node.getText().trim(); if (str.endsWith(";")) { - str+=";"; + str += ";"; } compiler.appendBodyCode(str); //compiler.bodyCode.append(";\n"); - } else - if (nodeType == JavaParserTreeConstants.JJTCONSTRUCTORDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTCONSTRUCTORDECLARATION) { processConstructor(node.getChild(0).getChild(0).getText(), node.getChild(0).getChild(1)); - } else - if (nodeType == JavaParserTreeConstants.JJTLOCALVARIABLEDECLARATION || nodeType == JavaParserTreeConstants.JJTFIELDDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTLOCALVARIABLEDECLARATION || nodeType == JavaParserTreeConstants.JJTFIELDDECLARATION) { // the "local" variable declarations in this expression aren't actually local -- they are flagged local // just because there isn't an enclosing class scope visible to the parser. "Real" local variable // declarations won't show up here, because they will be buried inside of methods. String text = node.getText().trim(); if (!text.endsWith(";")) { - text+=";"; + text += ";"; } String declaration = text; int equals = text.indexOf("="); @@ -301,6 +283,8 @@ public class ScriptManager { } final String finalInitializer = name + " = " + initializer; compiler.registerInitializer(new Runnable() { + + @Override public void run() { compiler.registerCompiledObject(new ScriptInitializer(finalInitializer, compiler)); } @@ -322,7 +306,6 @@ public class ScriptManager { } } - public void registerScript(String script) throws CompilerException { JavaParser p = new JavaParser(new StringReader(script)); //JavaParser p = new JavaParser(new StringReader(script + ";")); diff --git a/jaxx-compiler/src/main/java/jaxx/css/StylesheetHelper.java b/jaxx-compiler/src/main/java/jaxx/compiler/StylesheetHelper.java similarity index 67% rename from jaxx-compiler/src/main/java/jaxx/css/StylesheetHelper.java rename to jaxx-compiler/src/main/java/jaxx/compiler/StylesheetHelper.java index ea6dbd8..96de766 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/StylesheetHelper.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/StylesheetHelper.java @@ -1,19 +1,17 @@ -package jaxx.css; - -import jaxx.CompilerException; -import jaxx.compiler.CompiledObject; -import jaxx.compiler.DataBinding; -import jaxx.compiler.DataSource; -import jaxx.compiler.JAXXCompiler; -import jaxx.parser.JavaParser; -import jaxx.parser.JavaParserTreeConstants; -import jaxx.parser.SimpleNode; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.MethodDescriptor; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.TagManager; -import jaxx.types.TypeManager; +package jaxx.compiler; + +import jaxx.runtime.css.Selector; +import jaxx.runtime.css.Rule; +import jaxx.runtime.css.Stylesheet; +import jaxx.compiler.parser.java.JavaParser; +import jaxx.compiler.parser.java.JavaParserTreeConstants; +import jaxx.compiler.parser.java.SimpleNode; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.tags.DefaultObjectHandler; +import jaxx.compiler.tags.TagManager; +import jaxx.compiler.types.TypeManager; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -91,12 +89,12 @@ public class StylesheetHelper { * @param code ? * @param id ? * @return ? - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ public static String replaceObjectReferences(String code, String id) throws CompilerException { JavaParser p = new JavaParser(new StringReader(code + ";")); p.Expression(); - jaxx.parser.SimpleNode node = p.popNode(); + jaxx.compiler.parser.java.SimpleNode node = p.popNode(); scanNode(node, id); return node.getText(); } @@ -162,68 +160,68 @@ public class StylesheetHelper { } /*if (pseudoClass.equals("mouseover")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseEntered", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseover pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseEntered", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseover pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mouseout")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseExited", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - compiler.appendInitDataBindings("{" + propertyCode + "}"); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseout pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseExited", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + compiler.appendInitDataBindings("{" + propertyCode + "}"); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseout pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mousedown")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mousePressed", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mousedown pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mousePressed", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mousedown pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mouseup")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseReleased", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - compiler.appendInitDataBindings("{" + propertyCode + "}"); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseup pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".add", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseReleased", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + compiler.appendInitDataBindings("{" + propertyCode + "}"); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseup pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.startsWith("{")) { - pseudoClass = pseudoClass.substring(1, pseudoClass.length() - 1).trim(); - pseudoClass = replaceObjectReferences(pseudoClass, object.getJavaCode()); - String dest = object.getId() + ".style." + pseudoClass + ".add"; - String destCode = TypeManager.getJavaCode(dest); - if (compiler.haveProcessDataBinding()) { - compiler.appendProcessDataBinding("else "); - } - compiler.appendProcessDataBinding("if ($dest.equals(" + destCode + ")) { if (" + pseudoClass + ") { "+ propertyCode + "} }"); - new DataSource(dest, pseudoClass, compiler).compile("new jaxx.runtime.DataBindingListener(" + compiler.getRootObject().getJavaCode() + ", " + destCode + ")"); - compiler.appendInitDataBindings("applyDataBinding("+ destCode + ");"); + pseudoClass = pseudoClass.substring(1, pseudoClass.length() - 1).trim(); + pseudoClass = replaceObjectReferences(pseudoClass, object.getJavaCode()); + String dest = object.getId() + ".style." + pseudoClass + ".add"; + String destCode = TypeManager.getJavaCode(dest); + if (compiler.haveProcessDataBinding()) { + compiler.appendProcessDataBinding("else "); + } + compiler.appendProcessDataBinding("if ($dest.equals(" + destCode + ")) { if (" + pseudoClass + ") { "+ propertyCode + "} }"); + new DataSource(dest, pseudoClass, compiler).compile("new jaxx.runtime.DataBindingListener(" + compiler.getRootObject().getJavaCode() + ", " + destCode + ")"); + compiler.appendInitDataBindings("applyDataBinding("+ destCode + ");"); } else - throw new IllegalArgumentException("unrecognized pseudoclass: " + pseudoClass);*/ + throw new IllegalArgumentException("unrecognized pseudoclass: " + pseudoClass);*/ } public static void compilePseudoClassRemove(String pseudoClass, CompiledObject object, String propertyCode, JAXXCompiler compiler) throws CompilerException { @@ -272,66 +270,66 @@ public class StylesheetHelper { } /*if (pseudoClass.equals("mouseover")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseExited", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseover pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseExited", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseover pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mouseout")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseEntered", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseout pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseEntered", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseout pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mousedown")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseReleased", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mousedown pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mouseReleased", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mousedown pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.equals("mouseup")) { - try { - MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); - object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, - ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mousePressed", - new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), - propertyCode, compiler); - } - catch (NoSuchMethodException e) { - compiler.reportError("mouseup pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); - } + try { + MethodDescriptor addMouseListener = object.getObjectClass().getMethodDescriptor("addMouseListener", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseListener.class)}); + object.addEventHandler("style." + pseudoClass + ".remove", addMouseListener, + ClassDescriptorLoader.getClassDescriptor(MouseListener.class).getMethodDescriptor("mousePressed", + new ClassDescriptor[]{ClassDescriptorLoader.getClassDescriptor(MouseEvent.class)}), + propertyCode, compiler); + } + catch (NoSuchMethodException e) { + compiler.reportError("mouseup pseudoclass cannot be applied to object " + object.getObjectClass().getName() + " (no addMouseListener method)"); + } } else if (pseudoClass.startsWith("{")) { - pseudoClass = pseudoClass.substring(1, pseudoClass.length() - 1).trim(); - pseudoClass = replaceObjectReferences(pseudoClass, object.getJavaCode()); - String dest = object.getId() + ".style." + pseudoClass + ".remove"; - String destCode = TypeManager.getJavaCode(dest); - if (compiler.haveProcessDataBinding()) { - compiler.appendProcessDataBinding("else "); - } - compiler.appendProcessDataBinding("if ($dest.equals(" + destCode + ")) { if (" + invert(pseudoClass) + ") { " + propertyCode + "} }"); - new DataSource(dest, pseudoClass, compiler).compile("new jaxx.runtime.DataBindingListener(" + compiler.getRootObject().getJavaCode() + ", " + destCode + ")"); - compiler.appendInitDataBindings("applyDataBinding(" + destCode + ");"); + pseudoClass = pseudoClass.substring(1, pseudoClass.length() - 1).trim(); + pseudoClass = replaceObjectReferences(pseudoClass, object.getJavaCode()); + String dest = object.getId() + ".style." + pseudoClass + ".remove"; + String destCode = TypeManager.getJavaCode(dest); + if (compiler.haveProcessDataBinding()) { + compiler.appendProcessDataBinding("else "); + } + compiler.appendProcessDataBinding("if ($dest.equals(" + destCode + ")) { if (" + invert(pseudoClass) + ") { " + propertyCode + "} }"); + new DataSource(dest, pseudoClass, compiler).compile("new jaxx.runtime.DataBindingListener(" + compiler.getRootObject().getJavaCode() + ", " + destCode + ")"); + compiler.appendInitDataBindings("applyDataBinding(" + destCode + ");"); } else { - throw new IllegalArgumentException("unrecognized pseudoclass: " + pseudoClass); + throw new IllegalArgumentException("unrecognized pseudoclass: " + pseudoClass); }*/ } @@ -363,18 +361,18 @@ public class StylesheetHelper { } public static void applyPseudoClass(String pseudoClass, Map<String, String> properties, - CompiledObject object, JAXXCompiler compiler, int priority) throws CompilerException { + CompiledObject object, JAXXCompiler compiler, int priority) throws CompilerException { if (pseudoClass.indexOf("[") != -1) { pseudoClass = pseudoClass.substring(0, pseudoClass.indexOf("[")); } final StringBuffer buffer = new StringBuffer(); /*CompiledObject bufferObject = new CompiledObject(object.getId(), object.getJavaCode(), object.getObjectClass(), compiler, true) { - public void appendInitializationCode(String code) { - buffer.append(code); - } - public void registerDataBinding(String src, String property, String assignment, JAXXCompiler compiler) throws CompilerException { - buffer.append(assignment); - } + public void appendInitializationCode(String code) { + buffer.append(code); + } + public void registerDataBinding(String src, String property, String assignment, JAXXCompiler compiler) throws CompilerException { + buffer.append(assignment); + } };*/ DefaultObjectHandler handler = TagManager.getTagHandler(object.getObjectClass()); @@ -390,10 +388,9 @@ public class StylesheetHelper { property, "(" + JAXXCompiler.getCanonicalName(type) + ") " + dataBinding, compiler), compiler).compile(false); } else { try { - Class typeClass = type != null ? ClassDescriptorLoader.getClass(type.getName(), type.getClassLoader()) : null; + Class<?> typeClass = type != null ? ClassDescriptorLoader.getClass(type.getName(), type.getClassLoader()) : null; valueCode = TypeManager.getJavaCode(TypeManager.convertFromString(e.getValue(), typeClass)); - } - catch (ClassNotFoundException ex) { + } catch (ClassNotFoundException ex) { compiler.reportError("could not find class " + type.getName()); return; } @@ -439,10 +436,9 @@ public class StylesheetHelper { property, "(" + JAXXCompiler.getCanonicalName(type) + ") " + dataBinding, compiler), compiler).compile(false); } else { try { - Class typeClass = type != null ? ClassDescriptorLoader.getClass(type.getName(), type.getClassLoader()) : null; + Class<?> typeClass = type != null ? ClassDescriptorLoader.getClass(type.getName(), type.getClassLoader()) : null; valueCode = TypeManager.getJavaCode(TypeManager.convertFromString(e.getValue(), typeClass)); - } - catch (ClassNotFoundException ex) { + } catch (ClassNotFoundException ex) { compiler.reportError("could not find class " + type.getName()); return; } @@ -530,8 +526,7 @@ public class StylesheetHelper { break; } javaClass = javaClass.getSuperclass(); - } - while (javaClass != null); + } while (javaClass != null); } boolean styleClassMatch = (styleClass == null || styleClass.equals(parent.getStyleClass())); @@ -555,6 +550,7 @@ public class StylesheetHelper { } public enum MouseEventEnum { + mouseover, mouseout, mousedown, diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/SwingCompiler.java b/jaxx-compiler/src/main/java/jaxx/compiler/SwingCompiler.java deleted file mode 100644 index 05e495c..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/SwingCompiler.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx.compiler; - -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultObjectHandler; - -import java.io.File; - -/** - * Swing JAXX compiler. - * <p/> - * todo finish javadoc - */ -public class SwingCompiler extends JAXXCompiler { - - /*---------------------------------------------------------------------------------*/ - /*-- Constructor methods ----------------------------------------------------------*/ - /*---------------------------------------------------------------------------------*/ - - public SwingCompiler(ClassLoader classLoader) { - super(classLoader, - new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(Object.class)), - "java.awt.*", - "java.awt.event.*", - "java.beans.*", - "java.io.*", - "java.lang.*", - "java.util.*", - "javax.swing.*", - "javax.swing.border.*", - "javax.swing.event.*", - "jaxx.runtime.swing.JAXXButtonGroup", - "jaxx.runtime.swing.HBox", - "jaxx.runtime.swing.VBox", - "jaxx.runtime.swing.Table", - "static org.nuiton.i18n.I18n._", - "static jaxx.runtime.Util.createImageIcon"); - - - } - - /** - * Creates a new SwingCompiler. - * - * @param baseDir classpath location - * @param options options to pass to javac - * @param src location of file to compile - * @param outputClassName the out file name - */ - public SwingCompiler(File baseDir, File src, String outputClassName, CompilerOptions options) { - super(baseDir, src, outputClassName, options, - new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(Object.class)), - "java.awt.*", - "java.awt.event.*", - "java.beans.*", - "java.io.*", - "java.lang.*", - "java.util.*", - "javax.swing.*", - "javax.swing.border.*", - "javax.swing.event.*", - "jaxx.runtime.swing.JAXXButtonGroup", - "jaxx.runtime.swing.HBox", - "jaxx.runtime.swing.VBox", - "jaxx.runtime.swing.Table", - "static org.nuiton.i18n.I18n._", - "static jaxx.runtime.Util.createImageIcon"); - } - -} \ No newline at end of file diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/SwingGenerator.java b/jaxx-compiler/src/main/java/jaxx/compiler/SwingGenerator.java deleted file mode 100644 index a1235f1..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/SwingGenerator.java +++ /dev/null @@ -1,26 +0,0 @@ -package jaxx.compiler; - -import jaxx.reflect.ClassDescriptorLoader; - -import java.lang.reflect.Modifier; - -/** @author chemit */ -public class SwingGenerator implements Generator { - @Override - public void finalizeCompiler(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) { - - } - - @Override - public void prepareJavaFile(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) throws ClassNotFoundException { - - //TODO : move this to jaxx-compiler-swing generator - if (ClassDescriptorLoader.getClassDescriptor("jaxx.runtime.swing.Application").isAssignableFrom(root.getObjectClass()) && !compiler.isMainDeclared()) { - // TODO: check for existing main method first - javaFile.addMethod(JavaMethod.newMethod(Modifier.PUBLIC | Modifier.STATIC, "void", "main", - "SwingUtilities.invokeLater(new Runnable() { public void run() { new " + className + "().setVisible(true); } });", - new JavaArgument("String[]", "arg")) - ); - } - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/SymbolTable.java b/jaxx-compiler/src/main/java/jaxx/compiler/SymbolTable.java index 352322c..2fc575f 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/SymbolTable.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/SymbolTable.java @@ -1,7 +1,7 @@ package jaxx.compiler; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.reflect.FieldDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; import java.util.ArrayList; import java.util.HashMap; @@ -12,27 +12,21 @@ import java.util.Map; public class SymbolTable { private String superclass; - // maps ID strings to class names -- we can't map directly to CompiledObjects, because we // can't create those until after the first pass private Map<String, String> ids = new HashMap<String, String>(); - private List<FieldDescriptor> scriptFields = new ArrayList<FieldDescriptor>(); - private List<MethodDescriptor> scriptMethods = new ArrayList<MethodDescriptor>(); - /** @return the fully-qualified name of the superclass of the class described by this symbol table. */ public String getSuperclassName() { return superclass; } - public void setSuperclassName(String superclass) { this.superclass = superclass; } - /** * @return a map of IDs to class names. Each entry in the map corresponds to a class tag with an * <code>id</code> attribute. The <code>id</code> is the key, and the fully-qualified class name @@ -42,15 +36,13 @@ public class SymbolTable { return ids; } - /** @return a list of <code>FieldDescriptors</code> for fields defined in <script> tags. */ public List<FieldDescriptor> getScriptFields() { return scriptFields; } - /** @return a list of <code>MethodDescriptors</code> for methods defined in <script> tags. */ public List<MethodDescriptor> getScriptMethods() { return scriptMethods; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/UnsupportedAttributeException.java b/jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedAttributeException.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/UnsupportedAttributeException.java rename to jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedAttributeException.java index 95890a8..404fb5e 100644 --- a/jaxx-compiler/src/main/java/jaxx/UnsupportedAttributeException.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedAttributeException.java @@ -2,7 +2,7 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx; +package jaxx.compiler; /** * Thrown by <code>TagHandler</code> when an unsupported attribute is encountered. @@ -10,13 +10,13 @@ package jaxx; * @see jaxx.tags.TagHandler */ public class UnsupportedAttributeException extends CompilerException { + private static final long serialVersionUID = -6919583037172920343L; /** Creates a new <code>UnsupportedAttributeException</code>. */ public UnsupportedAttributeException() { } - /** * Creates a new <code>UnsupportedAttributeException</code> with the specified detail message. * @@ -26,7 +26,6 @@ public class UnsupportedAttributeException extends CompilerException { super(msg); } - /** * Creates a new <code>UnsupportedAttributeException</code> with the specified cause. * @@ -36,7 +35,6 @@ public class UnsupportedAttributeException extends CompilerException { super(initCause); } - /** * Creates a new <code>UnsupportedAttributeException</code> with the specified detail message and cause. * @@ -46,4 +44,4 @@ public class UnsupportedAttributeException extends CompilerException { public UnsupportedAttributeException(String msg, Throwable initCause) { super(msg, initCause); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/UnsupportedTagException.java b/jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedTagException.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/UnsupportedTagException.java rename to jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedTagException.java index c0db4f2..1c38eaf 100644 --- a/jaxx-compiler/src/main/java/jaxx/UnsupportedTagException.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/UnsupportedTagException.java @@ -2,7 +2,7 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx; +package jaxx.compiler; /** Thrown by the compiler when an unregistered tag is encountered. */ public class UnsupportedTagException extends CompilerException { diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/ValidatorGenerator.java b/jaxx-compiler/src/main/java/jaxx/compiler/ValidatorGenerator.java deleted file mode 100644 index e317805..0000000 --- a/jaxx-compiler/src/main/java/jaxx/compiler/ValidatorGenerator.java +++ /dev/null @@ -1,89 +0,0 @@ -package jaxx.compiler; - -import jaxx.compiler.CompiledObject.ChildRef; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.validator.BeanValidatorHandler; -import jaxx.tags.validator.BeanValidatorHandler.CompiledBeanValidator; -import jaxx.types.TypeManager; - -import java.util.List; - -/** @author chemit */ -public class ValidatorGenerator implements Generator { - - protected static final JavaField VALIDATOR_IDS_FIELD = JavaField.newField(java.lang.reflect.Modifier.PROTECTED, - "java.util.List<String>", "validatorIds", "new ArrayList<String>()" - ); - - @Override - public void finalizeCompiler(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) { - - if (!BeanValidatorHandler.hasValidator(compiler)) { - return; - } - - for (CompiledObject object : compiler.getObjects().values()) { - List<ChildRef> childs = object.getChilds(); - if (childs == null || childs.isEmpty()) { - continue; - } - for (ChildRef child : childs) { - String javaCode = child.getChildJavaCode(); - // some validators are defined on this object - boolean found = BeanValidatorHandler.isComponentUsedByValidator(compiler, child.getChild().getId()); - if (found) { - // box the child component in a JxLayer - child.setChildJavaCode(jaxx.runtime.SwingUtil.class.getName()+".boxComponentWithJxLayer(" + javaCode + ")"); - } - } - } - // register validator - for (CompiledBeanValidator validator : BeanValidatorHandler.getValidators(compiler)) { - String id = TypeManager.getJavaCode(validator.getId()); - compiler.appendLateInitializer("validatorIds.add(" + id + ");"); - compiler.appendLateInitializer(JAXXCompiler.getLineSeparator()); - compiler.appendLateInitializer("getValidator(" + id + ").installUIs();"); - compiler.appendLateInitializer(JAXXCompiler.getLineSeparator()); - compiler.appendLateInitializer("getValidator(" + id + ").reloadBean();"); - //compiler.appendLateInitializer("getValidator(" + id + ").validate();"); - compiler.appendLateInitializer(JAXXCompiler.getLineSeparator()); - } - compiler.appendLateInitializer("validatorIds = java.util.Collections.unmodifiableList(validatorIds);"); - compiler.appendLateInitializer(JAXXCompiler.getLineSeparator()); - } - - @Override - public void prepareJavaFile(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) throws ClassNotFoundException { - if (!BeanValidatorHandler.hasValidator(compiler)) { - return; - } - Class<?> validatorClass = compiler.getOptions().getValidatorClass(); - String validatorFQN = validatorClass.getName(); - javaFile.addImport(validatorFQN); - - //TODO use the specific JAXXValidator interface (swing, gwt,...) - Class<?> validatorInterface = jaxx.runtime.JAXXValidator.class; - - if (javaFile.isSuperclassIsJAXXObject()) { - ClassDescriptor superClass = ClassDescriptorLoader.getClassDescriptor(javaFile.getSuperClass()); - boolean parentIsValidator = ClassDescriptorLoader.getClassDescriptor(validatorInterface).isAssignableFrom(superClass); - - if (parentIsValidator) { - // nothing to generate (use the parent directly) - return; - } - } - - // add JAXXValidator interface - javaFile.addInterface(JAXXCompiler.getCanonicalName(validatorInterface)); - - // implements JAXXValidator - javaFile.addField(VALIDATOR_IDS_FIELD); - javaFile.addMethod(JavaMethod.newMethod(java.lang.reflect.Modifier.PUBLIC, validatorFQN + "<?>", "getValidator", - "return (" + validatorFQN + ") (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);", - new JavaArgument("String", "validatorId") - )); - } - -} diff --git a/jaxx-compiler/src/main/java/jaxx/beaninfos/BeanInfoUtil.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/BeanInfoUtil.java similarity index 97% rename from jaxx-compiler/src/main/java/jaxx/beaninfos/BeanInfoUtil.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/BeanInfoUtil.java index c99297a..b998b14 100644 --- a/jaxx-compiler/src/main/java/jaxx/beaninfos/BeanInfoUtil.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/BeanInfoUtil.java @@ -1,4 +1,4 @@ -package jaxx.beaninfos; +package jaxx.compiler.beans; import java.beans.Introspector; import java.util.ArrayList; diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanDescriptor.java similarity index 82% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanDescriptor.java index 8cc1bbe..512f735 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanDescriptor.java @@ -1,6 +1,6 @@ -package jaxx.introspection; +package jaxx.compiler.beans; -import jaxx.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; /** * Mirrors the class <code>java.beans.BeanDescriptor</code>. JAXX uses its own introspector rather than the built-in @@ -8,7 +8,8 @@ import jaxx.reflect.ClassDescriptor; * not just <code>java.lang.Class</code>. */ public class JAXXBeanDescriptor extends JAXXFeatureDescriptor { + public JAXXBeanDescriptor(ClassDescriptor beanClass) { super(beanClass, beanClass.getName()); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanInfo.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanInfo.java similarity index 82% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanInfo.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanInfo.java index a355bb0..bb0bfbb 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXBeanInfo.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXBeanInfo.java @@ -1,4 +1,4 @@ -package jaxx.introspection; +package jaxx.compiler.beans; /** * Mirrors the class <code>java.beans.BeanInfo</code>. JAXX uses its own introspector rather than the built-in @@ -6,31 +6,28 @@ package jaxx.introspection; * not just <code>java.lang.Class</code>. */ public class JAXXBeanInfo { + private JAXXBeanDescriptor beanDescriptor; private JAXXPropertyDescriptor[] propertyDescriptors; private JAXXEventSetDescriptor[] eventSetDescriptors; - public JAXXBeanInfo(JAXXBeanDescriptor beanDescriptor, - JAXXPropertyDescriptor[] propertyDescriptors, - JAXXEventSetDescriptor[] eventSetDescriptors) { + JAXXPropertyDescriptor[] propertyDescriptors, + JAXXEventSetDescriptor[] eventSetDescriptors) { this.beanDescriptor = beanDescriptor; this.propertyDescriptors = propertyDescriptors; this.eventSetDescriptors = eventSetDescriptors; } - public JAXXBeanDescriptor getJAXXBeanDescriptor() { return beanDescriptor; } - public JAXXPropertyDescriptor[] getJAXXPropertyDescriptors() { return propertyDescriptors; } - public JAXXEventSetDescriptor[] getJAXXEventSetDescriptors() { return eventSetDescriptors; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXEventSetDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXEventSetDescriptor.java similarity index 81% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXEventSetDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXEventSetDescriptor.java index 92af3db..37b8cca 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXEventSetDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXEventSetDescriptor.java @@ -1,7 +1,7 @@ -package jaxx.introspection; +package jaxx.compiler.beans; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; /** * Mirrors the class <code>java.beans.EventSetDescriptor</code>. JAXX uses its own introspector rather than the built-in @@ -9,31 +9,28 @@ import jaxx.reflect.MethodDescriptor; * not just <code>java.lang.Class</code>. */ public class JAXXEventSetDescriptor extends JAXXFeatureDescriptor { + private MethodDescriptor addListenerMethod; private MethodDescriptor removeListenerMethod; private MethodDescriptor[] listenerMethods; - public JAXXEventSetDescriptor(ClassDescriptor classDescriptor, String name, MethodDescriptor addListenerMethod, - MethodDescriptor removeListenerMethod, MethodDescriptor[] listenerMethods) { + MethodDescriptor removeListenerMethod, MethodDescriptor[] listenerMethods) { super(classDescriptor, name); this.addListenerMethod = addListenerMethod; this.removeListenerMethod = removeListenerMethod; this.listenerMethods = listenerMethods; } - public MethodDescriptor getAddListenerMethod() { return addListenerMethod; } - public MethodDescriptor getRemoveListenerMethod() { return removeListenerMethod; } - public MethodDescriptor[] getListenerMethods() { return listenerMethods; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXFeatureDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXFeatureDescriptor.java similarity index 76% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXFeatureDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXFeatureDescriptor.java index 49ba384..a036c88 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXFeatureDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXFeatureDescriptor.java @@ -1,6 +1,6 @@ -package jaxx.introspection; +package jaxx.compiler.beans; -import jaxx.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; import java.util.HashMap; import java.util.Map; @@ -11,45 +11,42 @@ import java.util.Map; * not just <code>java.lang.Class</code>. */ public class JAXXFeatureDescriptor { + private String name; private Map<String, Object> values; private ClassDescriptor classDescriptor; - JAXXFeatureDescriptor(ClassDescriptor classDescriptor, String name) { - if (name == null || classDescriptor == null) + if (name == null || classDescriptor == null) { throw new NullPointerException(); + } this.name = name; this.classDescriptor = classDescriptor; } - public String getName() { return name; } - public ClassDescriptor getClassDescriptor() { return classDescriptor; } - public Object getValue(String key) { return values != null ? values.get(key) : null; } - public void setValue(String key, Object value) { - if (values == null) + if (values == null) { values = new HashMap<String, Object>(); + } values.put(key, value); } - public static String capitalize(String name) { - if (name.length() == 0) + if (name.length() == 0) { return name; - else - return Character.toUpperCase(name.charAt(0)) + name.substring(1); + } + return Character.toUpperCase(name.charAt(0)) + name.substring(1); } } diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXIntrospector.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXIntrospector.java similarity index 86% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXIntrospector.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXIntrospector.java index 92d43f8..06b3b3c 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXIntrospector.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXIntrospector.java @@ -1,8 +1,8 @@ -package jaxx.introspection; +package jaxx.compiler.beans; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.MethodDescriptor; import java.beans.BeanDescriptor; import java.beans.BeanInfo; @@ -28,6 +28,7 @@ import java.util.Map; * not just <code>java.lang.Class</code>. */ public class JAXXIntrospector { + private ClassDescriptor classDescriptor; private Map<String, JAXXPropertyDescriptor> propertyDescriptors = new HashMap<String, JAXXPropertyDescriptor>(); private Map<String, JAXXEventSetDescriptor> eventSetDescriptors = new HashMap<String, JAXXEventSetDescriptor>(); @@ -36,7 +37,6 @@ public class JAXXIntrospector { this.classDescriptor = classDescriptor; } - /** * Returns the <code>JAXXBeanInfo</code> for a given class. * @@ -49,14 +49,14 @@ public class JAXXIntrospector { return introspector.createBeanInfo(); } - private JAXXBeanInfo createBeanInfo() { ClassDescriptor explicitInfoClass = classDescriptor; BeanInfo explicitBeanInfo = null; while (explicitInfoClass != null) { explicitBeanInfo = getExplicitBeanInfo(explicitInfoClass); - if (explicitBeanInfo != null) + if (explicitBeanInfo != null) { break; + } explicitInfoClass = explicitInfoClass.getSuperclass(); } @@ -78,11 +78,9 @@ public class JAXXIntrospector { propertyDescriptor.setValue(name, explicitProperty.getValue(name)); } propertyDescriptors.put(propertyDescriptor.getName(), propertyDescriptor); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException("Internal error: Could not find ClassDescriptor corresponding to Java " + type, e); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { throw new RuntimeException("Internal error: Could not find expected MethodDescriptor in " + classDescriptor, e); } } @@ -94,8 +92,7 @@ public class JAXXIntrospector { try { classDescriptor.getMethodDescriptor("addPropertyChangeListener", ClassDescriptorLoader.getClassDescriptor(PropertyChangeListener.class)); propertyChangeSource = true; - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { propertyChangeSource = false; } @@ -104,29 +101,29 @@ public class JAXXIntrospector { String name = method.getName(); if (name.startsWith("get") && name.length() > 3 && Character.isUpperCase(name.charAt(3)) && method.getParameterTypes().length == 0) { String propertyName = Introspector.decapitalize(name.substring(3)); - if (!propertyDescriptors.containsKey(propertyName)) + if (!propertyDescriptors.containsKey(propertyName)) { propertyDescriptors.put(propertyName, new JAXXPropertyDescriptor(classDescriptor, propertyName, method, null, propertyChangeSource)); - } else - if (name.startsWith("is") && name.length() > 2 && Character.isUpperCase(name.charAt(2)) && method.getParameterTypes().length == 0) { + } + } else if (name.startsWith("is") && name.length() > 2 && Character.isUpperCase(name.charAt(2)) && method.getParameterTypes().length == 0) { String propertyName = Introspector.decapitalize(name.substring(2)); - if (!propertyDescriptors.containsKey(propertyName)) + if (!propertyDescriptors.containsKey(propertyName)) { propertyDescriptors.put(propertyName, new JAXXPropertyDescriptor(classDescriptor, propertyName, method, null, propertyChangeSource)); - } else - if (name.startsWith("set") && name.length() > 3 && Character.isUpperCase(name.charAt(3)) && method.getParameterTypes().length == 1) { + } + } else if (name.startsWith("set") && name.length() > 3 && Character.isUpperCase(name.charAt(3)) && method.getParameterTypes().length == 1) { String propertyName = Introspector.decapitalize(name.substring(3)); - if (!propertyDescriptors.containsKey(propertyName)) + if (!propertyDescriptors.containsKey(propertyName)) { propertyDescriptors.put(propertyName, new JAXXPropertyDescriptor(classDescriptor, propertyName, null, method, propertyChangeSource)); - } else - if (name.startsWith("add") && name.length() > 3 && Character.isUpperCase(name.charAt(3))) { + } + } else if (name.startsWith("add") && name.length() > 3 && Character.isUpperCase(name.charAt(3))) { ClassDescriptor[] parameters = method.getParameterTypes(); - if (parameters.length != 1 || !ClassDescriptorLoader.getClassDescriptor(EventListener.class).isAssignableFrom(parameters[0])) + if (parameters.length != 1 || !ClassDescriptorLoader.getClassDescriptor(EventListener.class).isAssignableFrom(parameters[0])) { continue; // not an event listener method + } try { String eventSetName = method.getName().substring(3); MethodDescriptor remove = classDescriptor.getMethodDescriptor("remove" + eventSetName, parameters); eventSetDescriptors.put(eventSetName, new JAXXEventSetDescriptor(classDescriptor, eventSetName, method, remove, parameters[0].getMethodDescriptors())); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { // no matching remove method, not a valid event } } @@ -149,28 +146,22 @@ public class JAXXIntrospector { eventSetDescriptors.values().toArray(new JAXXEventSetDescriptor[eventSetDescriptors.size()])); } - private static BeanInfo getExplicitBeanInfo(ClassDescriptor classDescriptor) { try { Class beanClass = Class.forName(classDescriptor.getName(), true, classDescriptor.getClassLoader()); // see if there is a class by that name in this package Method findExplicitBeanInfo = Introspector.class.getDeclaredMethod("findExplicitBeanInfo", new Class[]{Class.class}); findExplicitBeanInfo.setAccessible(true); return (BeanInfo) findExplicitBeanInfo.invoke(null, beanClass); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { return null; // happens for uncompiled classes - } - catch (NoClassDefFoundError e) { + } catch (NoClassDefFoundError e) { return null; // wrong case, etc. - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { throw new RuntimeException("Error: could not find method 'findExplicitBeanInfo' in java.beans.Introspector. You are most likely running a version of Java against which JAXX has not been tested."); - } - catch (InvocationTargetException e) { + } catch (InvocationTargetException e) { throw new RuntimeException(e); - } - catch (IllegalAccessException e) { + } catch (IllegalAccessException e) { throw new RuntimeException(e); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXPropertyDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXPropertyDescriptor.java similarity index 78% rename from jaxx-compiler/src/main/java/jaxx/introspection/JAXXPropertyDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXPropertyDescriptor.java index 61b504c..ead6025 100644 --- a/jaxx-compiler/src/main/java/jaxx/introspection/JAXXPropertyDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/beans/JAXXPropertyDescriptor.java @@ -1,8 +1,8 @@ -package jaxx.introspection; +package jaxx.compiler.beans; -import jaxx.CompilerException; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.CompilerException; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; /** * Mirrors the class <code>java.beans.PropertyDescriptor</code>. JAXX uses its own introspector rather than the built-in @@ -10,6 +10,7 @@ import jaxx.reflect.MethodDescriptor; * not just <code>java.lang.Class</code>. */ public class JAXXPropertyDescriptor extends JAXXFeatureDescriptor { + private ClassDescriptor propertyType; private MethodDescriptor readMethod; private MethodDescriptor writeMethod; @@ -19,40 +20,34 @@ public class JAXXPropertyDescriptor extends JAXXFeatureDescriptor { this(classDescriptor, propertyName, null, null); } - public JAXXPropertyDescriptor(ClassDescriptor classDescriptor, String propertyName, - MethodDescriptor readMethod, MethodDescriptor writeMethod) { + MethodDescriptor readMethod, MethodDescriptor writeMethod) { this(classDescriptor, propertyName, readMethod, writeMethod, false); } - public JAXXPropertyDescriptor(ClassDescriptor classDescriptor, String propertyName, - MethodDescriptor readMethod, MethodDescriptor writeMethod, - boolean bound) { + MethodDescriptor readMethod, MethodDescriptor writeMethod, + boolean bound) { super(classDescriptor, propertyName); this.readMethod = readMethod; this.writeMethod = writeMethod; this.bound = bound; } - public MethodDescriptor getReadMethodDescriptor() { if (readMethod == null) { try { readMethod = getClassDescriptor().getMethodDescriptor("get" + capitalize(getName())); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { try { readMethod = getClassDescriptor().getMethodDescriptor("is" + capitalize(getName())); - } - catch (NoSuchMethodException e2) { + } catch (NoSuchMethodException e2) { } } } return readMethod; } - public MethodDescriptor getWriteMethodDescriptor() { if (writeMethod == null) { try { @@ -63,20 +58,18 @@ public class JAXXPropertyDescriptor extends JAXXFeatureDescriptor { } else { throw new CompilerException("Internal error: requesting 'set' method for property of unknown type: '" + getName() + "' (in " + getClassDescriptor() + ")"); } - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { } } return writeMethod; } - public ClassDescriptor getPropertyType() { if (propertyType == null) { MethodDescriptor read = getReadMethodDescriptor(); - if (read != null) + if (read != null) { propertyType = read.getReturnType(); - else { + } else { MethodDescriptor write = getWriteMethodDescriptor(); propertyType = write.getParameterTypes()[0]; } @@ -84,13 +77,11 @@ public class JAXXPropertyDescriptor extends JAXXFeatureDescriptor { return propertyType; } - public boolean isBound() { return bound; } - public void setBound(boolean bound) { this.bound = bound; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/Generator.java b/jaxx-compiler/src/main/java/jaxx/compiler/generators/Generator.java similarity index 72% rename from jaxx-compiler/src/main/java/jaxx/compiler/Generator.java rename to jaxx-compiler/src/main/java/jaxx/compiler/generators/Generator.java index a3c4fe7..5677672 100644 --- a/jaxx-compiler/src/main/java/jaxx/compiler/Generator.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/generators/Generator.java @@ -1,4 +1,8 @@ -package jaxx.compiler; +package jaxx.compiler.generators; + +import jaxx.compiler.CompiledObject; +import jaxx.compiler.JAXXCompiler; +import jaxx.compiler.JavaFile; /** * TODO javadoc! @@ -10,5 +14,4 @@ public interface Generator { void finalizeCompiler(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className); void prepareJavaFile(CompiledObject root, JAXXCompiler compiler, JavaFile javaFile, String packageName, String className) throws ClassNotFoundException; - } diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSS.jj b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSS.jj similarity index 100% rename from jaxx-compiler/src/main/java/jaxx/css/CSS.jj rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSS.jj diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSS.jjt b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSS.jjt similarity index 100% rename from jaxx-compiler/src/main/java/jaxx/css/CSS.jjt rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSS.jjt diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSSParser.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParser.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/css/CSSParser.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParser.java index ca71bfa..4f3ec61 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/CSSParser.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParser.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. CSSParser.java */ -package jaxx.css; +package jaxx.compiler.parser.css; public class CSSParser/*@bgen(jjtree)*/ implements CSSParserTreeConstants, CSSParserConstants {/*@bgen(jjtree)*/ protected JJTCSSParserState jjtree = new JJTCSSParserState(); diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSSParserConstants.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserConstants.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/css/CSSParserConstants.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserConstants.java index bade092..fba80d5 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/CSSParserConstants.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserConstants.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. CSSParserConstants.java */ -package jaxx.css; +package jaxx.compiler.parser.css; public interface CSSParserConstants { diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSSParserTokenManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTokenManager.java similarity index 97% rename from jaxx-compiler/src/main/java/jaxx/css/CSSParserTokenManager.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTokenManager.java index 3d4a0d7..cd67bae 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/CSSParserTokenManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTokenManager.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. CSSParserTokenManager.java */ -package jaxx.css; +package jaxx.compiler.parser.css; public class CSSParserTokenManager implements CSSParserConstants { public java.io.PrintStream debugStream = System.out; diff --git a/jaxx-compiler/src/main/java/jaxx/css/CSSParserTreeConstants.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTreeConstants.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/css/CSSParserTreeConstants.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTreeConstants.java index c3a624e..ae5e812 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/CSSParserTreeConstants.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/CSSParserTreeConstants.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. .\CSSParserTreeConstants.java */ -package jaxx.css; +package jaxx.compiler.parser.css; public interface CSSParserTreeConstants { public int JJTSTYLESHEET = 0; diff --git a/jaxx-compiler/src/main/java/jaxx/css/JJTCSSParserState.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/JJTCSSParserState.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/css/JJTCSSParserState.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/JJTCSSParserState.java index 21545f5..1388962 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/JJTCSSParserState.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/JJTCSSParserState.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. .\JJTCSSParserState.java */ -package jaxx.css; +package jaxx.compiler.parser.css; class JJTCSSParserState { private java.util.Stack<Node> nodes; diff --git a/jaxx-compiler/src/main/java/jaxx/css/Node.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Node.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/css/Node.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Node.java index e1d887a..e625f18 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/Node.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Node.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. Node.java */ -package jaxx.css; +package jaxx.compiler.parser.css; /* All AST nodes must implement this interface. It provides basic machinery for constructing the parent and child relationships diff --git a/jaxx-compiler/src/main/java/jaxx/css/ParseException.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/ParseException.java similarity index 74% rename from jaxx-compiler/src/main/java/jaxx/css/ParseException.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/ParseException.java index df4b451..ef13517 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/ParseException.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/ParseException.java @@ -1,7 +1,7 @@ /* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */ -package jaxx.css; +package jaxx.compiler.parser.css; -public class ParseException extends jaxx.parser.ParseException { +public class ParseException extends jaxx.compiler.parser.java.ParseException { private static final long serialVersionUID = 229575674880359031L; public ParseException() { diff --git a/jaxx-compiler/src/main/java/jaxx/css/SimpleCharStream.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleCharStream.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/css/SimpleCharStream.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleCharStream.java index dcbbe0d..7375608 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/SimpleCharStream.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleCharStream.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */ -package jaxx.css; +package jaxx.compiler.parser.css; /** * An implementation of interface CharStream, where the stream is assumed to diff --git a/jaxx-compiler/src/main/java/jaxx/css/SimpleNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleNode.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/css/SimpleNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleNode.java index cad997a..7248314 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/SimpleNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/SimpleNode.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. SimpleNode.java */ -package jaxx.css; +package jaxx.compiler.parser.css; public class SimpleNode implements Node { protected Node parent; diff --git a/jaxx-compiler/src/main/java/jaxx/css/Token.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Token.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/css/Token.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Token.java index bf785d8..2faa436 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/Token.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/Token.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */ -package jaxx.css; +package jaxx.compiler.parser.css; /** Describes the input token stream. */ diff --git a/jaxx-compiler/src/main/java/jaxx/css/TokenMgrError.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/TokenMgrError.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/css/TokenMgrError.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/css/TokenMgrError.java index 9c9b1bc..f2d7370 100644 --- a/jaxx-compiler/src/main/java/jaxx/css/TokenMgrError.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/css/TokenMgrError.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */ -package jaxx.css; +package jaxx.compiler.parser.css; public class TokenMgrError extends Error { /* diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JJTJavaParserState.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JJTJavaParserState.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/parser/JJTJavaParserState.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JJTJavaParserState.java index b726fbb..dbe4436 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JJTJavaParserState.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JJTJavaParserState.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. .\JJTJavaParserState.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; class JJTJavaParserState { private java.util.Stack<Node> nodes; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/Java1.5.jj b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Java1.5.jj similarity index 100% rename from jaxx-compiler/src/main/java/jaxx/parser/Java1.5.jj rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Java1.5.jj diff --git a/jaxx-compiler/src/main/java/jaxx/parser/Java1.5.jjt b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Java1.5.jjt similarity index 100% rename from jaxx-compiler/src/main/java/jaxx/parser/Java1.5.jjt rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Java1.5.jjt diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JavaCharStream.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaCharStream.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/parser/JavaCharStream.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaCharStream.java index f60fb69..3681bce 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JavaCharStream.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaCharStream.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 4.0 */ -package jaxx.parser; +package jaxx.compiler.parser.java; /** * An implementation of interface CharStream, where the stream is assumed to diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JavaParser.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParser.java similarity index 99% rename from jaxx-compiler/src/main/java/jaxx/parser/JavaParser.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParser.java index 21f786c..a678cec 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JavaParser.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParser.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. JavaParser.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; import java.io.File; import java.io.FileInputStream; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserConstants.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserConstants.java similarity index 99% rename from jaxx-compiler/src/main/java/jaxx/parser/JavaParserConstants.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserConstants.java index c0c1075..250800e 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserConstants.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserConstants.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. JavaParserConstants.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; public interface JavaParserConstants { diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserTokenManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTokenManager.java similarity index 99% rename from jaxx-compiler/src/main/java/jaxx/parser/JavaParserTokenManager.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTokenManager.java index 73e4d1a..091b13e 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserTokenManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTokenManager.java @@ -1,5 +1,5 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. JavaParserTokenManager.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; public class JavaParserTokenManager implements JavaParserConstants { public java.io.PrintStream debugStream = System.out; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserTreeConstants.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTreeConstants.java similarity index 99% rename from jaxx-compiler/src/main/java/jaxx/parser/JavaParserTreeConstants.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTreeConstants.java index 52aaead..662a6bd 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/JavaParserTreeConstants.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/JavaParserTreeConstants.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. ./JavaParserTreeConstants.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; public interface JavaParserTreeConstants { public int JJTLINE = 0; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/Node.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Node.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/parser/Node.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Node.java index 0d26aa0..38fa56e 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/Node.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Node.java @@ -1,6 +1,6 @@ /* Generated By:JJTree: Do not edit this line. Node.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; /* All AST nodes must implement this interface. It provides basic machinery for constructing the parent and child relationships diff --git a/jaxx-compiler/src/main/java/jaxx/parser/ParseException.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/ParseException.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/parser/ParseException.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/ParseException.java index c74226b..3ea02a4 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/ParseException.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/ParseException.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */ -package jaxx.parser; +package jaxx.compiler.parser.java; /** * This exception is thrown when parse errors are encountered. @@ -10,7 +10,7 @@ package jaxx.parser; * You can modify this class to customize your error reporting * mechanisms so long as you retain the public fields. */ -public class ParseException extends jaxx.CompilerException { +public class ParseException extends jaxx.compiler.CompilerException { int line; int column; private static final long serialVersionUID = 6179854408401024700L; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/SimpleNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/SimpleNode.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/parser/SimpleNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/SimpleNode.java index 07b14f4..3b4ce20 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/SimpleNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/SimpleNode.java @@ -1,8 +1,8 @@ /* Generated By:JJTree: Do not edit this line. SimpleNode.java */ -package jaxx.parser; +package jaxx.compiler.parser.java; -import jaxx.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; public class SimpleNode implements Node { protected Node parent; diff --git a/jaxx-compiler/src/main/java/jaxx/parser/Token.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Token.java similarity index 98% rename from jaxx-compiler/src/main/java/jaxx/parser/Token.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Token.java index 03c11a0..00b9fdf 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/Token.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/Token.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */ -package jaxx.parser; +package jaxx.compiler.parser.java; /** Describes the input token stream. */ diff --git a/jaxx-compiler/src/main/java/jaxx/parser/TokenMgrError.java b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/TokenMgrError.java similarity index 96% rename from jaxx-compiler/src/main/java/jaxx/parser/TokenMgrError.java rename to jaxx-compiler/src/main/java/jaxx/compiler/parser/java/TokenMgrError.java index 654ccd7..6bec3d0 100644 --- a/jaxx-compiler/src/main/java/jaxx/parser/TokenMgrError.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/parser/java/TokenMgrError.java @@ -1,5 +1,5 @@ /* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */ -package jaxx.parser; +package jaxx.compiler.parser.java; public class TokenMgrError extends Error { /* diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptor.java similarity index 82% rename from jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptor.java index 4665f5c..32b6d1f 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptor.java @@ -1,4 +1,4 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; import jaxx.runtime.JAXXObjectDescriptor; @@ -11,6 +11,7 @@ import java.util.Arrays; * circular dependencies). */ public abstract class ClassDescriptor { + private String name; private String packageName; private String superclass; @@ -23,10 +24,13 @@ public abstract class ClassDescriptor { private MethodDescriptor[] methodDescriptors; private FieldDescriptor[] fieldDescriptors; + public abstract MethodDescriptor getDeclaredMethodDescriptor(String name, ClassDescriptor... parameterTypes) throws NoSuchMethodException; + + public abstract FieldDescriptor getDeclaredFieldDescriptor(String name) throws NoSuchFieldException; ClassDescriptor(String name, String packageName, String superclass, String[] interfaces, boolean isInterface, - boolean isArray, String componentType, JAXXObjectDescriptor jaxxObjectDescriptor, - ClassLoader classLoader, MethodDescriptor[] methodDescriptors, FieldDescriptor[] fieldDescriptors) { + boolean isArray, String componentType, JAXXObjectDescriptor jaxxObjectDescriptor, + ClassLoader classLoader, MethodDescriptor[] methodDescriptors, FieldDescriptor[] fieldDescriptors) { this.name = name; this.packageName = packageName; this.superclass = superclass; @@ -40,27 +44,22 @@ public abstract class ClassDescriptor { this.fieldDescriptors = fieldDescriptors; } - public String getName() { return name; } - public String getPackageName() { return packageName; } - public ClassDescriptor getSuperclass() { try { return superclass != null ? ClassDescriptorLoader.getClassDescriptor(superclass, getClassLoader()) : null; - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } - public ClassDescriptor[] getInterfaces() { try { ClassDescriptor[] result = new ClassDescriptor[interfaces.length]; @@ -68,63 +67,48 @@ public abstract class ClassDescriptor { result[i] = ClassDescriptorLoader.getClassDescriptor(interfaces[i], getClassLoader()); } return result; - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } - public boolean isInterface() { return isInterface; } - public boolean isArray() { return isArray; } - public ClassDescriptor getComponentType() { try { return componentType != null ? ClassDescriptorLoader.getClassDescriptor(componentType, getClassLoader()) : null; - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } - public ClassLoader getClassLoader() { return classLoader; } - public MethodDescriptor[] getMethodDescriptors() { return methodDescriptors; } - public MethodDescriptor getMethodDescriptor(String name, ClassDescriptor... parameterTypes) throws NoSuchMethodException { for (MethodDescriptor methodDescriptor : methodDescriptors) { - if (methodDescriptor.getName().equals(name) - && methodDescriptor.getParameterTypes().length == parameterTypes.length - && Arrays.equals(methodDescriptor.getParameterTypes(), parameterTypes)) { + if (methodDescriptor.getName().equals(name) && methodDescriptor.getParameterTypes().length == parameterTypes.length && Arrays.equals(methodDescriptor.getParameterTypes(), parameterTypes)) { return methodDescriptor; } } throw new NoSuchMethodException("Could not find method " + name + "(" + Arrays.asList(parameterTypes) + ") in " + getName()); } - - public abstract MethodDescriptor getDeclaredMethodDescriptor(String name, ClassDescriptor... parameterTypes) throws NoSuchMethodException; - - public FieldDescriptor[] getFieldDescriptors() { return fieldDescriptors; } - public FieldDescriptor getFieldDescriptor(String name) throws NoSuchFieldException { for (FieldDescriptor fieldDescriptor : fieldDescriptors) { if (fieldDescriptor.getName().equals(name)) { @@ -134,22 +118,16 @@ public abstract class ClassDescriptor { throw new NoSuchFieldException("Could not find field " + name + " in " + getName()); } - - public abstract FieldDescriptor getDeclaredFieldDescriptor(String name) throws NoSuchFieldException; - - public JAXXObjectDescriptor getJAXXObjectDescriptor() { return jaxxObjectDescriptor; } - public boolean isAssignableFrom(ClassDescriptor descriptor) { while (descriptor != null) { if (descriptor == this) { return true; } - ClassDescriptor[] interfaces = descriptor.getInterfaces(); - for (ClassDescriptor anInterface : interfaces) { + for (ClassDescriptor anInterface : descriptor.getInterfaces()) { if (anInterface == this) { return true; } @@ -163,4 +141,4 @@ public abstract class ClassDescriptor { public String toString() { return "ClassDescriptor[" + getName() + "]"; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptorLoader.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptorLoader.java similarity index 77% rename from jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptorLoader.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptorLoader.java index 845fdee..2abf7f6 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/ClassDescriptorLoader.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/ClassDescriptorLoader.java @@ -1,6 +1,6 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; import jaxx.compiler.SymbolTable; @@ -38,7 +38,6 @@ public class ClassDescriptorLoader { private ClassDescriptorLoader() { } - public static synchronized ClassDescriptor getClassDescriptor(String className) throws ClassNotFoundException { return getClassDescriptor(className, Thread.currentThread().getContextClassLoader()); //return getClassDescriptor(className, ClassDescriptorLoader.class.getClassLoader()); @@ -46,77 +45,79 @@ public class ClassDescriptorLoader { public static synchronized ClassDescriptor getClassDescriptor(String className, ClassLoader classLoader) throws ClassNotFoundException { ClassDescriptor result = descriptors.get(className); - if (result == null) { - if (JAXXCompilerLaunchor.isRegistred() && JAXXCompilerLaunchor.get().getSymbolTable(className) != null) { - result = createClassDescriptorFromSymbolTable(className, classLoader); - } else { - if (classLoader == null) { - classLoader = ClassDescriptorLoader.class.getClassLoader(); - } + if (result != null) { + return result; + } - String relativePath = className.replaceAll("\\.", "/"); - String relativePathPattern = ".*";// + className + ".*"; // used to ensure that the located resource has the right character cases +// if (result == null) { + if (JAXXCompilerLaunchor.isRegistred() && JAXXCompilerLaunchor.get().getSymbolTable(className) != null) { + result = createClassDescriptorFromSymbolTable(className, classLoader); + } else { + if (classLoader == null) { + classLoader = ClassDescriptorLoader.class.getClassLoader(); + } - // find the most recently updated source for the class -- Java source, JAXX source, or compiled class file - long javaLastModified = -1; - URL javaFile = classLoader.getResource(relativePath + ".java"); - if (javaFile != null && javaFile.toString().startsWith("file:") && javaFile.toString().matches(relativePathPattern)) { - javaLastModified = JAXXCompiler.URLtoFile(javaFile).lastModified(); - } + String relativePath = className.replaceAll("\\.", "/"); + String relativePathPattern = ".*";// + className + ".*"; // used to ensure that the located resource has the right character cases - long classLastModified = -1; - URL classFile = classLoader.getResource(relativePath + ".class"); - if (classFile != null && classFile.toString().startsWith("file:") && classFile.toString().matches(relativePathPattern)) { - classLastModified = JAXXCompiler.URLtoFile(classFile).lastModified(); - } + // find the most recently updated source for the class -- Java source, JAXX source, or compiled class file + long javaLastModified = -1; + URL javaFile = classLoader.getResource(relativePath + ".java"); + if (javaFile != null && javaFile.toString().startsWith("file:") && javaFile.toString().matches(relativePathPattern)) { + javaLastModified = JAXXCompiler.URLtoFile(javaFile).lastModified(); + } - long jaxxLastModified = -1; - URL jaxxFile = classLoader.getResource(relativePath + ".jaxx"); - if (jaxxFile != null && jaxxFile.toString().startsWith("file:") && jaxxFile.toString().matches(relativePathPattern)) { - File jaxxFilePath = JAXXCompiler.URLtoFile(jaxxFile); - jaxxLastModified = jaxxFilePath.lastModified(); - String simplePath = jaxxFilePath.getPath(); - simplePath = simplePath.substring(0, simplePath.length() - ".jaxx".length()); - File cssFilePath = new File(simplePath + ".css"); - if (cssFilePath.exists()) { - jaxxLastModified = Math.max(jaxxLastModified, cssFilePath.lastModified()); - } - File scriptFilePath = new File(simplePath + ".script"); - if (scriptFilePath.exists()) { - jaxxLastModified = Math.max(jaxxLastModified, scriptFilePath.lastModified()); - } - } + long classLastModified = -1; + URL classFile = classLoader.getResource(relativePath + ".class"); + if (classFile != null && classFile.toString().startsWith("file:") && classFile.toString().matches(relativePathPattern)) { + classLastModified = JAXXCompiler.URLtoFile(classFile).lastModified(); + } - if (jaxxLastModified != -1 && JAXXCompilerLaunchor.isRegistred() && JAXXCompilerLaunchor.get().getSymbolTable(className) == null) { - jaxxLastModified = -1; // file has been modified, but wasn't included in this + long jaxxLastModified = -1; + URL jaxxFile = classLoader.getResource(relativePath + ".jaxx"); + if (jaxxFile != null && jaxxFile.toString().startsWith("file:") && jaxxFile.toString().matches(relativePathPattern)) { + File jaxxFilePath = JAXXCompiler.URLtoFile(jaxxFile); + jaxxLastModified = jaxxFilePath.lastModified(); + String simplePath = jaxxFilePath.getPath(); + simplePath = simplePath.substring(0, simplePath.length() - ".jaxx".length()); + File cssFilePath = new File(simplePath + ".css"); + if (cssFilePath.exists()) { + jaxxLastModified = Math.max(jaxxLastModified, cssFilePath.lastModified()); + } + File scriptFilePath = new File(simplePath + ".script"); + if (scriptFilePath.exists()) { + jaxxLastModified = Math.max(jaxxLastModified, scriptFilePath.lastModified()); } - // compilation set so we don't have a symbol table + } - if (javaLastModified != -1 || classLastModified != -1 || jaxxLastModified != -1) { - if (jaxxLastModified > classLastModified && jaxxLastModified > javaLastModified) { - result = createClassDescriptorFromSymbolTable(className, classLoader); - } else if (javaLastModified > classLastModified && javaLastModified > jaxxLastModified) { - result = createClassDescriptorFromJavaSource(javaFile, classLoader); - } + if (jaxxLastModified != -1 && JAXXCompilerLaunchor.isRegistred() && JAXXCompilerLaunchor.get().getSymbolTable(className) == null) { + jaxxLastModified = -1; // file has been modified, but wasn't included in this } - // else work off of the class file. This also handles the case where the class is available, but wasn't in a location where - // we could check its last modified date (in a JAR, over the network, etc.) - if (result == null) { - Class<?> javaClass = getClass(className, classLoader); - result = createClassDescriptorFromClass(javaClass); + // compilation set so we don't have a symbol table + + if (javaLastModified != -1 || classLastModified != -1 || jaxxLastModified != -1) { + if (jaxxLastModified > classLastModified && jaxxLastModified > javaLastModified) { + result = createClassDescriptorFromSymbolTable(className, classLoader); + } else if (javaLastModified > classLastModified && javaLastModified > jaxxLastModified) { + result = createClassDescriptorFromJavaSource(javaFile, classLoader); } } - descriptors.put(className, result); + // else work off of the class file. This also handles the case where the class is available, but wasn't in a location where + // we could check its last modified date (in a JAR, over the network, etc.) + if (result == null) { + Class<?> javaClass = getClass(className, classLoader); + result = createClassDescriptorFromClass(javaClass); + } } + descriptors.put(className, result); +// } return result; } - public static ClassDescriptor getClassDescriptor(Class<?> javaClass) { try { return getClassDescriptor(javaClass.getName(), javaClass.getClassLoader()); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @@ -151,7 +152,7 @@ public class ClassDescriptorLoader { } return null; } - + public static Class<?> getPrimitiveClass(String className) throws ClassNotFoundException { if (className.equals("boolean")) { return boolean.class; @@ -186,19 +187,19 @@ public class ClassDescriptorLoader { arrayCount++; className = className.substring(0, className.length() - 2); } - Class<?> klass=null; + Class<?> klass = null; if (arrayCount > 0) { klass = getPrimitiveClass(className); - if (klass==null) { + if (klass == null) { // none primitive array return null; } // must take the boxed class, other it does not works // to make a Class.forName("[Lchar;"); but works // with Class.forName("[LCharacter;"); ... - klass =getPrimitiveBoxedClass(className); - className=klass.getName(); - + klass = getPrimitiveBoxedClass(className); + className = klass.getName(); + className = "L" + className + ";"; while (arrayCount > 0) { className = "[" + className; @@ -209,10 +210,10 @@ public class ClassDescriptorLoader { } return null; } - + public static Class<?> getClass(String className, ClassLoader classLoader) throws ClassNotFoundException { Class<?> klass = getPrimitiveClass(className); - if (klass!=null) { + if (klass != null) { return klass; } // try an array of none primitive classes @@ -248,8 +249,7 @@ public class ClassDescriptorLoader { } } throw e; - } - catch (NoClassDefFoundError e) { + } catch (NoClassDefFoundError e) { throw new ClassNotFoundException(e.toString()); } @@ -267,7 +267,6 @@ public class ClassDescriptorLoader { return new MethodDescriptor(methodName, modifiers, returnType, parameters, classLoader); } - private static FieldDescriptor createFieldDescriptor(Field javaField, ClassLoader classLoader) { String fieldName = javaField.getName(); int modifiers = javaField.getModifiers(); @@ -282,14 +281,11 @@ public class ClassDescriptorLoader { try { Method getJAXXObjectDescriptor = jaxxClass.getMethod("$getJAXXObjectDescriptor", new Class<?>[0]); return (JAXXObjectDescriptor) getJAXXObjectDescriptor.invoke(null); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { throw new CompilerException("Expected JAXXObject " + jaxxClass.getName() + " to have a static method named $getJAXXObjectDescriptor"); - } - catch (IllegalAccessException e) { + } catch (IllegalAccessException e) { throw new CompilerException("Expected JAXXObject " + jaxxClass.getName() + "'s $getJAXXObjectDescriptor method to be public"); - } - catch (InvocationTargetException e) { + } catch (InvocationTargetException e) { throw new RuntimeException(e); } } @@ -301,8 +297,7 @@ public class ClassDescriptorLoader { ClassDescriptor result = JavaFileParser.parseJavaFile(javaSource.toString(), reader, classLoader); reader.close(); return result; - } - catch (IOException e) { + } catch (IOException e) { throw new ClassNotFoundException(e.toString()); } } @@ -346,6 +341,7 @@ public class ClassDescriptorLoader { interfaces.toArray(new String[interfaces.size()]), false, false, null, null, classLoader, publicMethods.toArray(new MethodDescriptor[publicMethods.size()]), publicFields.toArray(new FieldDescriptor[publicFields.size()])) { + @Override public FieldDescriptor getDeclaredFieldDescriptor(String name) throws NoSuchFieldException { String type = symbolTable.getClassTagIds().get(name); @@ -367,7 +363,6 @@ public class ClassDescriptorLoader { }; } - private static ClassDescriptor createClassDescriptorFromClass(final Class<?> javaClass) { String name = javaClass.getName(); Package p = javaClass.getPackage(); @@ -395,6 +390,7 @@ public class ClassDescriptorLoader { fields[i] = createFieldDescriptor(javaFields[i], javaClass.getClassLoader()); } return new ClassDescriptor(name, packageName, superclassName, interfaceNames, isInterface, isArray, componentTypeName, jaxxObjectDescriptor, classLoader, methods, fields) { + @Override public FieldDescriptor getDeclaredFieldDescriptor(String name) throws NoSuchFieldException { return createFieldDescriptor(javaClass.getDeclaredField(name), javaClass.getClassLoader()); @@ -408,8 +404,7 @@ public class ClassDescriptorLoader { parameterTypeClasses[i] = Class.forName(parameterTypes[i].getName()); } return createMethodDescriptor(javaClass.getDeclaredMethod(name, parameterTypeClasses), javaClass.getClassLoader()); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @@ -428,4 +423,4 @@ public class ClassDescriptorLoader { public static void reset() { descriptors.clear(); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/FieldDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/FieldDescriptor.java similarity index 89% rename from jaxx-compiler/src/main/java/jaxx/reflect/FieldDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/FieldDescriptor.java index 9b207fb..7091cbe 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/FieldDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/FieldDescriptor.java @@ -1,4 +1,4 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; /** * Mirrors the class <code>java.lang.ref.Field</code>. JAXX uses <code>ClassDescriptor</code> instead of <code>Class</code> @@ -7,21 +7,19 @@ package jaxx.reflect; * circular dependencies). */ public class FieldDescriptor extends MemberDescriptor { - private String type; + private String type; public FieldDescriptor(String name, int modifiers, String type, ClassLoader classLoader) { super(name, modifiers, classLoader); this.type = type; } - public ClassDescriptor getType() { try { return ClassDescriptorLoader.getClassDescriptor(type, getClassLoader()); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/JavaFileParser.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/JavaFileParser.java similarity index 90% rename from jaxx-compiler/src/main/java/jaxx/reflect/JavaFileParser.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/JavaFileParser.java index edad5a7..a91b3e4 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/JavaFileParser.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/JavaFileParser.java @@ -1,13 +1,13 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; -import jaxx.parser.JavaParser; -import jaxx.parser.JavaParserTreeConstants; -import jaxx.parser.ParseException; -import jaxx.parser.SimpleNode; -import jaxx.tags.TagManager; +import jaxx.compiler.parser.java.JavaParser; +import jaxx.compiler.parser.java.JavaParserTreeConstants; +import jaxx.compiler.parser.java.ParseException; +import jaxx.compiler.parser.java.SimpleNode; +import jaxx.compiler.tags.TagManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -23,8 +23,6 @@ public class JavaFileParser { /** to use log facility, just put in your code: log.info(\"...\"); */ static private final Log log = LogFactory.getLog(JavaFileParser.class); - - private JAXXCompiler compiler; private String className; private String packageName = null; @@ -32,7 +30,6 @@ public class JavaFileParser { private List<MethodDescriptor> methods = new ArrayList<MethodDescriptor>(); private List<FieldDescriptor> fields = new ArrayList<FieldDescriptor>(); - private JavaFileParser(ClassLoader classLoader) { compiler = JAXXCompilerLaunchor.createDummyCompiler(classLoader); } @@ -81,6 +78,7 @@ public class JavaFileParser { return new ClassDescriptor(parser.className, parser.packageName, parser.superclass, new String[0], false, false, null, null, classLoader, publicMethods.toArray(new MethodDescriptor[publicMethods.size()]), publicFields.toArray(new FieldDescriptor[publicFields.size()])) { + @Override public FieldDescriptor getDeclaredFieldDescriptor(String name) throws NoSuchFieldException { throw new NoSuchFieldException(name); @@ -93,7 +91,6 @@ public class JavaFileParser { }; } - private void doParse(String displayName, Reader src) { try { JavaParser p = new JavaParser(src); @@ -104,13 +101,11 @@ public class JavaFileParser { return; } throw new CompilerException("Internal error: null node parsing Java file from " + src); - } - catch (ParseException e) { + } catch (ParseException e) { throw new CompilerException("Error parsing Java source code " + displayName + ": " + e.getMessage()); } } - private void scanCompilationUnit(SimpleNode node) { for (int i = 0; i < node.jjtGetNumChildren(); i++) { SimpleNode child = node.getChild(i); @@ -118,8 +113,7 @@ public class JavaFileParser { if (nodeType == JavaParserTreeConstants.JJTPACKAGEDECLARATION) { packageName = child.getChild(1).getText().trim(); compiler.addImport(packageName + ".*"); - } else - if (nodeType == JavaParserTreeConstants.JJTIMPORTDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTIMPORTDECLARATION) { String text = child.getText().trim(); if (text.startsWith("import")) { text = text.substring("import".length()).trim(); @@ -130,14 +124,12 @@ public class JavaFileParser { compiler.addImport(text); } else if (nodeType == JavaParserTreeConstants.JJTTYPEDECLARATION) { scanCompilationUnit(child); - } else - if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION) { scanClass(child); } } } - // scans the main ClassOrInterfaceDeclaration private void scanClass(SimpleNode node) { boolean isInterface = node.firstToken.image.equals("interface"); @@ -157,14 +149,12 @@ public class JavaFileParser { throw new CompilerException("Could not find class: " + rawName); } } - } else - if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEBODY) { + } else if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEBODY) { scanClassNode(child); } } } - // scans class body nodes private void scanClassNode(SimpleNode node) { int nodeType = node.getId(); @@ -176,14 +166,13 @@ public class JavaFileParser { for (int i = 0; i < node.jjtGetNumChildren(); i++) { SimpleNode child = node.getChild(i); int type = child.getId(); - if (type == JavaParserTreeConstants.JJTRESULTTYPE) + if (type == JavaParserTreeConstants.JJTRESULTTYPE) { returnType = TagManager.resolveClassName(child.getText().trim(), compiler); - else if (type == JavaParserTreeConstants.JJTMETHODDECLARATOR) { + } else if (type == JavaParserTreeConstants.JJTMETHODDECLARATOR) { name = child.firstToken.image.trim(); SimpleNode formalParameters = child.getChild(0); assert formalParameters.getId() == JavaParserTreeConstants.JJTFORMALPARAMETERS; - for (int j = 0; j < formalParameters.jjtGetNumChildren(); j++) - { + for (int j = 0; j < formalParameters.jjtGetNumChildren(); j++) { SimpleNode parameter = formalParameters.getChild(j); String rawParameterType = parameter.getChild(1).getText().trim().replaceAll("\\.\\.\\.", "[]"); String parameterType = TagManager.resolveClassName(rawParameterType, compiler); @@ -196,11 +185,9 @@ public class JavaFileParser { } } methods.add(new MethodDescriptor(name, Modifier.PUBLIC, returnType, parameterTypes.toArray(new String[parameterTypes.size()]), compiler.getClassLoader())); // TODO: determine the actual modifiers - } else - if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTCLASSORINTERFACEDECLARATION) { // TODO: handle inner classes - } else - if (nodeType == JavaParserTreeConstants.JJTCONSTRUCTORDECLARATION) { + } else if (nodeType == JavaParserTreeConstants.JJTCONSTRUCTORDECLARATION) { // TODO: handle constructors } else if (nodeType == JavaParserTreeConstants.JJTFIELDDECLARATION) { String text = node.getText(); @@ -217,8 +204,8 @@ public class JavaFileParser { if (name.endsWith(";")) { name = name.substring(0, name.length() - 1).trim(); } - String className = declarationTokens[declarationTokens.length - 2]; - String type = TagManager.resolveClassName(className, compiler); + String cName = declarationTokens[declarationTokens.length - 2]; + String type = TagManager.resolveClassName(cName, compiler); fields.add(new FieldDescriptor(name, Modifier.PUBLIC, type, compiler.getClassLoader())); // TODO: determine the actual modifiers } else { for (int i = 0; i < node.jjtGetNumChildren(); i++) { diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/MemberDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/MemberDescriptor.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/reflect/MemberDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/MemberDescriptor.java index 0ced5d7..010e2f3 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/MemberDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/MemberDescriptor.java @@ -1,4 +1,4 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; /** * Mirrors the class <code>java.lang.ref.Member</code>. JAXX uses <code>ClassDescriptor</code> instead of <code>Class</code> @@ -7,28 +7,25 @@ package jaxx.reflect; * circular dependencies). */ public abstract class MemberDescriptor { + private String name; private int modifiers; private ClassLoader classLoader; - MemberDescriptor(String name, int modifiers, ClassLoader classLoader) { this.name = name; this.modifiers = modifiers; this.classLoader = classLoader; } - public String getName() { return name; } - public int getModifiers() { return modifiers; } - protected ClassLoader getClassLoader() { return classLoader; } @@ -37,4 +34,4 @@ public abstract class MemberDescriptor { public String toString() { return getClass().getName() + "[" + getName() + "]"; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/reflect/MethodDescriptor.java b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/MethodDescriptor.java similarity index 92% rename from jaxx-compiler/src/main/java/jaxx/reflect/MethodDescriptor.java rename to jaxx-compiler/src/main/java/jaxx/compiler/reflect/MethodDescriptor.java index 2b0a9c2..5eb717f 100644 --- a/jaxx-compiler/src/main/java/jaxx/reflect/MethodDescriptor.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/reflect/MethodDescriptor.java @@ -1,4 +1,4 @@ -package jaxx.reflect; +package jaxx.compiler.reflect; import jaxx.compiler.JAXXCompiler; @@ -9,10 +9,10 @@ import jaxx.compiler.JAXXCompiler; * circular dependencies). */ public class MethodDescriptor extends MemberDescriptor { + private String returnType; private String[] parameterTypes; - public MethodDescriptor(String name, int modifiers, String returnType, String[] parameterTypes, ClassLoader classLoader) { super(name, modifiers, classLoader); this.returnType = returnType; @@ -22,21 +22,18 @@ public class MethodDescriptor extends MemberDescriptor { } } - public ClassDescriptor getReturnType() { - try { + try { //TC 20090228 : fix bug when no return type defined (constructor method) if (returnType == null) { return null; } return ClassDescriptorLoader.getClassDescriptor(returnType); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException("could not find return type " + returnType, e); } } - public ClassDescriptor[] getParameterTypes() { ClassDescriptor[] result = new ClassDescriptor[parameterTypes.length]; try { @@ -46,9 +43,8 @@ public class MethodDescriptor extends MemberDescriptor { } } return result; - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException("could not find the parameter types " + java.util.Arrays.toString(parameterTypes), e); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/spi/DefaultInitializer.java b/jaxx-compiler/src/main/java/jaxx/compiler/spi/DefaultInitializer.java new file mode 100644 index 0000000..f9b0231 --- /dev/null +++ b/jaxx-compiler/src/main/java/jaxx/compiler/spi/DefaultInitializer.java @@ -0,0 +1,271 @@ +/* + * Copyright 2006 Ethan Nicholas. All rights reserved. + * Use is subject to license terms. + */ +package jaxx.compiler.spi; + +import java.awt.Color; +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.Insets; +import javax.swing.JCheckBox; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JEditorPane; +import javax.swing.JFormattedTextField; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JList; +import javax.swing.JMenu; +import javax.swing.JPasswordField; +import javax.swing.JPopupMenu; +import javax.swing.JProgressBar; +import javax.swing.JRadioButton; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.JScrollPane; +import javax.swing.JSlider; +import javax.swing.JSpinner; +import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.JTextPane; +import javax.swing.JToggleButton; +import javax.swing.JToolBar; +import javax.swing.JTree; +import javax.swing.JWindow; +import javax.swing.KeyStroke; +import javax.swing.text.JTextComponent; + +import jaxx.compiler.JAXXCompiler; +import jaxx.compiler.beans.BeanInfoUtil; + +import jaxx.compiler.decorators.BoxedCompiledObjectDecorator; +import jaxx.compiler.decorators.CompiledObjectDecorator; +import jaxx.compiler.decorators.CompiledObjectDecoratorManager; +import jaxx.compiler.decorators.DefaultCompiledObjectDecorator; +import jaxx.compiler.decorators.HelpRootCompiledObjectDecorator; + +import jaxx.compiler.reflect.ClassDescriptorLoader; + +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.tags.DefaultObjectHandler; +import jaxx.compiler.tags.ScriptHandler; +import jaxx.compiler.tags.StyleHandler; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.tags.TagManager; +import jaxx.compiler.tags.swing.ApplicationHandler; +import jaxx.compiler.tags.swing.CellHandler; +import jaxx.compiler.tags.swing.ItemHandler; +import jaxx.compiler.tags.swing.JAXXComboBoxHandler; +import jaxx.compiler.tags.swing.JAXXListHandler; +import jaxx.compiler.tags.swing.JAXXTabHandler; +import jaxx.compiler.tags.swing.JAXXTreeHandler; +import jaxx.compiler.tags.swing.JCheckBoxHandler; +import jaxx.compiler.tags.swing.JComboBoxHandler; +import jaxx.compiler.tags.swing.JInternalFrameHandler; +import jaxx.compiler.tags.swing.JListHandler; +import jaxx.compiler.tags.swing.JMenuHandler; +import jaxx.compiler.tags.swing.JPasswordFieldHandler; +import jaxx.compiler.tags.swing.JPopupMenuHandler; +import jaxx.compiler.tags.swing.JProgressBarHandler; +import jaxx.compiler.tags.swing.JRadioButtonHandler; +import jaxx.compiler.tags.swing.JScrollPaneHandler; +import jaxx.compiler.tags.swing.JSliderHandler; +import jaxx.compiler.tags.swing.JSpinnerHandler; +import jaxx.compiler.tags.swing.JSplitPaneHandler; +import jaxx.compiler.tags.swing.JTabbedPaneHandler; +import jaxx.compiler.tags.swing.JTextComponentHandler; +import jaxx.compiler.tags.swing.JToolBarHandler; +import jaxx.compiler.tags.swing.JTreeHandler; +import jaxx.compiler.tags.swing.JWindowHandler; +import jaxx.compiler.tags.swing.RowHandler; +import jaxx.compiler.tags.swing.TabHandler; +import jaxx.compiler.tags.swing.TableHandler; +import jaxx.compiler.tags.validator.BeanValidatorHandler; +import jaxx.compiler.tags.validator.ExcludeFieldValidatorHandler; +import jaxx.compiler.tags.validator.FieldValidatorHandler; + +import jaxx.compiler.types.ColorConverter; +import jaxx.compiler.types.GridBagConstraintsConverter; +import jaxx.compiler.types.InsetsConverter; +import jaxx.compiler.types.KeyStrokeConverter; +import jaxx.compiler.types.PrimitiveConverter; + +import jaxx.compiler.types.TypeConverter; +import jaxx.compiler.types.TypeManager; +import jaxx.runtime.swing.Application; +import jaxx.runtime.swing.JAXXButtonGroup; +import jaxx.runtime.swing.JAXXComboBox; +import jaxx.runtime.swing.JAXXList; +import jaxx.runtime.swing.JAXXTab; +import jaxx.runtime.swing.JAXXTree; +import jaxx.runtime.swing.Table; +import jaxx.runtime.swing.editor.EnumEditor; +import jaxx.runtime.swing.editor.LocaleEditor; +import jaxx.runtime.validator.swing.SwingValidator; + +/** + * Initializes support provided from JAXX (java, swing and validation). + * + */ +public class DefaultInitializer implements Initializer { + + @Override + public void initialize() { + + BeanInfoUtil.addJaxxBeanInfoPath("jaxx.runtime.swing"); + + registerDefaultNamespace("javax.swing.*", + JEditorPane.class, + JFormattedTextField.class, + JPasswordField.class, + JTextArea.class, + JTextField.class, + JTextPane.class); + + + // + // Register decorators + // + + registerDecorator("default", DefaultCompiledObjectDecorator.class); + registerDecorator("boxed", BoxedCompiledObjectDecorator.class); + registerDecorator("help", HelpRootCompiledObjectDecorator.class); + + // + // Register tags + // + + registerTag(JAXXCompiler.JAXX_NAMESPACE, "script", new ScriptHandler()); + registerTag(JAXXCompiler.JAXX_NAMESPACE, "style", new StyleHandler()); + + //TC-20091005 why the namespace was on awt ? ButtonGroup is from javax.swing + registerTag("javax.swing.*", "ButtonGroup", new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(JAXXButtonGroup.class))); +// TagManager.registerTag("java.awt.*", "ButtonGroup", new DefaultObjectHandler(ClassDescriptorLoader.getClassDescriptor(JAXXButtonGroup.class))); + + registerTag(JAXXCompiler.JAXX_NAMESPACE, "tab", new TabHandler()); + registerTag(JAXXCompiler.JAXX_NAMESPACE, "row", new RowHandler()); + registerTag(JAXXCompiler.JAXX_NAMESPACE, "cell", new CellHandler()); + registerTag(JAXXCompiler.JAXX_NAMESPACE, "item", new ItemHandler()); + + + registerTag(JAXXCompiler.JAXX_NAMESPACE, BeanValidatorHandler.TAG, new BeanValidatorHandler(ClassDescriptorLoader.getClassDescriptor(SwingValidator.class))); + registerTag(JAXXCompiler.JAXX_NAMESPACE, FieldValidatorHandler.TAG, new FieldValidatorHandler()); + registerTag(JAXXCompiler.JAXX_NAMESPACE, ExcludeFieldValidatorHandler.TAG, new FieldValidatorHandler()); + + + // + // Register beans + // + + registerBean(Object.class, DefaultObjectHandler.class); + registerBean(Component.class, DefaultComponentHandler.class); + + // check boxes + registerBean(JCheckBox.class, JCheckBoxHandler.class); + registerBean(JCheckBoxMenuItem.class, JCheckBoxHandler.class); + + // combo boxes + registerBean(JComboBox.class, JComboBoxHandler.class); + registerBean(EnumEditor.class, JComboBoxHandler.class); + registerBean(LocaleEditor.class, JComboBoxHandler.class); + registerBean(JAXXComboBox.class, JAXXComboBoxHandler.class); + + // radio boxes + registerBean(JRadioButton.class, JRadioButtonHandler.class); + registerBean(JRadioButtonMenuItem.class, JRadioButtonHandler.class); + registerBean(JToggleButton.class, JRadioButtonHandler.class); + + // Lists + registerBean(JList.class, JListHandler.class); + registerBean(JAXXList.class, JAXXListHandler.class); + + // Trees + registerBean(JTree.class, JTreeHandler.class); + registerBean(JAXXTree.class, JAXXTreeHandler.class); + + // Windows + registerBean(JDialog.class, JWindowHandler.class); + registerBean(JFrame.class, JWindowHandler.class); + registerBean(JWindow.class, JWindowHandler.class); + + registerBean(Application.class, ApplicationHandler.class); + + registerBean(JInternalFrame.class, JInternalFrameHandler.class); + registerBean(JMenu.class, JMenuHandler.class); + registerBean(JPasswordField.class, JPasswordFieldHandler.class); + registerBean(JPopupMenu.class, JPopupMenuHandler.class); + registerBean(JProgressBar.class, JProgressBarHandler.class); + registerBean(JScrollPane.class, JScrollPaneHandler.class); + registerBean(JSlider.class, JSliderHandler.class); + registerBean(JSpinner.class, JSpinnerHandler.class); + registerBean(JSplitPane.class, JSplitPaneHandler.class); + registerBean(JTabbedPane.class, JTabbedPaneHandler.class); + registerBean(JTextComponent.class, JTextComponentHandler.class); + registerBean(JToolBar.class, JToolBarHandler.class); + + registerBean(Table.class, TableHandler.class); + registerBean(JAXXTab.class, JAXXTabHandler.class); + + + registerBean(SwingValidator.class, BeanValidatorHandler.class); + + + + // + // Register converters + // + + PrimitiveConverter primitiveConverter = new PrimitiveConverter(); + registerTypeConverter(boolean.class, primitiveConverter); + registerTypeConverter(Boolean.class, primitiveConverter); + registerTypeConverter(byte.class, primitiveConverter); + registerTypeConverter(Byte.class, primitiveConverter); + registerTypeConverter(short.class, primitiveConverter); + registerTypeConverter(Short.class, primitiveConverter); + registerTypeConverter(int.class, primitiveConverter); + registerTypeConverter(Integer.class, primitiveConverter); + registerTypeConverter(long.class, primitiveConverter); + registerTypeConverter(Long.class, primitiveConverter); + registerTypeConverter(float.class, primitiveConverter); + registerTypeConverter(Float.class, primitiveConverter); + registerTypeConverter(double.class, primitiveConverter); + registerTypeConverter(Double.class, primitiveConverter); + registerTypeConverter(char.class, primitiveConverter); + registerTypeConverter(Character.class, primitiveConverter); + registerTypeConverter(String.class, primitiveConverter); + + registerTypeConverter(Color.class, new ColorConverter()); + registerTypeConverter(GridBagConstraints.class, new GridBagConstraintsConverter()); + registerTypeConverter(Insets.class, new InsetsConverter()); + registerTypeConverter(KeyStroke.class, new KeyStrokeConverter()); + + } + + protected void registerBean(Class<?> beanClass, Class<? extends TagHandler> handlerClass) { + TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(beanClass), handlerClass); + } + + protected void registerTag(String namespace, String tagName, TagHandler handler) { + TagManager.registerTag(namespace, tagName, handler); + } + + protected void registerDecorator(String name, Class<? extends CompiledObjectDecorator> decoratorClass) { + + CompiledObjectDecoratorManager.registerDecorator(name, decoratorClass); + } + + protected void registerTypeConverter(Class<?> converterType, TypeConverter converter) { + + TypeManager.registerTypeConverter(converterType, converter); + } + + protected void registerDefaultNamespace(String namespace, Class<?>... beanClass) { + + for (Class<?> c : beanClass) { + TagManager.registerDefaultNamespace(c.getSimpleName(), namespace); + } + } +} diff --git a/jaxx-compiler/src/main/java/jaxx/spi/Initializer.java b/jaxx-compiler/src/main/java/jaxx/compiler/spi/Initializer.java similarity index 52% rename from jaxx-compiler/src/main/java/jaxx/spi/Initializer.java rename to jaxx-compiler/src/main/java/jaxx/compiler/spi/Initializer.java index af4f2b4..4bf9695 100644 --- a/jaxx-compiler/src/main/java/jaxx/spi/Initializer.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/spi/Initializer.java @@ -1,15 +1,17 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx.spi; +package jaxx.compiler.spi; /** * Performs SPI initialization, typically to register new tags, beans and converter. * <p/> * <b>Note:</b> To load such Initializer, we use the {@link java.util.ServiceLoader} mecanism. + * + * @see DefaultInitializer */ public interface Initializer { - /** Performs SPI initialization, typically to register new tags, beans and converter */ + + /** + * Performs SPI initialization, typically to register new + * tags, beans and converter. + */ void initialize(); -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/DefaultComponentHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultComponentHandler.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/tags/DefaultComponentHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultComponentHandler.java index 4a63e97..2f02f59 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/DefaultComponentHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultComponentHandler.java @@ -2,15 +2,15 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.CompiledObject; import jaxx.compiler.I18nHelper; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Element; @@ -212,7 +212,7 @@ public class DefaultComponentHandler extends DefaultObjectHandler { if ("icon".equals(propertyName)) { if (!(stringValue.startsWith("{") || stringValue.endsWith("}"))) { // this is a customized icon, add the icon creation code - if (compiler.getOptions().isUseUIManagerForIcon()) { + if (compiler.getConfiguration().isUseUIManagerForIcon()) { stringValue = "{" + jaxx.runtime.Util.class.getName() + ".getUIManagerIcon(\"" + stringValue + "\")}"; } else { stringValue = "{" + jaxx.runtime.Util.class.getName() + ".createImageIcon(\"" + stringValue + "\")}"; @@ -226,7 +226,7 @@ public class DefaultComponentHandler extends DefaultObjectHandler { return; } propertyName = "icon"; - if (compiler.getOptions().isUseUIManagerForIcon()) { + if (compiler.getConfiguration().isUseUIManagerForIcon()) { stringValue = "{" + jaxx.runtime.Util.class.getName() + ".getUIManagerActionIcon(\"" + stringValue + "\")}"; } else { stringValue = "{" + jaxx.runtime.Util.class.getName() + ".createActionIcon(\"" + stringValue + "\")}"; @@ -319,4 +319,4 @@ public class DefaultComponentHandler extends DefaultObjectHandler { } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/DefaultObjectHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java similarity index 98% rename from jaxx-compiler/src/main/java/jaxx/tags/DefaultObjectHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java index 538a8dc..250e062 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/DefaultObjectHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java @@ -2,28 +2,30 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JavaArgument; import jaxx.compiler.JavaMethod; -import jaxx.css.Stylesheet; -import jaxx.css.StylesheetHelper; -import jaxx.introspection.JAXXBeanInfo; -import jaxx.introspection.JAXXEventSetDescriptor; -import jaxx.introspection.JAXXIntrospector; -import jaxx.introspection.JAXXPropertyDescriptor; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.FieldDescriptor; -import jaxx.reflect.MethodDescriptor; +import jaxx.compiler.StylesheetHelper; +import jaxx.compiler.beans.JAXXBeanInfo; +import jaxx.compiler.beans.JAXXEventSetDescriptor; +import jaxx.compiler.beans.JAXXIntrospector; +import jaxx.compiler.beans.JAXXPropertyDescriptor; +import jaxx.compiler.decorators.CompiledObjectDecorator; +import jaxx.compiler.decorators.CompiledObjectDecoratorManager; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.FieldDescriptor; +import jaxx.compiler.reflect.MethodDescriptor; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.ComponentDescriptor; import jaxx.runtime.JAXXObject; import jaxx.runtime.JAXXObjectDescriptor; -import jaxx.types.TypeManager; +import jaxx.runtime.css.Stylesheet; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -43,7 +45,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.WeakHashMap; -import jaxx.compiler.CompiledObjectDecorator; /** * Default handler for class tags. Class tags are tags which represent instances of Java classes, @@ -203,7 +204,7 @@ public class DefaultObjectHandler implements TagHandler { * methods (represented by the simple name of the method, <b>not</b> the simplified JavaBeans-style name). * Methods which are not actually bound in their native class, but for which proxy events have been * configured (such as <code>JTextField.getText</code>, return <code>true</code>. - * @throws jaxx.UnsupportedAttributeException + * @throws UnsupportedAttributeException * ? */ public boolean isMemberBound(String name) throws UnsupportedAttributeException { @@ -562,7 +563,7 @@ public class DefaultObjectHandler implements TagHandler { * @param property property name to test * @return <code>true</code> if the specified property should be inherited by child components when specified * via CSS. - * @throws jaxx.UnsupportedAttributeException + * @throws UnsupportedAttributeException * ? */ public boolean isPropertyInherited(String property) throws UnsupportedAttributeException { @@ -689,7 +690,7 @@ public class DefaultObjectHandler implements TagHandler { if (name.equals("decorator")) { if (!value.isEmpty()) { - CompiledObjectDecorator decorator = CompiledObjectDecorator.getDecorator(value); + CompiledObjectDecorator decorator = CompiledObjectDecoratorManager.getDecorator(value); object.setDecorator(decorator); } continue; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/ScriptHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/ScriptHandler.java similarity index 86% rename from jaxx-compiler/src/main/java/jaxx/tags/ScriptHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/ScriptHandler.java index 94fabe1..0b57ebc 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/ScriptHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/ScriptHandler.java @@ -2,10 +2,10 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.JAXXCompiler; import org.w3c.dom.Attr; import org.w3c.dom.Element; @@ -26,6 +26,8 @@ import java.io.StringWriter; * @author Ethan Nicholas */ public class ScriptHandler implements TagHandler { + + @Override public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { File scriptFile = null; NamedNodeMap attributes = tag.getAttributes(); @@ -43,14 +45,13 @@ public class ScriptHandler implements TagHandler { while ((c = in.read(readBuffer)) > 0) { scriptBuffer.write(readBuffer, 0, c); } - } - catch (FileNotFoundException e) { + } catch (FileNotFoundException e) { compiler.reportError("script file not found: " + scriptFile); } compiler.registerScript(scriptBuffer.toString(), scriptFile); - } else - if (!name.startsWith("xmlns") && !JAXXCompiler.JAXX_INTERNAL_NAMESPACE.equals(attribute.getNamespaceURI())) + } else if (!name.startsWith("xmlns") && !JAXXCompiler.JAXX_INTERNAL_NAMESPACE.equals(attribute.getNamespaceURI())) { throw new UnsupportedAttributeException(name); + } } StringBuffer script = new StringBuffer(); @@ -75,7 +76,7 @@ public class ScriptHandler implements TagHandler { } } - + @Override public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { } } diff --git a/jaxx-compiler/src/main/java/jaxx/tags/StyleHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/StyleHandler.java similarity index 83% rename from jaxx-compiler/src/main/java/jaxx/tags/StyleHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/StyleHandler.java index 9ad929c..db8cebc 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/StyleHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/StyleHandler.java @@ -2,18 +2,18 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.JAXXCompiler; -import jaxx.css.CSSParser; -import jaxx.css.CSSParserConstants; -import jaxx.css.CSSParserTreeConstants; -import jaxx.css.Rule; -import jaxx.css.Selector; -import jaxx.css.SimpleNode; -import jaxx.css.Stylesheet; +import jaxx.compiler.parser.css.CSSParser; +import jaxx.compiler.parser.css.CSSParserConstants; +import jaxx.compiler.parser.css.CSSParserTreeConstants; +import jaxx.runtime.css.Rule; +import jaxx.runtime.css.Selector; +import jaxx.compiler.parser.css.SimpleNode; +import jaxx.runtime.css.Stylesheet; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -38,7 +38,9 @@ import java.util.Map; * @author Ethan Nicholas */ public class StyleHandler implements TagHandler { - public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + + @Override + public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { boolean source = false; NamedNodeMap attributes = tag.getAttributes(); for (int i = 0; i < attributes.getLength(); i++) { @@ -53,18 +55,18 @@ public class StyleHandler implements TagHandler { FileReader in = new FileReader(styleFile); char[] readBuffer = new char[2048]; int c; - while ((c = in.read(readBuffer)) > 0) + while ((c = in.read(readBuffer)) > 0) { styleBuffer.write(readBuffer, 0, c); - } - catch (FileNotFoundException e) { + } + } catch (FileNotFoundException e) { compiler.reportError("stylesheet file not found: " + styleFile); } compiler.getSourceFiles().push(styleFile); compiler.registerStylesheet(processStylesheet(styleBuffer.toString())); compiler.getSourceFiles().pop(); - } else - if (!name.startsWith("xmlns") && !JAXXCompiler.JAXX_INTERNAL_NAMESPACE.equals(attribute.getNamespaceURI())) + } else if (!name.startsWith("xmlns") && !JAXXCompiler.JAXX_INTERNAL_NAMESPACE.equals(attribute.getNamespaceURI())) { throw new UnsupportedAttributeException(name); + } } StringBuffer style = new StringBuffer(); @@ -82,20 +84,21 @@ public class StyleHandler implements TagHandler { String styleString = style.toString().trim(); if (styleString.length() > 0) { - if (source) + if (source) { compiler.reportError("<style> tag has both a source attribute and an inline stylesheet"); + } compiler.registerStylesheet(processStylesheet(style.toString())); } } - - public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + @Override + public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { } - protected Selector processSelector(SimpleNode selector) { - if (selector.getId() != CSSParserTreeConstants.JJTSELECTOR) + if (selector.getId() != CSSParserTreeConstants.JJTSELECTOR) { throw new IllegalArgumentException("argument node is not a Selector"); + } String javaClassName = null; String styleClass = null; String pseudoClass = null; @@ -105,8 +108,9 @@ public class StyleHandler implements TagHandler { SimpleNode child = selector.getChild(i); switch (child.getId()) { case CSSParserTreeConstants.JJTJAVACLASS: - if (!child.getText().trim().equals("*")) + if (!child.getText().trim().equals("*")) { javaClassName = child.getText(); + } break; case CSSParserTreeConstants.JJTCLASS: styleClass = child.getText().substring(1); @@ -126,7 +130,6 @@ public class StyleHandler implements TagHandler { return new Selector(javaClassName, styleClass, pseudoClass, id); } - protected Rule processRule(SimpleNode ruleNode) { if (ruleNode.getId() != CSSParserTreeConstants.JJTRULE) { throw new IllegalArgumentException("argument node is not a Rule"); @@ -158,7 +161,6 @@ public class StyleHandler implements TagHandler { return rule; } - protected Stylesheet processStylesheet(String stylesheetText) throws CompilerException { CSSParser p = new CSSParser(new StringReader(stylesheetText)); SimpleNode node; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/TagHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/TagHandler.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/tags/TagHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/TagHandler.java index 93c5bd4..8867da2 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/TagHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/TagHandler.java @@ -2,9 +2,9 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; import org.w3c.dom.Element; @@ -19,6 +19,7 @@ import java.io.IOException; * @author Ethan Nicholas */ public interface TagHandler { + /** * Performs the first pass of compilation on an XML tag from a JAXX source file. * <code>TagHandler</code> implementations affect the generated <code>.java</code> @@ -31,7 +32,6 @@ public interface TagHandler { */ void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException; - /** * Performs the second pass of compilation on an XML tag from a JAXX source file. * <code>TagHandler</code> implementations affect the generated <code>.java</code> @@ -43,4 +43,4 @@ public interface TagHandler { * @throws IOException if an I/O error occurs */ void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException; -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/TagManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/TagManager.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/tags/TagManager.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/TagManager.java index d4ae0f0..85bdfa7 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/TagManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/TagManager.java @@ -2,13 +2,12 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags; +package jaxx.compiler.tags; -import jaxx.ClassMap; -import jaxx.CompilerException; import jaxx.compiler.*; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.decorators.CompiledObjectDecoratorManager; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -22,24 +21,20 @@ import java.util.Set; /** Manages TagHandlers, including automatically compiling .jaxx files corresponding to class tags. */ public class TagManager { + /** log */ protected static final Log log = LogFactory.getLog(TagManager.class); - /** * Namespace for JAXX's non-class tags, such as <script;>. The namespace normally does not * need to be specified but can be used to resolve ambiguities. */ public static final String JAXX_NAMESPACE = "http://www.jaxxframework.org/"; - /** Maps simple tag names to their default namespaces (package names). */ private static Map<String, String> defaultNamespaces = new HashMap<String, String>(); - /** Maps qualified tag names to the TagHandlers responsible for processing them. */ private static Map<QName, TagHandler> registeredTags = new HashMap<QName, TagHandler>(); - /** Keeps track of whether or not named classes exist. */ private static Map<String, Boolean> classExistenceCache = new HashMap<String, Boolean>(); - /** * Maps bean classes to their TagHandler classes. The mapping is to TagHandler classes, rather than to * TagHandler instances, because subclasses of the bean class should be handled by the same TagHandler @@ -49,6 +44,7 @@ public class TagManager { // still targeting 1.4, so I can't use javax.xml.namespace.QName private static class QName { + private String namespaceURI; private String localPart; @@ -60,12 +56,10 @@ public class TagManager { this.localPart = localPart; } - public String getNamespaceURI() { return namespaceURI; } - public String getLocalPart() { return localPart; } @@ -85,19 +79,16 @@ public class TagManager { } } - private TagManager() { /* not instantiable */ } - public static void reset(boolean verbose) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException { registeredBeans.clear(); registeredTags.clear(); defaultNamespaces.clear(); - CompiledObjectDecorator.reset(); + CompiledObjectDecoratorManager.reset(); JAXXCompilerLaunchor.loadLibraries(verbose); } - /** * Maps a class tag to a specific <code>TagHandler</code>. When a tag representing the bean class is * encountered (either the class' simple name, if it is unambiguous, or its fully-qualified name), the specified @@ -123,7 +114,6 @@ public class TagManager { registerDefaultNamespace(name, namespace); } - /** * Sets the default namespace for a tag. When the tag is encountered with no namespace specified, * the specified namespace will be assumed. Mapping the same tag to two or more default namespaces @@ -146,7 +136,6 @@ public class TagManager { } } - /** * Registers a <code>TagHandler</code> for a tag. When a tag with the given name and namespace * is encountered, the <code>TagHandler's compileFirstPass</code> and <code>compileSecondPass</code> @@ -172,7 +161,6 @@ public class TagManager { registerDefaultNamespace(tag, namespace); } - /** * Returns the <code>TagHandler</code> that should be used to process the specified tag. * If the tag represents the class name of an uncompiled <code>.jaxx</code> file, the @@ -182,20 +170,18 @@ public class TagManager { * @param tag the tag's simple name * @param compiler the current <code>JAXXCompiler</code> * @return the <code>TagHandler</code> for the tag - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ - public static TagHandler getTagHandler(String namespace, String tag, JAXXCompiler compiler) throws CompilerException { + public static TagHandler getTagHandler(String namespace, String tag, JAXXCompiler compiler) throws CompilerException { return getTagHandler(namespace, tag, false, compiler); } - private static String getNamespace(ClassDescriptor beanClass) { String packageName = beanClass.getPackageName(); return packageName != null ? packageName + ".*" : "*"; } - private static String getSimpleName(ClassDescriptor beanClass) { String packageName = beanClass.getPackageName(); if (packageName != null) { @@ -205,13 +191,12 @@ public class TagManager { return beanClass.getName(); } - /** * @param beanClass the tag class * @return the <code>TagHandler</code> that should be used to process the specified class. * Only <code>TagHandlers</code> previously registered with <code>registerBean</code> * are considered. - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ public static DefaultObjectHandler getTagHandler(ClassDescriptor beanClass) throws CompilerException { try { @@ -231,22 +216,17 @@ public class TagManager { registerTag(namespace, tag, handler); } return handler; - } - catch (InstantiationException e) { + } catch (InstantiationException e) { throw new RuntimeException(e); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { throw new RuntimeException(e); - } - catch (IllegalAccessException e) { + } catch (IllegalAccessException e) { throw new RuntimeException(e); - } - catch (InvocationTargetException e) { + } catch (InvocationTargetException e) { throw new RuntimeException(e); } } - private static boolean classExists(String className, JAXXCompiler compiler) { if (classExistenceCache.containsKey(className)) { return classExistenceCache.get(className); @@ -256,11 +236,9 @@ public class TagManager { try { Class.forName(className, true, compiler.getClassLoader()); found = true; - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { // ignore ? - } - catch (NoClassDefFoundError e) { // we get this instead of ClassNotFoundException on case-insensitive file systems when + } catch (NoClassDefFoundError e) { // we get this instead of ClassNotFoundException on case-insensitive file systems when // looking up a class with the wrong case } @@ -279,7 +257,6 @@ public class TagManager { return found; } - private static String determinePackage(String simpleClassName, String defaultPackage, JAXXCompiler compiler) { String namespace = null; Set<String> classes = compiler.getImportedClasses(); @@ -313,7 +290,6 @@ public class TagManager { return namespace; } - /** * Returns the <code>TagHandler</code> that should be used to process the specified tag. * <p/> @@ -328,9 +304,9 @@ public class TagManager { * @param namespacePrefix <code>true</code> if the namespace was specified by means of a namespace prefix (as opposed to a default namespace) * @param compiler the current <code>JAXXCompiler</code> * @return the <code>TagHandler</code> for the tag - * @throws jaxx.CompilerException ? + * @throws CompilerException ? */ - public static TagHandler getTagHandler(String namespace, String tag, boolean namespacePrefix, JAXXCompiler compiler) throws CompilerException { + public static TagHandler getTagHandler(String namespace, String tag, boolean namespacePrefix, JAXXCompiler compiler) throws CompilerException { if (tag == null) { throw new NullPointerException(); } @@ -365,8 +341,7 @@ public class TagManager { if (handler == null) { try { handler = getTagHandler(ClassDescriptorLoader.getClassDescriptor(className, compiler.getClassLoader())); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { e.printStackTrace(); } } @@ -376,7 +351,6 @@ public class TagManager { return handler; } - /** * Resolves a simple class name (like <code>Object</code> or <code>String</code>) to its fully-qualified name. Inner * classes should be represented as they would appear in Java source code (e.g. JPopupMenu.Separator). Fully-qualified names, @@ -433,7 +407,7 @@ public class TagManager { // com.mycompany.* : Outer$Inner$Innerer$Innerest // And at this point we have a match with the class Outer$Inner$Innerer$Innerest in package com.mycompany. int dotPos = originalName.lastIndexOf('.'); - for (; ;) { + for (;;) { String namespace = dotPos != -1 ? originalName.substring(0, dotPos) + ".*" : "*"; name = originalName.substring(dotPos + 1).replace('.', '$'); String packageName = determinePackage(name, namespace, compiler); @@ -473,17 +447,15 @@ public class TagManager { return result; } - - public static ClassDescriptor resolveClass(String className, JAXXCompiler compiler) { + public static ClassDescriptor resolveClass(String className, JAXXCompiler compiler) { try { className = resolveClassName(className, compiler); if (className == null) { return null; } return ClassDescriptorLoader.getClassDescriptor(className, compiler.getClassLoader()); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { return null; } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/ApplicationHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ApplicationHandler.java similarity index 84% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/ApplicationHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ApplicationHandler.java index f35c5dc..ba7a215 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/ApplicationHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ApplicationHandler.java @@ -2,15 +2,15 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import jaxx.runtime.swing.Application; -import jaxx.types.TypeManager; +import jaxx.compiler.types.TypeManager; import org.w3c.dom.Element; import javax.swing.WindowConstants; @@ -22,7 +22,6 @@ public class ApplicationHandler extends JWindowHandler { ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, Application.class); } - @Override public void setAttribute(CompiledObject object, String propertyName, String stringValue, boolean inline, JAXXCompiler compiler) throws CompilerException { if (propertyName.equals("lookAndFeel") && stringValue != null && !stringValue.trim().startsWith("{")) { @@ -32,10 +31,9 @@ public class ApplicationHandler extends JWindowHandler { } } - @Override protected void setDefaults(CompiledObject object, Element tag, JAXXCompiler compiler) throws CompilerException { super.setDefaults(object, tag, compiler); setAttribute(object, "defaultCloseOperation", String.valueOf(WindowConstants.EXIT_ON_CLOSE), false, compiler); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/CellHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CellHandler.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/CellHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CellHandler.java index ffa6aa0..ef1c5b4 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/CellHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CellHandler.java @@ -2,13 +2,13 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.JAXXCompiler; -import jaxx.tags.TagHandler; -import jaxx.types.TypeManager; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.types.TypeManager; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -21,11 +21,13 @@ import java.awt.Insets; import java.io.IOException; public class CellHandler implements TagHandler { + + @Override public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compileChildrenFirstPass(tag, compiler); } - + @Override public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { Node parent = tag.getParentNode(); if (parent.getNodeType() != Node.ELEMENT_NODE || !parent.getLocalName().equals("row")) { @@ -40,7 +42,6 @@ public class CellHandler implements TagHandler { compileChildrenSecondPass(tag, compiler); } - public static void setAttribute(GridBagConstraints c, String name, String value) throws CompilerException { value = value.trim(); if (name.equals("insets")) { @@ -93,7 +94,6 @@ public class CellHandler implements TagHandler { } } - public static void setAttributes(GridBagConstraints c, Element tag) throws CompilerException { NamedNodeMap children = tag.getAttributes(); for (int i = 0; i < children.getLength(); i++) { @@ -106,7 +106,6 @@ public class CellHandler implements TagHandler { } } - protected void compileChildrenFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { @@ -124,7 +123,6 @@ public class CellHandler implements TagHandler { } } - protected void compileChildrenSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { @@ -142,13 +140,11 @@ public class CellHandler implements TagHandler { } } - protected void compileChildTagFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileFirstPass(tag); } - protected void compileChildTagSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileSecondPass(tag); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/CompiledItemContainer.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CompiledItemContainer.java similarity index 88% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/CompiledItemContainer.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CompiledItemContainer.java index 88da6b8..ea3ee60c 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/CompiledItemContainer.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/CompiledItemContainer.java @@ -2,12 +2,12 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; import jaxx.runtime.swing.Item; import java.util.ArrayList; @@ -16,6 +16,7 @@ import java.util.Stack; /** Compiled representation of a class that contains Items arranged in a list or tree structure (JComboBox, JList, JTree). */ class CompiledItemContainer extends CompiledObject { + private List<Item> items = new ArrayList<Item>(); private Stack<Item> openNodes = new Stack<Item>(); @@ -23,7 +24,6 @@ class CompiledItemContainer extends CompiledObject { super(id, objectClass, compiler); } - public void openItem(Item item) { if (openNodes.isEmpty()) { items.add(item); @@ -34,20 +34,17 @@ class CompiledItemContainer extends CompiledObject { openNodes.add(item); } - public void closeItem(Item item) { if (openNodes.pop() != item) { throw new IllegalArgumentException(item + " was not at the top of the item stack"); } } - public List<Item> getItems() { return items; } - public void setItems(List<Item> items) { this.items = items; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/ItemHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ItemHandler.java similarity index 83% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/ItemHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ItemHandler.java index fa491a3..f31d808 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/ItemHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/ItemHandler.java @@ -2,15 +2,15 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.Item; -import jaxx.tags.TagHandler; -import jaxx.types.TypeManager; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -22,15 +22,16 @@ import java.io.IOException; import java.util.List; public class ItemHandler implements TagHandler { + private String DATA_BINDING = "<data binding has not been processed yet>"; @Override - public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compileChildrenFirstPass(tag, compiler); } @Override - public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { String id = tag.getAttribute("id"); if (id == null || id.length() == 0) { id = compiler.getAutoId(ClassDescriptorLoader.getClassDescriptor(Item.class)); @@ -52,8 +53,7 @@ public class ItemHandler implements TagHandler { String labelBinding = compiler.processDataBindings(attrValue, ClassDescriptorLoader.getClassDescriptor(String.class)); if (labelBinding != null) { compiler.registerDataBinding(labelBinding, id + ".label", id + ".setLabel(" + labelBinding + ");"); - } - else { + } else { label = attrValue; } continue; @@ -72,8 +72,7 @@ public class ItemHandler implements TagHandler { String selectedBinding = compiler.processDataBindings(attrValue, ClassDescriptorLoader.getClassDescriptor(Boolean.class)); if (selectedBinding != null) { compiler.registerDataBinding(selectedBinding, id + ".selected", id + ".setSelected(" + selectedBinding + ");"); - } - else { + } else { selected = (Boolean) TypeManager.convertFromString(attrValue, Boolean.class); } continue; @@ -88,8 +87,7 @@ public class ItemHandler implements TagHandler { CompiledItemContainer list = (CompiledItemContainer) compiler.getOpenComponent(); if (value == null) { compiler.reportError("<item> tag is missing required 'value' attribute"); - } - else { + } else { if (!value.equals(DATA_BINDING)) { List<Item> items = list.getItems(); for (Item item1 : items) { @@ -105,8 +103,7 @@ public class ItemHandler implements TagHandler { } } - - protected void compileChildrenFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + protected void compileChildrenFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); @@ -114,8 +111,7 @@ public class ItemHandler implements TagHandler { if (nodeType == Node.ELEMENT_NODE) { Element child = (Element) node; compileChildTagFirstPass(child, compiler); - } else - if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) { + } else if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) { String text = ((Text) node).getData().trim(); if (text.length() > 0) { compiler.reportError("tag '" + tag.getLocalName() + "' may not contain text ('" + ((Text) node).getData().trim() + "')"); @@ -124,8 +120,7 @@ public class ItemHandler implements TagHandler { } } - - protected void compileChildrenSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + protected void compileChildrenSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); @@ -133,8 +128,7 @@ public class ItemHandler implements TagHandler { if (nodeType == Node.ELEMENT_NODE) { Element child = (Element) node; compileChildTagSecondPass(child, compiler); - } else - if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) { + } else if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) { String text = ((Text) node).getData().trim(); if (text.length() > 0) { compiler.reportError("tag '" + tag.getLocalName() + "' may not contain text ('" + ((Text) node).getData().trim() + "')"); @@ -143,13 +137,11 @@ public class ItemHandler implements TagHandler { } } - - protected void compileChildTagFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + protected void compileChildTagFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileFirstPass(tag); } - - protected void compileChildTagSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { + protected void compileChildTagSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileSecondPass(tag); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXComboBoxHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXComboBoxHandler.java similarity index 89% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXComboBoxHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXComboBoxHandler.java index ebe6aa5..29766a8 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXComboBoxHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXComboBoxHandler.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.runtime.swing.Item; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.JAXXComboBox; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; +import jaxx.runtime.swing.Item; import org.w3c.dom.Element; import java.awt.event.ItemListener; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXListHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXListHandler.java similarity index 90% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXListHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXListHandler.java index 194b467..afe7e47 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXListHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXListHandler.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.runtime.swing.Item; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.JAXXList; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; +import jaxx.runtime.swing.Item; import org.w3c.dom.Element; import javax.swing.event.ListSelectionListener; @@ -20,6 +20,7 @@ import java.io.IOException; import java.util.List; public class JAXXListHandler extends DefaultComponentHandler { + public JAXXListHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JAXXList.class); diff --git a/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTabHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTabHandler.java new file mode 100644 index 0000000..e3de954 --- /dev/null +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTabHandler.java @@ -0,0 +1,11 @@ +package jaxx.compiler.tags.swing; + +import jaxx.compiler.reflect.ClassDescriptor; + +/** @author chemit */ +public class JAXXTabHandler extends TableHandler { + + public JAXXTabHandler(ClassDescriptor beanClass) { + super(beanClass); + } +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTreeHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTreeHandler.java similarity index 91% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTreeHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTreeHandler.java index 24221ed..2059a0f 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTreeHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JAXXTreeHandler.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.Item; import jaxx.runtime.swing.JAXXTree; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; import org.w3c.dom.Element; import javax.swing.event.TreeSelectionListener; @@ -20,6 +20,7 @@ import java.io.IOException; import java.util.List; public class JAXXTreeHandler extends DefaultComponentHandler { + public JAXXTreeHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JAXXTree.class); diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JCheckBoxHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JCheckBoxHandler.java similarity index 74% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JCheckBoxHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JCheckBoxHandler.java index be9be7d..aafc0f3 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JCheckBoxHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JCheckBoxHandler.java @@ -2,16 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import javax.swing.AbstractButton; import javax.swing.event.ChangeListener; public class JCheckBoxHandler extends DefaultComponentHandler { + public JCheckBoxHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, AbstractButton.class); @@ -22,4 +23,4 @@ public class JCheckBoxHandler extends DefaultComponentHandler { super.configureProxyEventInfo(); addProxyEventInfo("isSelected", ChangeListener.class, "model"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JComboBoxHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JComboBoxHandler.java similarity index 81% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JComboBoxHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JComboBoxHandler.java index a984400..7ffb583 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JComboBoxHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JComboBoxHandler.java @@ -2,19 +2,19 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import java.io.IOException; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import java.io.IOException; import java.awt.event.ItemListener; import javax.swing.JComboBox; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; public class JComboBoxHandler extends DefaultComponentHandler { diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JInternalFrameHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JInternalFrameHandler.java similarity index 87% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JInternalFrameHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JInternalFrameHandler.java index e59259a..1111fea 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JInternalFrameHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JInternalFrameHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.JInternalFrame; @@ -26,6 +26,7 @@ public class JInternalFrameHandler extends DefaultComponentHandler { @Override public CompiledObject createCompiledObject(String id, JAXXCompiler compiler) throws CompilerException { return new CompiledObject(id, getBeanClass(), compiler) { + @Override public void addChild(CompiledObject child, String constraints, JAXXCompiler compiler) throws CompilerException { if (ClassDescriptorLoader.getClassDescriptor(JMenuBar.class).isAssignableFrom(child.getObjectClass())) { @@ -45,10 +46,9 @@ public class JInternalFrameHandler extends DefaultComponentHandler { setAttribute(object, "defaultCloseOperation", String.valueOf(WindowConstants.DISPOSE_ON_CLOSE), false, compiler); } - @Override public void setAttributes(CompiledObject object, Element tag, JAXXCompiler compiler) throws CompilerException { super.setAttributes(object, tag, compiler); compiler.appendInitializerCode(object.getId() + ".pack();\n"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JListHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JListHandler.java similarity index 83% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JListHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JListHandler.java index f0a8f4a..6abf30a 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JListHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JListHandler.java @@ -1,16 +1,16 @@ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; +import org.w3c.dom.NodeList; -import javax.swing.event.ListSelectionListener; import java.io.IOException; +import javax.swing.event.ListSelectionListener; import javax.swing.JList; -import org.w3c.dom.NodeList; public class JListHandler extends DefaultComponentHandler { diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JMenuHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JMenuHandler.java similarity index 72% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JMenuHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JMenuHandler.java index 1bb103f..4e4529f 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JMenuHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JMenuHandler.java @@ -2,11 +2,11 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import javax.swing.JMenu; import javax.swing.event.MenuListener; @@ -23,4 +23,4 @@ public class JMenuHandler extends DefaultComponentHandler { super.configureProxyEventInfo(); addProxyEventInfo("isSelected", MenuListener.class); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JPasswordFieldHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPasswordFieldHandler.java similarity index 79% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JPasswordFieldHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPasswordFieldHandler.java index c15dadd..6fef48b 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JPasswordFieldHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPasswordFieldHandler.java @@ -2,10 +2,10 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import javax.swing.JPasswordField; import javax.swing.event.DocumentListener; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JPopupMenuHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPopupMenuHandler.java similarity index 76% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JPopupMenuHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPopupMenuHandler.java index 47bc082..346a95a 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JPopupMenuHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JPopupMenuHandler.java @@ -2,18 +2,19 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.JPopupMenu; public class JPopupMenuHandler extends DefaultComponentHandler { + public JPopupMenuHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JPopupMenu.class); @@ -28,4 +29,4 @@ public class JPopupMenuHandler extends DefaultComponentHandler { protected void openComponent(CompiledObject object, Element tag, JAXXCompiler compiler) { compiler.openInvisibleComponent(object); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JProgressBarHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JProgressBarHandler.java similarity index 74% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JProgressBarHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JProgressBarHandler.java index 5e087c8..9de5b52 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JProgressBarHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JProgressBarHandler.java @@ -2,11 +2,11 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import javax.swing.JProgressBar; import javax.swing.event.ChangeListener; @@ -23,4 +23,4 @@ public class JProgressBarHandler extends DefaultComponentHandler { super.configureProxyEventInfo(); addProxyEventInfo("getValue", ChangeListener.class, "change"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JRadioButtonHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JRadioButtonHandler.java similarity index 90% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JRadioButtonHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JRadioButtonHandler.java index b5a0b8b..1f4f65b 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JRadioButtonHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JRadioButtonHandler.java @@ -2,22 +2,23 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.JAXXButtonGroup; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; import javax.swing.AbstractButton; import javax.swing.event.ChangeListener; public class JRadioButtonHandler extends DefaultComponentHandler { + private static final String VALUE_PROPERTY = JAXXButtonGroup.VALUE_CLIENT_PROPERTY.substring(1); private static final String BUTTON_GROUP_PROPERTY = JAXXButtonGroup.BUTTON8GROUP_CLIENT_PROPERTY.substring(1); @@ -77,5 +78,4 @@ public class JRadioButtonHandler extends DefaultComponentHandler { return super.getSetPropertyCode(id, name, valueCode, compiler); } } - -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JScrollPaneHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JScrollPaneHandler.java similarity index 82% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JScrollPaneHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JScrollPaneHandler.java index aa6d15e..d8439a3 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JScrollPaneHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JScrollPaneHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import javax.swing.JScrollPane; @@ -23,6 +23,7 @@ public class JScrollPaneHandler extends DefaultComponentHandler { @Override public CompiledObject createCompiledObject(String id, JAXXCompiler compiler) throws CompilerException { return new CompiledObject(id, getBeanClass(), compiler) { + boolean hasChild; @Override @@ -38,4 +39,4 @@ public class JScrollPaneHandler extends DefaultComponentHandler { } }; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSliderHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSliderHandler.java similarity index 83% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JSliderHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSliderHandler.java index a09a73d..320b8f8 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSliderHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSliderHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Attr; import org.w3c.dom.Element; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSpinnerHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSpinnerHandler.java similarity index 91% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JSpinnerHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSpinnerHandler.java index c839b0e..a14c75b 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSpinnerHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSpinnerHandler.java @@ -2,20 +2,21 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.JSpinner; import javax.swing.event.ChangeListener; public class JSpinnerHandler extends DefaultComponentHandler { + public static String MINIMUM_PROPERTY = "minimum"; public static String MAXIMUM_PROPERTY = "maximum"; public static String VALUE_PROPERTY = "value"; @@ -26,6 +27,7 @@ public class JSpinnerHandler extends DefaultComponentHandler { } public static class CompiledSpinner extends CompiledObject { + Integer minimum = null; Integer maximum = null; Integer value = null; @@ -89,4 +91,4 @@ public class JSpinnerHandler extends DefaultComponentHandler { super.closeComponent(object, tag, compiler); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSplitPaneHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSplitPaneHandler.java similarity index 89% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JSplitPaneHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSplitPaneHandler.java index b9ef79b..3459b67 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JSplitPaneHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JSplitPaneHandler.java @@ -2,20 +2,21 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.JSplitPane; import java.awt.Component; public class JSplitPaneHandler extends DefaultComponentHandler { + public JSplitPaneHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JSplitPane.class); @@ -48,6 +49,7 @@ public class JSplitPaneHandler extends DefaultComponentHandler { @Override public CompiledObject createCompiledObject(String id, JAXXCompiler compiler) throws CompilerException { return new CompiledObject(id, getBeanClass(), compiler) { + private int count; @Override @@ -66,4 +68,4 @@ public class JSplitPaneHandler extends DefaultComponentHandler { } }; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTabbedPaneHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTabbedPaneHandler.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JTabbedPaneHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTabbedPaneHandler.java index 7ca446e..7fb3c96 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTabbedPaneHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTabbedPaneHandler.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.I18nHelper; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.TabInfo; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; import javax.swing.Icon; import javax.swing.JTabbedPane; @@ -21,14 +21,15 @@ import java.awt.Color; import java.awt.event.ContainerListener; public class JTabbedPaneHandler extends DefaultComponentHandler { + public JTabbedPaneHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JTabbedPane.class); } public static class CompiledTabbedPane extends CompiledObject { - private static final TabInfo USED = new TabInfo("ALREADY USED"); + private static final TabInfo USED = new TabInfo("ALREADY USED"); int tabCount; TabInfo tabInfo; @@ -132,4 +133,4 @@ public class JTabbedPaneHandler extends DefaultComponentHandler { addProxyEventInfo("getSelectedComponent", ChangeListener.class); addProxyEventInfo("getTabCount", ContainerListener.class); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTextComponentHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTextComponentHandler.java similarity index 84% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JTextComponentHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTextComponentHandler.java index 1c91b2e..7ded1c6 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTextComponentHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTextComponentHandler.java @@ -2,23 +2,24 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.runtime.SwingUtil; import org.w3c.dom.Attr; import org.w3c.dom.Element; import javax.swing.JTextArea; import javax.swing.event.DocumentListener; import javax.swing.text.JTextComponent; -import jaxx.runtime.SwingUtil; public class JTextComponentHandler extends DefaultComponentHandler { + private static final int DEFAULT_COLUMNS = 15; public JTextComponentHandler(ClassDescriptor beanClass) { @@ -32,8 +33,7 @@ public class JTextComponentHandler extends DefaultComponentHandler { try { object.getObjectClass().getMethodDescriptor("setColumns", ClassDescriptorLoader.getClassDescriptor(int.class)); setAttribute(object, "columns", String.valueOf(DEFAULT_COLUMNS), false, compiler); - } - catch (NoSuchMethodException e) { + } catch (NoSuchMethodException e) { // ignore ? } @@ -46,7 +46,7 @@ public class JTextComponentHandler extends DefaultComponentHandler { @Override public String getSetPropertyCode(String id, String name, String valueCode, JAXXCompiler compiler) throws CompilerException { if (name.equals("text")) { - return SwingUtil.class.getName()+".setText(" + id + ", " + valueCode + ");\n"; + return SwingUtil.class.getName() + ".setText(" + id + ", " + valueCode + ");\n"; //return "jaxx.runtime.swing.Utils.setText(" + id + ", " + valueCode + ");\n"; } return super.getSetPropertyCode(id, name, valueCode, compiler); @@ -67,4 +67,4 @@ public class JTextComponentHandler extends DefaultComponentHandler { super.configureProxyEventInfo(); addProxyEventInfo("getText", DocumentListener.class, "document"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JToolBarHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JToolBarHandler.java similarity index 84% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JToolBarHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JToolBarHandler.java index 8135bc2..3c67a91 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JToolBarHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JToolBarHandler.java @@ -2,15 +2,16 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import javax.swing.JToolBar; public class JToolBarHandler extends DefaultComponentHandler { + public JToolBarHandler(ClassDescriptor beanClass) { super(beanClass); ClassDescriptorLoader.checkSupportClass(getClass(), beanClass, JToolBar.class); @@ -35,4 +36,4 @@ public class JToolBarHandler extends DefaultComponentHandler { } return super.constantValue(key, value); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTreeHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTreeHandler.java similarity index 83% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JTreeHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTreeHandler.java index 77fd645..02b3b42 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JTreeHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JTreeHandler.java @@ -1,10 +1,10 @@ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.event.TreeSelectionListener; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JWindowHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JWindowHandler.java similarity index 85% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/JWindowHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JWindowHandler.java index 22a4c91..ef936cf 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JWindowHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/JWindowHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; import org.w3c.dom.Element; import javax.swing.JDialog; @@ -29,6 +29,7 @@ public class JWindowHandler extends DefaultComponentHandler { @Override public CompiledObject createCompiledObject(String id, JAXXCompiler compiler) throws CompilerException { return new CompiledObject(id, getBeanClass(), compiler) { + @Override public void addChild(CompiledObject child, String constraints, JAXXCompiler compiler) throws CompilerException { if (ClassDescriptorLoader.getClassDescriptor(JMenuBar.class).isAssignableFrom(child.getObjectClass())) { @@ -53,9 +54,9 @@ public class JWindowHandler extends DefaultComponentHandler { public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { super.compileSecondPass(tag, compiler); CompiledObject object = objectMap.get(tag); - Map<?,?> properties = object.getProperties(); + Map<?, ?> properties = object.getProperties(); if (!properties.containsKey("width") && !properties.containsKey("height")) { compiler.appendLateInitializer(object.getId() + ".pack();\n"); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/RowHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/RowHandler.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/RowHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/RowHandler.java index a5db9a9..d35d696 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/RowHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/RowHandler.java @@ -2,13 +2,13 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.TagHandler; import jaxx.runtime.swing.Table; -import jaxx.tags.TagHandler; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/TabHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TabHandler.java similarity index 95% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/TabHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TabHandler.java index a8b3b0f..fd463fa 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/TabHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TabHandler.java @@ -2,16 +2,16 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.I18nHelper; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.TabInfo; -import jaxx.tags.TagHandler; -import jaxx.types.TypeManager; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; @@ -31,7 +31,6 @@ public class TabHandler implements TagHandler { compileChildrenFirstPass(tag, compiler); } - @Override public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { if (!ClassDescriptorLoader.getClassDescriptor(JTabbedPane.class).isAssignableFrom(compiler.getOpenComponent().getObjectClass())) { @@ -55,7 +54,6 @@ public class TabHandler implements TagHandler { tabs.tabInfo = null; } - public static void setAttribute(CompiledObject compiledTabInfo, JTabbedPaneHandler.CompiledTabbedPane tabs, String name, String value, JAXXCompiler compiler) throws CompilerException { value = value.trim(); TabInfo tabInfo = tabs.tabInfo; @@ -116,7 +114,6 @@ public class TabHandler implements TagHandler { } } - public void setAttributes(CompiledObject compiledTabInfo, JTabbedPaneHandler.CompiledTabbedPane tabs, Element tag, JAXXCompiler compiler) throws CompilerException { NamedNodeMap children = tag.getAttributes(); for (int i = 0; i < children.getLength(); i++) { @@ -129,7 +126,6 @@ public class TabHandler implements TagHandler { } } - protected void compileChildrenFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { @@ -147,12 +143,10 @@ public class TabHandler implements TagHandler { } } - protected void compileChildTagFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileFirstPass(tag); } - protected void compileChildrenSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { NodeList children = tag.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { @@ -170,8 +164,7 @@ public class TabHandler implements TagHandler { } } - protected void compileChildTagSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { compiler.compileSecondPass(tag); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/TableHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TableHandler.java similarity index 89% rename from jaxx-compiler/src/main/java/jaxx/tags/swing/TableHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TableHandler.java index d97c12a..cccbaf5 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/TableHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/swing/TableHandler.java @@ -2,17 +2,17 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.swing; +package jaxx.compiler.tags.swing; -import jaxx.CompilerException; -import jaxx.UnsupportedAttributeException; +import jaxx.compiler.CompilerException; +import jaxx.compiler.UnsupportedAttributeException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultComponentHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.swing.Table; -import jaxx.tags.DefaultComponentHandler; -import jaxx.types.TypeManager; import java.awt.GridBagConstraints; import java.awt.Insets; @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; public class TableHandler extends DefaultComponentHandler { + public static final Insets DEFAULT_INSETS = new Insets(3, 3, 3, 3); public TableHandler(ClassDescriptor beanClass) { @@ -35,15 +36,14 @@ public class TableHandler extends DefaultComponentHandler { } else { super.setAttribute(object, propertyName, stringValue, inline, compiler); } - } - catch (UnsupportedAttributeException e) { + } catch (UnsupportedAttributeException e) { super.setAttribute(object, propertyName, stringValue, inline, compiler); } } class CompiledTable extends CompiledObject { - private List<Integer> rowSpans = new ArrayList<Integer>(); + private List<Integer> rowSpans = new ArrayList<Integer>(); private GridBagConstraints tableConstraints; private GridBagConstraints rowConstraints = null; private GridBagConstraints cellConstraints = null; @@ -121,4 +121,4 @@ public class TableHandler extends DefaultComponentHandler { public CompiledObject createCompiledObject(String id, JAXXCompiler compiler) throws CompilerException { return new CompiledTable(id, getBeanClass(), compiler); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java similarity index 94% rename from jaxx-compiler/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java index c4bd76d..f2ceeac 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/validator/BeanValidatorHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java @@ -2,20 +2,20 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.validator; +package jaxx.compiler.tags.validator; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.introspection.JAXXBeanInfo; -import jaxx.introspection.JAXXPropertyDescriptor; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.beans.JAXXBeanInfo; +import jaxx.compiler.beans.JAXXPropertyDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.DefaultObjectHandler; +import jaxx.compiler.types.TypeManager; import jaxx.runtime.validator.swing.SwingValidatorUtil; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.ui.AbstractBeanValidatorUI; -import jaxx.tags.DefaultObjectHandler; -import jaxx.types.TypeManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Element; @@ -66,7 +66,7 @@ public class BeanValidatorHandler extends DefaultObjectHandler { @Override protected void compileChildTagFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info(tag); } if (!tag.getLocalName().equals(FieldValidatorHandler.TAG)) { @@ -133,7 +133,7 @@ public class BeanValidatorHandler extends DefaultObjectHandler { @Override public void setAttribute(CompiledObject object, String propertyName, String stringValue, boolean inline, JAXXCompiler compiler) { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info(propertyName + " : " + stringValue + " for " + object); } // delegate to the compiled object with is statefull (but not the tag handler) @@ -169,14 +169,14 @@ public class BeanValidatorHandler extends DefaultObjectHandler { super(id, getDescriptor(objectClass, compiler), compiler); fields = new TreeMap<String, String>(); excludeFields = new TreeMap<String, String>(); - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info("validator objectClass " + super.getObjectClass()); } } protected static ClassDescriptor getDescriptor(ClassDescriptor objectClass, JAXXCompiler compiler) { ClassDescriptor result = objectClass; - Class<?> validatorClass = compiler.getOptions().getValidatorClass(); + Class<?> validatorClass = compiler.getConfiguration().getValidatorClass(); result = ClassDescriptorLoader.getClassDescriptor(validatorClass); return result; } @@ -351,8 +351,8 @@ public class BeanValidatorHandler extends DefaultObjectHandler { protected boolean addUiClass(BeanValidatorHandler handler, JAXXCompiler compiler) { boolean withError = false; - if (uiClass == null && compiler.getOptions().getDefaultErrorUI() != null) { - uiClass = compiler.getOptions().getDefaultErrorUI().getName(); + if (uiClass == null && compiler.getConfiguration().getDefaultErrorUI() != null) { + uiClass = compiler.getConfiguration().getDefaultErrorUI().getName(); } if (uiClass != null) { try { @@ -617,7 +617,7 @@ public class BeanValidatorHandler extends DefaultObjectHandler { protected void registerAutoFieldBean(Element tag, JAXXCompiler compiler, JAXXBeanInfo beanInfo) { for (JAXXPropertyDescriptor beanProperty : beanInfo.getJAXXPropertyDescriptors()) { String descriptionName = beanProperty.getName(); - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info("try to bind on bean " + beanInfo.getJAXXBeanDescriptor().getName() + " property " + descriptionName); } if (beanProperty.getWriteMethodDescriptor() == null) { @@ -653,7 +653,7 @@ public class BeanValidatorHandler extends DefaultObjectHandler { if (fields.containsKey(id)) { compiler.reportError("duplicate field '" + id + "' for validator " + this); } else { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info("add field <" + id + ":" + component + ">"); } fields.put(id, component); @@ -664,7 +664,7 @@ public class BeanValidatorHandler extends DefaultObjectHandler { if (excludeFields.containsKey(id)) { compiler.reportError("duplicate field '" + id + "' for validator " + this); } else { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info("add excludeField <" + id + ":" + component + ">"); } excludeFields.put(id, component); @@ -731,4 +731,4 @@ public class BeanValidatorHandler extends DefaultObjectHandler { public static List<CompiledBeanValidator> getValidators(JAXXCompiler compiler) { return validators.get(compiler); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/validator/ExcludeFieldValidatorHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/ExcludeFieldValidatorHandler.java similarity index 88% rename from jaxx-compiler/src/main/java/jaxx/tags/validator/ExcludeFieldValidatorHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/ExcludeFieldValidatorHandler.java index fbb6141..b5dd409 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/validator/ExcludeFieldValidatorHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/ExcludeFieldValidatorHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.validator; +package jaxx.compiler.tags.validator; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.tags.validator.BeanValidatorHandler.CompiledBeanValidator; import jaxx.runtime.validator.swing.SwingValidator; -import jaxx.tags.TagHandler; -import jaxx.tags.validator.BeanValidatorHandler.CompiledBeanValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Element; @@ -21,13 +21,12 @@ public class ExcludeFieldValidatorHandler implements TagHandler { public static final String TAG = "excludeField"; public static final String NAME_ATTRIBUTE = "name"; public static final String COMPONENT_ATTRIBUTE = "component"; - /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(ExcludeFieldValidatorHandler.class); @Override public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info(tag); } //todo check there is no child @@ -35,7 +34,7 @@ public class ExcludeFieldValidatorHandler implements TagHandler { @Override public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.debug(tag); } @@ -83,5 +82,4 @@ public class ExcludeFieldValidatorHandler implements TagHandler { } - -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/validator/FieldValidatorHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/FieldValidatorHandler.java similarity index 86% rename from jaxx-compiler/src/main/java/jaxx/tags/validator/FieldValidatorHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/FieldValidatorHandler.java index d5864ff..3a4bf9c 100644 --- a/jaxx-compiler/src/main/java/jaxx/tags/validator/FieldValidatorHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/FieldValidatorHandler.java @@ -2,14 +2,14 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.tags.validator; +package jaxx.compiler.tags.validator; -import jaxx.CompilerException; +import jaxx.compiler.CompilerException; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tags.TagHandler; +import jaxx.compiler.tags.validator.BeanValidatorHandler.CompiledBeanValidator; import jaxx.runtime.validator.swing.SwingValidator; -import jaxx.tags.TagHandler; -import jaxx.tags.validator.BeanValidatorHandler.CompiledBeanValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Element; @@ -21,13 +21,12 @@ public class FieldValidatorHandler implements TagHandler { public static final String TAG = "field"; public static final String NAME_ATTRIBUTE = "name"; public static final String COMPONENT_ATTRIBUTE = "component"; - /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(FieldValidatorHandler.class); @Override public void compileFirstPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info(tag); } //todo check there is no child @@ -35,7 +34,7 @@ public class FieldValidatorHandler implements TagHandler { @Override public void compileSecondPass(Element tag, JAXXCompiler compiler) throws CompilerException, IOException { - if (compiler.getOptions().isVerbose()) { + if (compiler.getConfiguration().isVerbose()) { log.info(tag); } @@ -76,5 +75,4 @@ public class FieldValidatorHandler implements TagHandler { } - -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/PrintTagInfo.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/PrintTagInfo.java similarity index 91% rename from jaxx-compiler/src/main/java/jaxx/PrintTagInfo.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/PrintTagInfo.java index b02003c..3df8286 100644 --- a/jaxx-compiler/src/main/java/jaxx/PrintTagInfo.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/PrintTagInfo.java @@ -1,13 +1,12 @@ -package jaxx; +package jaxx.compiler.tools; +import jaxx.compiler.tags.*; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; -import jaxx.introspection.JAXXPropertyDescriptor; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.MethodDescriptor; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.TagManager; +import jaxx.compiler.beans.JAXXPropertyDescriptor; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.reflect.MethodDescriptor; import java.io.BufferedWriter; import java.io.FileWriter; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/AbstractContextNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/AbstractContextNode.java similarity index 81% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/AbstractContextNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/AbstractContextNode.java index 67dd772..6840434 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/AbstractContextNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/AbstractContextNode.java @@ -1,4 +1,4 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; import java.util.ArrayList; import java.util.List; @@ -7,10 +7,12 @@ public abstract class AbstractContextNode implements ContextNode { private List<ContextNode> arguments = new ArrayList<ContextNode>(); + @Override public void addArgument(ContextNode node) { arguments.add(node); } + @Override public ContextNode[] getArguments() { return arguments.toArray(new ContextNode[arguments.size()]); } diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/CapturedObject.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/CapturedObject.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/CapturedObject.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/CapturedObject.java index 7fcdebb..ccdda36 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/CapturedObject.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/CapturedObject.java @@ -1,7 +1,7 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; import jaxx.compiler.JAXXCompiler; -import jaxx.tools.jaxxcapture.handlers.ObjectHandler; +import jaxx.compiler.tools.jaxxcapture.handlers.ObjectHandler; import java.awt.Component; import java.util.HashMap; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ContextNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ContextNode.java similarity index 67% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ContextNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ContextNode.java index 0f38e12..5e34599 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ContextNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ContextNode.java @@ -1,7 +1,8 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; public interface ContextNode { + void addArgument(ContextNode node); ContextNode[] getArguments(); -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/JAXXCapture.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/JAXXCapture.java similarity index 88% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/JAXXCapture.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/JAXXCapture.java index 9ef39de..cbc7d26 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/JAXXCapture.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/JAXXCapture.java @@ -1,14 +1,14 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; -import jaxx.ClassMap; +import jaxx.compiler.ClassMap; import jaxx.compiler.CompiledObject; import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tools.jaxxcapture.handlers.JTabbedPaneHandler; -import jaxx.tools.jaxxcapture.handlers.ObjectHandler; -import jaxx.tools.jaxxcapture.handlers.TableHandler; -import jaxx.types.TypeManager; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; +import jaxx.compiler.tools.jaxxcapture.handlers.JTabbedPaneHandler; +import jaxx.compiler.tools.jaxxcapture.handlers.ObjectHandler; +import jaxx.compiler.tools.jaxxcapture.handlers.TableHandler; +import jaxx.compiler.types.TypeManager; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -47,6 +47,7 @@ import java.util.jar.JarFile; import java.util.jar.Manifest; public class JAXXCapture { + private static ClassMap<Object> objectHandlers = new ClassMap<Object>(); static { @@ -59,16 +60,14 @@ public class JAXXCapture { System.err.println(e); } } - private Map<String, Object> sourceObjects = new HashMap<String, Object>(); private Map<String, CapturedObject> capturedObjects = new HashMap<String, CapturedObject>(); private ClassLoader classLoader; private int count; - private static class CaptureEventQueue extends EventQueue { - private ClassLoader classLoader; + private ClassLoader classLoader; private CaptureEventQueue(ClassLoader classLoader) { this.classLoader = classLoader; @@ -100,8 +99,7 @@ public class JAXXCapture { try { System.err.println(new String(buffer.toByteArray())); System.out.println(capture.convertToJAXX(new ByteArrayInputStream(buffer.toByteArray()))); - } - catch (IOException e) { + } catch (IOException e) { throw new RuntimeException(e); } } @@ -110,29 +108,24 @@ public class JAXXCapture { } } - private JAXXCapture(ClassLoader classLoader) { this.classLoader = classLoader; } - public ClassLoader getClassLoader() { return classLoader; } - public Map<String, CapturedObject> getCapturedObjects() { return capturedObjects; } - private void applyNames(Component target) { String name = target.getName(); if (name == null || sourceObjects.containsKey(name) || !CompiledObject.isValidID(name)) { do { name = "Object" + ++count; - } - while (sourceObjects.containsKey(name)); + } while (sourceObjects.containsKey(name)); } target.setName(name); assert !sourceObjects.containsKey(name) : "ID " + name + " is already registered"; @@ -146,12 +139,10 @@ public class JAXXCapture { } } - public static String getText(Element tag) { // NOT a safe general-purpose implementation! return ((Text) tag.getChildNodes().item(0)).getData(); } - private String getArgumentsCode(ContextNode[] arguments) { StringBuffer result = new StringBuffer(); result.append('('); @@ -165,7 +156,6 @@ public class JAXXCapture { return result.toString(); } - public String getJavaCode(ContextNode node) { StringBuffer result = new StringBuffer(); if (node instanceof PropertyNode) { @@ -197,44 +187,39 @@ public class JAXXCapture { return result.toString(); } - // returns the best matching method for the specified argument types - private static Method getMethod(Class target, String methodName, Class[] arguments) { + private static Method getMethod(Class<?> target, String methodName, Class<?>[] arguments) { try { // use the package-private class java.beans.ReflectionUtils to resolve the method. This isn't 100% safe, but it's better than // having to rewrite the resolution myself. Class<?> reflectionUtils = Class.forName("java.beans.ReflectionUtils"); - Method getMethod = reflectionUtils.getDeclaredMethod("getMethod", new Class[]{Class.class, String.class, Class[].class}); + Method getMethod = reflectionUtils.getDeclaredMethod("getMethod", new Class<?>[]{Class.class, String.class, Class[].class}); getMethod.setAccessible(true); return (Method) getMethod.invoke(null, target, methodName, arguments); - } - catch (Exception e) { + } catch (Exception e) { throw new RuntimeException(e); } } - // returns the best matching constructor for the specified argument types - private static Constructor getConstructor(Class target, Class[] arguments) { + private static Constructor<?> getConstructor(Class<?> target, Class<?>[] arguments) { try { // use the package-private class java.beans.ReflectionUtils to resolve the constructor. This isn't 100% safe, but it's better than // having to rewrite the resolution myself. Class<?> reflectionUtils = Class.forName("java.beans.ReflectionUtils"); - Method getConstructor = reflectionUtils.getDeclaredMethod("getConstructor", new Class[]{Class.class, Class[].class}); + Method getConstructor = reflectionUtils.getDeclaredMethod("getConstructor", new Class<?>[]{Class.class, Class[].class}); getConstructor.setAccessible(true); - return (Constructor) getConstructor.invoke(null, target, arguments); - } - catch (Exception e) { + return (Constructor<?>) getConstructor.invoke(null, target, arguments); + } catch (Exception e) { throw new RuntimeException(e); } } - private Object createInstance(CapturedObject object) { try { ContextNode[] argumentNodes = object.getArguments(); Object[] arguments = new Object[argumentNodes.length]; - Class[] argumentTypes = new Class[argumentNodes.length]; + Class<?>[] argumentTypes = new Class<?>[argumentNodes.length]; for (int j = 0; j < argumentNodes.length; j++) { if (argumentNodes[j] instanceof ValueNode) { arguments[j] = ((ValueNode) argumentNodes[j]).getValue(); @@ -244,15 +229,13 @@ public class JAXXCapture { argumentTypes[j] = arguments[j] != null ? arguments[j].getClass() : null; } } - Constructor constructor = getConstructor(Class.forName(object.getClassName(), true, classLoader), argumentTypes); + Constructor<?> constructor = getConstructor(Class.forName(object.getClassName(), true, classLoader), argumentTypes); return constructor.newInstance(arguments); - } - catch (Exception e) { + } catch (Exception e) { throw new RuntimeException(e); } } - public String getJavaCode(Stack/*<ContextNode>*/ context) { CapturedObject contextCapturedObject = (CapturedObject) context.get(0); StringBuffer result = new StringBuffer(); @@ -280,7 +263,7 @@ public class JAXXCapture { methodName = (argumentNodes.length == 0 ? "get" : "set") + org.apache.commons.lang.StringUtils.capitalize(((PropertyNode) node).getProperty()); } Object[] arguments = new Object[argumentNodes.length]; - Class[] argumentTypes = new Class[argumentNodes.length]; + Class<?>[] argumentTypes = new Class<?>[argumentNodes.length]; for (int j = 0; j < argumentNodes.length; j++) { if (argumentNodes[j] instanceof ValueNode) { arguments[j] = ((ValueNode) argumentNodes[j]).getValue(); @@ -308,8 +291,7 @@ public class JAXXCapture { } contextObject = method.invoke(contextObject, arguments); contextClass = method.getReturnType(); - } - catch (Exception e) { + } catch (Exception e) { throw new RuntimeException(e); } } @@ -323,12 +305,10 @@ public class JAXXCapture { return result + ";"; } - - private String getOutputName(Class c) { + private String getOutputName(Class<?> c) { return c.getName(); } - public CapturedObject processObject(Element objectTag, Stack<ContextNode> context) { String className = objectTag.getAttribute("class"); ObjectHandler handler; @@ -336,8 +316,7 @@ public class JAXXCapture { try { ClassDescriptor descriptor = ClassDescriptorLoader.getClassDescriptor(className, classLoader); handler = (ObjectHandler) objectHandlers.get(descriptor); - } - catch (ClassNotFoundException e) { + } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } else { @@ -347,7 +326,6 @@ public class JAXXCapture { return handler.processObject(objectTag, context, this); } - private synchronized String convertToJAXX(InputStream beansXML) throws IOException { try { Document document = JAXXCompiler.parseDocument(beansXML); @@ -371,23 +349,19 @@ public class JAXXCapture { } } return null; - } - catch (SAXException e) { + } catch (SAXException e) { throw new RuntimeException(e); - } - finally { + } finally { reset(); } } - private void reset() { sourceObjects.clear(); capturedObjects.clear(); count = 0; } - public static void main(String[] arg) throws Exception { File file = new File(arg[0]); JarFile jarFile = new JarFile(file); @@ -398,7 +372,7 @@ public class JAXXCapture { Manifest mf = jarFile.getManifest(); String mainClassName = mf.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS); Class<?> mainClass = Class.forName(mainClassName, true, classLoader); - Method main = mainClass.getMethod("main", new Class[]{String[].class}); + Method main = mainClass.getMethod("main", String[].class); main.invoke(null, new Object[]{new String[0]}); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/LiteralNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/LiteralNode.java similarity index 85% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/LiteralNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/LiteralNode.java index 0683c00..6db634d 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/LiteralNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/LiteralNode.java @@ -1,4 +1,4 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; public class LiteralNode extends AbstractContextNode { private String javaCode; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/MethodNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/MethodNode.java similarity index 86% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/MethodNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/MethodNode.java index d1fff14..4eb8f6b 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/MethodNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/MethodNode.java @@ -1,4 +1,4 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; public class MethodNode extends AbstractContextNode { private String methodName; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/PropertyNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/PropertyNode.java similarity index 86% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/PropertyNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/PropertyNode.java index 51e5d7c..fa9472b 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/PropertyNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/PropertyNode.java @@ -1,4 +1,4 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; public class PropertyNode extends AbstractContextNode { private String property; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ValueNode.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ValueNode.java similarity index 79% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ValueNode.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ValueNode.java index ef4ecb3..45eda1e 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/ValueNode.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/ValueNode.java @@ -1,4 +1,4 @@ -package jaxx.tools.jaxxcapture; +package jaxx.compiler.tools.jaxxcapture; public class ValueNode extends AbstractContextNode { private Object value; diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/JTabbedPaneHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/JTabbedPaneHandler.java similarity index 74% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/JTabbedPaneHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/JTabbedPaneHandler.java index ac7058d..9b5596a 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/JTabbedPaneHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/JTabbedPaneHandler.java @@ -1,14 +1,15 @@ -package jaxx.tools.jaxxcapture.handlers; +package jaxx.compiler.tools.jaxxcapture.handlers; -import jaxx.tools.jaxxcapture.ContextNode; -import jaxx.tools.jaxxcapture.JAXXCapture; -import jaxx.tools.jaxxcapture.MethodNode; +import jaxx.compiler.tools.jaxxcapture.ContextNode; +import jaxx.compiler.tools.jaxxcapture.JAXXCapture; +import jaxx.compiler.tools.jaxxcapture.MethodNode; import org.w3c.dom.Element; import java.util.Arrays; import java.util.Stack; public class JTabbedPaneHandler extends ObjectHandler { + @Override protected void evaluateMethod(Element tag, Stack<ContextNode> context, JAXXCapture capture) { String methodName = tag.getAttribute("method"); @@ -22,4 +23,4 @@ public class JTabbedPaneHandler extends ObjectHandler { super.evaluateMethod(tag, context, capture); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/ObjectHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/ObjectHandler.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/ObjectHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/ObjectHandler.java index 846c8fb..69e5710 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/ObjectHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/ObjectHandler.java @@ -1,14 +1,14 @@ -package jaxx.tools.jaxxcapture.handlers; +package jaxx.compiler.tools.jaxxcapture.handlers; import jaxx.compiler.JavaFile; import jaxx.compiler.JAXXCompiler; -import jaxx.tools.jaxxcapture.CapturedObject; -import jaxx.tools.jaxxcapture.ContextNode; -import jaxx.tools.jaxxcapture.JAXXCapture; -import jaxx.tools.jaxxcapture.LiteralNode; -import jaxx.tools.jaxxcapture.MethodNode; -import jaxx.tools.jaxxcapture.PropertyNode; -import jaxx.tools.jaxxcapture.ValueNode; +import jaxx.compiler.tools.jaxxcapture.CapturedObject; +import jaxx.compiler.tools.jaxxcapture.ContextNode; +import jaxx.compiler.tools.jaxxcapture.JAXXCapture; +import jaxx.compiler.tools.jaxxcapture.LiteralNode; +import jaxx.compiler.tools.jaxxcapture.MethodNode; +import jaxx.compiler.tools.jaxxcapture.PropertyNode; +import jaxx.compiler.tools.jaxxcapture.ValueNode; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -110,7 +110,7 @@ public class ObjectHandler { ContextNode[] arguments = newContext.getArguments(); if (methodName.equals("add") && arguments.length >= 1 && arguments[0] instanceof CapturedObject) { - Class contextClass = Class.forName(contextObject.getClassName(), true, capture.getClassLoader()); + Class<?> contextClass = Class.forName(contextObject.getClassName(), true, capture.getClassLoader()); if (Container.class.isAssignableFrom(contextClass)) { add = true; evaluateAdd(contextObject, (CapturedObject) arguments[0], null); diff --git a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/TableHandler.java b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/TableHandler.java similarity index 63% rename from jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/TableHandler.java rename to jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/TableHandler.java index ebdfe72..852a738 100644 --- a/jaxx-compiler/src/main/java/jaxx/tools/jaxxcapture/handlers/TableHandler.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/tools/jaxxcapture/handlers/TableHandler.java @@ -1,12 +1,14 @@ -package jaxx.tools.jaxxcapture.handlers; +package jaxx.compiler.tools.jaxxcapture.handlers; -import jaxx.tools.jaxxcapture.CapturedObject; -import jaxx.tools.jaxxcapture.JAXXCapture; +import jaxx.compiler.tools.jaxxcapture.CapturedObject; +import jaxx.compiler.tools.jaxxcapture.JAXXCapture; public class TableHandler extends ObjectHandler { + + @Override protected CapturedObject createCapturedObject(String className, JAXXCapture capture) { CapturedObject result = new CapturedObject(this, "javax.swing.JPanel", capture); result.setProperty("layout", "{new GridBagLayout()}"); return result; } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/ColorConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java similarity index 84% rename from jaxx-compiler/src/main/java/jaxx/types/ColorConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java index b7f3cc5..daf2181 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/ColorConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/ColorConverter.java @@ -2,20 +2,21 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; -import jaxx.types.*; import java.awt.Color; import java.lang.reflect.Field; public class ColorConverter implements TypeConverter { + + @Override public String getJavaCode(Object object) { Color color = (Color) object; return "new Color(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")"; } - - public Object convertFromString(String string, Class type) { + @Override + public Object convertFromString(String string, Class<?> type) { if (type != Color.class) { throw new IllegalArgumentException("unsupported type: " + type); } @@ -25,11 +26,10 @@ public class ColorConverter implements TypeConverter { try { Field color = Color.class.getField(string); return color.get(null); - } - catch (NoSuchFieldException e) { + } catch (NoSuchFieldException e) { throw new IllegalArgumentException("colors must be of the form #xxxxxx ('#' followed by six hexadecimal digits), or the name of a constant field in java.awt.Color (found: '" + string + "')"); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/GridBagConstraintsConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java similarity index 82% rename from jaxx-compiler/src/main/java/jaxx/types/GridBagConstraintsConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java index 5081282..3158c3b 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/GridBagConstraintsConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/GridBagConstraintsConverter.java @@ -2,12 +2,13 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; -import jaxx.types.*; import java.awt.GridBagConstraints; public class GridBagConstraintsConverter implements TypeConverter { + + @Override public String getJavaCode(Object object) { GridBagConstraints g = (GridBagConstraints) object; return "new GridBagConstraints(" + g.gridx + ", " + g.gridy + ", " + g.gridwidth + ", " + g.gridheight + ", " + @@ -15,8 +16,8 @@ public class GridBagConstraintsConverter implements TypeConverter { TypeManager.getJavaCode(g.insets) + ", " + g.ipadx + ", " + g.ipady + ")"; } - - public Object convertFromString(String string, Class type) { + @Override + public Object convertFromString(String string, Class<?> type) { throw new UnsupportedOperationException("GridBagConstraints must be represented using Java code"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/InsetsConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java similarity index 88% rename from jaxx-compiler/src/main/java/jaxx/types/InsetsConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java index 279e310..8326288 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/InsetsConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/InsetsConverter.java @@ -2,20 +2,21 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; -import jaxx.types.*; import java.awt.Insets; import java.util.StringTokenizer; public class InsetsConverter implements TypeConverter { + + @Override public String getJavaCode(Object object) { Insets insets = (Insets) object; return "new Insets(" + insets.top + ", " + insets.left + ", " + insets.bottom + ", " + insets.right + ")"; } - - public Object convertFromString(String string, Class type) { + @Override + public Object convertFromString(String string, Class<?> type) { if (type != Insets.class) { throw new IllegalArgumentException("unsupported type: " + type); } @@ -34,4 +35,4 @@ public class InsetsConverter implements TypeConverter { } throw new IllegalArgumentException("unable to convert string '" + string + "' to Insets"); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/KeyStrokeConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java similarity index 76% rename from jaxx-compiler/src/main/java/jaxx/types/KeyStrokeConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java index 68080e4..30e5e01 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/KeyStrokeConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/KeyStrokeConverter.java @@ -2,21 +2,22 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; -import jaxx.types.*; import javax.swing.KeyStroke; public class KeyStrokeConverter implements TypeConverter { + + @Override public String getJavaCode(Object object) { return "KeyStroke.getKeyStroke(\"" + object.toString() + "\")"; } - - public Object convertFromString(String string, Class type) { + @Override + public Object convertFromString(String string, Class<?> type) { if (type != KeyStroke.class) { throw new IllegalArgumentException("unsupported type: " + type); } return KeyStroke.getKeyStroke(string); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/PrimitiveConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java similarity index 93% rename from jaxx-compiler/src/main/java/jaxx/types/PrimitiveConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java index 8fb7f30..177b241 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/PrimitiveConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/PrimitiveConverter.java @@ -2,11 +2,13 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; import jaxx.compiler.JAXXCompiler; public class PrimitiveConverter implements TypeConverter { + + @Override public String getJavaCode(Object object) { if (object instanceof Boolean) { return String.valueOf(((Boolean) object).booleanValue()); @@ -35,8 +37,8 @@ public class PrimitiveConverter implements TypeConverter { throw new IllegalArgumentException("unsupported object: " + object); } - - public Object convertFromString(String string, Class type) { + @Override + public Object convertFromString(String string, Class<?> type) { if (type == String.class || type == Object.class || type == null) { return string; } @@ -75,4 +77,4 @@ public class PrimitiveConverter implements TypeConverter { } throw new IllegalArgumentException("unsupported type: " + type); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/TypeConverter.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java similarity index 50% rename from jaxx-compiler/src/main/java/jaxx/types/TypeConverter.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java index 2f15272..822773e 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/TypeConverter.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeConverter.java @@ -2,10 +2,11 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; + +public interface TypeConverter { -public interface TypeConverter { String getJavaCode(Object object); - Object convertFromString(String string, Class type); -} \ No newline at end of file + Object convertFromString(String string, Class<?> type); +} diff --git a/jaxx-compiler/src/main/java/jaxx/types/TypeManager.java b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java similarity index 70% rename from jaxx-compiler/src/main/java/jaxx/types/TypeManager.java rename to jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java index ad01268..e000e8b 100644 --- a/jaxx-compiler/src/main/java/jaxx/types/TypeManager.java +++ b/jaxx-compiler/src/main/java/jaxx/compiler/types/TypeManager.java @@ -2,27 +2,25 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.types; +package jaxx.compiler.types; import java.util.HashMap; import java.util.Map; public class TypeManager { - private static Map<Class, TypeConverter> converters = new HashMap<Class, TypeConverter>(); - private TypeManager() { /* not instantiable */ } + private static Map<Class<?>, TypeConverter> converters = new HashMap<Class<?>, TypeConverter>(); + private TypeManager() { /* not instantiable */ } - public static void registerTypeConverter(Class type, TypeConverter converter) { + public static void registerTypeConverter(Class<?> type, TypeConverter converter) { converters.put(type, converter); } - - public static TypeConverter getTypeConverter(Class type) { + public static TypeConverter getTypeConverter(Class<?> type) { return converters.get(type); } - public static String getJavaCode(Object object) { if (object == null) { return "null"; @@ -34,12 +32,11 @@ public class TypeManager { return converter.getJavaCode(object); } - - public static Object convertFromString(String string, Class type) { + public static Object convertFromString(String string, Class<?> type) { TypeConverter converter = getTypeConverter(type); if (converter == null) { throw new IllegalArgumentException("unsupported type: " + type); } return converter.convertFromString(string, type); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTabHandler.java b/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTabHandler.java deleted file mode 100644 index acf8f93..0000000 --- a/jaxx-compiler/src/main/java/jaxx/tags/swing/JAXXTabHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -* \#\#% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, -* Tony Chemit, Gabriel Landais -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* \#\#% */ -package jaxx.tags.swing; - -import jaxx.reflect.ClassDescriptor; - -/** @author chemit */ -public class JAXXTabHandler extends TableHandler { - public JAXXTabHandler(ClassDescriptor beanClass) { - super(beanClass); - } -} diff --git a/jaxx-compiler/src/main/java/jaxx/tags/validator/ValidatorInitializer.java b/jaxx-compiler/src/main/java/jaxx/tags/validator/ValidatorInitializer.java deleted file mode 100644 index 8bb9619..0000000 --- a/jaxx-compiler/src/main/java/jaxx/tags/validator/ValidatorInitializer.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2006 Ethan Nicholas. All rights reserved. - * Use is subject to license terms. - */ -package jaxx.tags.validator; - -import jaxx.compiler.JAXXCompiler; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.runtime.validator.swing.SwingValidator; -import jaxx.tags.TagManager; - -public class ValidatorInitializer implements jaxx.spi.Initializer { - - @Override - public void initialize() { - - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, BeanValidatorHandler.TAG, new BeanValidatorHandler(ClassDescriptorLoader.getClassDescriptor(SwingValidator.class))); - TagManager.registerBean(ClassDescriptorLoader.getClassDescriptor(SwingValidator.class), BeanValidatorHandler.class); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, FieldValidatorHandler.TAG, new FieldValidatorHandler()); - TagManager.registerTag(JAXXCompiler.JAXX_NAMESPACE, ExcludeFieldValidatorHandler.TAG, new FieldValidatorHandler()); - } -} \ No newline at end of file diff --git a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.Generator b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.Generator deleted file mode 100644 index 49cf642..0000000 --- a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.Generator +++ /dev/null @@ -1,3 +0,0 @@ -jaxx.compiler.JAXXObjectGenerator -jaxx.compiler.SwingGenerator -jaxx.compiler.ValidatorGenerator diff --git a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.generators.Generator b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.generators.Generator new file mode 100644 index 0000000..761f3bd --- /dev/null +++ b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.generators.Generator @@ -0,0 +1,3 @@ +jaxx.compiler.generators.JAXXObjectGenerator +jaxx.compiler.generators.SwingGenerator +jaxx.compiler.generators.ValidatorGenerator diff --git a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.spi.Initializer b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.spi.Initializer new file mode 100644 index 0000000..763ca46 --- /dev/null +++ b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.compiler.spi.Initializer @@ -0,0 +1 @@ +jaxx.compiler.spi.DefaultInitializer \ No newline at end of file diff --git a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.spi.Initializer b/jaxx-compiler/src/main/resources/META-INF/services/jaxx.spi.Initializer deleted file mode 100644 index f766cdb..0000000 --- a/jaxx-compiler/src/main/resources/META-INF/services/jaxx.spi.Initializer +++ /dev/null @@ -1,3 +0,0 @@ -jaxx.DefaultInitializer -jaxx.SwingInitializer -jaxx.tags.validator.ValidatorInitializer diff --git a/jaxx-compiler/src/site/rst/JAXXContext.rst b/jaxx-compiler/src/site/rst/JAXXContext.rst index 465f8fd..5175ffc 100644 --- a/jaxx-compiler/src/site/rst/JAXXContext.rst +++ b/jaxx-compiler/src/site/rst/JAXXContext.rst @@ -13,7 +13,7 @@ Ajout d'un context applicatif dans JAXX. Le besoin initial de ce développement est de pouvoir facilement intégrer un context applicatif dans JAXX et de pouvoir l'utiliser dans les fichiers JAXX pour injecter par exemple des données dans les widgets. -jaxx.runtime.JAXXContext +jaxx.runtime.context.JAXXContext ======================== Il s'agit du contrat de base du context applicatif. @@ -32,7 +32,7 @@ Le type de l'objet correspondant en fait à la classe de la donnée. Le nom qui est facultatif permet de pouvoir distinguer plusieurs données d'un même type dans le context. Si le nom n'est pas utilisé pour caractériser une données on fixera alors sa valeur à *null*. -Afin de pouvoir caractériser les entrées dans le context, une classe a été définie *jaxx.runtime.JAXXContextEntryDef*. +Afin de pouvoir caractériser les entrées dans le context, une classe a été définie *jaxx.runtime.context.JAXXContextEntryDef*. Les méthodes de lecture *********************** @@ -87,7 +87,7 @@ de type *JAXXContext* *non nommé* qui le context courant qui sera détecté com Cette entrée spéciale ne sera pas stockée avec les autres entrées afin d'optimiser les algorithmes d'injection et de restitution. -jaxx.runtime.JAXXInitialContext +jaxx.runtime.context.JAXXInitialContext ******************************* On a implanté un second type de context qui lui peut servir à l'initialisation des JAXXObject. diff --git a/jaxx-compiler/src/test/java/jaxx/junit/JavaFileParserTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/JavaFileParserTest.java similarity index 88% rename from jaxx-compiler/src/test/java/jaxx/junit/JavaFileParserTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/JavaFileParserTest.java index d151cd9..9d188d0 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/JavaFileParserTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/JavaFileParserTest.java @@ -1,8 +1,8 @@ -package jaxx.junit; +package jaxx.compiler; -import jaxx.CompilerException; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.JavaFileParser; +import jaxx.compiler.CompilerException; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.JavaFileParser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; diff --git a/jaxx-compiler/src/test/java/jaxx/junit/JavaMethodTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/JavaMethodTest.java similarity index 98% rename from jaxx-compiler/src/test/java/jaxx/junit/JavaMethodTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/JavaMethodTest.java index 59b66ba..94311a6 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/JavaMethodTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/JavaMethodTest.java @@ -1,4 +1,4 @@ -package jaxx.junit; +package jaxx.compiler; import jaxx.compiler.JavaMethod; import jaxx.compiler.JavaMethod.MethodOrder; diff --git a/jaxx-compiler/src/test/java/jaxx/beaninfos/BeanIntoUtilTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/beans/BeanIntoUtilTest.java similarity index 91% rename from jaxx-compiler/src/test/java/jaxx/beaninfos/BeanIntoUtilTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/beans/BeanIntoUtilTest.java index 057f278..d52a48e 100644 --- a/jaxx-compiler/src/test/java/jaxx/beaninfos/BeanIntoUtilTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/beans/BeanIntoUtilTest.java @@ -1,4 +1,4 @@ -package jaxx.beaninfos; +package jaxx.compiler.beans; import org.junit.Assert; import org.junit.Test; @@ -13,7 +13,7 @@ public class BeanIntoUtilTest { BeanInfoUtil.reset(); String[] searchPath0 = Introspector.getBeanInfoSearchPath(); - BeanInfoUtil.addJaxxBeanInfoPath("jaxx.beaninfos"); + BeanInfoUtil.addJaxxBeanInfoPath("jaxx.runtime.swing"); String[] searchPath = Introspector.getBeanInfoSearchPath(); Assert.assertEquals(searchPath0.length + 1, searchPath.length); diff --git a/jaxx-compiler/src/test/java/jaxx/junit/ClassDescriptorTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/reflect/ClassDescriptorTest.java similarity index 85% rename from jaxx-compiler/src/test/java/jaxx/junit/ClassDescriptorTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/reflect/ClassDescriptorTest.java index e3b3b92..02bc606 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/ClassDescriptorTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/reflect/ClassDescriptorTest.java @@ -1,8 +1,5 @@ -package jaxx.junit; +package jaxx.compiler.reflect; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.reflect.MethodDescriptor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.Test; @@ -11,9 +8,8 @@ public class ClassDescriptorTest { /*@Test public void testGetClassDescriptor() throws Exception { - ClassDescriptorLoader.getClassDescriptor("jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode"); + ClassDescriptorLoader.getClassDescriptor("jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode"); }*/ - @Test public void testBuiltInClassName() throws ClassNotFoundException, NoSuchMethodException { ClassDescriptor object = ClassDescriptorLoader.getClassDescriptor("java.lang.Object"); @@ -36,7 +32,7 @@ public class ClassDescriptorTest { @Test public void testUserClassName() throws ClassNotFoundException, NoSuchMethodException { - ClassDescriptor me = ClassDescriptorLoader.getClassDescriptor("jaxx.junit.ClassDescriptorTest", getClass().getClassLoader()); + ClassDescriptor me = ClassDescriptorLoader.getClassDescriptor(ClassDescriptorTest.class.getName(), getClass().getClassLoader()); MethodDescriptor testUserClassName = me.getMethodDescriptor("testUserClassName"); assertEquals(testUserClassName.getName(), "testUserClassName"); assertEquals(testUserClassName.getParameterTypes().length, 0); @@ -60,4 +56,4 @@ public class ClassDescriptorTest { ClassDescriptor objectArray = ClassDescriptorLoader.getClassDescriptor(Object[].class); assertNotNull(objectArray); } -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/test/java/jaxx/junit/TagManagerTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/tags/TagManagerTest.java similarity index 88% rename from jaxx-compiler/src/test/java/jaxx/junit/TagManagerTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/tags/TagManagerTest.java index 0055cb6..f5b3818 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/TagManagerTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/tags/TagManagerTest.java @@ -1,14 +1,9 @@ -package jaxx.junit; +package jaxx.compiler.tags; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; -import jaxx.compiler.SwingCompiler; -import jaxx.reflect.ClassDescriptor; -import jaxx.reflect.ClassDescriptorLoader; -import jaxx.tags.DefaultComponentHandler; -import jaxx.tags.DefaultObjectHandler; -import jaxx.tags.TagHandler; -import jaxx.tags.TagManager; +import jaxx.compiler.reflect.ClassDescriptor; +import jaxx.compiler.reflect.ClassDescriptorLoader; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -26,6 +21,7 @@ public class TagManagerTest { protected JAXXCompiler compiler; public static class TestHandler extends DefaultObjectHandler { + public TestHandler(ClassDescriptor beanClass) { super(beanClass); } @@ -41,7 +37,8 @@ public class TagManagerTest { @Before public void setUp() { JAXXCompilerLaunchor.newLaunchor(); - compiler = new SwingCompiler(SwingCompiler.class.getClassLoader()); + compiler = JAXXCompilerLaunchor.createDummyCompiler(JAXXCompiler.class.getClassLoader()); +// compiler = new JAXXCompiler(JAXXCompiler.class.getClassLoader()); compiler.addImport("javax.swing.*"); } @@ -137,9 +134,5 @@ public class TagManagerTest { public void testAliasing() { Assert.assertEquals("ButtonGroup is not aliased to jaxx.runtime.swing.JAXXButtonGroup", "jaxx.runtime.swing.JAXXButtonGroup", TagManager.resolveClassName("ButtonGroup", compiler)); Assert.assertEquals("javax.swing.ButtonGroup is not aliased to jaxx.runtime.swing.JAXXButtonGroup", "jaxx.runtime.swing.JAXXButtonGroup", TagManager.resolveClassName("javax.swing.ButtonGroup", compiler)); -// Assert.assertEquals("JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("JComboBox", compiler)); -// Assert.assertEquals("javax.swing.JComboBox is not aliased to jaxx.runtime.swing.JAXXComboBox", "jaxx.runtime.swing.JAXXComboBox", TagManager.resolveClassName("javax.swing.JComboBox", compiler)); } - - -} \ No newline at end of file +} diff --git a/jaxx-compiler/src/test/java/jaxx/junit/ColorConverterTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/types/ColorConverterTest.java similarity index 91% rename from jaxx-compiler/src/test/java/jaxx/junit/ColorConverterTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/types/ColorConverterTest.java index 0c1010e..d879c76 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/ColorConverterTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/types/ColorConverterTest.java @@ -1,6 +1,6 @@ -package jaxx.junit; +package jaxx.compiler.types; -import jaxx.types.ColorConverter; +import jaxx.compiler.types.ColorConverter; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jaxx-compiler/src/test/java/jaxx/junit/InsetsConverterTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/types/InsetsConverterTest.java similarity index 91% rename from jaxx-compiler/src/test/java/jaxx/junit/InsetsConverterTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/types/InsetsConverterTest.java index 3ea4c5d..9df9691 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/InsetsConverterTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/types/InsetsConverterTest.java @@ -1,6 +1,6 @@ -package jaxx.junit; +package jaxx.compiler.types; -import jaxx.types.InsetsConverter; +import jaxx.compiler.types.InsetsConverter; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jaxx-compiler/src/test/java/jaxx/junit/PrimitiveConverterTest.java b/jaxx-compiler/src/test/java/jaxx/compiler/types/PrimitiveConverterTest.java similarity index 94% rename from jaxx-compiler/src/test/java/jaxx/junit/PrimitiveConverterTest.java rename to jaxx-compiler/src/test/java/jaxx/compiler/types/PrimitiveConverterTest.java index 843e03a..3b343a8 100644 --- a/jaxx-compiler/src/test/java/jaxx/junit/PrimitiveConverterTest.java +++ b/jaxx-compiler/src/test/java/jaxx/compiler/types/PrimitiveConverterTest.java @@ -1,6 +1,6 @@ -package jaxx.junit; +package jaxx.compiler.types; -import jaxx.types.PrimitiveConverter; +import jaxx.compiler.types.PrimitiveConverter; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java b/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java index 2450bce..0d0e527 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java +++ b/jaxx-demo/src/main/java/jaxx/demo/DemoTreeHelper.java @@ -20,29 +20,36 @@ */ package jaxx.demo; -import java.util.Stack; -import javax.swing.JPanel; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; +import jaxx.runtime.JAXXObject; +import jaxx.runtime.swing.CardLayout2; +import jaxx.runtime.swing.ErrorDialogUI; + +import jaxx.runtime.swing.navigation.NavigationTreeHelper; +import jaxx.runtime.swing.navigation.NavigationTreeHandlerWithCardLayout; +import jaxx.runtime.swing.navigation.NavigationTreeModelBuilder; +import jaxx.runtime.swing.navigation.NavigationTreeModel; +import jaxx.runtime.swing.navigation.NavigationTreeNode; +import jaxx.runtime.swing.navigation.NavigationTreeHandler; +import jaxx.runtime.swing.navigation.NavigationTreeHandler.Strategy; + import jaxx.demo.component.swing.*; import jaxx.demo.component.jaxx.*; import jaxx.demo.component.jaxx.editor.*; import jaxx.demo.component.jaxx.navigation.item.ItemTreeNavigationDemo; -import jaxx.demo.component.jaxx.tree.FullNavigationTreeDemo; +import jaxx.demo.component.jaxx.navigation.FullNavigationTreeDemo; import jaxx.demo.feature.databinding.BeanDataBindingDemo; import jaxx.demo.feature.validation.*; import jaxx.demo.fun.*; import static org.nuiton.i18n.I18n.n_; - -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXContextEntryDef; -import jaxx.runtime.JAXXObject; -import jaxx.runtime.swing.CardLayout2; -import jaxx.runtime.swing.ErrorDialogUI; -import jaxx.runtime.swing.tree.*; -import jaxx.runtime.swing.tree.NavigationTreeHandler.Strategy; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Stack; +import javax.swing.JPanel; + /** * * @author chemit diff --git a/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx b/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx index b2a6111..ef5fd8a 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx @@ -29,7 +29,7 @@ <script><![CDATA[ import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.tree.*; +import jaxx.runtime.swing.navigation.*; import java.util.Locale; public DemoConfig getConfig() { diff --git a/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java b/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java index d57e290..3f695ac 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java +++ b/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java @@ -21,9 +21,9 @@ package jaxx.demo; import jaxx.runtime.swing.ErrorDialogUI; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXInitialContext; -import jaxx.runtime.swing.tree.NavigationTreeNode; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.swing.navigation.NavigationTreeNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n._; @@ -33,8 +33,8 @@ import java.awt.Desktop; import java.net.URL; import java.util.Locale; import javax.swing.SwingUtilities; -import jaxx.runtime.DefaultApplicationContext; -import jaxx.runtime.JAXXContextEntryDef; +import jaxx.runtime.context.DefaultApplicationContext; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.swing.editor.config.ConfigUI; import jaxx.runtime.swing.editor.config.ConfigUIBuilder; diff --git a/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java b/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java index 5ed6ea1..3a969f7 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java +++ b/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java @@ -20,7 +20,7 @@ */ package jaxx.demo; -import jaxx.runtime.DefaultApplicationContext; +import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.swing.ErrorDialogUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/I18nEditorDemo.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/I18nEditorDemo.jaxx index a3b706e..42ab1d1 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/I18nEditorDemo.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/I18nEditorDemo.jaxx @@ -18,49 +18,69 @@ <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* --> - -<jaxx.demo.DemoPanel> - <script><![CDATA[ -//localeEditor.loadI18nBundles(); -]]> - </script> - <Table id='demoPanel' fill='both'> - <row> - <cell> - <JLabel text='Empty I18n editor:' labelFor='{localeEmptyEditor}'/> - </cell> - <cell> - <jaxx.runtime.swing.editor.I18nEditor id='localeEmptyEditor' /> - </cell> - </row> - <row> - <cell> - <JLabel text='I18n editor:' labelFor='{localeEditor}'/> - </cell> - <cell> - <jaxx.runtime.swing.editor.I18nEditor id='localeEditor' - locales='{java.util.Arrays.asList(org.nuiton.i18n.I18n.getLoader().getLocales())}'/> - </cell> - </row> - <row> - <cell> - <JLabel text='I18n editor with no text :' labelFor='{localeWithNoTextEditor}'/> - </cell> - <cell> - <jaxx.runtime.swing.editor.I18nEditor id='localeWithNoTextEditor' - locales='{java.util.Arrays.asList(org.nuiton.i18n.I18n.getLoader().getLocales())}' - showText='false'/> - </cell> - </row> - <row> - <cell> - <JLabel text='I18n editor with no icon :' labelFor='{localeWithNoIconEditor}'/> - </cell> - <cell> - <jaxx.runtime.swing.editor.I18nEditor id='localeWithNoIconEditor' - locales='{java.util.Arrays.asList(org.nuiton.i18n.I18n.getLoader().getLocales())}' - showIcon='false'/> - </cell> - </row> - </Table> + +<jaxx.demo.DemoPanel> + <script><![CDATA[ +import jaxx.runtime.swing.editor.I18nEditor; +import org.nuiton.i18n.I18n; +import java.util.Arrays; + +protected Border getPopupBorder(String text) { + if (text==null || text.trim().isEmpty()) { + return null; + } + return new TitledBorder(_(text)); +} +]]> + </script> + <Table id='demoPanel' fill='both'> + <row> + <cell> + <JPanel border='{new TitledBorder(_("jaxxdemo.i18neditor.configuration"))}' + layout='{new GridLayout(0,1)}'> + + <JCheckBox id='showText' + text='jaxxdemo.i18neditor.showText' + selected='true'/> + + <JCheckBox id='showIcon' + text='jaxxdemo.i18neditor.showIcon' + selected='true'/> + + <JCheckBox id='showPopupText' + text='jaxxdemo.i18neditor.showPopupText' + selected='true'/> + + <JCheckBox id='showPopupIcon' + text='jaxxdemo.i18neditor.showPopupIcon' + selected='true'/> + + <JPanel> + <JLabel text='jaxxdemo.i18neditor.popupBorderText' + labelFor='{popupBorderText}'/> + <JTextField id='popupBorderText' + text='{_("i18neditor.popup.title")}'/> + </JPanel> + + </JPanel> + </cell> + </row> + <row> + <cell> + <I18nEditor id='editor' + showText='{showText.isSelected()}' + showIcon='{showIcon.isSelected()}' + showPopupText='{showPopupText.isSelected()}' + showPopupIcon='{showPopupIcon.isSelected()}' + popupBorder='{getPopupBorder(popupBorderText.getText())}' + locales='{Arrays.asList(I18n.getLoader().getLocales())}'/> + </cell> + </row> + <row> + <cell> + <JLabel border='{new TitledBorder(_("jaxxdemo.i18neditor.selected.locale"))}' + text='{editor.getSelectedLocale()}'/> + </cell> + </row> + </Table> </jaxx.demo.DemoPanel> \ No newline at end of file diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx index 3357a6c..1c52244 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx @@ -18,135 +18,165 @@ <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* --> - -<jaxx.demo.DemoPanel> - <script><![CDATA[ -import jaxx.runtime.swing.editor.NumberEditor; - -void $afterCompleteSetup() { - positifIntegerEditor.init(); - positifIntegerEditor2.init(); - normalIntegerEditor.init(); - normalIntegerEditor2.init(); - positifFloatEditor.init(); - positifFloatEditor2.init(); - normalFloatEditor.init(); - normalFloatEditor2.init(); -} -]]> - </script> - - <!-- model --> - <NumberEditorDemoModel id='demoModel'/> - - <Table id='demoPanel' insets='0' fill='both'> - <row> - <cell weightx='0.5'> - <JLabel horizontalAlignment='center' text='numbereditor.type'/> - </cell> - <cell weightx='0.25'> - <JLabel horizontalAlignment='center' text='numbereditor.without.auto.popup'/> - </cell> - <cell weightx='0.25'> - <JLabel horizontalAlignment='center' text='numbereditor.with.auto.popup'/> - </cell> - </row> - <row> - <cell> - <JLabel text='{_("numbereditor.positive.int", demoModel.getPositifInteger())}'/> - </cell> - <cell> - <NumberEditor id='positifIntegerEditor' - property='positifInteger' - constructorParams='this' - bean='{demoModel}' - autoPopup='false' - showPopupButton='true' - showReset='true'/> - </cell> - <cell> - <NumberEditor id='positifIntegerEditor2' - property='positifInteger' - constructorParams='this' - bean='{demoModel}' - autoPopup='true' - showPopupButton='true' - showReset='true'/> - </cell> - </row> - <row> - <cell> - <JLabel text='{_("numbereditor.normal.int", demoModel.getNormalInteger())}'/> - </cell> - <cell> - <NumberEditor id='normalIntegerEditor' - property='normalInteger' - constructorParams='this' - bean='{demoModel}' - autoPopup='false' - showPopupButton='true' - showReset='true' - useSign='true'/> - </cell> - <cell> - <NumberEditor id='normalIntegerEditor2' - property='normalInteger' - constructorParams='this' - bean='{demoModel}' - autoPopup='true' - showPopupButton='true' - showReset='true' - useSign='true'/> - </cell> - </row> - <row> - <cell> - <JLabel text='{_("numbereditor.positive.float", demoModel.getPositifFloat())}'/> - </cell> - <cell> - <NumberEditor id='positifFloatEditor' - property='positifFloat' - constructorParams='this' - bean='{demoModel}' - autoPopup='false' - showPopupButton='true' - showReset='true'/> - </cell> - <cell> - <NumberEditor id='positifFloatEditor2' - property='positifFloat' - constructorParams='this' - bean='{demoModel}' - autoPopup='true' - showPopupButton='true' - showReset='true'/> - </cell> - </row> - <row> - <cell> - <JLabel text='{_("numbereditor.normal.float", demoModel.getNormalFloat())}'/> - </cell> - <cell> - <NumberEditor id='normalFloatEditor' - property='normalFloat' - constructorParams='this' - bean='{demoModel}' - autoPopup='false' - showPopupButton='true' - showReset='true' - useSign='true'/> - </cell> - <cell> - <NumberEditor id='normalFloatEditor2' - property='normalFloat' - constructorParams='this' - bean='{demoModel}' - autoPopup='true' - showPopupButton='true' - showReset='true' - useSign='true'/> - </cell> - </row> - </Table> - -</jaxx.demo.DemoPanel> + +<jaxx.demo.DemoPanel> + <script><![CDATA[ +import jaxx.runtime.swing.editor.NumberEditor; + +void $afterCompleteSetup() { + editor.init(); +} +]]> + </script> + + <!-- model --> + <NumberEditorDemoModel id='demoModel'/> + + <Table id='demoPanel' insets='0' fill='both'> + <row> + <cell> + <JPanel border='{new TitledBorder(_("jaxxdemo.numbereditor.configuration"))}' + layout='{new GridLayout(0,1)}'> + + <JCheckBox id='useFloat' + text='jaxxdemo.numbereditor.useFloat' + selected='true'/> + + <JCheckBox id='useSign' + text='jaxxdemo.numbereditor.useSign' + selected='true'/> + + <JCheckBox id='showPopupButton' + text='jaxxdemo.numbereditor.showPopupButton' + selected='true'/> + + <JCheckBox id='showResetButton' + text='jaxxdemo.numbereditor.showReset' + selected='true'/> + + <JCheckBox id='autoPopup' + text='jaxxdemo.numbereditor.autoPopup' + selected='false'/> + + </JPanel> + </cell> + </row> + <row> + <cell> + <NumberEditor id='editor' + constructorParams='this' + bean='{demoModel}' + property='{useFloat.isSelected() ? "floatProperty" : "integerProperty"}' + useFloat='{useFloat.isSelected()}' + useSign='{useSign.isSelected()}' + autoPopup='{autoPopup.isSelected()}' + showPopupButton='{showPopupButton.isSelected()}' + showReset='{showResetButton.isSelected()}' /> + </cell> + </row> + <row> + <cell> + <JPanel border='{new TitledBorder(_("jaxxdemo.numbereditor.model"))}' + layout='{new GridLayout(0,1)}'> + <JLabel text='{_("jaxxdemo.numbereditor.model.int", demoModel.getIntegerProperty())}'/> + <JLabel text='{_("jaxxdemo.numbereditor.model.float", demoModel.getFloatProperty())}'/> + + </JPanel> + </cell> + </row> + </Table> +</jaxx.demo.DemoPanel> + <!--row> + <cell> + <NumberEditor id='positifIntegerEditor' + property='positifInteger' + constructorParams='this' + bean='{demoModel}' + autoPopup='false' + showPopupButton='true' + showReset='true'/> + </cell> + <cell> + <NumberEditor id='positifIntegerEditor2' + property='positifInteger' + constructorParams='this' + bean='{demoModel}' + autoPopup='true' + showPopupButton='true' + showReset='true'/> + </cell> + </row> + <row> + <cell> + <JLabel text='{_("numbereditor.normal.int", demoModel.getNormalInteger())}'/> + </cell> + <cell> + <NumberEditor id='normalIntegerEditor' + property='normalInteger' + constructorParams='this' + bean='{demoModel}' + autoPopup='false' + showPopupButton='true' + showReset='true' + useSign='true'/> + </cell> + <cell> + <NumberEditor id='normalIntegerEditor2' + property='normalInteger' + constructorParams='this' + bean='{demoModel}' + autoPopup='true' + showPopupButton='true' + showReset='true' + useSign='true'/> + </cell> + </row> + <row> + <cell> + <JLabel text='{_("numbereditor.positive.float", demoModel.getPositifFloat())}'/> + </cell> + <cell> + <NumberEditor id='positifFloatEditor' + property='positifFloat' + constructorParams='this' + bean='{demoModel}' + autoPopup='false' + showPopupButton='true' + showReset='true'/> + </cell> + <cell> + <NumberEditor id='positifFloatEditor2' + property='positifFloat' + constructorParams='this' + bean='{demoModel}' + autoPopup='true' + showPopupButton='true' + showReset='true'/> + </cell> + </row> + <row> + <cell> + <JLabel text='{_("numbereditor.normal.float", demoModel.getNormalFloat())}'/> + </cell> + <cell> + <NumberEditor id='normalFloatEditor' + property='normalFloat' + constructorParams='this' + bean='{demoModel}' + autoPopup='false' + showPopupButton='true' + showReset='true' + useSign='true'/> + </cell> + <cell> + <NumberEditor id='normalFloatEditor2' + property='normalFloat' + constructorParams='this' + bean='{demoModel}' + autoPopup='true' + showPopupButton='true' + showReset='true' + useSign='true'/> + </cell> + </row--> + diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemoModel.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemoModel.java index efd22f3..85fb9ea 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemoModel.java +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemoModel.java @@ -30,56 +30,80 @@ import java.beans.PropertyChangeSupport; */ public class NumberEditorDemoModel { + public static final String INTEGER_PROPERTY = "integerProperty"; + public static final String FLOAT_PROPERTY = "floatProperty"; protected PropertyChangeSupport p; - protected int positifInteger; - protected int normalInteger; - protected float positifFloat; - protected float normalFloat; + protected int integerProperty; + protected float floatProperty; +// protected int positifInteger; +// protected int normalInteger; +// protected float positifFloat; +// protected float normalFloat; public NumberEditorDemoModel() { p = new PropertyChangeSupport(this); } - public float getNormalFloat() { - return normalFloat; + public float getFloatProperty() { + return floatProperty; } - public int getNormalInteger() { - return normalInteger; + public int getIntegerProperty() { + return integerProperty; } - public float getPositifFloat() { - return positifFloat; + public void setFloatProperty(float floatProperty) { + float old = this.floatProperty; + this.floatProperty = floatProperty; + p.firePropertyChange(FLOAT_PROPERTY, old, floatProperty); } - public int getPositifInteger() { - return positifInteger; - } - - public void setNormalFloat(float normalFloat) { - float old = this.normalFloat; - this.normalFloat = normalFloat; - p.firePropertyChange("normalFloat", old, normalFloat); - } - - public void setNormalInteger(int normalInteger) { - int old = this.normalInteger; - this.normalInteger = normalInteger; - p.firePropertyChange("normalInteger", old, normalInteger); - } - - public void setPositifFloat(float positifFloat) { - float old = this.positifFloat; - this.positifFloat = positifFloat; - p.firePropertyChange("positifFloat", old, positifFloat); - } - - public void setPositifInteger(int positifInteger) { - int old = this.positifInteger; - this.positifInteger = positifInteger; - p.firePropertyChange("positifInteger", old, positifInteger); + public void setIntegerProperty(int integerProperty) { + int old = this.integerProperty; + this.integerProperty = integerProperty; + p.firePropertyChange(INTEGER_PROPERTY, old, integerProperty); } +// +// public float getNormalFloat() { +// return normalFloat; +// } +// +// public int getNormalInteger() { +// return normalInteger; +// } +// +// public float getPositifFloat() { +// return positifFloat; +// } +// +// public int getPositifInteger() { +// return positifInteger; +// } +// +// public void setNormalFloat(float normalFloat) { +// float old = this.normalFloat; +// this.normalFloat = normalFloat; +// p.firePropertyChange("normalFloat", old, normalFloat); +// } +// +// public void setNormalInteger(int normalInteger) { +// int old = this.normalInteger; +// this.normalInteger = normalInteger; +// p.firePropertyChange("normalInteger", old, normalInteger); +// } +// +// public void setPositifFloat(float positifFloat) { +// float old = this.positifFloat; +// this.positifFloat = positifFloat; +// p.firePropertyChange("positifFloat", old, positifFloat); +// } +// +// public void setPositifInteger(int positifInteger) { +// int old = this.positifInteger; +// this.positifInteger = positifInteger; +// p.firePropertyChange("positifInteger", old, positifInteger); +// } public void addPropertyChangeListener(PropertyChangeListener listener) { p.addPropertyChangeListener(listener); } diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/BaseContent.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/BaseContent.jaxx similarity index 100% rename from jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/BaseContent.jaxx rename to jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/BaseContent.jaxx diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/FullNavigationTreeDemo.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeDemo.jaxx similarity index 100% rename from jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/FullNavigationTreeDemo.jaxx rename to jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeDemo.jaxx diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/FullNavigationTreeHelper.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java similarity index 92% rename from jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/FullNavigationTreeHelper.java rename to jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java index 7bb9bf1..e917cc5 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/FullNavigationTreeHelper.java +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/FullNavigationTreeHelper.java @@ -18,34 +18,32 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * ##%* */ -package jaxx.demo.component.jaxx.tree; +package jaxx.demo.component.jaxx.navigation; -import java.util.Arrays; - -import static jaxx.runtime.JAXXContextEntryDef.newListDef; -import static org.nuiton.i18n.I18n._; - -import java.util.List; -import jaxx.runtime.decorator.Decorator; -import jaxx.runtime.JAXXContext; - - -import javax.swing.JPanel; -import jaxx.runtime.JAXXContextEntryDef; import jaxx.runtime.JAXXObject; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; +import static jaxx.runtime.context.JAXXContextEntryDef.newListDef; +import jaxx.runtime.decorator.Decorator; import jaxx.runtime.decorator.DecoratorUtils; import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.ErrorDialogUI; -import jaxx.runtime.swing.tree.NavigationTreeHandler; -import jaxx.runtime.swing.tree.NavigationTreeHandler.Strategy; -import jaxx.runtime.swing.tree.NavigationTreeHandlerWithCardLayout; -import jaxx.runtime.swing.tree.NavigationTreeHelper; -import jaxx.runtime.swing.tree.NavigationTreeModelBuilder; -import jaxx.runtime.swing.tree.NavigationTreeNode; -import jaxx.runtime.swing.tree.NavigationTreeModel; +import jaxx.runtime.swing.navigation.NavigationTreeHandler; +import jaxx.runtime.swing.navigation.NavigationTreeHandler.Strategy; +import jaxx.runtime.swing.navigation.NavigationTreeHandlerWithCardLayout; +import jaxx.runtime.swing.navigation.NavigationTreeHelper; +import jaxx.runtime.swing.navigation.NavigationTreeModelBuilder; +import jaxx.runtime.swing.navigation.NavigationTreeNode; +import jaxx.runtime.swing.navigation.NavigationTreeModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import static org.nuiton.i18n.I18n._; + +import java.util.Arrays; +import java.util.List; +import javax.swing.JPanel; + /** * * @author chemit diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/Movie.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/Movie.java similarity index 98% rename from jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/Movie.java rename to jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/Movie.java index 406ed63..22e335a 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/Movie.java +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/Movie.java @@ -18,7 +18,7 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * ##%* */ -package jaxx.demo.component.jaxx.tree; +package jaxx.demo.component.jaxx.navigation; import java.util.ArrayList; import java.util.List; diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/People.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/People.java similarity index 98% rename from jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/People.java rename to jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/People.java index b92ad9f..c98f297 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/tree/People.java +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/navigation/People.java @@ -18,7 +18,7 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. * ##%* */ -package jaxx.demo.component.jaxx.tree; +package jaxx.demo.component.jaxx.navigation; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; diff --git a/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties b/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties index 8d66355..2aa6120 100644 --- a/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties +++ b/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties @@ -106,12 +106,14 @@ close3=Disable 3 edit=Edit edit2=Edit 2 edit3=Edit 3 +editor.getSelectedLocale()= form.ratio=Ratio form.text=Text form.text2=Text 2 form2.ratio=Form 2 Ratio form2.text=Form 2 Text form2.text2=Form 2 Text 2 +i18neditor.popup.title= jaxxdemo.about.message=<h3>JAXX Demo</h3><hr/>For more informations, viste the <a href\="http\://maven-site.nuiton.org/jaxx/jaxx-demo">website of the project</a>. jaxxdemo.action.about=About... jaxxdemo.action.about.tip=About JAXXDemo... @@ -138,6 +140,13 @@ jaxxdemo.config.category.other.description=Others preferences jaxxdemo.config.configFileName.description=Configuration file name jaxxdemo.config.ui.fullscreen=To change the screen mode (true for full screen) jaxxdemo.config.ui.locale=Locale of the application +jaxxdemo.i18neditor.configuration=Configuration +jaxxdemo.i18neditor.popupBorderText=Popup title +jaxxdemo.i18neditor.selected.locale=Selected Language +jaxxdemo.i18neditor.showIcon=Show icons +jaxxdemo.i18neditor.showPopupIcon=Show icons in popup +jaxxdemo.i18neditor.showPopupText=Show texts in popup +jaxxdemo.i18neditor.showText=Show text jaxxdemo.init.closed=JAXXDemo was closed at %1$s jaxxdemo.init.context.done=Context initialized in %1$s jaxxdemo.init.ui.done=UI initialized. @@ -146,6 +155,15 @@ jaxxdemo.menu.file.locale=Languages jaxxdemo.menu.help= jaxxdemo.message.config.loaded=Configuration of JAXXDemo v. %1$s loaded. jaxxdemo.message.goto.site=Go to JAXXDemo Web site +jaxxdemo.numbereditor.autoPopup= +jaxxdemo.numbereditor.configuration= +jaxxdemo.numbereditor.model= +jaxxdemo.numbereditor.model.float= +jaxxdemo.numbereditor.model.int= +jaxxdemo.numbereditor.showPopupButton= +jaxxdemo.numbereditor.showReset= +jaxxdemo.numbereditor.useFloat= +jaxxdemo.numbereditor.useSign= jaxxdemo.title.about=About JAXXDemo... jaxxdemo.tree.component.jaxx=JAXX Components jaxxdemo.tree.component.jaxx.editor=Editors diff --git a/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties b/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties index 033f0fe..ffe9202 100644 --- a/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties +++ b/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties @@ -106,12 +106,14 @@ close3=Fermer 3 edit=Editer edit2=Editer 2 edit3=Editer 3 +editor.getSelectedLocale()= form.ratio=Form \: ratio form.text=Form \: text form.text2=Form \: text2 form2.ratio=Form2 \: ratio form2.text=Form2 \: text form2.text2=Form2 \: text2 +i18neditor.popup.title= jaxxdemo.about.message=<h3>JAXX Demo</h3><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.nuiton.org/jaxx/jaxx-demo">site du projet</a>. jaxxdemo.action.about=A propos jaxxdemo.action.about.tip=A propos de JAXX Demo... @@ -138,6 +140,13 @@ jaxxdemo.config.category.other.description=Autres options jaxxdemo.config.configFileName.description=Le nom du fichier de configuration jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine \u00E9cran jaxxdemo.config.ui.locale=Langue utilis\u00E9e par l'application (fr_FR, en_GB ou es_ES) +jaxxdemo.i18neditor.configuration=Configuration +jaxxdemo.i18neditor.popupBorderText=Titre de la popup +jaxxdemo.i18neditor.selected.locale=Langue s\u00E9lectionn\u00E9e +jaxxdemo.i18neditor.showIcon=Afficher les icones +jaxxdemo.i18neditor.showPopupIcon=Afficher les icones dans la popup +jaxxdemo.i18neditor.showPopupText=Afficher les textes dans la popup +jaxxdemo.i18neditor.showText=Afficher le text jaxxdemo.init.closed=JAXX Demo a \u00E9t\u00E9 ferm\u00E9 \u00E0 %1$s jaxxdemo.init.context.done=Initialisation du contexte termin\u00E9e en %1$s. jaxxdemo.init.ui.done=Initialisation de l'interface graphique termin\u00E9e. @@ -146,6 +155,15 @@ jaxxdemo.menu.file.locale=Langues jaxxdemo.menu.help=Aide jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s charg\u00E9e. jaxxdemo.message.goto.site=Acc\u00E9der au site de JAXX Demo (%1$s) +jaxxdemo.numbereditor.autoPopup=Affichage automatique popup +jaxxdemo.numbereditor.configuration=Configuration +jaxxdemo.numbereditor.model=R\u00E9sultat +jaxxdemo.numbereditor.model.float=Valeur d\u00E9cimale \: %1$s +jaxxdemo.numbereditor.model.int=Valeur enti\u00E8re \: %1$s +jaxxdemo.numbereditor.showPopupButton=Afficher le boutton de popup +jaxxdemo.numbereditor.showReset=Afficher le boutton de reset +jaxxdemo.numbereditor.useFloat=Utiliser les d\u00E9cimales +jaxxdemo.numbereditor.useSign=Utiliser le signe jaxxdemo.title.about=A propos de JAXX Demo... jaxxdemo.tree.component.jaxx=Composants JAXX jaxxdemo.tree.component.jaxx.editor=Editeurs diff --git a/jaxx-demo/src/main/resources/log4j.properties b/jaxx-demo/src/main/resources/log4j.properties index d0a87ec..1044d5c 100644 --- a/jaxx-demo/src/main/resources/log4j.properties +++ b/jaxx-demo/src/main/resources/log4j.properties @@ -6,7 +6,8 @@ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n log4j.logger.jaxx.demo=INFO -#log4j.logger.jaxx.runtime.swing.tree.NavigationTreeCellRenderer=DEBUG -#log4j.logger.jaxx.runtime.swing.tree.NavigationTreeNodeRenderer=DEBUG -#log4j.logger.jaxx.runtime.swing.tree.NavigationTreeModel=DEBUG +log4j.logger.jaxx.runtime.swing.editor.I18nEditor=INFO +#log4j.logger.jaxx.runtime.swing.navigation.NavigationTreeCellRenderer=DEBUG +#log4j.logger.jaxx.runtime.swing.navigation.NavigationTreeNodeRenderer=DEBUG +#log4j.logger.jaxx.runtime.swing.navigation.NavigationTreeModel=DEBUG log4j.logger.org.nuiton=WARN diff --git a/jaxx-runtime/src/main/java/jaxx/Base64Coder.java b/jaxx-runtime/src/main/java/jaxx/runtime/Base64Coder.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/Base64Coder.java rename to jaxx-runtime/src/main/java/jaxx/runtime/Base64Coder.java index 1d9d0f8..654826b 100644 --- a/jaxx-runtime/src/main/java/jaxx/Base64Coder.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/Base64Coder.java @@ -1,4 +1,4 @@ -package jaxx; +package jaxx.runtime; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingListener.java b/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingListener.java index d5694ae..da4c600 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingListener.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingListener.java @@ -34,6 +34,7 @@ public class DataBindingListener implements PropertyChangeListener { * * @param e the event which triggered the binding */ + @Override public void propertyChange(PropertyChangeEvent e) { object.processDataBinding(dest); diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingUpdateListener.java b/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingUpdateListener.java index f220ecc..030dd4c 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingUpdateListener.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/DataBindingUpdateListener.java @@ -39,6 +39,7 @@ public class DataBindingUpdateListener implements PropertyChangeListener { * * @param e the event which triggered the binding */ + @Override public void propertyChange(PropertyChangeEvent e) { object.removeDataBinding(dest); object.applyDataBinding(dest); diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXAction.java b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXAction.java index 647e41f..deadbbe 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXAction.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXAction.java @@ -1,5 +1,8 @@ package jaxx.runtime; +import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.context.JAXXContext; + /** * This is the contract to be realized by any class to be used as Action class for an ui. * @@ -12,7 +15,7 @@ public interface JAXXAction { * * @param parentContent the context of the parent of the ui (can be null if no parent is required) * @param datas other datas to inject in initial context - * @return the {@link jaxx.runtime.JAXXInitialContext} to be injected in the ui via the constructor of the {@link jaxx.runtime.JAXXObject} + * @return the {@link jaxx.runtime.context.JAXXInitialContext} to be injected in the ui via the constructor of the {@link jaxx.runtime.JAXXObject} */ JAXXInitialContext init(JAXXContext parentContent, Object... datas); diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObject.java b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObject.java index 1e40966..5ca926f 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObject.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObject.java @@ -4,29 +4,41 @@ */ package jaxx.runtime; -/** The <code>JAXXObject</code> interface is implemented by all classes produced by the JAXX compiler. */ +import java.util.Map; +import jaxx.runtime.context.JAXXContext; + +/** + * The <code>JAXXObject</code> interface is implemented by all classes + * produced by the JAXX compiler. + */ public interface JAXXObject extends JAXXContext { + /** * Retrieves an object defined in an XML tag by its ID. * * @param id the id of the component to retrieve * @return the object */ - public Object getObjectById(String id); + Object getObjectById(String id); /** * Pretrieves the dictonary of knwon objects indexed by their ids. * * @return the dictonary of objects. */ - public java.util.Map<String, Object> get$objectMap(); - - public void applyDataBinding(String id); + Map<String, Object> get$objectMap(); + /** + * + * @return the {@link JAXXContext} attached to the object + */ + JAXXContext getDelegateContext(); - public void removeDataBinding(String id); - - public jaxx.runtime.JAXXContext getDelegateContext(); + /** + * Apply the data bind by name and then process it. + * @param id the id of the databinding + */ + void applyDataBinding(String id); /** * Processes a data binding by name. Data binding names are comprised of an object ID and a property name: @@ -36,8 +48,14 @@ public interface JAXXObject extends JAXXContext { * * @param dest the name of the data binding to run */ - public void processDataBinding(String dest); + void processDataBinding(String dest); + /** + * Remove a databinding by name. + * + * @param id the name of databinding to remove + */ + void removeDataBinding(String id); /** * All <code>JAXXObject</code> implements are capable of broadcasting <code>PropertyChangeEvent</code>, and @@ -48,5 +66,5 @@ public interface JAXXObject extends JAXXContext { * @param oldValue the old value of the property * @param newValue the new value of the property */ - public void firePropertyChange(String name, Object oldValue, Object newValue); -} \ No newline at end of file + void firePropertyChange(String name, Object oldValue, Object newValue); +} diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObjectDescriptor.java b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObjectDescriptor.java index 31d513f..9315365 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObjectDescriptor.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/JAXXObjectDescriptor.java @@ -4,7 +4,7 @@ */ package jaxx.runtime; -import jaxx.css.Stylesheet; +import jaxx.runtime.css.Stylesheet; import java.io.Serializable; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java b/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java index 13ab770..327c517 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java @@ -1,6 +1,5 @@ package jaxx.runtime; -import jaxx.runtime.*; import java.awt.Color; import java.awt.Component; import java.awt.Container; @@ -169,6 +168,8 @@ public class SwingUtil extends Util { } /** + * TODO move this to JAXXComboBox. + * * Fill a combo box model with some datas, and select after all the given object * * @param combo the combo to fill diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/Util.java b/jaxx-runtime/src/main/java/jaxx/runtime/Util.java index 7f39843..9b3f505 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/Util.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/Util.java @@ -1,6 +1,7 @@ package jaxx.runtime; -import jaxx.Base64Coder; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -84,6 +85,21 @@ public class Util { } } + /** + * Method to initialize the context of a ui. + * + * @param ui the ui + * @param parentContext the context to set in ui + */ + public static void initContext(JAXXObject ui, JAXXContext parentContext) { + + if (parentContext instanceof jaxx.runtime.context.JAXXInitialContext) { + ((jaxx.runtime.context.JAXXInitialContext) parentContext).to(ui); + } else { + ui.setContextValue(parentContext); + } + } + public static Object getEventListener(Class<? extends EventListener> listenerClass, final String listenerMethodName, final Object methodContainer, final String methodName) { WeakReference<List<EventListenerDescriptor>> ref = eventListeners.get(methodContainer); List<EventListenerDescriptor> descriptors = ref != null ? ref.get() : null; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/DataContext.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/DataContext.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/runtime/DataContext.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/DataContext.java index 9fbfeb1..483927c 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/DataContext.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/DataContext.java @@ -1,5 +1,6 @@ -package jaxx.runtime; +package jaxx.runtime.context; +import jaxx.runtime.*; import java.awt.Container; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/DefaultApplicationContext.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultApplicationContext.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/runtime/DefaultApplicationContext.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultApplicationContext.java index 036be21..d4c2d18 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/DefaultApplicationContext.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultApplicationContext.java @@ -1,5 +1,6 @@ -package jaxx.runtime; +package jaxx.runtime.context; +import jaxx.runtime.*; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.lang.annotation.*; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/DefaultJAXXContext.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultJAXXContext.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/DefaultJAXXContext.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultJAXXContext.java index bf7112d..bcc1a73 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/DefaultJAXXContext.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/DefaultJAXXContext.java @@ -1,6 +1,7 @@ -package jaxx.runtime; +package jaxx.runtime.context; -import static jaxx.runtime.JAXXContextEntryDef.newDef; +import jaxx.runtime.*; +import static jaxx.runtime.context.JAXXContextEntryDef.newDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXContext.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContext.java similarity index 96% rename from jaxx-runtime/src/main/java/jaxx/runtime/JAXXContext.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContext.java index 85db035..e8fdfb8 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXContext.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContext.java @@ -1,9 +1,9 @@ -package jaxx.runtime; +package jaxx.runtime.context; import java.awt.Container; /** - * The {@link jaxx.runtime.JAXXContext} contract defines a generic context. + * The {@link jaxx.runtime.context.JAXXContext} contract defines a generic context. * <p/> * A context contains two king of entries : * <p/> diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXContextEntryDef.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContextEntryDef.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/runtime/JAXXContextEntryDef.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContextEntryDef.java index cf7c897..0e9db03 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXContextEntryDef.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXContextEntryDef.java @@ -1,4 +1,4 @@ -package jaxx.runtime; +package jaxx.runtime.context; import java.util.Collections; import java.util.List; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXInitialContext.java b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXInitialContext.java similarity index 97% rename from jaxx-runtime/src/main/java/jaxx/runtime/JAXXInitialContext.java rename to jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXInitialContext.java index d68b052..a932a2f 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/JAXXInitialContext.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/context/JAXXInitialContext.java @@ -1,4 +1,4 @@ -package jaxx.runtime; +package jaxx.runtime.context; import java.awt.Container; import java.util.Map.Entry; @@ -47,7 +47,7 @@ public class JAXXInitialContext extends DefaultJAXXContext { } /** - * Register a named value in the context. + * Register a named (or not) value in the context. * * @param <O> type of data to add * @param def definition of entry diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/css/DataBinding.java b/jaxx-runtime/src/main/java/jaxx/runtime/css/DataBinding.java index 2d5ed61..0bd5fa1 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/css/DataBinding.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/css/DataBinding.java @@ -9,6 +9,7 @@ package jaxx.runtime.css; * track of which data bindings are in effect. */ public class DataBinding { + private String id; public DataBinding(String id) { @@ -28,4 +29,4 @@ public class DataBinding { public int hashCode() { return id.hashCode(); } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/css/Pseudoclasses.java b/jaxx-runtime/src/main/java/jaxx/runtime/css/Pseudoclasses.java index cab9819..f87316c 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/css/Pseudoclasses.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/css/Pseudoclasses.java @@ -10,12 +10,12 @@ import java.util.Map; import java.util.WeakHashMap; public class Pseudoclasses { - public static final String NO_PSEUDOCLASS = "no pseudoclass"; + public static final String NO_PSEUDOCLASS = "no pseudoclass"; private static Map<Object, Map<String, List<PropertyValue>>> properties = new WeakHashMap<Object, Map<String, List<PropertyValue>>>(); - private static class PropertyValue implements Comparable<PropertyValue> { + private Object value; private int id; @@ -32,6 +32,7 @@ public class Pseudoclasses { return id; } + @Override public int compareTo(PropertyValue o) { return getId() - o.getId(); } @@ -41,14 +42,14 @@ public class Pseudoclasses { if (!(o instanceof PropertyValue)) { return false; } - PropertyValue value = (PropertyValue) o; - if (value.getId() != getId()) { + PropertyValue that = (PropertyValue) o; + if (that.getId() != getId()) { return false; } - if (value.getValue() == null) { + if (that.getValue() == null) { return getValue() == null; } - return value.getValue().equals(getValue()); + return that.getValue().equals(getValue()); } @Override @@ -118,8 +119,9 @@ public class Pseudoclasses { parent.applyDataBinding(((DataBinding) value).getId()); } return value; - } else + } else { return currentValue; + } } public static Object removeProperty(JAXXObject parent, Object object, String property, Object oldValue, Object currentValue, int id) { @@ -134,8 +136,9 @@ public class Pseudoclasses { propertyRemoved(object, property, wrap(oldValue), id); value = getCurrentValue(object, property); return value; - } else + } else { return currentValue; + } } public static Object wrap(boolean value) { @@ -173,4 +176,4 @@ public class Pseudoclasses { public static Object wrap(Object value) { return value; } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/main/java/jaxx/css/Rule.java b/jaxx-runtime/src/main/java/jaxx/runtime/css/Rule.java similarity index 95% rename from jaxx-runtime/src/main/java/jaxx/css/Rule.java rename to jaxx-runtime/src/main/java/jaxx/runtime/css/Rule.java index 230b93a..138f5bd 100644 --- a/jaxx-runtime/src/main/java/jaxx/css/Rule.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/css/Rule.java @@ -2,26 +2,24 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.css; +package jaxx.runtime.css; import java.util.Map; public class Rule implements java.io.Serializable, Comparable<Rule> { + public static final String INLINE_ATTRIBUTE = "<inline attribute>"; public static final String DATA_BINDING = "<data binding>"; - private Selector[] selectors; private Map<String, String> properties; private static final long serialVersionUID = 1L; - public Rule(Selector[] selectors, Map<String, String> properties) { this.selectors = selectors; java.util.Arrays.sort(selectors); this.properties = properties; } - public Rule(Selector[] selectors, String[] keys, String[] values) { this.selectors = selectors; java.util.Arrays.sort(selectors); @@ -51,4 +49,4 @@ public class Rule implements java.io.Serializable, Comparable<Rule> { public String toString() { return "Rule[" + java.util.Arrays.asList(selectors) + ", " + properties + "]"; } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/main/java/jaxx/css/Selector.java b/jaxx-runtime/src/main/java/jaxx/runtime/css/Selector.java similarity index 95% rename from jaxx-runtime/src/main/java/jaxx/css/Selector.java rename to jaxx-runtime/src/main/java/jaxx/runtime/css/Selector.java index b00235b..ccf82ff 100644 --- a/jaxx-runtime/src/main/java/jaxx/css/Selector.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/css/Selector.java @@ -2,15 +2,15 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.css; +package jaxx.runtime.css; public class Selector implements java.io.Serializable, Comparable<Selector> { + public static final int NEVER_APPLIES = 0; public static final int PSEUDOCLASS_APPLIES_INHERIT_ONLY = 1; public static final int PSEUDOCLASS_APPLIES = 2; public static final int ALWAYS_APPLIES_INHERIT_ONLY = 3; public static final int ALWAYS_APPLIES = 4; - private String javaClassName; private String styleClass; private String pseudoClass; @@ -18,12 +18,10 @@ public class Selector implements java.io.Serializable, Comparable<Selector> { private boolean inline; private static final long serialVersionUID = 1L; - public Selector(String javaClassName, String styleClass, String pseudoClass, String id) { this(javaClassName, styleClass, pseudoClass, id, false); } - public Selector(String javaClassName, String styleClass, String pseudoClass, String id, boolean inline) { this.javaClassName = javaClassName; this.styleClass = styleClass; @@ -32,27 +30,22 @@ public class Selector implements java.io.Serializable, Comparable<Selector> { this.inline = inline; } - public String getJavaClassName() { return javaClassName; } - public String getStyleClass() { return styleClass; } - public String getPseudoClass() { return pseudoClass; } - public String getId() { return id; } - public boolean isInline() { return inline; } @@ -96,4 +89,4 @@ public class Selector implements java.io.Serializable, Comparable<Selector> { public String toString() { return "Selector[" + javaClassName + ", " + styleClass + ", " + pseudoClass + ", " + id + "]"; } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/main/java/jaxx/css/Stylesheet.java b/jaxx-runtime/src/main/java/jaxx/runtime/css/Stylesheet.java similarity index 94% rename from jaxx-runtime/src/main/java/jaxx/css/Stylesheet.java rename to jaxx-runtime/src/main/java/jaxx/runtime/css/Stylesheet.java index 8d8f930..ae68c0a 100644 --- a/jaxx-runtime/src/main/java/jaxx/css/Stylesheet.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/css/Stylesheet.java @@ -2,13 +2,13 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.css; +package jaxx.runtime.css; public class Stylesheet implements java.io.Serializable { + private Rule[] rules; private static final long serialVersionUID = 1L; - public Stylesheet() { rules = new Rule[0]; } @@ -42,4 +42,4 @@ public class Stylesheet implements java.io.Serializable { public String toString() { return "Stylesheet" + java.util.Arrays.asList(rules); } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/main/java/jaxx/beaninfos/HBoxBeanInfo.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/HBoxBeanInfo.java similarity index 67% rename from jaxx-runtime/src/main/java/jaxx/beaninfos/HBoxBeanInfo.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/HBoxBeanInfo.java index c114688..8423d7d 100644 --- a/jaxx-runtime/src/main/java/jaxx/beaninfos/HBoxBeanInfo.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/HBoxBeanInfo.java @@ -2,9 +2,7 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.beaninfos; - -import jaxx.runtime.swing.HBox; +package jaxx.runtime.swing; import javax.swing.JPanel; import javax.swing.SwingConstants; @@ -15,16 +13,17 @@ import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; public class HBoxBeanInfo extends SimpleBeanInfo { + + @Override public BeanInfo[] getAdditionalBeanInfo() { try { return new BeanInfo[]{Introspector.getBeanInfo(JPanel.class)}; - } - catch (IntrospectionException e) { + } catch (IntrospectionException e) { throw new RuntimeException(e); } } - + @Override public PropertyDescriptor[] getPropertyDescriptors() { try { PropertyDescriptor spacing = new PropertyDescriptor("spacing", HBox.class); @@ -36,22 +35,21 @@ public class HBoxBeanInfo extends SimpleBeanInfo { PropertyDescriptor horizontalAlignment = new PropertyDescriptor("horizontalAlignment", HBox.class); horizontalAlignment.setBound(true); horizontalAlignment.setValue("enumerationValues", new Object[]{ - "left", SwingConstants.LEFT, "SwingConstants.LEFT", - "center", SwingConstants.CENTER, "SwingConstants.CENTER", - "right", SwingConstants.RIGHT, "SwingConstants.RIGHT" - }); + "left", SwingConstants.LEFT, "SwingConstants.LEFT", + "center", SwingConstants.CENTER, "SwingConstants.CENTER", + "right", SwingConstants.RIGHT, "SwingConstants.RIGHT" + }); PropertyDescriptor verticalAlignment = new PropertyDescriptor("verticalAlignment", HBox.class); verticalAlignment.setBound(true); verticalAlignment.setValue("enumerationValues", new Object[]{ - "top", SwingConstants.TOP, "SwingConstants.TOP", - "middle", SwingConstants.CENTER, "SwingConstants.CENTER", - "bottom", SwingConstants.BOTTOM, "SwingConstants.BOTTOM" - }); + "top", SwingConstants.TOP, "SwingConstants.TOP", + "middle", SwingConstants.CENTER, "SwingConstants.CENTER", + "bottom", SwingConstants.BOTTOM, "SwingConstants.BOTTOM" + }); return new PropertyDescriptor[]{spacing, margin, horizontalAlignment, verticalAlignment}; - } - catch (IntrospectionException e) { + } catch (IntrospectionException e) { throw new RuntimeException(e); } } diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/JaxxHelpBroker.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/JaxxHelpBroker.java index 59635f7..efab228 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/JaxxHelpBroker.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/JaxxHelpBroker.java @@ -19,7 +19,7 @@ import javax.help.HelpSet; import javax.swing.AbstractButton; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import jaxx.runtime.JAXXObject; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/LocaleListCellRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/LocaleListCellRenderer.java index 5365420..18537f9 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/LocaleListCellRenderer.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/LocaleListCellRenderer.java @@ -20,7 +20,7 @@ public class LocaleListCellRenderer extends DefaultListCellRenderer { public static final Log log = LogFactory.getLog(LocaleListCellRenderer.class); private static final long serialVersionUID = 1L; - protected Map<Locale, Icon> cache = new HashMap<Locale, Icon>(); + protected final Map<Locale, Icon> cache = new HashMap<Locale, Icon>(); protected boolean showIcon; protected boolean showText; @@ -51,11 +51,21 @@ public class LocaleListCellRenderer extends DefaultListCellRenderer { public String getText(Locale locale) { String text = null; if (showText) { - text = locale.getDisplayName(Locale.getDefault()); + text = getSafeText(locale); } return text; } + public Icon getIcon(Locale locale) { + if (!showIcon) { + return null; + } + synchronized (cache) { + Icon icon = getSafeIcon(locale); + return icon; + } + } + public String getToolTipText(Locale locale) { String tip = locale.getDisplayName(Locale.getDefault()); return tip; @@ -81,10 +91,12 @@ public class LocaleListCellRenderer extends DefaultListCellRenderer { firePropertyChange("showText", old, showText); } - public synchronized Icon getIcon(Locale locale) { - if (!showIcon) { - return null; - } + public String getSafeText(Locale locale) { + String text = locale.getDisplayName(Locale.getDefault()); + return text; + } + + public synchronized Icon getSafeIcon(Locale locale) { Icon icon = cache.get(locale); if (icon != null) { return icon; diff --git a/jaxx-runtime/src/main/java/jaxx/beaninfos/VBoxBeanInfo.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/VBoxBeanInfo.java similarity index 67% rename from jaxx-runtime/src/main/java/jaxx/beaninfos/VBoxBeanInfo.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/VBoxBeanInfo.java index 419e063..3534309 100644 --- a/jaxx-runtime/src/main/java/jaxx/beaninfos/VBoxBeanInfo.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/VBoxBeanInfo.java @@ -2,9 +2,7 @@ * Copyright 2006 Ethan Nicholas. All rights reserved. * Use is subject to license terms. */ -package jaxx.beaninfos; - -import jaxx.runtime.swing.VBox; +package jaxx.runtime.swing; import javax.swing.JPanel; import javax.swing.SwingConstants; @@ -15,16 +13,17 @@ import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; public class VBoxBeanInfo extends SimpleBeanInfo { + + @Override public BeanInfo[] getAdditionalBeanInfo() { try { return new BeanInfo[]{Introspector.getBeanInfo(JPanel.class)}; - } - catch (IntrospectionException e) { + } catch (IntrospectionException e) { throw new RuntimeException(e); } } - + @Override public PropertyDescriptor[] getPropertyDescriptors() { try { PropertyDescriptor spacing = new PropertyDescriptor("spacing", VBox.class); @@ -36,22 +35,21 @@ public class VBoxBeanInfo extends SimpleBeanInfo { PropertyDescriptor horizontalAlignment = new PropertyDescriptor("horizontalAlignment", VBox.class); horizontalAlignment.setBound(true); horizontalAlignment.setValue("enumerationValues", new Object[]{ - "left", SwingConstants.LEFT, "SwingConstants.LEFT", - "center", SwingConstants.CENTER, "SwingConstants.CENTER", - "right", SwingConstants.RIGHT, "SwingConstants.RIGHT" - }); + "left", SwingConstants.LEFT, "SwingConstants.LEFT", + "center", SwingConstants.CENTER, "SwingConstants.CENTER", + "right", SwingConstants.RIGHT, "SwingConstants.RIGHT" + }); PropertyDescriptor verticalAlignment = new PropertyDescriptor("verticalAlignment", VBox.class); verticalAlignment.setBound(true); verticalAlignment.setValue("enumerationValues", new Object[]{ - "top", SwingConstants.TOP, "SwingConstants.TOP", - "middle", SwingConstants.CENTER, "SwingConstants.CENTER", - "bottom", SwingConstants.BOTTOM, "SwingConstants.BOTTOM" - }); + "top", SwingConstants.TOP, "SwingConstants.TOP", + "middle", SwingConstants.CENTER, "SwingConstants.CENTER", + "bottom", SwingConstants.BOTTOM, "SwingConstants.BOTTOM" + }); return new PropertyDescriptor[]{spacing, margin, horizontalAlignment, verticalAlignment}; - } - catch (IntrospectionException e) { + } catch (IntrospectionException e) { throw new RuntimeException(e); } } diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeContextHelper.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java similarity index 97% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeContextHelper.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java index 4ab55b1..f87b58d 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeContextHelper.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeContextHelper.java @@ -1,8 +1,8 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import javax.swing.JTree; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXContextEntryDef; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; /** * To help getting and setting navigation tree objects from a {@link JAXXContext}. diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandler.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandler.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java index 5d7e099..1b12ebe 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandler.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandler.java @@ -1,4 +1,4 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import java.awt.Component; import javax.swing.event.TreeSelectionEvent; @@ -6,8 +6,8 @@ import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreePath; import jaxx.runtime.JAXXAction; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXInitialContext; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.JAXXObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandlerWithCardLayout.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java similarity index 97% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandlerWithCardLayout.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java index 60f01c0..ae94155 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHandlerWithCardLayout.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHandlerWithCardLayout.java @@ -1,6 +1,6 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import jaxx.runtime.JAXXObject; import jaxx.runtime.swing.CardLayout2; import org.apache.commons.logging.Log; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHelper.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHelper.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java index aa30fac..6e73d79 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeHelper.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeHelper.java @@ -1,10 +1,10 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import java.lang.reflect.InvocationTargetException; import java.util.regex.Pattern; import javax.swing.JTree; import javax.swing.tree.TreePath; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import jaxx.runtime.JAXXObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModel.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModel.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java index 3094bec..182a1c8 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModel.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java @@ -1,6 +1,6 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModelBuilder.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java similarity index 98% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModelBuilder.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java index 1a79faa..7b5c1bd 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeModelBuilder.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModelBuilder.java @@ -1,9 +1,9 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import java.util.Enumeration; import jaxx.runtime.JAXXAction; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXContextEntryDef; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.JAXXObject; import jaxx.runtime.decorator.Decorator; import org.apache.commons.logging.Log; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNode.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java similarity index 99% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNode.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java index bc440fb..b2d7c97 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNode.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNode.java @@ -1,11 +1,11 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import java.util.Enumeration; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import jaxx.runtime.JAXXAction; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXContextEntryDef; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.JAXXObject; import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.logging.Log; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java similarity index 96% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRenderer.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java index 1c8a2eb..310db18 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRenderer.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRenderer.java @@ -1,4 +1,4 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import javax.swing.tree.TreeCellRenderer; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererDecoratorImpl.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java similarity index 96% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererDecoratorImpl.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java index bb3cd20..11904d3 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererDecoratorImpl.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererDecoratorImpl.java @@ -1,4 +1,4 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import jaxx.runtime.decorator.Decorator; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererI18nImpl.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java similarity index 96% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererI18nImpl.java rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java index f9dc94b..8c39baf 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/NavigationTreeNodeRendererI18nImpl.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeNodeRendererI18nImpl.java @@ -1,4 +1,4 @@ -package jaxx.runtime.swing.tree; +package jaxx.runtime.swing.navigation; import static org.nuiton.i18n.I18n._; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/package.html b/jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/package.html similarity index 100% rename from jaxx-runtime/src/main/java/jaxx/runtime/swing/tree/package.html rename to jaxx-runtime/src/main/java/jaxx/runtime/swing/navigation/package.html diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationAction.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationAction.java index 52d26e7..c7c3c3b 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationAction.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationAction.java @@ -1,7 +1,7 @@ package jaxx.runtime.swing.wizard; import javax.swing.SwingWorker; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationActionThread.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationActionThread.java index eada87e..92e7e26 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationActionThread.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardOperationActionThread.java @@ -4,7 +4,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Date; import javax.swing.SwingWorker.StateValue; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.JAXXContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardUILancher.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardUILancher.java index aaba288..a140d1f 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardUILancher.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/wizard/WizardUILancher.java @@ -2,8 +2,8 @@ package jaxx.runtime.swing.wizard; import java.awt.Window; import javax.swing.ImageIcon; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXInitialContext; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.JAXXObject; import org.apache.commons.beanutils.ConstructorUtils; diff --git a/jaxx-runtime/src/test/java/jaxx/runtime/DefaultApplicationContextTest.java b/jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultApplicationContextTest.java similarity index 92% rename from jaxx-runtime/src/test/java/jaxx/runtime/DefaultApplicationContextTest.java rename to jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultApplicationContextTest.java index f5deedc..d3908f2 100644 --- a/jaxx-runtime/src/test/java/jaxx/runtime/DefaultApplicationContextTest.java +++ b/jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultApplicationContextTest.java @@ -1,11 +1,7 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package jaxx.runtime; +package jaxx.runtime.context; -import jaxx.runtime.DefaultApplicationContext.AutoLoad; -import jaxx.runtime.DefaultApplicationContext.MethodAccess; +import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; +import jaxx.runtime.context.DefaultApplicationContext.MethodAccess; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -114,4 +110,4 @@ public class DefaultApplicationContextTest { context.getContextValue(Hello.class); assertEquals(2, helloCount); } -} \ No newline at end of file +} diff --git a/jaxx-runtime/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java b/jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultJAXXContextTest.java similarity index 99% rename from jaxx-runtime/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java rename to jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultJAXXContextTest.java index 96fc62f..70dae65 100644 --- a/jaxx-runtime/src/test/java/jaxx/runtime/DefaultJAXXContextTest.java +++ b/jaxx-runtime/src/test/java/jaxx/runtime/context/DefaultJAXXContextTest.java @@ -1,5 +1,6 @@ -package jaxx.runtime; +package jaxx.runtime.context; +import jaxx.runtime.*; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/jaxx-runtime/src/test/java/jaxx/runtime/swing/tree/NavigationTreeModelTest.java b/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java similarity index 97% rename from jaxx-runtime/src/test/java/jaxx/runtime/swing/tree/NavigationTreeModelTest.java rename to jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java index 6398c2e..9699cf2 100644 --- a/jaxx-runtime/src/test/java/jaxx/runtime/swing/tree/NavigationTreeModelTest.java +++ b/jaxx-runtime/src/test/java/jaxx/runtime/swing/navigation/NavigationTreeModelTest.java @@ -1,8 +1,11 @@ -package jaxx.runtime.swing.tree; - -import jaxx.runtime.DefaultJAXXContext; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXContextEntryDef; +package jaxx.runtime.swing.navigation; + +import jaxx.runtime.swing.navigation.NavigationTreeNode; +import jaxx.runtime.swing.navigation.NavigationTreeModel; +import jaxx.runtime.swing.navigation.NavigationTreeModelBuilder; +import jaxx.runtime.context.DefaultJAXXContext; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXContextEntryDef; import org.junit.Assert; import org.junit.Test; @@ -82,7 +85,7 @@ public class NavigationTreeModelTest { } /** - * Test the {@link NavigationTreeModel#getJAXXContextValue(jaxx.runtime.JAXXContext, String)} with an entry point + * Test the {@link NavigationTreeModel#getJAXXContextValue(jaxx.runtime.context.JAXXContext, String)} with an entry point * as a bean. * <p/> * Tree is like this @@ -202,7 +205,7 @@ public class NavigationTreeModelTest { } /** - * Test the {@link NavigationTreeModel#getJAXXContextValue(jaxx.runtime.JAXXContext, String)} with an entry point + * Test the {@link NavigationTreeModel#getJAXXContextValue(jaxx.runtime.context.JAXXContext, String)} with an entry point * as a list. * <p/> * Tree is like this diff --git a/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/I18nEditor.jaxx b/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/I18nEditor.jaxx index ceccd33..78d4d4d 100644 --- a/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/I18nEditor.jaxx +++ b/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/I18nEditor.jaxx @@ -30,19 +30,26 @@ <String id='selectedToolTipText' javaBean='null'/> <String id='notSelectedToolTipText' javaBean='null'/> + <Border id='popupBorder' javaBean='new TitledBorder(_("i18neditor.popup.title"))'/> + <Boolean id='showText' javaBean='Boolean.TRUE'/> <Boolean id='showIcon' javaBean='Boolean.TRUE'/> + <Boolean id='showPopupText' javaBean='Boolean.TRUE'/> + <Boolean id='showPopupIcon' javaBean='Boolean.TRUE'/> <Boolean id='popupVisible' javaBean='Boolean.FALSE'/> <java.util.List id='locales' javaBean='null' genericType='Locale'/> <Locale id='selectedLocale' javaBean='Locale.getDefault()'/> - <jaxx.runtime.swing.LocaleListCellRenderer id='renderer' javaBean='new LocaleListCellRenderer(showIcon , showText)' showIcon='{isShowIcon()}' showText='{isShowText()}'/> + <jaxx.runtime.swing.LocaleListCellRenderer id='renderer' + showIcon='{isShowIcon()}' + showText='{isShowText()}' + javaBean='new LocaleListCellRenderer(showIcon , showText)'/> <!-- popup to change sorted property--> <JPopupMenu id='popup' - border='{new TitledBorder(_("i18neditor.popup.title"))}' + border='{getPopupBorder()}' onPopupMenuWillBecomeInvisible='button.setSelected(false)' onPopupMenuCanceled='button.setSelected(false)'> <JLabel id='popupLabel' enabled='false' text='i18neditor.empty.locales'/> @@ -74,6 +81,9 @@ public static final String LOCALES_PROPERTY = "locales"; public static final String SELECTED_LOCALE_PROPERTY = "selectedLocale"; public static final String SHOW_ICON_PROPERTY = "showIcon"; public static final String SHOW_TEXT_PROPERTY = "showText"; +public static final String SHOW_POPUP_ICON_PROPERTY = "showPopupIcon"; +public static final String SHOW_POPUP_TEXT_PROPERTY = "showPopupText"; +public static final String POPUP_BORDER_PROPERTY = "popupBorder"; public static final String POPUP_VISIBLE_PROPERTY = "popupVisible"; @Override @@ -82,9 +92,8 @@ public void propertyChange(PropertyChangeEvent evt) { if (log.isDebugEnabled()) { log.debug(name+" <old:"+evt.getOldValue()+" - new:"+evt.getNewValue()+">"); } - log.info(name+" <old:"+evt.getOldValue()+" - new:"+evt.getNewValue()+">"); + log.info(name + " <old:"+evt.getOldValue()+" - new:"+evt.getNewValue()+">"); if (LOCALES_PROPERTY.equals(name)) { - Locale oldLocale = getSelectedLocale(); java.util.Collection<?> newLocales = (java.util.Collection<?>) evt.getNewValue(); // mise a jour de la popup boolean oldShowText = renderer.isShowText(); @@ -94,8 +103,8 @@ public void propertyChange(PropertyChangeEvent evt) { for (Object o : newLocales) { Locale l = (Locale) o; boolean selected = l.equals(selectedLocale); - String text = renderer.getText(l); - Icon icon = renderer.getIcon(l); + String text = isShowPopupText() ? renderer.getText(l) : null; + Icon icon = isShowPopupIcon() ? renderer.getIcon(l) : null; JRadioButtonMenuItem b = new JRadioButtonMenuItem(text, icon, selected); popup.add(b); b.addActionListener(this); @@ -120,6 +129,18 @@ public void propertyChange(PropertyChangeEvent evt) { processDataBinding("button.text"); return; } + if (SHOW_POPUP_ICON_PROPERTY.equals(name)) { + rebuildPopup(); + return; + } + if (SHOW_POPUP_TEXT_PROPERTY.equals(name)) { + rebuildPopup(); + return; + } + if (POPUP_BORDER_PROPERTY.equals(name)) { + popup.setBorder((Border)evt.getNewValue()); + return; + } if (POPUP_VISIBLE_PROPERTY.equals(name)) { Boolean newValue = (Boolean) evt.getNewValue(); if (newValue == null || !newValue) { @@ -165,6 +186,26 @@ public void loadI18nBundles() { setLocales(java.util.Arrays.asList(org.nuiton.i18n.I18n.getLoader().getLocales())); } +protected void rebuildPopup() { + log.debug("start rebuild"); + try { + for (Component c : popup.getComponents()) { + if (c instanceof JRadioButtonMenuItem) { + JRadioButtonMenuItem b = (JRadioButtonMenuItem) c; + Locale l = (Locale) b.getClientProperty("locale"); + String text = isShowPopupText() ? renderer.getSafeText(l) : null; + Icon icon = isShowPopupIcon() ? renderer.getSafeIcon(l) : null; + b.setIcon(icon); + b.setText(text); + log.debug("text=" + text); + log.debug("icon=" + icon); + } + } + } finally { + popup.invalidate(); + } +} + protected String getTip(Locale l) { boolean selected = l.equals(selectedLocale); String tip = selected ? getSelectedTip(l):getNotSelectedTip(l); @@ -197,9 +238,10 @@ protected Runnable showPopupRunnable = new Runnable() { @Override public void run() { getPopup().pack(); - Dimension dim = getPopup().getPreferredSize(); JToggleButton invoker = getButton(); - getPopup().show(invoker, (int) (invoker.getPreferredSize().getWidth() - dim.getWidth()), invoker.getHeight()); + Dimension dim = getPopup().getPreferredSize(); + Dimension invokerDim = invoker.getSize(); + getPopup().show(invoker, (int) (invokerDim.getWidth() - dim.getWidth()), invoker.getHeight()); // getPopup().setVisible(true); } }; diff --git a/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigUIBuilder.java b/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigUIBuilder.java index 043356b..a5a84e7 100644 --- a/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigUIBuilder.java +++ b/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigUIBuilder.java @@ -32,8 +32,8 @@ import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JRootPane; import javax.swing.KeyStroke; -import jaxx.runtime.JAXXContext; -import jaxx.runtime.JAXXInitialContext; +import jaxx.runtime.context.JAXXContext; +import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.editor.config.model.CategoryModel; @@ -59,7 +59,7 @@ public class ConfigUIBuilder { * @param defaultCategory la categorie a selectionner * @return l'ui instanciate */ - public static ConfigUI newConfigUI(jaxx.runtime.JAXXContext parentContext, final ConfigUIModel model, String defaultCategory) { + public static ConfigUI newConfigUI(jaxx.runtime.context.JAXXContext parentContext, final ConfigUIModel model, String defaultCategory) { JAXXContext tx = new JAXXInitialContext().add(parentContext).add(model); final ConfigUI ui = new ConfigUI(tx); diff --git a/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-en_GB.properties b/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-en_GB.properties deleted file mode 100644 index 5430ac8..0000000 --- a/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-en_GB.properties +++ /dev/null @@ -1,70 +0,0 @@ -aboutframe.about=About -aboutframe.license=License -aboutframe.ok=OK -aboutframe.thirdparty=Third party -columnselector.action.tip=Select the columns -config.action.quit=Quit -config.action.quit.tip=Quit the configuration editor -config.action.reset=Cancel -config.action.reset.tip=Cancel the modifications for the category -config.action.save=Save -config.action.save.tip=Save the modifications for the category -config.category.saved=The category '%1$s' was modified \: -config.choice.cancel=Cancel -config.choice.continue=Continue -config.choice.doNotSave=Do not save -config.choice.ok=Ok -config.choice.save=Save -config.defaultValue=Default value -config.defaultValue.tip=Default value of the option -config.descrition=Description -config.error.category.already.exists=category with name '%1$s' does already exist\! -config.error.category.not.found=category with name '%1$s' does not exist\! -config.key=Key -config.key.tip=Key of the option -config.message.quit.invalid.category=The category '%1$s' is not valid\! -config.message.quit.valid.and.modified.category=The category '%1$s' has some modified options \: -config.modified=Option was modified (previous value \: %1$s) -config.no.option.selected=< No selected option > -config.option.final=This option can not be modified -config.option.label=Option '%1$s' (%2$s) -config.option.modified=Value is modified < original value \: '%1$s' - new value \: '%2$s' > -config.title=Preferences -config.title.need.confirm=A confirmation is required -config.title.will.reload.application=The application need to be restarted -config.unmodifiable=Can not be modified -config.unvalid=Option is not valid \! (previous value \: %1$s, required type \: %2$s) -config.value=Value -config.value.tip=Value of the option -entitycombobox.action.reset.tip=Reset the selected value -entitycombobox.action.sort.tip=Change the sorted property -entitycombobox.popup.label=Object '%1$s' -entitycombobox.popup.title=Change the sorted property -entitycombobox.sort.off=Click to activate the sort on this property -entitycombobox.sort.on=This is the property actually used -entitycombobox.unknown.type=Object of unkown type -errorUI.action.close=Close -errorUI.message=An error wad detected... -errorUI.title=Error... -i18neditor.empty.locales=< No locale to select > -i18neditor.popup.title=Change language -i18neditor.selected=Selected language \: %1$s -i18neditor.unselected=Select this langage \: %1$s -memorywidget.memory=%d/%dMb -numbereditor..=. -numbereditor.0=0 -numbereditor.1=1 -numbereditor.2=2 -numbereditor.3=3 -numbereditor.4=4 -numbereditor.5=5 -numbereditor.6=6 -numbereditor.7=7 -numbereditor.8=8 -numbereditor.9=9 -numbereditor.action.reset.tip=Reset -numbereditor.action.show.tip=Show numeric panel -numbereditor.clearAll=C -numbereditor.clearOne=CE -numbereditor.toggleSign=+/- -timeeditor.H=H diff --git a/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-fr_FR.properties b/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-fr_FR.properties deleted file mode 100644 index 4cc23a4..0000000 --- a/jaxx-widgets/src/main/resources/i18n/jaxx-runtime-swing-widget-fr_FR.properties +++ /dev/null @@ -1,71 +0,0 @@ -aboutframe.about=\u00C0 propos -aboutframe.license=Licence -aboutframe.ok=OK -aboutframe.thirdparty=Tierce partie -columnselector.action.tip=S\u00E9lectionner les colonnes -config.action.quit=Quitter -config.action.quit.tip=Quitter l'\u00E9diteur de configuration -config.action.reset=Annuler -config.action.reset.tip=Annuler les modifications de cette cat\u00E9gorie -config.action.save=Enregistrer -config.action.save.tip=Sauver les modifications de cette cat\u00E9gorie -config.category.saved=La cat\u00E9gorie '%1$s' a \u00E9t\u00E9 modifi\u00E9e \: -config.choice.cancel=Annuler -config.choice.continue=Continuer -config.choice.doNotSave=Ne pas enregistrer -config.choice.ok=Ok -config.choice.save=Enregistrer -config.defaultValue=Valeur par d\u00E9faut -config.defaultValue.tip=Valeur par d\u00E9faut de l'option -config.descrition=Description -config.error.category.already.exists=La cat\u00E9gorie de nom '%1$s' existe d\u00E9j\u00E0\! -config.error.category.not.found=La cat\u00E9gorie de nom '%1$s' n'existe pas\! -config.key=Clef -config.key.tip=Clef de l'option -config.message.quit.invalid.category=La cat\u00E9gorie '%1$s' n'est pas valide\! -config.message.quit.valid.and.modified.category=La cat\u00E9gorie '%1$s' poss\u00E8dent des options modifi\u00E9es \: -config.modified=Option modifi\u00E9e (valeur originale \: %1$s) -config.no.option.selected=< Pas d'option s\u00E9lectionn\u00E9e > -config.option.final=Option non modifiable -config.option.label=Option '%1$s' (%2$s) -config.option.modified=Valeur modifi\u00E9e < nouvelle valeur \: '%1$s' - ancienne valeur \: '%2$s' > -config.option.valid=Valeur non valide -config.title=Pr\u00E9f\u00E9rences -config.title.need.confirm=Une confirmation de votre part est requise... -config.title.will.reload.application=L'application doit \u00EAtre red\u00E9marrer... -config.unmodifiable=Ne peut pas \u00EAtre modifi\u00E9 -config.unvalid=Option non valide (valeur originale \: %1$s, type requis \: %2$s) -config.value=Valeur -config.value.tip=Valeur de l'option -entitycombobox.action.reset.tip=R\u00E9initialiser la valeur de la liste d\u00E9roulante -entitycombobox.action.sort.tip=Modifier le tri de la liste d\u00E9roulante -entitycombobox.popup.label=Objet '%1$s' -entitycombobox.popup.title=Modifier le tri -entitycombobox.sort.off=Cliquer pour activer le tri sur la propri\u00E9t\u00E9 '%1$s' -entitycombobox.sort.on=Le tri est effectu\u00E9 sur la propri\u00E9t\u00E9 '%1$s' -entitycombobox.unknown.type=Objet de type inconnu -errorUI.action.close=Fermer -errorUI.message=Une erreur est survenue \! -errorUI.title=Erreur... -i18neditor.empty.locales=< Aucune locale \u00E0 s\u00E9lectionner > -i18neditor.popup.title=Changer de langue -i18neditor.selected=Langue actuellement utilis\u00E9e \: %1$s -i18neditor.unselected=Pour utiliser cette langue \: %1$s -memorywidget.memory=%d/%dMo -numbereditor..=. -numbereditor.0=0 -numbereditor.1=1 -numbereditor.2=2 -numbereditor.3=3 -numbereditor.4=4 -numbereditor.5=5 -numbereditor.6=6 -numbereditor.7=7 -numbereditor.8=8 -numbereditor.9=9 -numbereditor.action.reset.tip=R\u00E9initialiser -numbereditor.action.show.tip=Afficher le pav\u00E9 num\u00E9rique -numbereditor.clearAll=C -numbereditor.clearOne=CE -numbereditor.toggleSign=+/- -timeeditor.H=H diff --git a/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-en_GB.properties b/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-en_GB.properties index 1e65fd0..5430ac8 100644 --- a/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-en_GB.properties +++ b/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-en_GB.properties @@ -1,70 +1,70 @@ -aboutframe.about= -aboutframe.license= -aboutframe.ok= -aboutframe.thirdparty= -columnselector.action.tip= -config.action.quit= -config.action.quit.tip= -config.action.reset= -config.action.reset.tip= -config.action.save= -config.action.save.tip= -config.category.saved= -config.choice.cancel= -config.choice.continue= -config.choice.doNotSave= -config.choice.ok= -config.choice.save= -config.defaultValue= -config.defaultValue.tip= -config.descrition= -config.error.category.already.exists= -config.error.category.not.found= -config.key= -config.key.tip= -config.message.quit.invalid.category= -config.message.quit.valid.and.modified.category= -config.modified= -config.no.option.selected= -config.option.final= -config.option.label= -config.option.modified= -config.title= -config.title.need.confirm= -config.title.will.reload.application= -config.unmodifiable= -config.unvalid= -config.value= -config.value.tip= -entitycombobox.action.reset.tip= -entitycombobox.action.sort.tip= -entitycombobox.popup.label= -entitycombobox.popup.title= -entitycombobox.sort.off= -entitycombobox.sort.on= -entitycombobox.unknown.type= -errorUI.action.close= -errorUI.message= -errorUI.title= -i18neditor.empty.locales= -i18neditor.popup.title= -i18neditor.selected= -i18neditor.unselected= -memorywidget.memory= -numbereditor..= -numbereditor.0= -numbereditor.1= -numbereditor.2= -numbereditor.3= -numbereditor.4= -numbereditor.5= -numbereditor.6= -numbereditor.7= -numbereditor.8= -numbereditor.9= -numbereditor.action.reset.tip= -numbereditor.action.show.tip= -numbereditor.clearAll= -numbereditor.clearOne= -numbereditor.toggleSign= -timeeditor.H= +aboutframe.about=About +aboutframe.license=License +aboutframe.ok=OK +aboutframe.thirdparty=Third party +columnselector.action.tip=Select the columns +config.action.quit=Quit +config.action.quit.tip=Quit the configuration editor +config.action.reset=Cancel +config.action.reset.tip=Cancel the modifications for the category +config.action.save=Save +config.action.save.tip=Save the modifications for the category +config.category.saved=The category '%1$s' was modified \: +config.choice.cancel=Cancel +config.choice.continue=Continue +config.choice.doNotSave=Do not save +config.choice.ok=Ok +config.choice.save=Save +config.defaultValue=Default value +config.defaultValue.tip=Default value of the option +config.descrition=Description +config.error.category.already.exists=category with name '%1$s' does already exist\! +config.error.category.not.found=category with name '%1$s' does not exist\! +config.key=Key +config.key.tip=Key of the option +config.message.quit.invalid.category=The category '%1$s' is not valid\! +config.message.quit.valid.and.modified.category=The category '%1$s' has some modified options \: +config.modified=Option was modified (previous value \: %1$s) +config.no.option.selected=< No selected option > +config.option.final=This option can not be modified +config.option.label=Option '%1$s' (%2$s) +config.option.modified=Value is modified < original value \: '%1$s' - new value \: '%2$s' > +config.title=Preferences +config.title.need.confirm=A confirmation is required +config.title.will.reload.application=The application need to be restarted +config.unmodifiable=Can not be modified +config.unvalid=Option is not valid \! (previous value \: %1$s, required type \: %2$s) +config.value=Value +config.value.tip=Value of the option +entitycombobox.action.reset.tip=Reset the selected value +entitycombobox.action.sort.tip=Change the sorted property +entitycombobox.popup.label=Object '%1$s' +entitycombobox.popup.title=Change the sorted property +entitycombobox.sort.off=Click to activate the sort on this property +entitycombobox.sort.on=This is the property actually used +entitycombobox.unknown.type=Object of unkown type +errorUI.action.close=Close +errorUI.message=An error wad detected... +errorUI.title=Error... +i18neditor.empty.locales=< No locale to select > +i18neditor.popup.title=Change language +i18neditor.selected=Selected language \: %1$s +i18neditor.unselected=Select this langage \: %1$s +memorywidget.memory=%d/%dMb +numbereditor..=. +numbereditor.0=0 +numbereditor.1=1 +numbereditor.2=2 +numbereditor.3=3 +numbereditor.4=4 +numbereditor.5=5 +numbereditor.6=6 +numbereditor.7=7 +numbereditor.8=8 +numbereditor.9=9 +numbereditor.action.reset.tip=Reset +numbereditor.action.show.tip=Show numeric panel +numbereditor.clearAll=C +numbereditor.clearOne=CE +numbereditor.toggleSign=+/- +timeeditor.H=H diff --git a/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-fr_FR.properties b/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-fr_FR.properties index 1e65fd0..4cc23a4 100644 --- a/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-fr_FR.properties +++ b/jaxx-widgets/src/main/resources/i18n/jaxx-widgets-fr_FR.properties @@ -1,70 +1,71 @@ -aboutframe.about= -aboutframe.license= -aboutframe.ok= -aboutframe.thirdparty= -columnselector.action.tip= -config.action.quit= -config.action.quit.tip= -config.action.reset= -config.action.reset.tip= -config.action.save= -config.action.save.tip= -config.category.saved= -config.choice.cancel= -config.choice.continue= -config.choice.doNotSave= -config.choice.ok= -config.choice.save= -config.defaultValue= -config.defaultValue.tip= -config.descrition= -config.error.category.already.exists= -config.error.category.not.found= -config.key= -config.key.tip= -config.message.quit.invalid.category= -config.message.quit.valid.and.modified.category= -config.modified= -config.no.option.selected= -config.option.final= -config.option.label= -config.option.modified= -config.title= -config.title.need.confirm= -config.title.will.reload.application= -config.unmodifiable= -config.unvalid= -config.value= -config.value.tip= -entitycombobox.action.reset.tip= -entitycombobox.action.sort.tip= -entitycombobox.popup.label= -entitycombobox.popup.title= -entitycombobox.sort.off= -entitycombobox.sort.on= -entitycombobox.unknown.type= -errorUI.action.close= -errorUI.message= -errorUI.title= -i18neditor.empty.locales= -i18neditor.popup.title= -i18neditor.selected= -i18neditor.unselected= -memorywidget.memory= -numbereditor..= -numbereditor.0= -numbereditor.1= -numbereditor.2= -numbereditor.3= -numbereditor.4= -numbereditor.5= -numbereditor.6= -numbereditor.7= -numbereditor.8= -numbereditor.9= -numbereditor.action.reset.tip= -numbereditor.action.show.tip= -numbereditor.clearAll= -numbereditor.clearOne= -numbereditor.toggleSign= -timeeditor.H= +aboutframe.about=\u00C0 propos +aboutframe.license=Licence +aboutframe.ok=OK +aboutframe.thirdparty=Tierce partie +columnselector.action.tip=S\u00E9lectionner les colonnes +config.action.quit=Quitter +config.action.quit.tip=Quitter l'\u00E9diteur de configuration +config.action.reset=Annuler +config.action.reset.tip=Annuler les modifications de cette cat\u00E9gorie +config.action.save=Enregistrer +config.action.save.tip=Sauver les modifications de cette cat\u00E9gorie +config.category.saved=La cat\u00E9gorie '%1$s' a \u00E9t\u00E9 modifi\u00E9e \: +config.choice.cancel=Annuler +config.choice.continue=Continuer +config.choice.doNotSave=Ne pas enregistrer +config.choice.ok=Ok +config.choice.save=Enregistrer +config.defaultValue=Valeur par d\u00E9faut +config.defaultValue.tip=Valeur par d\u00E9faut de l'option +config.descrition=Description +config.error.category.already.exists=La cat\u00E9gorie de nom '%1$s' existe d\u00E9j\u00E0\! +config.error.category.not.found=La cat\u00E9gorie de nom '%1$s' n'existe pas\! +config.key=Clef +config.key.tip=Clef de l'option +config.message.quit.invalid.category=La cat\u00E9gorie '%1$s' n'est pas valide\! +config.message.quit.valid.and.modified.category=La cat\u00E9gorie '%1$s' poss\u00E8dent des options modifi\u00E9es \: +config.modified=Option modifi\u00E9e (valeur originale \: %1$s) +config.no.option.selected=< Pas d'option s\u00E9lectionn\u00E9e > +config.option.final=Option non modifiable +config.option.label=Option '%1$s' (%2$s) +config.option.modified=Valeur modifi\u00E9e < nouvelle valeur \: '%1$s' - ancienne valeur \: '%2$s' > +config.option.valid=Valeur non valide +config.title=Pr\u00E9f\u00E9rences +config.title.need.confirm=Une confirmation de votre part est requise... +config.title.will.reload.application=L'application doit \u00EAtre red\u00E9marrer... +config.unmodifiable=Ne peut pas \u00EAtre modifi\u00E9 +config.unvalid=Option non valide (valeur originale \: %1$s, type requis \: %2$s) +config.value=Valeur +config.value.tip=Valeur de l'option +entitycombobox.action.reset.tip=R\u00E9initialiser la valeur de la liste d\u00E9roulante +entitycombobox.action.sort.tip=Modifier le tri de la liste d\u00E9roulante +entitycombobox.popup.label=Objet '%1$s' +entitycombobox.popup.title=Modifier le tri +entitycombobox.sort.off=Cliquer pour activer le tri sur la propri\u00E9t\u00E9 '%1$s' +entitycombobox.sort.on=Le tri est effectu\u00E9 sur la propri\u00E9t\u00E9 '%1$s' +entitycombobox.unknown.type=Objet de type inconnu +errorUI.action.close=Fermer +errorUI.message=Une erreur est survenue \! +errorUI.title=Erreur... +i18neditor.empty.locales=< Aucune locale \u00E0 s\u00E9lectionner > +i18neditor.popup.title=Changer de langue +i18neditor.selected=Langue actuellement utilis\u00E9e \: %1$s +i18neditor.unselected=Pour utiliser cette langue \: %1$s +memorywidget.memory=%d/%dMo +numbereditor..=. +numbereditor.0=0 +numbereditor.1=1 +numbereditor.2=2 +numbereditor.3=3 +numbereditor.4=4 +numbereditor.5=5 +numbereditor.6=6 +numbereditor.7=7 +numbereditor.8=8 +numbereditor.9=9 +numbereditor.action.reset.tip=R\u00E9initialiser +numbereditor.action.show.tip=Afficher le pav\u00E9 num\u00E9rique +numbereditor.clearAll=C +numbereditor.clearOne=CE +numbereditor.toggleSign=+/- +timeeditor.H=H diff --git a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/AbstractJaxxMojo.java b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/AbstractJaxxMojo.java index 9669d8b..a53fed0 100644 --- a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/AbstractJaxxMojo.java +++ b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/AbstractJaxxMojo.java @@ -117,7 +117,9 @@ public abstract class AbstractJaxxMojo extends AbstractPlugin { * @since 1.3 */ protected String helpsetIndexI18nSuffix; - protected boolean skip; + /** + * + */ protected ClassLoader cl; @Override diff --git a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxGeneratorMojo.java b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxGeneratorMojo.java index 7bfd8aa..2b2578f 100644 --- a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxGeneratorMojo.java +++ b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxGeneratorMojo.java @@ -18,35 +18,39 @@ *##%*/ package org.nuiton.jaxx.plugin; -import jaxx.beaninfos.BeanInfoUtil; -import jaxx.compiler.CompilerOptions; +import jaxx.compiler.CompilerConfiguration; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; -import jaxx.runtime.JAXXContext; -import jaxx.tags.TagManager; +import jaxx.compiler.beans.BeanInfoUtil; +import jaxx.compiler.decorators.CompiledObjectDecorator; +import jaxx.compiler.decorators.HelpRootCompiledObjectDecorator; +import jaxx.compiler.tags.TagManager; +import jaxx.runtime.context.JAXXContext; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.model.Resource; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.codehaus.plexus.util.DirectoryScanner; +import org.apache.maven.project.MavenProject; + +import org.nuiton.io.FileUpdaterHelper; +import org.nuiton.io.MirroredFileUpdater; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.lang.reflect.Modifier; import java.net.MalformedURLException; +import java.util.Map; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Properties; import java.util.Set; -import jaxx.compiler.CompiledObjectDecorator; -import jaxx.compiler.HelpRootCompiledObjectDecorator; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.model.Resource; -import org.apache.maven.project.MavenProject; -import org.nuiton.io.FileUpdaterHelper; -import org.nuiton.io.MirroredFileUpdater; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; /** * Classe permettant de transformer des sources jaxx vers du source java. @@ -57,62 +61,72 @@ import org.nuiton.io.MirroredFileUpdater; * @requiresDependencyResolution compile * @requiresProject */ -public class JaxxGeneratorMojo extends AbstractJaxxMojo { +public class JaxxGeneratorMojo extends AbstractJaxxMojo implements CompilerConfiguration { /** - * Le compilateur à utiliser (par défaut celui de Swing) - * - * @parameter expression="${jaxx.compilerFQN}" default-value="jaxx.compiler.SwingCompiler" + * Default includes to use, if none provided */ - protected String compilerFQN; + private static final String[] INCLUDES = {"**\\/*.jaxx"}; /** - * Le compilateur à utiliser (par défaut celui de Swing) + * Repertoire sources des fichiers jaxx a generer. * - * @parameter expression="${jaxx.validatorFQN}" default-value="jaxx.runtime.validator.swing.SwingValidator" + * @parameter expression="${jaxx.src}" default-value="${maven.src.dir}/main/java" */ - protected String validatorFQN; + protected File src; /** - * chemin du repertoire de generation des resources. + * pour filter les fichiers a traiter * - * @parameter expression="${jaxx.outResource}" default-value="${basedir}/target/generated-sources/resources" + * @parameter expression="${jaxx.includes}" */ - protected File outResource; + protected String[] includes; /** - * chemin du repertoire de compilation des resources. + * pour filter les fichiers a ne pas traiter * - * @parameter expression="${jaxx.outClass}" default-value="${basedir}/target/classes" + * @parameter expression="${jaxx.excludes}" */ - protected File outClass; + protected String[] excludes; /** - * Repertoire sources des fichiers jaxx a generer. + * Le compilateur à utiliser (par défaut celui de Swing) * - * @parameter expression="${jaxx.src}" default-value="${maven.src.dir}/main/java" + * @parameter expression="${jaxx.compilerFQN}" default-value="jaxx.compiler.JAXXCompiler" */ - protected File src; + protected String compilerFQN; /** - * pour optimizer le code compile ou genere ? + * Le compilateur à utiliser (par défaut celui de Swing) * - * @parameter expression="${jaxx.optimize}" default-value="false" + * @parameter expression="${jaxx.validatorFQN}" default-value="jaxx.runtime.validator.swing.SwingValidator" */ - protected boolean optimize; + protected String validatorFQN; /** - * les options de la compilation + * the name of implementation of {@link jaxx.runtime.context.JAXXContext} + * to be used on {@link jaxx.runtime.JAXXObject}. + * <p/> + * Must not be abstract. * - * @parameter expression="${jaxx.javaOpts}" + * @parameter expression="${jaxx.jaxxContextFQN}" default-value="jaxx.runtime.context.DefaultJAXXContext" + * @required */ - protected String javaOpts = null; + protected String jaxxContextFQN; /** - * pour filter les fichiers a traiter + * the FQN of the ui to use for error notification. + * <p/> + * If not given, will use the one defined in validator * - * @parameter expression="${jaxx.includes}" + * @parameter expression="${jaxx.defaultErrorUIFQN}" + * + * @see jaxx.runtime.validator.swing.SwingValidator */ - protected String[] includes; + protected String defaultErrorUIFQN; /** - * pour filter les fichiers a ne pas traiter + * the FQN of the ui to use for error notification. + * <p/> + * If not given, will use the one defined in validator * - * @parameter expression="${jaxx.excludes}" + * @parameter expression="${jaxx.defaultDecoratorFQN}" default-value="jaxx.compiler.decorators.DefaultCompiledObjectDecorator" + * + * @see jaxx.compiler.CompiledObjectDecorator */ - protected String[] excludes; + protected String defaultDecoratorFQN; /** * flag to include in compiler classpath the java sources directories (src and outJava). * <p/> @@ -156,6 +170,19 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { */ protected boolean force; /** + * A flag to mark themojo to be used in a test phase. This will permits to add generated sources in test compile roots. + * + * @parameter expression="${jaxx.testPhase}" default-value="false" + * @since 1.6.0 + */ + protected boolean testPhase; + /** + * pour optimizer le code compile ou genere ? + * + * @parameter expression="${jaxx.optimize}" default-value="false" + */ + protected boolean optimize; + /** * flag to add logger to each generated jaxx file. * <p/> * By default, always add it. @@ -172,16 +199,6 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { */ protected boolean resetAfterCompile; /** - * the name of implementation of {@link jaxx.runtime.JAXXContext} - * to be used on {@link jaxx.runtime.JAXXObject}. - * <p/> - * Must not be abstract. - * - * @parameter expression="${jaxx.jaxxContextImplementorClass}" default-value="jaxx.runtime.DefaultJAXXContext" - * @required - */ - protected String jaxxContextImplementorClass; - /** * extra path to be added in {@link java.beans.Introspector#setBeanInfoSearchPath(java.lang.String[])}. * <p/> * add beanInfoSearchPath to be registred by {@link BeanInfoUtil#addJaxxBeanInfoPath(java.lang.String[])} @@ -197,39 +214,10 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { /** * list of fqn of class toimport for all generated jaxx files * - * @parameter expression="${jaxx.extraImports}" - * - * @deprecated Prefer use of extraImportList as a string, so - * could be use in properties section. - */ - protected String[] extraImports; - /** - * list of fqn of class toimport for all generated jaxx files - * * @parameter expression="${jaxx.extraImportList}" */ protected String extraImportList; /** - * the FQN of the ui to use for error notification. - * <p/> - * If not given, will use the one defined in validator - * - * @parameter expression="${jaxx.defaultErrorUIFQN}" - * - * @see jaxx.runtime.validator.swing.SwingValidator - */ - protected String defaultErrorUIFQN; - /** - * the FQN of the ui to use for error notification. - * <p/> - * If not given, will use the one defined in validator - * - * @parameter expression="${jaxx.defaultDecorator}" default-value="jaxx.compiler.DefaultCompiledObjectDecorator" - * - * @see jaxx.compiler.CompiledObjectDecorator - */ - protected String defaultDecoratorFQN; - /** * a flag to use UIManager to retreave icons. * * @parameter expression="${jaxx.useUIManagerForIcon}" default-value="false" @@ -264,27 +252,41 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { */ protected String helpBrokerFQN; /** - * A flag to mark themojo to be used in a test phase. This will permits to add generated sources in test compile roots. * - * @parameter expression="${jaxx.testPhase}" default-value="false" - * @since 1.6.0 */ - protected boolean testPhase; protected String[] files; - private static final String[] INCLUDES = {"**\\/*.jaxx"}; - protected CompilerOptions options; + /** + * + */ protected MirroredFileUpdater updater; + /** + * + */ private Class<?> defaultErrorUIClass; + /** + * + */ private Class<?> validatorClass; + /** + * + */ private Class<? extends CompiledObjectDecorator> defaultDecoratorClass; + /** + * + */ + private Class<? extends JAXXContext> jaxxContextClass; + /** + * + */ private Class<? extends JAXXCompiler> compilerClass; + /** + * + */ + private String[] extraImports; @SuppressWarnings("unchecked") @Override public boolean init() throws Exception { - if (skip) { - return true; - } if (generateHelp) { // check there is some bundle @@ -292,23 +294,6 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { throw new MojoFailureException("you must set the helpIdStore property."); } } - skip = false; - - checkJaxxContextImplementorClass(); - - if (beanInfoSearchPath != null && beanInfoSearchPath.length > 0) { - // register extra path - BeanInfoUtil.addJaxxBeanInfoPath(beanInfoSearchPath); - } - if (!outResource.exists()) { - outResource.mkdirs(); - } - - if (!outJava.exists()) { - outJava.mkdirs(); - } - - fixCompileSourceRoots(); if (addSourcesToClassPath || addProjectClassPath) { cl = initClassLoader(project, getLog()); @@ -318,55 +303,44 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { //cl = Thread.currentThread().getContextClassLoader(); } - compilerClass = (Class<? extends JAXXCompiler>) Class.forName(compilerFQN, false, cl); defaultDecoratorClass = (Class<? extends CompiledObjectDecorator>) Class.forName(defaultDecoratorFQN, false, cl); - - // check the validator class is correct + jaxxContextClass = (Class<? extends JAXXContext>) Class.forName(jaxxContextFQN, false, cl); + if (!JAXXContext.class.isAssignableFrom(jaxxContextClass)) { + throw new MojoExecutionException("jaxxContextFQN must be an implementation of " + JAXXContext.class + " but was : " + jaxxContextClass); + } validatorClass = Class.forName(validatorFQN, false, cl); if (defaultErrorUIFQN != null && !defaultErrorUIFQN.trim().isEmpty()) { defaultErrorUIClass = Class.forName(defaultErrorUIFQN, false, cl); } - DirectoryScanner ds; - ds = new DirectoryScanner(); - ds.setBasedir(src); - boolean noIncludes = includes == null || includes.length == 0; - ds.setIncludes(noIncludes ? INCLUDES : includes); - - if (excludes != null && excludes.length > 0) { - ds.setExcludes(excludes); + if (beanInfoSearchPath != null && beanInfoSearchPath.length > 0) { + // register extra path + BeanInfoUtil.addJaxxBeanInfoPath(beanInfoSearchPath); } - ds.scan(); - String[] filesFind = ds.getIncludedFiles(); - if (verbose) { - getLog().info("jaxx - discover " + filesFind.length + " jaxx file(s). "); + if (!outJava.exists()) { + outJava.mkdirs(); } + fixCompileSourceRoots(); + + boolean noIncludes = includes == null || includes.length == 0; + + if (noIncludes) { + includes = INCLUDES; + } updater = FileUpdaterHelper.newJaxxFileUpdater(src, outJava); - if (force) { - // we will regenerate all files - this.files = filesFind; - } else { - // filter files - List<String> listFiles = new ArrayList<String>(); + Map<File, String[]> result = new HashMap<File, String[]>(); + getFilesToTreateForRoots(includes, excludes, Arrays.asList(src.getAbsolutePath()), result, force ? null : updater); - for (String file : filesFind) { - if (updater.isFileUpToDate(new File(src, file))) { - if (verbose) { - getLog().info("jaxx - skip file [" + file + "]."); - } - } else { - if (verbose) { - getLog().info("jaxx - detect modify file [" + file + "]."); - } - listFiles.add(file); - } - } - this.files = listFiles.toArray(new String[listFiles.size()]); + this.files = result.get(src); + + if (files == null || files.length == 0) { + getLog().warn("No files to treate."); + return false; } if (extraImportList != null && !extraImportList.isEmpty()) { @@ -379,9 +353,7 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { getLog().info("extra imports " + java.util.Arrays.toString(imports)); } extraImports = imports; - } - options = toCompilerOptions(); if (verbose) { printInit(); @@ -391,12 +363,7 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { @Override public void doAction() throws MojoExecutionException { - if (skip) { - if (verbose) { - getLog().info("jaxx - skip!"); - } - return; - } + getLog().info("jaxx - detects " + this.files.length + " modify jaxx file(s). "); try { @@ -404,7 +371,7 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { // force compiler init from here, not in a static block TagManager.reset(verbose); - JAXXCompilerLaunchor launchor = JAXXCompilerLaunchor.newLaunchor(src, files, options); + JAXXCompilerLaunchor launchor = JAXXCompilerLaunchor.newLaunchor(src, files, this); boolean success = launchor.compile(); getLog().info("jaxx - generate " + launchor.getCompilerCount() + " file(s). "); @@ -432,41 +399,119 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { } } - public CompilerOptions toCompilerOptions() { - CompilerOptions result = new CompilerOptions(); - result.setClassPath(src.getPath()); - if (javaOpts != null && !"".equals(javaOpts)) { - result.setJavacOpts(javaOpts); - } - result.setCompilerClass(compilerClass); - result.setValidatorFQN(validatorFQN); - result.setValidatorClass(validatorClass); - result.setKeepJavaFiles(true); - result.setOptimize(optimize); - result.setJavacTargetDirectory(outClass); - result.setTargetDirectory(outJava); - result.setVerbose(verbose); - result.setI18nable(i18nable); - result.setAddLogger(addLogger); - result.setProfile(profile); - result.setResetAfterCompile(resetAfterCompile); - result.setJaxxContextImplementorClass(jaxxContextImplementorClass); - result.setExtraImports(extraImports); - result.setDefaultErrorUI(defaultErrorUIClass); - result.setUseUIManagerForIcon(useUIManagerForIcon); - result.setDefaultDecoratorClass(defaultDecoratorClass); - result.setGenerateHelp(generateHelp); - result.setHelpBrokerFQN(helpBrokerFQN); - result.setHelpsetTitleI18nSuffix(helpsetTitleI18nSuffix); - result.setHelpsetIndexI18nSuffix(helpsetIndexI18nSuffix); - result.setHelpsetTocI18nSuffix(helpsetTocI18nSuffix); - result.setHelpSetName(helpSetName); - result.setHelpsetI18nPrefix(helpsetI18nPrefix); - - if (cl != null) { - result.setClassLoader(cl); - } - return result; + @Override + public File getTargetDirectory() { + return outJava; + } + + @Override + public boolean getOptimize() { + return optimize; + } + + @Override + public boolean isI18nable() { + return i18nable; + } + + @Override + public boolean isUseUIManagerForIcon() { + return useUIManagerForIcon; + } + + @Override + public boolean isAddLogger() { + return addLogger; + } + + @Override + public Class<? extends JAXXContext> getJaxxContextClass() { + return jaxxContextClass; + } + + @Override + public String[] getExtraImports() { + return extraImports; + } + + @Override + public boolean isResetAfterCompile() { + return resetAfterCompile; + } + + @Override + public boolean isOptimize() { + return optimize; + } + + @Override + public Class<?> getDefaultErrorUI() { + return defaultErrorUIClass; + } + + @Override + public ClassLoader getClassLoader() { + return cl; + } + + @Override + public Class<? extends JAXXCompiler> getCompilerClass() { + return compilerClass; + } + + @Override + public Class<? extends CompiledObjectDecorator> getDefaultDecoratorClass() { + return defaultDecoratorClass; + } + + @Override + public boolean isProfile() { + return profile; + } + + @Override + public boolean isGenerateHelp() { + return generateHelp; + } + + @Override + public String getHelpBrokerFQN() { + return helpBrokerFQN; + } + + @Override + public String getHelpsetIndexI18nSuffix() { + return helpsetIndexI18nSuffix; + } + + @Override + public String getHelpsetTitleI18nSuffix() { + return helpsetTitleI18nSuffix; + } + + @Override + public String getHelpsetTocI18nSuffix() { + return helpsetTocI18nSuffix; + } + + @Override + public String getHelpSetName() { + return helpSetName; + } + + @Override + public String getHelpsetI18nPrefix() { + return helpsetI18nPrefix; + } + + @Override + public Class<?> getValidatorClass() { + return validatorClass; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } protected void fixCompileSourceRoots() { @@ -491,7 +536,7 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { } protected void printInit() { - getLog().info(options.toString()); + getLog().info(toString()); getLog().info("includes : " + Arrays.toString(includes)); for (String file : files) { getLog().info("will generate " + file); @@ -514,24 +559,6 @@ public class JaxxGeneratorMojo extends AbstractJaxxMojo { } } - protected void checkJaxxContextImplementorClass() { - if (jaxxContextImplementorClass == null) { - throw new IllegalArgumentException("jaxxContextImplementor can not be null"); - } - try { - Class<?> jaxxContextImplementor = Class.forName(jaxxContextImplementorClass); - if (!JAXXContext.class.isAssignableFrom(jaxxContextImplementor)) { - throw new IllegalArgumentException("jaxxContextImplementor '" + jaxxContextImplementor + "' does not implements " + JAXXContext.class); - } - if (Modifier.isAbstract(jaxxContextImplementor.getModifiers())) { - throw new IllegalArgumentException("jaxxContextImplementor '" + jaxxContextImplementor + "' can not be abstract."); - - } - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("could not find jaxxContextImplementor class : " + jaxxContextImplementorClass); - } - } - protected void generateHelp() throws IOException { Set<String> helpIds = HelpRootCompiledObjectDecorator.getHelpIds(); if (helpIds.isEmpty()) { diff --git a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxHelpGeneratorMojo.java b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxHelpGeneratorMojo.java index f4311e3..1625471 100644 --- a/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxHelpGeneratorMojo.java +++ b/maven-jaxx-plugin/src/main/java/org/nuiton/jaxx/plugin/JaxxHelpGeneratorMojo.java @@ -209,12 +209,7 @@ public class JaxxHelpGeneratorMojo extends AbstractJaxxMojo { @Override public boolean init() throws Exception { - if (skip) { - return true; - } - if (!helpIdStore.exists()) { - skip = true; getLog().info("no helpIdStore to react at " + helpIdStore); return false; } @@ -239,7 +234,6 @@ public class JaxxHelpGeneratorMojo extends AbstractJaxxMojo { target.mkdirs(); } - helpIds = new SortedProperties(); InputStream stream = new FileInputStream(helpIdStore); @@ -252,24 +246,15 @@ public class JaxxHelpGeneratorMojo extends AbstractJaxxMojo { // no ids detected getLog().warn("no helpIds detected, will skip."); - skip = true; return false; } - skip = false; return true; } @Override public void doAction() throws Exception { - if (skip) { - if (verbose) { - getLog().info("jaxx - skip!"); - } - return; - } - if (i18nable) { List<URL> lUrls = new java.util.ArrayList<URL>(); diff --git a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/Bug1750Test.java b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/Bug1750Test.java index ae8779d..3395019 100644 --- a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/Bug1750Test.java +++ b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/Bug1750Test.java @@ -1,6 +1,6 @@ package org.nuiton.jaxx.plugin; -import jaxx.Base64Coder; +import jaxx.runtime.Base64Coder; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; import jaxx.runtime.JAXXObjectDescriptor; diff --git a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/CompilerTest.java b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/CompilerTest.java index edfb254..6012c74 100644 --- a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/CompilerTest.java +++ b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/CompilerTest.java @@ -2,8 +2,7 @@ package org.nuiton.jaxx.plugin; import jaxx.compiler.JAXXCompiler; import jaxx.compiler.JAXXCompilerLaunchor; -import jaxx.runtime.DefaultJAXXContext; -import jaxx.runtime.JAXXContext; +import jaxx.runtime.context.DefaultJAXXContext; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.logging.SystemStreamLog; @@ -162,31 +161,31 @@ public class CompilerTest extends JaxxBaseTest { @Test public void ErrorJaxxContextImplementorClass() throws Exception { JaxxGeneratorMojo mojo = getMojo(); - mojo.jaxxContextImplementorClass = null; + mojo.jaxxContextFQN = null; try { mojo.init(); fail(); - } catch (IllegalArgumentException e) { + } catch (NullPointerException e) { assertTrue(true); } - mojo.jaxxContextImplementorClass = String.class.getName(); + mojo.jaxxContextFQN = String.class.getName(); try { mojo.init(); fail(); - } catch (IllegalArgumentException e) { + } catch (MojoExecutionException e) { assertTrue(true); } - - mojo.jaxxContextImplementorClass = JAXXContext.class.getName(); - try { - mojo.init(); - fail(); - } catch (IllegalArgumentException e) { - assertTrue(true); - } - - mojo.jaxxContextImplementorClass = DefaultJAXXContext.class.getName(); +// +// mojo.jaxxContextFQN = JAXXContext.class.getName(); +// try { +// mojo.init(); +// fail(); +// } catch (IllegalArgumentException e) { +// assertTrue(true); +// } + + mojo.jaxxContextFQN = DefaultJAXXContext.class.getName(); mojo.init(); assertTrue(true); diff --git a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java index 1640d97..abaa634 100644 --- a/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java +++ b/maven-jaxx-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java @@ -1,6 +1,6 @@ package org.nuiton.jaxx.plugin; -import jaxx.runtime.DefaultJAXXContext; +import jaxx.runtime.context.DefaultJAXXContext; import org.nuiton.util.FileUtil; import java.io.File; @@ -8,7 +8,8 @@ import java.io.IOException; import org.nuiton.plugin.AbstractMojoTest; import static org.junit.Assert.*; -/** Base test case for a jaxx:generate goal. +/** + * Base test case for a jaxx:generate goal. * * Use {@link AbstractMojoTest} from {@code maven-helper-plugin}. * @@ -26,10 +27,10 @@ public abstract class JaxxBaseTest extends AbstractMojoTest<JaxxGeneratorMojo> { @Override protected void setUpMojo(JaxxGeneratorMojo mojo, File pomFile) throws Exception { super.setUpMojo(mojo, pomFile); - mojo.jaxxContextImplementorClass = DefaultJAXXContext.class.getName(); - mojo.compilerFQN = jaxx.compiler.SwingCompiler.class.getName(); + mojo.jaxxContextFQN = DefaultJAXXContext.class.getName(); + mojo.compilerFQN = jaxx.compiler.JAXXCompiler.class.getName(); mojo.validatorFQN = jaxx.runtime.validator.swing.SwingValidator.class.getName(); - mojo.defaultDecoratorFQN = jaxx.compiler.DefaultCompiledObjectDecorator.class.getName(); + mojo.defaultDecoratorFQN = jaxx.compiler.decorators.DefaultCompiledObjectDecorator.class.getName(); } protected void checkPattern(JaxxGeneratorMojo mojo, String pattern, boolean required, String... files) throws IOException { @@ -52,6 +53,10 @@ public abstract class JaxxBaseTest extends AbstractMojoTest<JaxxGeneratorMojo> { } protected void assertNumberJaxxFiles(int expectedNbFiles) { - assertEquals(expectedNbFiles, getMojo().files.length); + if (expectedNbFiles == 0) { + assertTrue(getMojo().files == null || getMojo().files.length == 0); + } else { + assertEquals(expectedNbFiles, getMojo().files.length); + } } } diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1722Test/Bug_1722.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1722Test/Bug_1722.xml index a6e881c..9f234ac 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1722Test/Bug_1722.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1722Test/Bug_1722.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <verbose>true</verbose> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1750Test/Bug_1750.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1750Test/Bug_1750.xml index 4c6a3cc..a170eab 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1750Test/Bug_1750.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1750Test/Bug_1750.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <verbose>true</verbose> <resetAfterCompile>false</resetAfterCompile> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1751Test/Bug_1751.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1751Test/Bug_1751.xml index 7034200..ceae3e8 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1751Test/Bug_1751.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Bug1751Test/Bug_1751.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <i18nable>true</i18nable> <force>true</force> <verbose>true</verbose> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/CSSTests.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/CSSTests.xml index f621ee1..067c35c 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/CSSTests.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/CSSTests.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <i18nable>false</i18nable> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClassReferences.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClassReferences.xml index 934b46d..54e16e9 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClassReferences.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClassReferences.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/ClassReferences/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClientProperty.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClientProperty.xml index fa27c64..922bd7b 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClientProperty.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ClientProperty.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <addLogger>false</addLogger> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ErrorJaxxContextImplementorClass.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ErrorJaxxContextImplementorClass.xml index d4d67bc..5d1cc74 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ErrorJaxxContextImplementorClass.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/ErrorJaxxContextImplementorClass.xml @@ -14,8 +14,8 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> - <jaxxContextImplementorClass>java.lang.String</jaxxContextImplementorClass> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> + <jaxxContextFQN>java.lang.String</jaxxContextFQN> <force>true</force> </configuration> </plugin> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Errors.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Errors.xml index 16038e4..6651676 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Errors.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Errors.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/errors/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Force.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Force.xml index d027475..2918a07 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Force.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Force.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/force/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Icon.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Icon.xml index 0b162aa..3da403e 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Icon.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Icon.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <i18nable>false</i18nable> <force>true</force> <verbose>true</verbose> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Initializers.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Initializers.xml index de41d53..7e5fc72 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Initializers.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Initializers.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/Initializers/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/InnerClasses.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/InnerClasses.xml index 2ce176d..b86cac8 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/InnerClasses.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/InnerClasses.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/InnerClasses/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/NoLog.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/NoLog.xml index 3fb906c..ed14568 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/NoLog.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/NoLog.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <addLogger>false</addLogger> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/OverridingDataBindings.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/OverridingDataBindings.xml index 58f2002..4860b09 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/OverridingDataBindings.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/OverridingDataBindings.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/OverridingDataBindings/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Script.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Script.xml index 863228d..6f52cdf 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Script.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/Script.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/Script/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/SpecialSubclassing.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/SpecialSubclassing.xml index 24f4b75..aff3c0a 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/SpecialSubclassing.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/SpecialSubclassing.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/CompilerTest/SpecialSubclassing/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/WithLog.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/WithLog.xml index b35e147..e2af511 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/WithLog.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/WithLog.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <addLogger>true</addLogger> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemDuplicateValues.jaxx b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemDuplicateValues.jaxx index 27e0397..e3fdbe2 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemDuplicateValues.jaxx +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemDuplicateValues.jaxx @@ -1,8 +1,8 @@ -<JList> +<JAXXList> <item value='1'/> <item value='2'/> <item value='2'/> <item value='3'/> <item value='3'/> <item value='3'/> -</JList> \ No newline at end of file +</JAXXList> \ No newline at end of file diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemNoValue.jaxx b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemNoValue.jaxx index ca70ebd..5718ac7 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemNoValue.jaxx +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerTest/errors/ItemNoValue.jaxx @@ -1,4 +1,4 @@ -<JList> +<JAXXList> <item label='This item doesn&t have a value'/> <item label='Neither does this one'/> -</JList> \ No newline at end of file +</JAXXList> \ No newline at end of file diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorErrors.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorErrors.xml index 2548c4a..57866b5 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorErrors.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorErrors.xml @@ -15,7 +15,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <verbose>true</verbose> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorOk.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorOk.xml index d90f3da..53dcdde 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorOk.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/CompilerValidatorTest/ValidatorOk.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <verbose>true</verbose> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/DecoratorTest/Decorator.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/DecoratorTest/Decorator.xml index b808534..52fdd43 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/DecoratorTest/Decorator.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/DecoratorTest/Decorator.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <addLogger>false</addLogger> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/error.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/error.xml index c13137e..2c78380 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/error.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/error.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <verbose>true</verbose> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/ok.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/ok.xml index c905588..48d70c1 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/ok.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/Evolution74Test/ok.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <includes> <value>**/Evolution74Test/ok/*.jaxx</value> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nText.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nText.xml index 7a68ec0..2c5c9cf 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nText.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nText.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <i18nable>true</i18nable> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nTitle.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nTitle.xml index 68c7ed0..dd8358b 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nTitle.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nTitle.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <i18nable>true</i18nable> <includes> diff --git a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nToolTipText.xml b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nToolTipText.xml index 2492b17..56b03e8 100644 --- a/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nToolTipText.xml +++ b/maven-jaxx-plugin/src/test/resources/org/nuiton/jaxx/plugin/I18nTest/I18nToolTipText.xml @@ -14,7 +14,7 @@ <configuration> <src>${basedir}/target/test-classes</src> <outJava>${basedir}/target/it-generated-sources/java</outJava> - <outResource>${basedir}/target/it-generated-sources/resources</outResource> + <!--outResource>${basedir}/target/it-generated-sources/resources</outResource--> <force>true</force> <i18nable>true</i18nable> <includes> diff --git a/src/site/rst/JAXXContext.rst b/src/site/rst/JAXXContext.rst index 465f8fd..5175ffc 100644 --- a/src/site/rst/JAXXContext.rst +++ b/src/site/rst/JAXXContext.rst @@ -13,7 +13,7 @@ Ajout d'un context applicatif dans JAXX. Le besoin initial de ce développement est de pouvoir facilement intégrer un context applicatif dans JAXX et de pouvoir l'utiliser dans les fichiers JAXX pour injecter par exemple des données dans les widgets. -jaxx.runtime.JAXXContext +jaxx.runtime.context.JAXXContext ======================== Il s'agit du contrat de base du context applicatif. @@ -32,7 +32,7 @@ Le type de l'objet correspondant en fait à la classe de la donnée. Le nom qui est facultatif permet de pouvoir distinguer plusieurs données d'un même type dans le context. Si le nom n'est pas utilisé pour caractériser une données on fixera alors sa valeur à *null*. -Afin de pouvoir caractériser les entrées dans le context, une classe a été définie *jaxx.runtime.JAXXContextEntryDef*. +Afin de pouvoir caractériser les entrées dans le context, une classe a été définie *jaxx.runtime.context.JAXXContextEntryDef*. Les méthodes de lecture *********************** @@ -87,7 +87,7 @@ de type *JAXXContext* *non nommé* qui le context courant qui sera détecté com Cette entrée spéciale ne sera pas stockée avec les autres entrées afin d'optimiser les algorithmes d'injection et de restitution. -jaxx.runtime.JAXXInitialContext +jaxx.runtime.context.JAXXInitialContext ******************************* On a implanté un second type de context qui lui peut servir à l'initialisation des JAXXObject. -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.