package org.whole.examples.patterns; import org.whole.lang.builders.IBuilderOperation; import org.whole.lang.templates.AbstractTemplateFactory; public class JavaPatternsActions extends AbstractTemplateFactory<org.whole.lang.actions.model.LanguageActionFactory> { public void apply(IBuilderOperation op) { org.whole.lang.actions.builders.IActionsBuilder b0 = (org.whole.lang.actions.builders.IActionsBuilder) op.wGetBuilder(org.whole.lang.actions.reflect.ActionsLanguageKit.URI); b0.LanguageActionFactory_(); b0.URI("whole:org.whole.examples.patterns:JavaPatternsActions"); b0.Namespace("org.whole.examples.patterns"); b0.Name("JavaPatternsActions"); org.whole.lang.commons.builders.ICommonsBuilder b1 = (org.whole.lang.commons.builders.ICommonsBuilder) op.wGetBuilder(org.whole.lang.commons.reflect.CommonsLanguageKit.URI); b1.Resolver(); b0.URI("http://lang.whole.org/Java"); b0.ToolbarActions_(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b0._ToolbarActions(); b0.ContextMenuActions_(); b0.MenuActions_(2); b0.GuardedAction_(); b0.Label("Generate concrete factory and products from Abstract Factory"); org.whole.lang.queries.builders.IQueriesBuilder b2 = (org.whole.lang.queries.builders.IQueriesBuilder) op.wGetBuilder(org.whole.lang.queries.reflect.QueriesLanguageKit.URI); b2.Block_(2); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); org.whole.lang.artifacts.builders.IArtifactsBuilder b3 = (org.whole.lang.artifacts.builders.IArtifactsBuilder) op.wGetBuilder(org.whole.lang.artifacts.reflect.ArtifactsLanguageKit.URI); b3.Workspace_(); b1.Resolver(); b3.Projects_(1); b3.Project_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#ProjectName"); b1.VarName("projectName"); b1.Quantifier("!"); b1._Variable(); b3.Natures_(0); b3._Natures(); b1.Resolver(); b3.Artifacts_(1); b3.FolderArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("sourceFolderName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(2); b3.PackageArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#PackageName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("productInterface"); b1.Quantifier("+"); b1._Variable(); b3._Artifacts(); b3._PackageArtifact(); b3.PackageArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#PackageName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(2); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("productImpl"); b1.Quantifier("+"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("concreteFactory"); b1.Quantifier("!"); b1._Variable(); b3._Artifacts(); b3._PackageArtifact(); b3._Artifacts(); b3._FolderArtifact(); b3._Artifacts(); b1.Resolver(); b3._Project(); b3._Projects(); b3._Workspace(); b1._StageUpFragment(); b2.VariableTest("workspace"); b2._Filter(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("InterfaceDeclaration"); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("packageName"); b2.StringLiteral(".impl"); b2._Addition(); b2.VariableTest("implPackageName"); b2._Filter(); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); org.whole.lang.java.builders.IJavaBuilder b4 = (org.whole.lang.java.builders.IJavaBuilder) op.wGetBuilder(org.whole.lang.java.reflect.JavaLanguageKit.URI); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(1); b4.ImportDeclaration_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4.ImportModifier(true); b4.ImportModifier(false); b4._ImportDeclaration(); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(4); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("private"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b4.SimpleName("instance"); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("public"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.SimpleName("instance"); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(2); b4.IfStatement_(); b4.InfixExpression_(); b4.SimpleName("instance"); b4.InfixOperator("=="); b4.NullLiteral(); b4.Expressions_(0); b4._Expressions(); b4._InfixExpression(); b4.ExpressionStatement_(); b4.Assignment_(); b4.SimpleName("instance"); b4.AssignmentOperator("="); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleType"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4._ClassInstanceCreation(); b4._Assignment(); b4._ExpressionStatement(); b1.Resolver(); b4._IfStatement(); b4.ReturnStatement_(); b4.SimpleName("instance"); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("protected"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(0); b4._Block(); b4._ConstructorDeclaration(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("factoryMethodImpl"); b1.Quantifier("+"); b1._Variable(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("concreteFactory"); b2._Filter(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("abstractFactoryName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("abstractFactoryName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("concreteFactoryName"); b2._Filter(); b2.RemoveNames_(); b2.TemplateNames(); b2.Names_(1); b2.Name("factoryMethodImpl"); b2._Names(); b2._RemoveNames(); b2._Select(); b2.Select_(); b2.Tuple_(3); b2.Filter_(); b1.StageUpFragment_(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("factoryMethodName"); b1.Quantifier("!"); b1._Variable(); b1.StageDownFragment_(); b2.FeatureStep("parameters"); b1._StageDownFragment(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b4.Arguments_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("paramName"); b1.Quantifier("*"); b1._Variable(); b4._Arguments(); b1.Resolver(); b4._ClassInstanceCreation(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b1._StageUpFragment(); b2.VariableTest("factoryMethodImpl"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.InterfaceDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(1); b1.InlineVariable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("getset"); b1.Quantifier("*"); b1._InlineVariable(); b4._BodyDeclarations(); b4._InterfaceDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("productInterface"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(1); b4.ImportDeclaration_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4.ImportModifier(true); b4.ImportModifier(false); b4._ImportDeclaration(); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(3); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#FieldDeclaration"); b1.VarName("field"); b1.Quantifier("*"); b1._Variable(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SingleVariableDeclaration"); b1.VarName("param"); b1.Quantifier("*"); b1._Variable(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Statement"); b1.VarName("init"); b1.Quantifier("*"); b1._Variable(); b4._Block(); b4._ConstructorDeclaration(); b1.InlineVariable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("getsetImpl"); b1.Quantifier("*"); b1._InlineVariable(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("productImpl"); b2._Filter(); b2._Tuple(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("productName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("productImplName"); b2._Filter(); b2.Select_(); b2.Tuple_(6); b2.Filter_(); b2.VariableRefStep("pname"); b2.VariableTest("paramName"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("private"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b1._StageUpFragment(); b2.VariableTest("field"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b1._StageUpFragment(); b2.VariableTest("param"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b1._StageUpFragment(); b2.VariableTest("init"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.BodyDeclarations_(2); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("getterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b4._MethodDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b4.PrimitiveType("void"); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("setterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b4._MethodDeclaration(); b4._BodyDeclarations(); b1._StageUpFragment(); b2.VariableTest("getset"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.BodyDeclarations_(2); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("getterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b4.PrimitiveType("void"); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("setterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b4._Block(); b4._MethodDeclaration(); b4._BodyDeclarations(); b1._StageUpFragment(); b2.VariableTest("getsetImpl"); b2._Filter(); b2._Tuple(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toGetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("getterName"); b2._Filter(); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toSetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("setterName"); b2._Filter(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.AddNames_(); b2.TemplateNames(); b2.Names_(1); b2.Name("factoryMethodImpl"); b2._Names(); b2._AddNames(); b2._Select(); b2.Call_(); b2.Name("workspace"); b1.Resolver(); b2._Call(); b2._Block(); b2.ExpressionTest_(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("InterfaceDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); org.whole.lang.workflows.builders.IWorkflowsBuilder b5 = (org.whole.lang.workflows.builders.IWorkflowsBuilder) op.wGetBuilder(org.whole.lang.workflows.reflect.WorkflowsLanguageKit.URI); b5.InvokeJavaClassMethod_(); b5.Text("check if self is an abstract factory"); b5.Variable("isAbstractFactory"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isAbstractFactory"); b2._Block(); b2._ExpressionTest(); b2.Some_(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._Some(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Generate products from Abstract Factory"); b2.Block_(2); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b3.Workspace_(); b1.Resolver(); b3.Projects_(1); b3.Project_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("projectName"); b1.Quantifier("!"); b1._Variable(); b3.Natures_(0); b3._Natures(); b1.Resolver(); b3.Artifacts_(1); b3.FolderArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("sourceFolderName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(1); b3.PackageArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(1); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.StageDownFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._StageDownFragment(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.StageDownFragment_(); b1.StageDownFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._StageDownFragment(); b1._StageDownFragment(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(4); b1.StageDownFragment_(); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("private"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b1._StageDownFragment(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.StageDownFragment_(); b1.StageDownFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._StageDownFragment(); b1._StageDownFragment(); b4.Parameters_(1); b1.StageDownFragment_(); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b1._StageDownFragment(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b1.StageDownFragment_(); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b1._StageDownFragment(); b4._Block(); b4._ConstructorDeclaration(); b1.StageDownFragment_(); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b1.StageDownFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toGetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._StageDownFragment(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b1._StageDownFragment(); b1.StageDownFragment_(); b1.StageDownFragment_(); b2.Select_(); b1.StageUpFragment_(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b4.PrimitiveType("void"); b1.StageDownFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toSetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._StageDownFragment(); b4.Parameters_(1); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b4._Block(); b4._MethodDeclaration(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b1._StageDownFragment(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.Path_(4); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("InterfaceDeclaration"); b2._Filter(); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b1._StageDownFragment(); b3._Artifacts(); b3._PackageArtifact(); b3._Artifacts(); b3._FolderArtifact(); b3._Artifacts(); b1.Resolver(); b3._Project(); b3._Projects(); b3._Workspace(); b1._StageUpFragment(); b2.VariableTest("workspace"); b2._Filter(); b2.SelfStep(); b1.Resolver(); b2.TemplateNames(); b2._Select(); b2.Call_(); b2.Name("workspace"); b1.Resolver(); b2._Call(); b2._Block(); b2.ExpressionTest_(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("InterfaceDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is an abstract factory"); b5.Variable("isAbstractFactory"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isAbstractFactory"); b2._Block(); b2._ExpressionTest(); b2.Some_(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._Some(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0._MenuActions(); b0.MenuActions_(0); b0._MenuActions(); b0.MenuActions_(0); b0._MenuActions(); b0.MenuActions_(6); b0.GuardedAction_(); b0.Label("Generate Factory Method implementation"); b2.Select_(); b1.StageUpFragment_(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("factoryMethodName"); b1.Quantifier("!"); b1._Variable(); b1.StageDownFragment_(); b2.FeatureStep("parameters"); b1._StageDownFragment(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b4.Arguments_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("paramName"); b1.Quantifier("*"); b1._Variable(); b4._Arguments(); b1.Resolver(); b4._ClassInstanceCreation(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b1._StageUpFragment(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("productName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("productImplName"); b2._Filter(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("paramName"); b2._Filter(); b2._ExpressionTest(); b2._Filter(); b2._Path(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2.ExpressionTest_(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Generate Product interface"); b2.Select_(); b1.StageUpFragment_(); b4.CompilationUnit_(); b1.Resolver(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.InterfaceDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(1); b1.InlineVariable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("getset"); b1.Quantifier("*"); b1._InlineVariable(); b4._BodyDeclarations(); b4._InterfaceDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b4.BodyDeclarations_(2); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("getterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b4._MethodDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b4.PrimitiveType("void"); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("setterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b1.Resolver(); b4._MethodDeclaration(); b4._BodyDeclarations(); b1._StageUpFragment(); b2.VariableTest("getset"); b2._Filter(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toGetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("getterName"); b2._Filter(); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toSetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("setterName"); b2._Filter(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2.ExpressionTest_(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Generate Product implementation"); b2.Select_(); b1.StageUpFragment_(); b4.CompilationUnit_(); b1.Resolver(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(3); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#FieldDeclaration"); b1.VarName("field"); b1.Quantifier("*"); b1._Variable(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SingleVariableDeclaration"); b1.VarName("param"); b1.Quantifier("*"); b1._Variable(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Statement"); b1.VarName("init"); b1.Quantifier("*"); b1._Variable(); b4._Block(); b4._ConstructorDeclaration(); b1.InlineVariable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("getsetImpl"); b1.Quantifier("*"); b1._InlineVariable(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("productName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("productImplName"); b2._Filter(); b2.Select_(); b2.Tuple_(4); b2.Filter_(); b1.StageUpFragment_(); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("private"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b1._StageUpFragment(); b2.VariableTest("field"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b1._StageUpFragment(); b2.VariableTest("param"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b1._StageUpFragment(); b2.VariableTest("init"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b4.BodyDeclarations_(2); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("getterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b4.PrimitiveType("void"); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("setterName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(1); b4.SingleVariableDeclaration_(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("ptype"); b1.Quantifier("!"); b1._Variable(); b4.Varargs(false); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4.ExtraDimensions(0); b1.Resolver(); b4._SingleVariableDeclaration(); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ExpressionStatement_(); b4.Assignment_(); b4.FieldAccess_(); b4.ThisExpression_(); b1.Resolver(); b4._ThisExpression(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._FieldAccess(); b4.AssignmentOperator("="); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("pname"); b1.Quantifier("!"); b1._Variable(); b4._Assignment(); b4._ExpressionStatement(); b4._Block(); b4._MethodDeclaration(); b4._BodyDeclarations(); b1._StageUpFragment(); b2.VariableTest("getsetImpl"); b2._Filter(); b2._Tuple(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("pname"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("type"); b2.VariableTest("ptype"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toGetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("getterName"); b2._Filter(); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toSetterName"); b4.Arguments_(1); b4.SimpleName("pname"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("setterName"); b2._Filter(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2.ExpressionTest_(); b2.Path_(2); b2.VariableRefStep("selectedEntities"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Generate Artifacts (no body) from Abstract Factory"); b2.Block_(1); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b3.Workspace_(); b1.Resolver(); b3.Projects_(1); b3.Project_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#ProjectName"); b1.VarName("projectName"); b1.Quantifier("!"); b1._Variable(); b3.Natures_(0); b3._Natures(); b1.Resolver(); b3.Artifacts_(1); b3.FolderArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("sourceFolderName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(2); b3.PackageArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#PackageName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("productInterface"); b1.Quantifier("+"); b1._Variable(); b3._Artifacts(); b3._PackageArtifact(); b3.PackageArtifact_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#PackageName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b3.Artifacts_(2); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("productImpl"); b1.Quantifier("+"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Artifact"); b1.VarName("concreteFactory"); b1.Quantifier("!"); b1._Variable(); b3._Artifacts(); b3._PackageArtifact(); b3._Artifacts(); b3._FolderArtifact(); b3._Artifacts(); b1.Resolver(); b3._Project(); b3._Projects(); b3._Workspace(); b1._StageUpFragment(); b2.VariableTest("workspace"); b2._Filter(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("InterfaceDeclaration"); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("packageName"); b2.StringLiteral(".impl"); b2._Addition(); b2.VariableTest("implPackageName"); b2._Filter(); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(1); b4.ImportDeclaration_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4.ImportModifier(true); b4.ImportModifier(false); b4._ImportDeclaration(); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(3); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("private"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b4.SimpleName("instance"); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("public"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.SimpleName("instance"); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(2); b4.IfStatement_(); b4.InfixExpression_(); b4.SimpleName("instance"); b4.InfixOperator("=="); b4.NullLiteral(); b4.Expressions_(0); b4._Expressions(); b4._InfixExpression(); b4.ExpressionStatement_(); b4.Assignment_(); b4.SimpleName("instance"); b4.AssignmentOperator("="); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleType"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4._ClassInstanceCreation(); b4._Assignment(); b4._ExpressionStatement(); b1.Resolver(); b4._IfStatement(); b4.ReturnStatement_(); b4.SimpleName("instance"); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("protected"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(0); b4._Block(); b4._ConstructorDeclaration(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("concreteFactory"); b2._Filter(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("abstractFactoryName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("abstractFactoryName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("concreteFactoryName"); b2._Filter(); b2.TemplateNames(); b2._Select(); b2.Select_(); b2.Tuple_(2); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.InterfaceDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(0); b4._BodyDeclarations(); b4._InterfaceDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("productInterface"); b2._Filter(); b2.Filter_(); b1.StageUpFragment_(); b3.FileArtifact_(); b3.NameWithExtension_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Artifacts#Name"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b3.Extension("java"); b3._NameWithExtension(); b1.Resolver(); b1.StageUpFragment_(); b4.CompilationUnit_(); b4.PackageDeclaration_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("implPackageName"); b1.Quantifier("!"); b1._Variable(); b4._PackageDeclaration(); b4.ImportDeclarations_(1); b4.ImportDeclaration_(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#QualifiedName"); b1.VarName("packageName"); b1.Quantifier("!"); b1._Variable(); b4.ImportModifier(true); b4.ImportModifier(false); b4._ImportDeclaration(); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(0); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b3._FileArtifact(); b1._StageUpFragment(); b2.VariableTest("productImpl"); b2._Filter(); b2._Tuple(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("productName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("productImplName"); b2._Filter(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Block(); b2.ExpressionTest_(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("InterfaceDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is an abstract factory"); b5.Variable("isAbstractFactory"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isAbstractFactory"); b2._Block(); b2._ExpressionTest(); b2.Some_(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._Some(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Extract Factory Methods from an Abstract Factory"); b2.Path_(4); b2.FeatureStep("types"); b2.ChildStep(); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("InterfaceDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is an abstract factory"); b5.Variable("isAbstractFactory"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isAbstractFactory"); b2._Block(); b2._ExpressionTest(); b2.Some_(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._Some(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0.GuardedAction_(); b0.Label("Generate Concrete Factory from an Abstract Factory"); b2.Select_(); b1.StageUpFragment_(); b4.CompilationUnit_(); b1.Resolver(); b4.ImportDeclarations_(0); b4._ImportDeclarations(); b4.TypeDeclarations_(1); b4.ClassDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4.Types_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4._Types(); b4.BodyDeclarations_(4); b4.FieldDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("private"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.VariableDeclarationFragments_(1); b4.VariableDeclarationFragment_(); b4.SimpleName("instance"); b4.ExtraDimensions(0); b1.Resolver(); b4._VariableDeclarationFragment(); b4._VariableDeclarationFragments(); b4._FieldDeclaration(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(2); b4.Modifier("public"); b4.Modifier("static"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("abstractFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.SimpleName("instance"); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(2); b4.IfStatement_(); b4.InfixExpression_(); b4.SimpleName("instance"); b4.InfixOperator("=="); b4.NullLiteral(); b4.Expressions_(0); b4._Expressions(); b4._InfixExpression(); b4.ExpressionStatement_(); b4.Assignment_(); b4.SimpleName("instance"); b4.AssignmentOperator("="); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleType"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b1.Resolver(); b1.Resolver(); b4._ClassInstanceCreation(); b4._Assignment(); b4._ExpressionStatement(); b1.Resolver(); b4._IfStatement(); b4.ReturnStatement_(); b4.SimpleName("instance"); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b4.ConstructorDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("protected"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("concreteFactoryName"); b1.Quantifier("!"); b1._Variable(); b4.Parameters_(0); b4._Parameters(); b1.Resolver(); b1.Resolver(); b4.Block_(0); b4._Block(); b4._ConstructorDeclaration(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#MethodDeclaration"); b1.VarName("factoryMethodImpl"); b1.Quantifier("+"); b1._Variable(); b4._BodyDeclarations(); b4._ClassDeclaration(); b4._TypeDeclarations(); b4._CompilationUnit(); b1._StageUpFragment(); b2.Path_(2); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("abstractFactoryName"); b2._Filter(); b2._ExpressionTest(); b2._Filter(); b2._Path(); b2.Sequence_(2); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("abstractFactoryName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("concreteFactoryName"); b2._Filter(); b2.Select_(); b2.Filter_(); b1.StageUpFragment_(); b4.MethodDeclaration_(); b1.Resolver(); b4.ExtendedModifiers_(1); b4.Modifier("public"); b4._ExtendedModifiers(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productType"); b1.Quantifier("!"); b1._Variable(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("factoryMethodName"); b1.Quantifier("!"); b1._Variable(); b1.StageDownFragment_(); b2.FeatureStep("parameters"); b1._StageDownFragment(); b1.Resolver(); b1.Resolver(); b4.Block_(1); b4.ReturnStatement_(); b4.ClassInstanceCreation_(); b1.Resolver(); b1.Resolver(); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#Type"); b1.VarName("productImplName"); b1.Quantifier("!"); b1._Variable(); b4.Arguments_(1); b1.Variable_(); b1.VarType("http://lang.whole.org/Java#SimpleName"); b1.VarName("paramName"); b1.Quantifier("*"); b1._Variable(); b4._Arguments(); b1.Resolver(); b4._ClassInstanceCreation(); b4._ReturnStatement(); b4._Block(); b4._MethodDeclaration(); b1._StageUpFragment(); b2.VariableTest("factoryMethodImpl"); b2._Filter(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("MethodDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("factoryMethodName"); b2._Filter(); b2._ExpressionTest(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("returnType"); b2.VariableTest("productType"); b2._Filter(); b2._ExpressionTest(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2.Sequence_(3); b2.Filter_(); b1.SameStageFragment_(); b4.MethodInvocation_(); b4.SimpleName("org.whole.examples.helpers.Helpers"); b1.Resolver(); b4.SimpleName("toClassName"); b4.Arguments_(1); b4.SimpleName("factoryMethodName"); b4._Arguments(); b4._MethodInvocation(); b1._SameStageFragment(); b2.VariableTest("productName"); b2._Filter(); b2.Filter_(); b2.Addition_(); b2.VariableRefStep("productName"); b2.StringLiteral("Impl"); b2._Addition(); b2.VariableTest("productImplName"); b2._Filter(); b2.Path_(2); b2.FeatureStep("parameters"); b2.Filter_(); b2.ChildStep(); b2.ExpressionTest_(); b2.Filter_(); b2.FeatureStep("name"); b2.VariableTest("paramName"); b2._Filter(); b2._ExpressionTest(); b2._Filter(); b2._Path(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2._Sequence(); b2.TemplateNames(); b2._Select(); b2.ExpressionTest_(); b2.Path_(3); b2.Filter_(); b2.SelfStep(); b2.TypeTest("CompilationUnit"); b2._Filter(); b2.FeatureStep("types"); b2.Filter_(); b2.ChildStep(); b2.And_(2); b2.TypeTest("InterfaceDeclaration"); b2.And_(2); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is an abstract factory"); b5.Variable("isAbstractFactory"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isAbstractFactory"); b2._Block(); b2._ExpressionTest(); b2.Some_(); b2.Path_(2); b2.FeatureStep("bodyDeclarations"); b2.Filter_(); b2.ChildStep(); b2.TypeTest("MethodDeclaration"); b2._Filter(); b2._Path(); b2.ExpressionTest_(); b2.Block_(2); b1.SameStageFragment_(); b5.InvokeJavaClassMethod_(); b5.Text("check if self is a factory method"); b5.Variable("isFactoryMethod"); b1.Resolver(); b5.StringLiteral("org.whole.examples.helpers.Helpers"); b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)"); b5.Expressions_(1); b5.Variable("self"); b5._Expressions(); b5._InvokeJavaClassMethod(); b1._SameStageFragment(); b2.VariableRefStep("isFactoryMethod"); b2._Block(); b2._ExpressionTest(); b2._Some(); b2._And(); b2._And(); b2._Filter(); b2._Path(); b2._ExpressionTest(); b0._GuardedAction(); b0._MenuActions(); b0.MenuActions_(0); b0._MenuActions(); b1.Resolver(); b0._ContextMenuActions(); b0._LanguageActionFactory(); } }