| [comment encoding = UTF-8 /] |
| [comment |
| /******************************************************************************* |
| * Copyright (c) 2011, 2012 IBM 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 |
| * and Eclipse Distribution License v. 1.0 which accompanies this distribution. |
| * |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Contributors: |
| * |
| * Sam Padgett - initial API and implementation |
| * Michael Fiedler - adapted for OSLC4J |
| * Jad El-khoury - initial implementation of code generator (https://bugs.eclipse.org/bugs/show_bug.cgi?id=422448) |
| * Matthieu Helleboid - Support for multiple Service Providers. |
| * Anass Radouani - Support for multiple Service Providers. |
| *******************************************************************************/ |
| /] |
| |
| [module generateAdaptorManager('http://org.eclipse.lyo/oslc4j/adaptorInterface')] |
| |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::services/] |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::resourceServices/] |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::serviceServices/] |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::adaptorInterfaceServices/] |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::serviceProviderServices/] |
| [import org::eclipse::lyo::oslc4j::codegenerator::services::serviceProviderCatalogServices/] |
| |
| [query public backendCode(backendCodeTemplate : String, resourceClassName : String, resourceInstanceName : String, compositeID : Sequence(String)) : String = |
| (if (not backendCodeTemplate.oclIsUndefined()) then |
| backendCodeTemplate |
| .substituteAll('[ResourceClassName/]', resourceClassName) |
| .substituteAll('[ResourceInstanceName/]', resourceInstanceName) |
| .substituteAll('[Parameter1/]', (if (compositeID->size() >=1) then compositeID->at(1) else '' endif)) |
| .substituteAll('[Parameter2/]', (if (compositeID->size() >=2) then compositeID->at(2) else '' endif)) |
| .substituteAll('[Parameter3/]', (if (compositeID->size() >=3) then compositeID->at(3) else '' endif)) |
| .substituteAll('[Parameter4/]', (if (compositeID->size() >=4) then compositeID->at(4) else '' endif)) |
| .substituteAll('[Parameter5/]', (if (compositeID->size() >=5) then compositeID->at(5) else '' endif)) |
| else |
| '' |
| endif) |
| /] |
| |
| [query public backendCode(backendCodeTemplate : String) : String = |
| (if (not backendCodeTemplate.oclIsUndefined()) then |
| backendCodeTemplate |
| else |
| '' |
| endif) |
| /] |
| |
| [template public generateAdaptorManager(anAdaptorInterface : AdaptorInterface)] |
| [file (javaClassFullFileNameForAdaptorManager(anAdaptorInterface), false, 'UTF-8')] |
| // [protected ('Copyright')] |
| /******************************************************************************* |
| * Copyright (c) 2011, 2012 IBM 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 |
| * and Eclipse Distribution License v. 1.0 which accompanies this distribution. |
| * |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Contributors: |
| * |
| * Sam Padgett - initial API and implementation |
| * Michael Fiedler - adapted for OSLC4J |
| * Jad El-khoury - initial implementation of code generator (https://bugs.eclipse.org/bugs/show_bug.cgi?id=422448) |
| * Matthieu Helleboid - Support for multiple Service Providers. |
| * Anass Radouani - Support for multiple Service Providers. |
| * |
| * This file is generated by org.eclipse.lyo.oslc4j.codegenerator |
| *******************************************************************************/ |
| // [/protected] |
| |
| package [javaClassPackageNameForAdaptorManager(anAdaptorInterface) /]; |
| |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.ServletContextEvent; |
| import java.util.List; |
| |
| import org.eclipse.lyo.oslc4j.core.model.ServiceProvider; |
| import org.eclipse.lyo.oslc4j.core.model.AbstractResource; |
| [if (not anAdaptorInterface.serviceProviderCatalog.oclIsUndefined())] |
| import [javaClassFullNameForSingleton(anAdaptorInterface.serviceProviderCatalog) /]; |
| [/if] |
| [for (aServiceProvider: ServiceProvider | anAdaptorInterface.serviceProviders())] |
| import [javaClassFullName(aServiceProvider) /]; |
| [/for] |
| [for (aResource: Resource | relevantResources(anAdaptorInterface)->sortedBy(name))] |
| import [javaClassFullName(aResource, anAdaptorInterface, null) /]; |
| [/for] |
| |
| [backendCode(anAdaptorInterface.backendCodeTemplate_classImports)/] |
| // [protected ('imports')] |
| // [/protected] |
| |
| // [protected ('pre_class_code')] |
| // [/protected] |
| |
| public class [javaClassNameForAdaptorManager(anAdaptorInterface) /] { |
| |
| // [protected ('class_attributes')] |
| // [/protected] |
| |
| [backendCode(anAdaptorInterface.backendCodeTemplate_classMethods)/] |
| // [protected ('class_methods')] |
| // [/protected] |
| |
| public static void contextInitializeServletListener(final ServletContextEvent servletContextEvent) |
| { |
| [backendCode(anAdaptorInterface.backendCodeTemplate_servletListenerInitialize)/] |
| // [protected ('contextInitializeServletListener')] |
| // TODO Implement code to establish connection to data backbone etc ... |
| // [/protected] |
| } |
| |
| public static void contextDestroyServletListener(ServletContextEvent servletContextEvent) |
| { |
| [backendCode(anAdaptorInterface.backendCodeTemplate_servletListenerDestroy)/] |
| // [protected ('contextDestroyed')] |
| // TODO Implement code to shutdown connections to data backbone etc... |
| // [/protected] |
| } |
| |
| [for (aServiceProvider: ServiceProvider | anAdaptorInterface.serviceProviders())] |
| public static [aServiceProvider.javaClassName()/]['[' ']'/] get[aServiceProvider.javaClassName()/]s(HttpServletRequest httpServletRequest) |
| { |
| [aServiceProvider.javaClassName() /][ '[' ']' /] serviceProviderInfos = {}; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_getServiceProviders)/] |
| // [protected ('"'.concat(aServiceProvider.javaClassName()).concat('[] get'.concat(aServiceProvider.javaClassName()).concat('s(...)"')))] |
| // TODO Implement code to return the set of ServiceProviders |
| // [/protected] |
| return serviceProviderInfos; |
| } |
| [/for] |
| |
| [for (aService: Service | anAdaptorInterface.serviceProviders().services)] |
| [for (aQueryCapability: QueryCapability | aService.queryCapabilities)] |
| public static List<[queryMethodResourceType(aQueryCapability)/]> [queryMethodName(aQueryCapability, true)/](HttpServletRequest httpServletRequest[commaSeparate(queryMethodSignature(aQueryCapability, false), true, false)/], String where, int page, int limit) |
| { |
| List<[queryMethodResourceType(aQueryCapability)/]> resources = null; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_getResources, queryMethodResourceType(aQueryCapability), 'resources', queryCompositeID(aQueryCapability))/] |
| // [protected (queryMethodName(aQueryCapability, true))] |
| // TODO Implement code to return a set of resources |
| // [/protected] |
| return resources; |
| } |
| [/for] |
| [for (aSelectionDialog: Dialog | aService.selectionDialogs)] |
| public static List<[dialogMethodResourceType(aSelectionDialog)/]> [dialogMethodName(aSelectionDialog, true)/](HttpServletRequest httpServletRequest[commaSeparate(dialogMethodSignature(aSelectionDialog, true, false), true, false)/], String terms) |
| { |
| List<[dialogMethodResourceType(aSelectionDialog)/]> resources = null; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_searchResources, dialogMethodResourceType(aSelectionDialog), 'resources', dialogCompositeID(aSelectionDialog, true))/] |
| // [protected (dialogMethodName(aSelectionDialog, true))] |
| // TODO Implement code to return a set of resources, based on search criteria |
| // [/protected] |
| return resources; |
| } |
| [/for] |
| [for (aCreationFactory: CreationFactory | aService.creationFactories)] |
| public static [creationMethodResourceType(aCreationFactory)/] [creationMethodName(aCreationFactory)/](HttpServletRequest httpServletRequest, final [creationMethodResourceType(aCreationFactory)/] aResource[commaSeparate(creationMethodSignature(aCreationFactory, false), true, false)/]) |
| { |
| [creationMethodResourceType(aCreationFactory)/] newResource = null; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_createResource, creationMethodResourceType(aCreationFactory), 'newResource', creationCompositeID(aCreationFactory))/] |
| // [protected (creationMethodName(aCreationFactory))] |
| // TODO Implement code to create a resource |
| // [/protected] |
| return newResource; |
| } |
| [/for] |
| |
| [for (aCreationDialog: Dialog | aService.creationDialogs)] |
| [if (aService.creationFactories->select(f: CreationFactory | f.resourceTypes = aCreationDialog.resourceTypes)->isEmpty())] |
| public static [creationMethodResourceType(aCreationDialog)/] [creationMethodName(aCreationDialog)/](HttpServletRequest httpServletRequest, final [creationMethodResourceType(aCreationDialog)/] aResource[commaSeparate(dialogMethodSignature(aCreationDialog, false, false), true, false)/]) |
| { |
| [creationMethodResourceType(aCreationDialog)/] newResource = null; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_createResource, creationMethodResourceType(aCreationDialog), 'newResource', dialogCompositeID(aCreationDialog, false))/] |
| // [protected (creationMethodName(aCreationDialog))] |
| // TODO Implement code to create a resource |
| // [/protected] |
| return newResource; |
| } |
| [/if] |
| [/for] |
| |
| [for (aBasicCapability: BasicCapability | aService.basicCapabilities)] |
| [if (aBasicCapability.read)] |
| [for (aResource: Resource | aBasicCapability.resourceTypes)] |
| public static [getResourceMethodResourceType(aBasicCapability, aResource)/] [getResourceMethodName(aBasicCapability, aResource, true)/](HttpServletRequest httpServletRequest[commaSeparate(instanceMethodSignature(aResource, aBasicCapability, false), true, false)/]) |
| { |
| [getResourceMethodResourceType(aBasicCapability, aResource)/] aResource = null; |
| [backendCode(anAdaptorInterface.backendCodeTemplate_getResource, getResourceMethodResourceType(aBasicCapability, aResource), 'aResource', instanceCompositeID(aResource, aBasicCapability))/] |
| // [protected (getResourceMethodName(aBasicCapability, aResource, true))] |
| // TODO Implement code to return a resource |
| // [/protected] |
| return aResource; |
| } |
| [/for] |
| [/if] |
| |
| [if (aBasicCapability.delete)] |
| [for (aResource: Resource | aBasicCapability.resourceTypes)] |
| public static Boolean [deleteResourceMethodName(aBasicCapability, aResource)/](HttpServletRequest httpServletRequest[commaSeparate(instanceMethodSignature(aResource, aBasicCapability, false), true, false)/]) |
| { |
| Boolean deleted = false; |
| // [protected (deleteResourceMethodName(aBasicCapability, aResource))] |
| // TODO Implement code to delete a resource |
| // [/protected] |
| return deleted; |
| } |
| [/for] |
| [/if] |
| |
| [if (aBasicCapability.update)] |
| [for (aResource: Resource | aBasicCapability.resourceTypes)] |
| public static [updateResourceMethodResourceType(aBasicCapability, aResource)/] [updateResourceMethodName(aBasicCapability, aResource)/](HttpServletRequest httpServletRequest, final [updateResourceMethodResourceType(aBasicCapability, aResource)/] aResource[commaSeparate(instanceMethodSignature(aResource, aBasicCapability, false), true, false)/]) { |
| [updateResourceMethodResourceType(aBasicCapability, aResource)/] updatedResource = null; |
| // [protected (updateResourceMethodName(aBasicCapability, aResource))] |
| // TODO Implement code to update and return a resource |
| // [/protected] |
| return updatedResource; |
| } |
| [/for] |
| [/if] |
| [/for] |
| |
| [/for] |
| |
| [for (aResource: Resource | servicedResources(anAdaptorInterface)->sortedBy(name))] |
| public static String [getResourceETagMethodName(aResource)/](final [javaClassName(aResource)/] aResource) |
| { |
| String eTag = null; |
| // [protected (getResourceETagMethodName(aResource))] |
| // TODO Implement code to return an ETag for a particular resource |
| // [/protected] |
| return eTag; |
| } |
| [/for] |
| |
| [comment creationFactories that need to handle more than 1 resource need a special ETag method. See the method calls from the ServiceProvider Services classes./] |
| [for (aService: Service | anAdaptorInterface.serviceProviders().services)] |
| [for (aCreationFactory: CreationFactory | aService.creationFactories)] |
| [if (aCreationFactory.resourceTypes->size() > 1 )] |
| public static String [getResourceETagMethodName(aCreationFactory.resourceTypes)/](final [creationMethodResourceType(aCreationFactory)/] aResource) |
| { |
| String eTag = null; |
| // [protected (getResourceETagMethodName(aCreationFactory.resourceTypes))] |
| // TODO Implement code to return an ETag for a particular resource |
| // [/protected] |
| return eTag; |
| } |
| [/if] |
| [/for] |
| [/for] |
| } |
| [/file] |
| [/template] |