blob: b411d72ec80b4ead5a8088fa7a878471b57723dc [file] [log] [blame]
[comment encoding = UTF-8 /]
[comment
/*******************************************************************************
* Copyright (c) 2014 Jad El-khoury.
*
* 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:
*
* Jad El-khoury - initial implementation of code generator (https://bugs.eclipse.org/bugs/show_bug.cgi?id=422448)
*
*******************************************************************************/
/]
[module serviceServices('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::serviceProviderServices/]
[query public containingAdaptorInterface(aService: Service) : AdaptorInterface =
aService.eContainer(AdaptorInterface).oclAsType(AdaptorInterface)
/]
[query public containingAdaptorInterface (aQueryCapability: QueryCapability) : AdaptorInterface =
aQueryCapability.eContainer(AdaptorInterface).oclAsType(AdaptorInterface)
/]
[query public containingAdaptorInterface (aDialog: Dialog) : AdaptorInterface =
aDialog.eContainer(AdaptorInterface).oclAsType(AdaptorInterface)
/]
[query public containingAdaptorInterface (aCreationFactory: CreationFactory) : AdaptorInterface =
aCreationFactory.eContainer(AdaptorInterface).oclAsType(AdaptorInterface)
/]
[query public containingAdaptorInterface (aBasicCapability: BasicCapability) : AdaptorInterface =
aBasicCapability.eContainer(AdaptorInterface).oclAsType(AdaptorInterface)
/]
[query public containingServiceProvider(aService: Service) : ServiceProvider =
aService.eContainer(ServiceProvider).oclAsType(ServiceProvider)
/]
[query public javaClassPackageName(aService: Service) : String =
javaClassBaseNamespace(containingAdaptorInterface(aService)).concat('.services')
/]
[query public javaClassName(aService: Service) : String =
(concatenate(servicedResources(aService)->sortedBy(name).javaName(true)->sep('', 'And', '').oclAsType(String))).toUpperFirst()
.concat('Service')
/]
[query public javaClassFullName(aService: Service) : String =
javaClassPackageName(aService).concat('.').concat(javaClassName(aService))
/]
[query public javaClassFullFileName(aService: Service) : String =
javaFilesBasePath(containingAdaptorInterface(aService)).concatenatePaths(javaClassPackageName(aService).substituteAll('.', '/')).concat('/').concat(javaClassName(aService)).concat('.java')
/]
[comment default to true if the property is not explicitly defined /]
[query public serviceNamespaceRelativeToServiceProvider (aService: Service) : Boolean =
(if (not aService.serviceNamespace.oclIsUndefined()) then
(if (aService.serviceNamespace = ResourceServiceNamespace::relativeToServiceProvider) then
true
else
false
endif)
else
true
endif)
/]
[query public serviceBaseURI (aService: Service) : String =
(if (serviceNamespaceRelativeToServiceProvider(aService)) then
aService.containingServiceProvider().instanceURI().concat('/')
else
''
endif)
.concat(
(if (containingServiceProvider(aService).services->size() = 1) then
''
else
'service'.concat(containingServiceProvider(aService).services->indexOf(aService).toString()).concat('/')
endif)
)
.concat(
(if (servicedResources(aService)->size() = 1) then
javaName(servicedResources(aService)->any(true), false).concat('s')
else
'resources'
endif)
)
/]
[comment QueryCapability /]
[query public URISegment (aQueryCapability: QueryCapability) : String =
if (aQueryCapability.queryBaseURI.oclIsUndefined())._or (aQueryCapability.queryBaseURI.equalsIgnoreCase('')) then
''
else
aQueryCapability.queryBaseURI
endif
/]
[query public URI (aQueryCapability: QueryCapability) : String =
JAXRSConcatURISegments(aQueryCapability.eContainer(Service).serviceBaseURI(), aQueryCapability.URISegment())
/]
[query public queryCompositeID(aQueryCapability: QueryCapability) : Sequence(String) =
JAXRSPathParameters(aQueryCapability.URI())
/]
[query public queryMethodName(aQueryCapability: QueryCapability, forRDF : Boolean) : String =
concatenate(aQueryCapability.resourceTypes.javaName(true)->sep('query', 'sAnd', 's').oclAsType(String))
.concat((if forRDF then '' else 'AsHtml' endif))
/]
[query public queryMethodResourceType(aQueryCapability: QueryCapability) : String =
if (aQueryCapability.resourceTypes->size() = 1) then
javaClassName(aQueryCapability.resourceTypes->first())
else
'AbstractResource'
endif
/]
[query public queryMethodReturnType(aQueryCapability: QueryCapability, forRDF : Boolean) : String =
if forRDF then
queryMethodResourceType(aQueryCapability).concat('[]')
else
'Response'
endif
/]
[query public queryMethodSignature(aQueryCapability: QueryCapability, forJAXRSMethod : Boolean) : String =
methodSignature(queryCompositeID(aQueryCapability), forJAXRSMethod)
/]
[query public queryMethodParameterList(aQueryCapability: QueryCapability) : String =
methodParameterList(JAXRSPathParameters(aQueryCapability.URI()))
/]
[comment CreationFactory /]
[query public URISegment (aCreationFactory: CreationFactory) : String =
if (aCreationFactory.creationURI.oclIsUndefined())._or (aCreationFactory.creationURI.equalsIgnoreCase('')) then
'create'
else
aCreationFactory.creationURI
endif
/]
[query public URI (aCreationFactory: CreationFactory) : String =
JAXRSConcatURISegments(aCreationFactory.eContainer(Service).serviceBaseURI(), aCreationFactory.URISegment())
/]
[query public creationCompositeID(aCreationFactory: CreationFactory) : Sequence(String) =
JAXRSPathParameters(aCreationFactory.URI())
/]
[query public creationMethodName(aCreationFactory: CreationFactory) : String =
concatenate(aCreationFactory.resourceTypes.javaName(true)->sep('create', 'And', '').oclAsType(String))
.concat('')
/]
[query public creationMethodResourceType(aCreationFactory: CreationFactory) : String =
if (aCreationFactory.resourceTypes->size() = 1) then
javaClassName(aCreationFactory.resourceTypes->first())
else
'AbstractResource'
endif
/]
[query public creationMethodReturnType(aCreationFactory: CreationFactory) : String =
'Response'
/]
[query public creationMethodSignature(aCreationFactory: CreationFactory, forJAXRSMethod : Boolean) : String =
methodSignature(creationCompositeID(aCreationFactory), forJAXRSMethod)
/]
[query public creationMethodParameterList(aCreationFactory: CreationFactory) : String =
methodParameterList(JAXRSPathParameters(aCreationFactory.URI()))
/]
[query public getResourceETagMethodName(resources : Set(Resource)) : String =
concatenate(resources.javaName(true)->sep('getETagFrom', 'And', '').oclAsType(String))
.concat('')
/]
[query public getResourceETagMethodName(aResource: Resource) : String =
getResourceETagMethodName(Set{aResource})
/]
[comment Dialog /]
[query public URISegment (aDialog: Dialog, selectionDialog : Boolean) : String =
if (aDialog.dialogURI.oclIsUndefined())._or (aDialog.dialogURI.equalsIgnoreCase('')) then
(if selectionDialog then 'selector' else 'creator' endif)
else
aDialog.dialogURI
endif
/]
[query public URI (aDialog: Dialog, selectionDialog : Boolean) : String =
JAXRSConcatURISegments(aDialog.eContainer(Service).serviceBaseURI(), aDialog.URISegment(selectionDialog))
/]
[query public dialogCompositeID(aDialog: Dialog, selectionDialog : Boolean) : Sequence(String) =
JAXRSPathParameters(aDialog.URI(selectionDialog))
/]
[query public dialogMethodName(aDialog: Dialog, selectionDialog : Boolean) : String =
concatenate(aDialog.resourceTypes.javaName(true)->sep('', 'And', '').oclAsType(String))
.concat((if selectionDialog then 'Selector' else 'Creator' endif))
/]
[query public dialogMethodResourceType(aDialog: Dialog) : String =
if (aDialog.resourceTypes->size() = 1) then
javaClassName(aDialog.resourceTypes->first())
else
'AbstractResource'
endif
/]
[query public dialogMethodReturnType(aDialog: Dialog, selectionDialog : Boolean) : String =
'void'
/]
[query public dialogMethodSignature(aDialog: Dialog, selectionDialog : Boolean, forJAXRSMethod : Boolean) : String =
methodSignature(dialogCompositeID(aDialog, selectionDialog), forJAXRSMethod)
/]
[query public dialogMethodParameterList(aDialog: Dialog, selectionDialog : Boolean) : String =
methodParameterList(JAXRSPathParameters(aDialog.URI(selectionDialog)))
/]
[query public creationMethodName(aCreationDialog: Dialog) : String =
concatenate(aCreationDialog.resourceTypes.javaName(true)->sep('create', 'And', '').oclAsType(String))
.concat('')
/]
[query public creationMethodResourceType(aCreationDialog: Dialog) : String =
if (aCreationDialog.resourceTypes->size() = 1) then
javaClassName(aCreationDialog.resourceTypes->first())
else
'AbstractResource'
endif
/]
[query public creationMethodReturnType(aCreationDialog: Dialog) : String =
'void'
/]
[comment BasicCapability /]
[query public instanceURISegment (aResource: Resource, aBasicCapability: BasicCapability) : String =
(if (servicedResources(aBasicCapability.eContainer(Service))->size() = 1) then
''
else
javaName(aResource, false).concat('s/')
endif)
.concat(
(if (not aBasicCapability.instanceID.oclIsUndefined())._and(not aBasicCapability.instanceID.equalsIgnoreCase('')) then
aBasicCapability.instanceID
else
'{'.concat(javaName(aResource, false)).concat('Id}')
endif)
)
/]
[query public instanceURI (aResource: Resource, aBasicCapability: BasicCapability) : String =
JAXRSConcatURISegments(aBasicCapability.eContainer(Service).serviceBaseURI(), aResource.instanceURISegment(aBasicCapability))
/]
[query public instanceCompositeID (aResource: Resource, aBasicCapability: BasicCapability) : Sequence(String) =
JAXRSPathParameters(aResource.instanceURI(aBasicCapability))
/]
[query public getResourceMethodName(aBasicCapability: BasicCapability, aResource: Resource, forRDF : Boolean) : String =
'get'.concat(javaName(aResource, true))
.concat((if forRDF then '' else 'AsHtml' endif))
/]
[query public deleteResourceMethodName(aBasicCapability: BasicCapability, aResource: Resource) : String =
'delete'.concat(javaName(aResource, true))
/]
[query public updateResourceMethodName(aBasicCapability: BasicCapability, aResource: Resource) : String =
'update'.concat(javaName(aResource, true))
/]
[query public getResourceMethodResourceType(aBasicCapability: BasicCapability, aResource: Resource) : String =
javaClassName(aResource)
/]
[query public getResourceMethodReturnType(aBasicCapability: BasicCapability, aResource: Resource, forRDF : Boolean) : String =
if forRDF then
aBasicCapability.getResourceMethodResourceType(aResource)
else
'Response'
endif
/]
[query public updateResourceMethodResourceType(aBasicCapability: BasicCapability, aResource: Resource) : String =
javaClassName(aResource)
/]
[query public updateResourceMethodReturnType(aBasicCapability: BasicCapability, aResource: Resource) : String =
'Response'
/]
[query public deleteResourceMethodResourceType(aBasicCapability: BasicCapability, aResource: Resource) : String =
javaClassName(aResource)
/]
[query public deleteResourceMethodReturnType(aBasicCapability: BasicCapability, aResource: Resource) : String =
'Response'
/]
[query public instanceMethodSignature(aResource: Resource, aBasicCapability: BasicCapability, forJAXRSMethod : Boolean) : String =
methodSignature(instanceCompositeID(aResource, aBasicCapability), forJAXRSMethod)
/]
[query public instanceMethodParameterList(aResource: Resource, aBasicCapability: BasicCapability) : String =
methodParameterList(instanceCompositeID(aResource, aBasicCapability))
/]