/******************************************************************************* * Copyright (c) 2008, 2014 Borland Software Corporation and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Borland Software Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.m2m.tests.qvt.oml.bbox; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import org.eclipse.emf.ecore.EAnnotation; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EModelElement; import org.eclipse.emf.ecore.ENamedElement; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.m2m.qvt.oml.blackbox.java.Operation; import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind; import org.eclipse.m2m.qvt.oml.util.Dictionary; import org.eclipse.m2m.qvt.oml.util.IContext; import org.eclipse.m2m.qvt.oml.util.MutableList; public class Bug289982_Library { private static final String BLACKBOX_TEXT = "blackbox"; //$NON-NLS-1$ /* * blackbox constructor EPackage::EPackage(); */ @Operation (kind=Kind.CONSTRUCTOR, contextual = true) public void EPackage(EPackage self) { self.setName(BLACKBOX_TEXT); } /* * blackbox constructor EPackage::EPackage(c : List(String)); */ @Operation (kind=Kind.CONSTRUCTOR, contextual = true) public void EPackage(EPackage self, MutableList<String> c) { c.add(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); } /* * blackbox constructor EModelElement::EModelElement(); */ @Operation (kind=Kind.CONSTRUCTOR, contextual = true) public void EModelElement(EModelElement self) { EAnnotation annot = EcoreFactory.eINSTANCE.createEAnnotation(); annot.setSource(BLACKBOX_TEXT); self.getEAnnotations().add(annot); } /* * blackbox helper EPackage::contextualHelper(); */ @Operation (kind=Kind.HELPER, contextual = true) public void contextualHelper(EPackage self) { self.setName(BLACKBOX_TEXT); } /* * blackbox helper nonContextualHelper(); */ @Operation (kind=Kind.HELPER) public void nonContextualHelper() { } /* * blackbox helper EPackage::contextualHelper(c : List(String)) : Set(String); */ @Operation (kind=Kind.HELPER, contextual = true) public Set<String> contextualHelper(EPackage self, MutableList<String> c) { self.setName(BLACKBOX_TEXT); Set<String> set = new HashSet<String>(c); return set; } /* * blackbox helper nonContextualHelper(c : List(String)) : Set(String); */ @Operation (kind=Kind.HELPER) public Set<String> nonContextualHelper(MutableList<String> c) { Set<String> set = new HashSet<String>(c); return set; } /* * blackbox helper EPackage::contextualHelperWithExecContext(); */ @Operation (kind=Kind.HELPER, contextual = true, withExecutionContext = true) public void contextualHelperWithExecContext(IContext context, EPackage self) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); } /* * blackbox helper nonContextualHelperWithExecContext(); */ @Operation (kind=Kind.HELPER, withExecutionContext = true) public void nonContextualHelperWithExecContext(IContext context) { context.getLog().log(BLACKBOX_TEXT); } /* * blackbox helper EPackage::contextualHelperWithExecContext(c : List(String)) : Set(String); */ @Operation (kind=Kind.HELPER, contextual = true, withExecutionContext = true) public Set<String> contextualHelperWithExecContext(IContext context, EPackage self, MutableList<String> c) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); Set<String> set = new HashSet<String>(c); return set; } /* * blackbox helper nonContextualHelperWithExecContext(c : List(String)) : Set(String); */ @Operation (kind=Kind.HELPER, withExecutionContext = true) public Set<String> nonContextualHelperWithExecContext(IContext context, MutableList<String> c) { context.getLog().log(BLACKBOX_TEXT); Set<String> set = new HashSet<String>(c); return set; } /* * blackbox query EClass::contextualQuery(); */ @Operation (kind=Kind.QUERY, contextual = true) public void contextualQuery(EClass self) { self.setName(BLACKBOX_TEXT); } /* * blackbox query nonContextualQuery(); */ @Operation (kind=Kind.QUERY) public void nonContextualQuery() { } /* * blackbox query EClass::contextualQuery(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.QUERY, contextual = true) public List<String> contextualQuery(EClass self, Dictionary<String, Integer> c) { self.setName(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox query nonContextualQuery(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.QUERY) public List<String> nonContextualQuery(Dictionary<String, Integer> c) { List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox query EClass::contextualQueryWithExecContext(); */ @Operation (kind=Kind.QUERY, contextual = true, withExecutionContext = true) public void contextualQueryWithExecContext(IContext context, EClass self) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); } /* * blackbox query nonContextualQueryWithExecContext(); */ @Operation (kind=Kind.QUERY, withExecutionContext = true) public void nonContextualQueryWithExecContext(IContext context) { context.getLog().log(BLACKBOX_TEXT); } /* * blackbox query EClass::contextualQueryWithExecContext(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.QUERY, contextual = true, withExecutionContext = true) public List<String> contextualQueryWithExecContext(IContext context, EClass self, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox query nonContextualQueryWithExecContext(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.QUERY, withExecutionContext = true) public List<String> nonContextualQueryWithExecContext(IContext context, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox helper EClass::contextualOperation(); */ @Operation (kind=Kind.OPERATION, contextual = true) public void contextualOperation(EClass self) { self.setName(BLACKBOX_TEXT); } /* * blackbox helper nonContextualOperation(); */ @Operation (kind=Kind.OPERATION) public void nonContextualOperation() { } /* * blackbox helper EClass::contextualOperation(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.OPERATION, contextual = true) public List<String> contextualOperation(EClass self, Dictionary<String, Integer> c) { self.setName(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox helper nonContextualOperation(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.OPERATION) public List<String> nonContextualOperation(Dictionary<String, Integer> c) { List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox helper EClass::contextualOperationWithExecContext(); */ @Operation (kind=Kind.OPERATION, contextual = true, withExecutionContext = true) public void contextualOperationWithExecContext(IContext context, EClass self) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); } /* * blackbox helper nonContextualOperationWithExecContext(); */ @Operation (kind=Kind.OPERATION, withExecutionContext = true) public void nonContextualOperationWithExecContext(IContext context) { context.getLog().log(BLACKBOX_TEXT); } /* * blackbox helper EClass::contextualOperationWithExecContext(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.OPERATION, contextual = true, withExecutionContext = true) public List<String> contextualOperationWithExecContext(IContext context, EClass self, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); self.setName(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox helper nonContextualOperationWithExecContext(c : Dict(String, Integer)) : Sequence(String); */ @Operation (kind=Kind.OPERATION, withExecutionContext = true) public List<String> nonContextualOperationWithExecContext(IContext context, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); List<String> list = new ArrayList<String>(c.keys()); return list; } /* * blackbox mapping EClassifier::contextualMapping() : EClassifier; */ @Operation (kind=Kind.MAPPING, contextual = true) public EClassifier contextualMapping(EClassifier self) { EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(self.getName()); return cls; } /* * blackbox mapping nonContextualMapping() : EClassifier; */ @Operation (kind=Kind.MAPPING) public EClassifier nonContextualMapping() { EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(BLACKBOX_TEXT); return cls; } /* * blackbox mapping EClassifier::contextualMapping(r : Real, c : Collection(Real), e : EModelElement) : Sequence(EClassifier); */ @Operation (kind=Kind.MAPPING, contextual = true) public List<EClassifier> contextualMapping(EClassifier self, Double f, Collection<Double> c, EModelElement e) { EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(self.getName() + c.size()); if (e instanceof ENamedElement) { ((ENamedElement) e).setName(((ENamedElement) e).getName() + f.intValue()); } return new ArrayList<EClassifier>(Arrays.asList(cls)); } /* * blackbox mapping nonContextualMapping(r : Real, c : Collection(Real), e : EModelElement) : Sequence(EClassifier); */ @Operation (kind=Kind.MAPPING) public List<EClassifier> nonContextualMapping(Double f, Collection<Double> c, EModelElement e) { EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(BLACKBOX_TEXT + c.size()); if (e instanceof ENamedElement) { ((ENamedElement) e).setName(((ENamedElement) e).getName() + f.intValue()); } return new ArrayList<EClassifier>(Arrays.asList(cls)); } /* * blackbox mapping EClassifier::contextualMappingWithExecContext() : EClassifier; */ @Operation (kind=Kind.MAPPING, contextual = true, withExecutionContext = true) public EClassifier contextualMappingWithExecContext(IContext context, EClassifier self) { context.getLog().log(BLACKBOX_TEXT); EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(self.getName()); return cls; } /* * blackbox mapping nonContextualMappingWithExecContext() : EClassifier; */ @Operation (kind=Kind.MAPPING, withExecutionContext = true) public EClassifier nonContextualMappingWithExecContext(IContext context) { context.getLog().log(BLACKBOX_TEXT); EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(BLACKBOX_TEXT); return cls; } /* * blackbox mapping EClassifier::contextualMappingWithExecContext(c : Dict(String, Integer)) : Sequence(EClassifier); */ @Operation (kind=Kind.MAPPING, contextual = true, withExecutionContext = true) public List<EClassifier> contextualMappingWithExecContext(IContext context, EClassifier self, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(self.getName() + c.size()); return new ArrayList<EClassifier>(Arrays.asList(cls)); } /* * blackbox mapping nonContextualMappingWithExecContext(c : Dict(String, Integer)) : Sequence(EClassifier); */ @Operation (kind=Kind.MAPPING, withExecutionContext = true) public List<EClassifier> nonContextualMappingWithExecContext(IContext context, Dictionary<String, Integer> c) { context.getLog().log(BLACKBOX_TEXT); EClass cls = EcoreFactory.eINSTANCE.createEClass(); cls.setName(BLACKBOX_TEXT + c.size()); return new ArrayList<EClassifier>(Arrays.asList(cls)); } // Query stubs that are equal for QVT->Java type mappings // @Operation (kind=Kind.QUERY) public int ambiguousQuery(ArrayList<String> c) { return c.size(); } @Operation (kind=Kind.QUERY) public int ambiguousQuery(LinkedList<String> c) { return c.size(); } }