You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2013/12/18 10:12:35 UTC
[37/37] git commit: [OLINGO-82] Renamed the project folder name to
odata2-jpa-processor
[OLINGO-82] Renamed the project folder name to odata2-jpa-processor
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/commit/1b479e6c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/tree/1b479e6c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/diff/1b479e6c
Branch: refs/heads/master
Commit: 1b479e6c0c5b48cf843654a6668abb0827b95a10
Parents: 33c4701
Author: Chandan V A <ch...@sap.com>
Authored: Wed Dec 18 14:36:55 2013 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Wed Dec 18 14:36:55 2013 +0530
----------------------------------------------------------------------
odata2-jpa-processor/jpa-api/.gitignore | 8 +
odata2-jpa-processor/jpa-api/pom.xml | 91 ++
.../processor/api/jpa/ODataJPAContext.java | 206 +++
.../processor/api/jpa/ODataJPAProcessor.java | 69 +
.../api/jpa/ODataJPAServiceFactory.java | 190 +++
.../processor/api/jpa/access/JPAEdmBuilder.java | 57 +
.../jpa/access/JPAEdmMappingModelAccess.java | 191 +++
.../processor/api/jpa/access/JPAFunction.java | 85 ++
.../processor/api/jpa/access/JPAJoinClause.java | 148 +++
.../api/jpa/access/JPAMethodContext.java | 130 ++
.../api/jpa/access/JPAMethodContextView.java | 46 +
.../processor/api/jpa/access/JPAProcessor.java | 260 ++++
.../processor/api/jpa/access/package-info.java | 26 +
.../jpa/exception/ODataJPAErrorCallback.java | 45 +
.../api/jpa/exception/ODataJPAException.java | 68 +
.../jpa/exception/ODataJPAMessageService.java | 49 +
.../jpa/exception/ODataJPAModelException.java | 92 ++
.../jpa/exception/ODataJPARuntimeException.java | 97 ++
.../api/jpa/exception/package-info.java | 31 +
.../api/jpa/factory/JPAAccessFactory.java | 69 +
.../api/jpa/factory/JPQLBuilderFactory.java | 77 ++
.../api/jpa/factory/ODataJPAAccessFactory.java | 82 ++
.../api/jpa/factory/ODataJPAFactory.java | 105 ++
.../processor/api/jpa/factory/package-info.java | 33 +
.../processor/api/jpa/jpql/JPQLContext.java | 204 +++
.../processor/api/jpa/jpql/JPQLContextType.java | 73 +
.../processor/api/jpa/jpql/JPQLContextView.java | 53 +
.../api/jpa/jpql/JPQLJoinContextView.java | 44 +
.../jpql/JPQLJoinSelectSingleContextView.java | 45 +
.../api/jpa/jpql/JPQLSelectContextView.java | 62 +
.../jpa/jpql/JPQLSelectSingleContextView.java | 53 +
.../processor/api/jpa/jpql/JPQLStatement.java | 148 +++
.../processor/api/jpa/jpql/package-info.java | 27 +
.../api/jpa/model/JPAEdmAssociationEndView.java | 91 ++
.../api/jpa/model/JPAEdmAssociationSetView.java | 69 +
.../api/jpa/model/JPAEdmAssociationView.java | 128 ++
.../processor/api/jpa/model/JPAEdmBaseView.java | 101 ++
.../jpa/model/JPAEdmComplexPropertyView.java | 45 +
.../api/jpa/model/JPAEdmComplexTypeView.java | 116 ++
.../jpa/model/JPAEdmEntityContainerView.java | 72 +
.../api/jpa/model/JPAEdmEntitySetView.java | 64 +
.../api/jpa/model/JPAEdmEntityTypeView.java | 76 ++
.../api/jpa/model/JPAEdmExtension.java | 50 +
.../api/jpa/model/JPAEdmFunctionImportView.java | 51 +
.../processor/api/jpa/model/JPAEdmKeyView.java | 51 +
.../processor/api/jpa/model/JPAEdmMapping.java | 63 +
.../api/jpa/model/JPAEdmModelView.java | 43 +
.../jpa/model/JPAEdmNavigationPropertyView.java | 72 +
.../api/jpa/model/JPAEdmPropertyView.java | 104 ++
.../JPAEdmReferentialConstraintRoleView.java | 101 ++
.../model/JPAEdmReferentialConstraintView.java | 69 +
.../api/jpa/model/JPAEdmSchemaView.java | 116 ++
.../jpa/model/mapping/JPAAttributeMapType.java | 202 +++
.../jpa/model/mapping/JPAEdmMappingModel.java | 79 ++
.../mapping/JPAEdmMappingModelFactory.java | 85 ++
.../model/mapping/JPAEmbeddableTypeMapType.java | 161 +++
.../mapping/JPAEmbeddableTypesMapType.java | 89 ++
.../jpa/model/mapping/JPAEntityTypeMapType.java | 213 +++
.../model/mapping/JPAEntityTypesMapType.java | 89 ++
.../mapping/JPAPersistenceUnitMapType.java | 157 +++
.../model/mapping/JPARelationshipMapType.java | 175 +++
.../api/jpa/model/mapping/package-info.java | 28 +
.../processor/api/jpa/model/package-info.java | 27 +
.../odata2/processor/api/jpa/package-info.java | 33 +
.../src/main/resources/JPAEDMMappingModel.xsd | 165 +++
odata2-jpa-processor/jpa-core/.gitignore | 8 +
odata2-jpa-processor/jpa-core/pom.xml | 146 ++
.../processor/core/jpa/ODataEntityParser.java | 163 +++
.../core/jpa/ODataExpressionParser.java | 381 ++++++
.../processor/core/jpa/ODataJPAContextImpl.java | 146 ++
.../core/jpa/ODataJPAProcessorDefault.java | 194 +++
.../core/jpa/ODataJPAResponseBuilder.java | 629 +++++++++
.../core/jpa/access/data/JPAEntity.java | 355 +++++
.../core/jpa/access/data/JPAEntityParser.java | 453 +++++++
.../core/jpa/access/data/JPAExpandCallBack.java | 180 +++
.../jpa/access/data/JPAFunctionContext.java | 170 +++
.../processor/core/jpa/access/data/JPALink.java | 225 ++++
.../core/jpa/access/data/JPAProcessorImpl.java | 491 +++++++
.../core/jpa/access/model/EdmTypeConvertor.java | 69 +
.../access/model/JPAEdmMappingModelService.java | 247 ++++
.../jpa/access/model/JPAEdmNameBuilder.java | 499 +++++++
.../core/jpa/access/model/JPATypeConvertor.java | 119 ++
.../core/jpa/edm/ODataJPAEdmProvider.java | 295 +++++
.../ODataJPAMessageServiceDefault.java | 122 ++
.../core/jpa/factory/ODataJPAFactoryImpl.java | 237 ++++
.../core/jpa/jpql/JPQLJoinSelectContext.java | 171 +++
.../jpa/jpql/JPQLJoinSelectSingleContext.java | 158 +++
.../JPQLJoinSelectSingleStatementBuilder.java | 106 ++
.../core/jpa/jpql/JPQLJoinStatementBuilder.java | 145 ++
.../core/jpa/jpql/JPQLSelectContext.java | 159 +++
.../core/jpa/jpql/JPQLSelectSingleContext.java | 109 ++
.../jpql/JPQLSelectSingleStatementBuilder.java | 66 +
.../jpa/jpql/JPQLSelectStatementBuilder.java | 98 ++
.../core/jpa/model/JPAEdmAssociation.java | 237 ++++
.../core/jpa/model/JPAEdmAssociationEnd.java | 183 +++
.../core/jpa/model/JPAEdmAssociationSet.java | 131 ++
.../core/jpa/model/JPAEdmBaseViewImpl.java | 101 ++
.../core/jpa/model/JPAEdmComplexType.java | 254 ++++
.../core/jpa/model/JPAEdmEntityContainer.java | 154 +++
.../core/jpa/model/JPAEdmEntitySet.java | 112 ++
.../core/jpa/model/JPAEdmEntityType.java | 230 ++++
.../processor/core/jpa/model/JPAEdmFacets.java | 94 ++
.../core/jpa/model/JPAEdmFunctionImport.java | 331 +++++
.../processor/core/jpa/model/JPAEdmKey.java | 129 ++
.../core/jpa/model/JPAEdmMappingImpl.java | 51 +
.../processor/core/jpa/model/JPAEdmModel.java | 65 +
.../jpa/model/JPAEdmNavigationProperty.java | 98 ++
.../core/jpa/model/JPAEdmProperty.java | 378 ++++++
.../jpa/model/JPAEdmReferentialConstraint.java | 147 ++
.../model/JPAEdmReferentialConstraintRole.java | 258 ++++
.../processor/core/jpa/model/JPAEdmSchema.java | 216 +++
.../jpa/model/_JPAEdmFunctionImportBuilder.java | 237 ++++
.../main/resources/jpaprocessor_msg.properties | 61 +
.../core/jpa/ODataExpressionParserTest.java | 515 +++++++
.../core/jpa/ODataJPAContextImplTest.java | 98 ++
.../core/jpa/ODataJPAProcessorDefaultTest.java | 554 ++++++++
.../core/jpa/ODataJPAResponseBuilderTest.java | 566 ++++++++
.../jpa/access/data/JPAEntityParserTest.java | 599 +++++++++
.../JPAEntityParserTestForStaticMethods.java | 251 ++++
.../core/jpa/access/data/JPAEntityTest.java | 187 +++
.../jpa/access/data/JPAExpandCallBackTest.java | 160 +++
.../jpa/access/data/JPAFunctionContextTest.java | 143 ++
.../jpa/access/data/JPAProcessorImplTest.java | 447 +++++++
.../model/JPAEdmMappingModelServiceTest.java | 213 +++
.../jpa/access/model/JPAEdmNameBuilderTest.java | 151 +++
.../jpa/access/model/JPATypeConvertorTest.java | 94 ++
.../core/jpa/common/ODataJPATestConstants.java | 27 +
.../edm/ODataJPAEdmProviderNegativeTest.java | 191 +++
.../core/jpa/edm/ODataJPAEdmProviderTest.java | 385 ++++++
.../core/jpa/jpql/JPQLBuilderFactoryTest.java | 377 ++++++
.../core/jpa/jpql/JPQLJoinContextTest.java | 198 +++
.../jpql/JPQLJoinSelectSingleContextTest.java | 215 +++
...PQLJoinSelectSingleStatementBuilderTest.java | 142 ++
.../jpa/jpql/JPQLJoinStatementBuilderTest.java | 124 ++
.../jpa/jpql/JPQLSelectContextImplTest.java | 385 ++++++
.../jpql/JPQLSelectSingleContextImplTest.java | 198 +++
.../JPQLSelectSingleStatementBuilderTest.java | 123 ++
.../jpql/JPQLSelectStatementBuilderTest.java | 135 ++
.../core/jpa/mock/ODataJPAContextMock.java | 57 +
.../core/jpa/mock/data/EdmMockUtil.java | 337 +++++
.../core/jpa/mock/data/EdmMockUtilV2.java | 324 +++++
.../core/jpa/mock/data/JPATypeMock.java | 205 +++
.../core/jpa/mock/data/ODataEntryMockUtil.java | 127 ++
.../core/jpa/mock/data/SalesOrderHeader.java | 63 +
.../core/jpa/mock/data/SalesOrderLineItem.java | 38 +
.../jpa/mock/data/SalesOrderLineItemKey.java | 52 +
.../core/jpa/mock/model/EdmSchemaMock.java | 213 +++
.../core/jpa/mock/model/JPAAttributeMock.java | 63 +
.../jpa/mock/model/JPACustomProcessorMock.java | 74 ++
.../core/jpa/mock/model/JPAEdmMockData.java | 72 +
.../core/jpa/mock/model/JPAEmbeddableMock.java | 184 +++
.../jpa/mock/model/JPAEmbeddableTypeMock.java | 184 +++
.../core/jpa/mock/model/JPAEntityTypeMock.java | 246 ++++
.../core/jpa/mock/model/JPAJavaMemberMock.java | 74 ++
.../core/jpa/mock/model/JPAManagedTypeMock.java | 184 +++
.../core/jpa/mock/model/JPAMetaModelMock.java | 60 +
.../jpa/mock/model/JPAPluralAttributeMock.java | 95 ++
.../mock/model/JPASingularAttributeMock.java | 94 ++
.../jpa/mock/model/_JPACustomProcessorMock.java | 77 ++
.../model/_JPACustomProcessorNegativeMock.java | 70 +
.../jpa/model/JPAEdmAssociationEndTest.java | 177 +++
.../jpa/model/JPAEdmAssociationSetTest.java | 184 +++
.../core/jpa/model/JPAEdmAssociationTest.java | 423 ++++++
.../core/jpa/model/JPAEdmBaseViewImplTest.java | 89 ++
.../core/jpa/model/JPAEdmComplexTypeTest.java | 268 ++++
.../jpa/model/JPAEdmEntityContainerTest.java | 234 ++++
.../core/jpa/model/JPAEdmEntitySetTest.java | 224 ++++
.../core/jpa/model/JPAEdmEntityTypeTest.java | 198 +++
.../jpa/model/JPAEdmFunctionImportTest.java | 566 ++++++++
.../processor/core/jpa/model/JPAEdmKeyTest.java | 176 +++
.../core/jpa/model/JPAEdmModelTest.java | 145 ++
.../jpa/model/JPAEdmNavigationPropertyTest.java | 218 +++
.../core/jpa/model/JPAEdmPropertyTest.java | 440 ++++++
.../JPAEdmReferentialConstraintRoleTest.java | 233 ++++
.../model/JPAEdmReferentialConstraintTest.java | 177 +++
.../core/jpa/model/JPAEdmSchemaTest.java | 103 ++
.../core/jpa/model/JPAEdmTestModelView.java | 396 ++++++
.../jpa/model/_JPAEdmFunctionImportTest.java | 570 ++++++++
.../SalesOrderProcessingMappingModels.xml | 62 +
odata2-jpa-processor/jpa-ref/.gitignore | 8 +
odata2-jpa-processor/jpa-ref/pom.xml | 109 ++
.../exception/InvalidPartyRoleException.java | 10 +
.../ref/factory/JPAEntityManagerFactory.java | 46 +
.../jpa/processor/ref/model/Activity.java | 59 +
.../jpa/processor/ref/model/ActivityParty.java | 46 +
.../odata2/jpa/processor/ref/model/Address.java | 83 ++
.../ref/model/AppointmentActivity.java | 44 +
.../jpa/processor/ref/model/EmailActivity.java | 46 +
.../jpa/processor/ref/model/Material.java | 116 ++
.../odata2/jpa/processor/ref/model/Note.java | 116 ++
.../jpa/processor/ref/model/PartyRole.java | 5 +
.../processor/ref/model/SalesOrderHeader.java | 236 ++++
.../jpa/processor/ref/model/SalesOrderItem.java | 133 ++
.../processor/ref/model/SalesOrderItemKey.java | 89 ++
.../odata2/jpa/processor/ref/model/Store.java | 92 ++
.../src/main/resources/META-INF/persistence.xml | 41 +
odata2-jpa-processor/jpa-web/.gitignore | 8 +
odata2-jpa-processor/jpa-web/pom.xml | 123 ++
.../extension/SalesOrderHeaderProcessor.java | 115 ++
.../SalesOrderProcessingExtension.java | 38 +
.../extension/_SalesOrderHeaderProcessor.java | 127 ++
.../jpa/processor/ref/util/DataGenerator.java | 158 +++
.../ref/web/JPAReferenceServiceFactory.java | 56 +
.../main/resources/DataDeleteSQLs.properties | 22 +
.../jpa-web/src/main/resources/META-INF/LICENSE | 1252 ++++++++++++++++++
.../src/main/resources/MaterialSQLs.properties | 30 +
.../src/main/resources/NoteSQLs.properties | 20 +
.../main/resources/SQLInsertConfig.properties | 22 +
.../resources/SalesOrderHeaderSQLs.properties | 30 +
.../resources/SalesOrderItemSQLs.properties | 30 +
.../src/main/resources/StoreSQLs.properties | 30 +
.../src/main/resources/serviceConfig.properties | 19 +
.../webapp/SalesOrderProcessingMappingModel.xml | 61 +
.../jpa-web/src/main/webapp/WEB-INF/web.xml | 47 +
.../jpa-web/src/main/webapp/index.jsp | 312 +++++
odata2-jpa-processor/pom.xml | 31 +
odata2-processor-jpa/jpa-api/.gitignore | 8 -
odata2-processor-jpa/jpa-api/pom.xml | 91 --
.../jpa-api/src/main/java/META-INF/MANIFEST.MF | 3 -
.../processor/api/jpa/ODataJPAContext.java | 206 ---
.../processor/api/jpa/ODataJPAProcessor.java | 69 -
.../api/jpa/ODataJPAServiceFactory.java | 190 ---
.../processor/api/jpa/access/JPAEdmBuilder.java | 57 -
.../jpa/access/JPAEdmMappingModelAccess.java | 191 ---
.../processor/api/jpa/access/JPAFunction.java | 85 --
.../processor/api/jpa/access/JPAJoinClause.java | 148 ---
.../api/jpa/access/JPAMethodContext.java | 130 --
.../api/jpa/access/JPAMethodContextView.java | 46 -
.../processor/api/jpa/access/JPAProcessor.java | 260 ----
.../processor/api/jpa/access/package-info.java | 26 -
.../jpa/exception/ODataJPAErrorCallback.java | 45 -
.../api/jpa/exception/ODataJPAException.java | 68 -
.../jpa/exception/ODataJPAMessageService.java | 49 -
.../jpa/exception/ODataJPAModelException.java | 92 --
.../jpa/exception/ODataJPARuntimeException.java | 97 --
.../api/jpa/exception/package-info.java | 31 -
.../api/jpa/factory/JPAAccessFactory.java | 69 -
.../api/jpa/factory/JPQLBuilderFactory.java | 77 --
.../api/jpa/factory/ODataJPAAccessFactory.java | 82 --
.../api/jpa/factory/ODataJPAFactory.java | 105 --
.../processor/api/jpa/factory/package-info.java | 33 -
.../processor/api/jpa/jpql/JPQLContext.java | 204 ---
.../processor/api/jpa/jpql/JPQLContextType.java | 73 -
.../processor/api/jpa/jpql/JPQLContextView.java | 53 -
.../api/jpa/jpql/JPQLJoinContextView.java | 44 -
.../jpql/JPQLJoinSelectSingleContextView.java | 45 -
.../api/jpa/jpql/JPQLSelectContextView.java | 62 -
.../jpa/jpql/JPQLSelectSingleContextView.java | 53 -
.../processor/api/jpa/jpql/JPQLStatement.java | 148 ---
.../processor/api/jpa/jpql/package-info.java | 27 -
.../api/jpa/model/JPAEdmAssociationEndView.java | 91 --
.../api/jpa/model/JPAEdmAssociationSetView.java | 69 -
.../api/jpa/model/JPAEdmAssociationView.java | 128 --
.../processor/api/jpa/model/JPAEdmBaseView.java | 101 --
.../jpa/model/JPAEdmComplexPropertyView.java | 45 -
.../api/jpa/model/JPAEdmComplexTypeView.java | 116 --
.../jpa/model/JPAEdmEntityContainerView.java | 72 -
.../api/jpa/model/JPAEdmEntitySetView.java | 64 -
.../api/jpa/model/JPAEdmEntityTypeView.java | 76 --
.../api/jpa/model/JPAEdmExtension.java | 50 -
.../api/jpa/model/JPAEdmFunctionImportView.java | 51 -
.../processor/api/jpa/model/JPAEdmKeyView.java | 51 -
.../processor/api/jpa/model/JPAEdmMapping.java | 63 -
.../api/jpa/model/JPAEdmModelView.java | 43 -
.../jpa/model/JPAEdmNavigationPropertyView.java | 72 -
.../api/jpa/model/JPAEdmPropertyView.java | 104 --
.../JPAEdmReferentialConstraintRoleView.java | 101 --
.../model/JPAEdmReferentialConstraintView.java | 69 -
.../api/jpa/model/JPAEdmSchemaView.java | 116 --
.../jpa/model/mapping/JPAAttributeMapType.java | 202 ---
.../jpa/model/mapping/JPAEdmMappingModel.java | 79 --
.../mapping/JPAEdmMappingModelFactory.java | 85 --
.../model/mapping/JPAEmbeddableTypeMapType.java | 161 ---
.../mapping/JPAEmbeddableTypesMapType.java | 89 --
.../jpa/model/mapping/JPAEntityTypeMapType.java | 213 ---
.../model/mapping/JPAEntityTypesMapType.java | 89 --
.../mapping/JPAPersistenceUnitMapType.java | 157 ---
.../model/mapping/JPARelationshipMapType.java | 175 ---
.../api/jpa/model/mapping/package-info.java | 28 -
.../processor/api/jpa/model/package-info.java | 27 -
.../odata2/processor/api/jpa/package-info.java | 33 -
.../src/main/resources/JPAEDMMappingModel.xsd | 165 ---
odata2-processor-jpa/jpa-core/.gitignore | 8 -
odata2-processor-jpa/jpa-core/pom.xml | 146 --
.../jpa-core/src/main/java/META-INF/MANIFEST.MF | 3 -
.../processor/core/jpa/ODataEntityParser.java | 163 ---
.../core/jpa/ODataExpressionParser.java | 381 ------
.../processor/core/jpa/ODataJPAContextImpl.java | 146 --
.../core/jpa/ODataJPAProcessorDefault.java | 194 ---
.../core/jpa/ODataJPAResponseBuilder.java | 629 ---------
.../core/jpa/access/data/JPAEntity.java | 355 -----
.../core/jpa/access/data/JPAEntityParser.java | 453 -------
.../core/jpa/access/data/JPAExpandCallBack.java | 180 ---
.../jpa/access/data/JPAFunctionContext.java | 170 ---
.../processor/core/jpa/access/data/JPALink.java | 225 ----
.../core/jpa/access/data/JPAProcessorImpl.java | 491 -------
.../core/jpa/access/model/EdmTypeConvertor.java | 69 -
.../access/model/JPAEdmMappingModelService.java | 247 ----
.../jpa/access/model/JPAEdmNameBuilder.java | 499 -------
.../core/jpa/access/model/JPATypeConvertor.java | 119 --
.../core/jpa/edm/ODataJPAEdmProvider.java | 295 -----
.../ODataJPAMessageServiceDefault.java | 122 --
.../core/jpa/factory/ODataJPAFactoryImpl.java | 237 ----
.../core/jpa/jpql/JPQLJoinSelectContext.java | 171 ---
.../jpa/jpql/JPQLJoinSelectSingleContext.java | 158 ---
.../JPQLJoinSelectSingleStatementBuilder.java | 106 --
.../core/jpa/jpql/JPQLJoinStatementBuilder.java | 145 --
.../core/jpa/jpql/JPQLSelectContext.java | 159 ---
.../core/jpa/jpql/JPQLSelectSingleContext.java | 109 --
.../jpql/JPQLSelectSingleStatementBuilder.java | 66 -
.../jpa/jpql/JPQLSelectStatementBuilder.java | 98 --
.../core/jpa/model/JPAEdmAssociation.java | 237 ----
.../core/jpa/model/JPAEdmAssociationEnd.java | 183 ---
.../core/jpa/model/JPAEdmAssociationSet.java | 131 --
.../core/jpa/model/JPAEdmBaseViewImpl.java | 101 --
.../core/jpa/model/JPAEdmComplexType.java | 254 ----
.../core/jpa/model/JPAEdmEntityContainer.java | 154 ---
.../core/jpa/model/JPAEdmEntitySet.java | 112 --
.../core/jpa/model/JPAEdmEntityType.java | 230 ----
.../processor/core/jpa/model/JPAEdmFacets.java | 94 --
.../core/jpa/model/JPAEdmFunctionImport.java | 331 -----
.../processor/core/jpa/model/JPAEdmKey.java | 129 --
.../core/jpa/model/JPAEdmMappingImpl.java | 51 -
.../processor/core/jpa/model/JPAEdmModel.java | 65 -
.../jpa/model/JPAEdmNavigationProperty.java | 98 --
.../core/jpa/model/JPAEdmProperty.java | 378 ------
.../jpa/model/JPAEdmReferentialConstraint.java | 147 --
.../model/JPAEdmReferentialConstraintRole.java | 258 ----
.../processor/core/jpa/model/JPAEdmSchema.java | 216 ---
.../jpa/model/_JPAEdmFunctionImportBuilder.java | 237 ----
.../main/resources/jpaprocessor_msg.properties | 61 -
.../jpa-core/src/test/java/META-INF/MANIFEST.MF | 3 -
.../core/jpa/ODataExpressionParserTest.java | 515 -------
.../core/jpa/ODataJPAContextImplTest.java | 98 --
.../core/jpa/ODataJPAProcessorDefaultTest.java | 554 --------
.../core/jpa/ODataJPAResponseBuilderTest.java | 566 --------
.../jpa/access/data/JPAEntityParserTest.java | 599 ---------
.../JPAEntityParserTestForStaticMethods.java | 251 ----
.../core/jpa/access/data/JPAEntityTest.java | 187 ---
.../jpa/access/data/JPAExpandCallBackTest.java | 160 ---
.../jpa/access/data/JPAFunctionContextTest.java | 143 --
.../jpa/access/data/JPAProcessorImplTest.java | 447 -------
.../model/JPAEdmMappingModelServiceTest.java | 213 ---
.../jpa/access/model/JPAEdmNameBuilderTest.java | 151 ---
.../jpa/access/model/JPATypeConvertorTest.java | 94 --
.../core/jpa/common/ODataJPATestConstants.java | 27 -
.../edm/ODataJPAEdmProviderNegativeTest.java | 191 ---
.../core/jpa/edm/ODataJPAEdmProviderTest.java | 385 ------
.../core/jpa/jpql/JPQLBuilderFactoryTest.java | 377 ------
.../core/jpa/jpql/JPQLJoinContextTest.java | 198 ---
.../jpql/JPQLJoinSelectSingleContextTest.java | 215 ---
...PQLJoinSelectSingleStatementBuilderTest.java | 142 --
.../jpa/jpql/JPQLJoinStatementBuilderTest.java | 124 --
.../jpa/jpql/JPQLSelectContextImplTest.java | 385 ------
.../jpql/JPQLSelectSingleContextImplTest.java | 198 ---
.../JPQLSelectSingleStatementBuilderTest.java | 123 --
.../jpql/JPQLSelectStatementBuilderTest.java | 135 --
.../core/jpa/mock/ODataJPAContextMock.java | 57 -
.../core/jpa/mock/data/EdmMockUtil.java | 337 -----
.../core/jpa/mock/data/EdmMockUtilV2.java | 324 -----
.../core/jpa/mock/data/JPATypeMock.java | 205 ---
.../core/jpa/mock/data/ODataEntryMockUtil.java | 127 --
.../core/jpa/mock/data/SalesOrderHeader.java | 63 -
.../core/jpa/mock/data/SalesOrderLineItem.java | 38 -
.../jpa/mock/data/SalesOrderLineItemKey.java | 52 -
.../core/jpa/mock/model/EdmSchemaMock.java | 213 ---
.../core/jpa/mock/model/JPAAttributeMock.java | 63 -
.../jpa/mock/model/JPACustomProcessorMock.java | 74 --
.../core/jpa/mock/model/JPAEdmMockData.java | 72 -
.../core/jpa/mock/model/JPAEmbeddableMock.java | 184 ---
.../jpa/mock/model/JPAEmbeddableTypeMock.java | 184 ---
.../core/jpa/mock/model/JPAEntityTypeMock.java | 246 ----
.../core/jpa/mock/model/JPAJavaMemberMock.java | 74 --
.../core/jpa/mock/model/JPAManagedTypeMock.java | 184 ---
.../core/jpa/mock/model/JPAMetaModelMock.java | 60 -
.../jpa/mock/model/JPAPluralAttributeMock.java | 95 --
.../mock/model/JPASingularAttributeMock.java | 94 --
.../jpa/mock/model/_JPACustomProcessorMock.java | 77 --
.../model/_JPACustomProcessorNegativeMock.java | 70 -
.../jpa/model/JPAEdmAssociationEndTest.java | 177 ---
.../jpa/model/JPAEdmAssociationSetTest.java | 184 ---
.../core/jpa/model/JPAEdmAssociationTest.java | 422 ------
.../core/jpa/model/JPAEdmBaseViewImplTest.java | 89 --
.../core/jpa/model/JPAEdmComplexTypeTest.java | 268 ----
.../jpa/model/JPAEdmEntityContainerTest.java | 234 ----
.../core/jpa/model/JPAEdmEntitySetTest.java | 224 ----
.../core/jpa/model/JPAEdmEntityTypeTest.java | 198 ---
.../jpa/model/JPAEdmFunctionImportTest.java | 566 --------
.../processor/core/jpa/model/JPAEdmKeyTest.java | 176 ---
.../core/jpa/model/JPAEdmModelTest.java | 145 --
.../jpa/model/JPAEdmNavigationPropertyTest.java | 218 ---
.../core/jpa/model/JPAEdmPropertyTest.java | 440 ------
.../JPAEdmReferentialConstraintRoleTest.java | 233 ----
.../model/JPAEdmReferentialConstraintTest.java | 177 ---
.../core/jpa/model/JPAEdmSchemaTest.java | 103 --
.../core/jpa/model/JPAEdmTestModelView.java | 396 ------
.../jpa/model/_JPAEdmFunctionImportTest.java | 570 --------
.../SalesOrderProcessingMappingModels.xml | 62 -
odata2-processor-jpa/jpa-ref/.gitignore | 8 -
odata2-processor-jpa/jpa-ref/pom.xml | 109 --
.../ref/factory/JPAEntityManagerFactory.java | 46 -
.../odata2/jpa/processor/ref/model/Address.java | 83 --
.../jpa/processor/ref/model/Material.java | 116 --
.../odata2/jpa/processor/ref/model/Note.java | 116 --
.../processor/ref/model/SalesOrderHeader.java | 236 ----
.../jpa/processor/ref/model/SalesOrderItem.java | 133 --
.../processor/ref/model/SalesOrderItemKey.java | 89 --
.../odata2/jpa/processor/ref/model/Store.java | 92 --
.../src/main/resources/META-INF/persistence.xml | 46 -
odata2-processor-jpa/jpa-web/.gitignore | 8 -
odata2-processor-jpa/jpa-web/pom.xml | 123 --
.../extension/SalesOrderHeaderProcessor.java | 115 --
.../SalesOrderProcessingExtension.java | 38 -
.../extension/_SalesOrderHeaderProcessor.java | 127 --
.../jpa/processor/ref/util/DataGenerator.java | 158 ---
.../ref/web/JPAReferenceServiceFactory.java | 56 -
.../main/resources/DataDeleteSQLs.properties | 22 -
.../jpa-web/src/main/resources/META-INF/LICENSE | 1252 ------------------
.../src/main/resources/MaterialSQLs.properties | 30 -
.../src/main/resources/NoteSQLs.properties | 20 -
.../main/resources/SQLInsertConfig.properties | 22 -
.../resources/SalesOrderHeaderSQLs.properties | 30 -
.../resources/SalesOrderItemSQLs.properties | 30 -
.../src/main/resources/StoreSQLs.properties | 30 -
.../src/main/resources/serviceConfig.properties | 19 -
.../webapp/SalesOrderProcessingMappingModel.xml | 62 -
.../jpa-web/src/main/webapp/WEB-INF/web.xml | 47 -
.../jpa-web/src/main/webapp/index.jsp | 312 -----
odata2-processor-jpa/pom.xml | 31 -
pom.xml | 2 +-
430 files changed, 33622 insertions(+), 33426 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/.gitignore
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/.gitignore b/odata2-jpa-processor/jpa-api/.gitignore
new file mode 100644
index 0000000..fe5d89b
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/.gitignore
@@ -0,0 +1,8 @@
+.project
+.classpath
+.settings
+target
+bin
+*.bak
+classes
+.DS_Store
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
new file mode 100644
index 0000000..d0c8e0b
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>olingo-odata2-jpa-processor-incubating</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>../</relativePath>
+ </parent>
+
+ <artifactId>olingo-odata2-jpa-processor-api-incubating</artifactId>
+ <packaging>jar</packaging>
+ <name>${project.artifactId}</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>bundle-manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <instructions>
+ <Import-Package>
+ org.apache.olingo.odata2.processor.core.jpa.factory;resolution:=optional,
+ *
+ </Import-Package>
+ <Export-Package>
+ org.apache.olingo.odata2.processor.api.*;version=${project.version}
+ </Export-Package>
+ <Bundle-DocURL>${project.url}</Bundle-DocURL>
+ <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <!-- JPA Support -->
+ <dependency>
+ <groupId>org.eclipse.persistence</groupId>
+ <artifactId>javax.persistence</artifactId>
+ <version>${version.javax.persistence}</version>
+ </dependency>
+
+ <!-- OData Java Library -->
+ <dependency>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>olingo-odata2-api-incubating</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAContext.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAContext.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAContext.java
new file mode 100644
index 0000000..9974434
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAContext.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.processor.ODataContext;
+import org.apache.olingo.odata2.api.processor.ODataProcessor;
+import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmExtension;
+
+/**
+ * This class does the compilation of context objects required for OData JPA
+ * Runtime. The context object should be properly initialized with values else
+ * the behavior of processor and EDM provider can result in exception.
+ *
+ * Following are the mandatory parameter to be set into the context object
+ * <ol>
+ * <li>Persistence Unit Name</li>
+ * <li>An instance of Java Persistence Entity Manager Factory</li>
+ * </ol>
+ *
+ * <br>
+ * @org.apache.olingo.odata2.DoNotImplement
+ * @see org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory
+ * @see org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAAccessFactory
+ *
+ */
+public interface ODataJPAContext {
+
+ /**
+ * The method gets the Java Persistence Unit Name set into the context.
+ *
+ * @return Java Persistence Unit Name
+ */
+ public String getPersistenceUnitName();
+
+ /**
+ * The method sets the Java Persistence Unit Name into the context.
+ *
+ * @param pUnitName
+ * is the Java Persistence Unit Name.
+ *
+ */
+ public void setPersistenceUnitName(String pUnitName);
+
+ /**
+ * The method gets the OData Processor for JPA from the context.
+ *
+ * @return OData JPA Processor
+ */
+ public ODataProcessor getODataProcessor();
+
+ /**
+ * The method sets the OData Processor for JPA into the context.
+ *
+ * @param processor
+ * is the specific implementation of {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAProcessor} for
+ * processing OData service requests.
+ */
+ public void setODataProcessor(ODataProcessor processor);
+
+ /**
+ * The method gets the EDM provider for JPA from the context.
+ *
+ * @return EDM provider
+ */
+ public EdmProvider getEdmProvider();
+
+ /**
+ * The method sets EDM provider into the context
+ *
+ * @param edmProvider
+ * is the specific implementation of {@link org.apache.olingo.odata2.api.edm.provider.EdmProvider} for
+ * transforming Java persistence models to Entity Data Model
+ *
+ */
+ public void setEdmProvider(EdmProvider edmProvider);
+
+ /**
+ * The method gets the Java Persistence Entity Manager factory from the
+ * context. <br>
+ * <b>CAUTION:-</b> Don't use the Entity Manager Factory to instantiate
+ * Entity Managers. Instead get reference to Entity Manager using
+ * {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext#getEntityManager()}
+ *
+ * @return an instance of Java Persistence Entity Manager Factory
+ */
+ public EntityManagerFactory getEntityManagerFactory();
+
+ /**
+ * The method sets the Java Persistence Entity Manager factory into the
+ * context.
+ *
+ * @param emf
+ * is of type {@link javax.persistence.EntityManagerFactory}
+ *
+ */
+ public void setEntityManagerFactory(EntityManagerFactory emf);
+
+ /**
+ * The method gets OData Context into the context.
+ *
+ * @return OData Context
+ */
+ public ODataContext getODataContext();
+
+ /**
+ * The method sets OData context into the context.
+ *
+ * @param ctx
+ * is an OData context of type {@link org.apache.olingo.odata2.api.processor.ODataContext}
+ */
+ public void setODataContext(ODataContext ctx);
+
+ /**
+ * The method sets the JPA EDM mapping model name into the context. JPA EDM
+ * mapping model is an XML document based on JPAEDMMappingModel.xsd
+ *
+ * @param name
+ * is the name of JPA EDM mapping model
+ */
+ public void setJPAEdmMappingModel(String name);
+
+ /**
+ * The method gets the JPA EDM mapping model name from the context.
+ *
+ * @return name of JPA EDM mapping model
+ */
+ public String getJPAEdmMappingModel();
+
+ /**
+ * The method returns an instance of type entity manager. The entity manager
+ * thus returns a single persistence context for the current OData request.
+ * Hence all entities that are accessed within JPA processor are managed by
+ * single entity manager.
+ *
+ * @return an instance of type {@link javax.persistence.EntityManager}
+ */
+ public EntityManager getEntityManager();
+
+ /**
+ * The method sets the JPA Edm Extension instance into the context. There
+ * can be at most only one extension for a context. Invoking the method
+ * several times overwrites already set extension instance in the context.
+ *
+ * @param jpaEdmExtension
+ * is an instance of type {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmExtension}
+ *
+ */
+ public void setJPAEdmExtension(JPAEdmExtension jpaEdmExtension);
+
+ /**
+ * The method returns the JPA Edm Extension instance set into the context.
+ *
+ * @return an instance of type
+ * {@link org.apache.olingo.odata2.processor.api.jpa.model.mapping.JPAEmbeddableTypeMapType}
+ */
+ public JPAEdmExtension getJPAEdmExtension();
+
+ /**
+ * The method sets into the context whether the library should consider default naming for
+ * <ul><li>EdmProperty</li>
+ * <li>EdmComplexProperty</li>
+ * <li>EdmNavigationProperty</li></ul>
+ *
+ * @param defaultNaming is a boolean value that indicates if set to
+ * <ul><li>true - default naming is considered in case no mapping is provided.</li>
+ * <li>false - default naming is not considered in case no mapping is provided. The
+ * name provided in JPA Entity Model is considered.</li>
+ * </ul>
+ */
+ public void setDefaultNaming(boolean defaultNaming);
+
+ /**
+ * The method returns whether the library should consider default naming for
+ * <ul><li>EdmProperty</li>
+ * <li>EdmComplexProperty</li>
+ * <li>EdmNavigationProperty</li></ul>
+ *
+ * @return
+ * <ul><li>true - default naming is considered in case no mapping is provided.</li>
+ * <li>false - default naming is not considered in case no mapping is provided. The
+ * name provided in JPA Entity Model is considered.</li>
+ * </ul>
+ */
+ public boolean getDefaultNaming();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAProcessor.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAProcessor.java
new file mode 100644
index 0000000..441d38e
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAProcessor.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa;
+
+import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
+import org.apache.olingo.odata2.processor.api.jpa.access.JPAProcessor;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAException;
+import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory;
+
+/**
+ * Extend this class and implement an OData JPA processor if the default
+ * behavior of OData JPA Processor library has to be overwritten.
+ *
+ *
+ *
+ *
+ */
+public abstract class ODataJPAProcessor extends ODataSingleProcessor {
+
+ /**
+ * An instance of {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext} object
+ */
+ protected ODataJPAContext oDataJPAContext;
+
+ /**
+ * An instance of {@link org.apache.olingo.odata2.processor.api.jpa.access.JPAProcessor}. The
+ * instance is created using {@link org.apache.olingo.odata2.processor.api.jpa.factory.JPAAccessFactory}.
+ */
+ protected JPAProcessor jpaProcessor;
+
+ public ODataJPAContext getOdataJPAContext() {
+ return oDataJPAContext;
+ }
+
+ public void setOdataJPAContext(final ODataJPAContext odataJPAContext) {
+ oDataJPAContext = odataJPAContext;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param oDataJPAContext
+ * non null OData JPA Context object
+ */
+ public ODataJPAProcessor(final ODataJPAContext oDataJPAContext) {
+ if (oDataJPAContext == null) {
+ throw new IllegalArgumentException(ODataJPAException.ODATA_JPACTX_NULL);
+ }
+ this.oDataJPAContext = oDataJPAContext;
+ jpaProcessor = ODataJPAFactory.createFactory().getJPAAccessFactory().getJPAProcessor(this.oDataJPAContext);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAServiceFactory.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAServiceFactory.java
new file mode 100644
index 0000000..4968107
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/ODataJPAServiceFactory.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa;
+
+import org.apache.olingo.odata2.api.ODataCallback;
+import org.apache.olingo.odata2.api.ODataService;
+import org.apache.olingo.odata2.api.ODataServiceFactory;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.processor.ODataContext;
+import org.apache.olingo.odata2.api.processor.ODataErrorCallback;
+import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAErrorCallback;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
+import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAAccessFactory;
+import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory;
+
+/**
+ * <p>
+ * Extend this factory class and create own instance of {@link org.apache.olingo.odata2.api.ODataService} that
+ * transforms Java Persistence
+ * Models into an OData Service. The factory class instantiates instances of
+ * type {@link org.apache.olingo.odata2.api.edm.provider.EdmProvider} and
+ * {@link org.apache.olingo.odata2.api.processor.ODataSingleProcessor}. The OData
+ * JPA Processor library provides a default implementation for EdmProvider and
+ * OData Single Processor.
+ * </p>
+ * <p>
+ * The factory implementation is passed as servlet init parameter to a JAX-RS
+ * runtime which will instantiate a {@link org.apache.olingo.odata2.api.ODataService} implementation using this factory.
+ * </p>
+ *
+ * <p>
+ * <b>Mandatory:</b> Implement the abstract method initializeODataJPAContext. Fill
+ * {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext} with context
+ * values.
+ * </p>
+ *
+ * <b>Sample Configuration:</b>
+ *
+ * <pre> {@code
+ * <servlet>
+ * <servlet-name>ReferenceScenarioServlet</servlet-name>
+ * <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
+ * <init-param>
+ * <param-name>javax.ws.rs.Application</param-name>
+ * <param-value>org.apache.olingo.odata2.core.rest.ODataApplication</param-value>
+ * </init-param>
+ * <init-param>
+ * <param-name>org.apache.olingo.odata2.processor.factory</param-name>
+ * <param-value>foo.bar.sample.processor.SampleProcessorFactory</param-value>
+ * </init-param>
+ * <init-param>
+ * <param-name>org.apache.olingo.odata2.path.split</param-name>
+ * <param-value>2</param-value>
+ * </init-param>
+ * <load-on-startup>1</load-on-startup>
+ * </servlet>
+ * } </pre>
+ */
+
+public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
+
+ private ODataJPAContext oDataJPAContext;
+ private ODataContext oDataContext;
+ private boolean setDetailErrors = false;
+
+ /**
+ * Creates an OData Service based on the values set in
+ * {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext} and
+ * {@link org.apache.olingo.odata2.api.processor.ODataContext}.
+ */
+ @Override
+ public final ODataService createService(final ODataContext ctx) throws ODataException {
+
+ oDataContext = ctx;
+
+ // Initialize OData JPA Context
+ oDataJPAContext = initializeODataJPAContext();
+
+ validatePreConditions();
+
+ ODataJPAFactory factory = ODataJPAFactory.createFactory();
+ ODataJPAAccessFactory accessFactory = factory.getODataJPAAccessFactory();
+
+ // OData JPA Processor
+ if (oDataJPAContext.getODataContext() == null) {
+ oDataJPAContext.setODataContext(ctx);
+ }
+
+ ODataSingleProcessor odataJPAProcessor = accessFactory.createODataProcessor(oDataJPAContext);
+
+ // OData Entity Data Model Provider based on JPA
+ EdmProvider edmProvider = accessFactory.createJPAEdmProvider(oDataJPAContext);
+
+ return createODataSingleProcessorService(edmProvider, odataJPAProcessor);
+ }
+
+ private void validatePreConditions() throws ODataJPARuntimeException {
+
+ if (oDataJPAContext.getEntityManagerFactory() == null) {
+ throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.ENTITY_MANAGER_NOT_INITIALIZED, null);
+ }
+
+ }
+
+ /**
+ * Implement this method and initialize OData JPA Context. It is mandatory
+ * to set an instance of type {@link javax.persistence.EntityManagerFactory} into the context. An exception of type
+ * {@link org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException} is thrown if
+ * EntityManagerFactory is not initialized. <br>
+ * <br>
+ * <b>Sample Code:</b> <code>
+ * <p>public class JPAReferenceServiceFactory extends ODataJPAServiceFactory{</p>
+ *
+ * <blockquote>private static final String PUNIT_NAME = "punit";
+ * <br>
+ * public ODataJPAContext initializeODataJPAContext() {
+ * <blockquote>ODataJPAContext oDataJPAContext = this.getODataJPAContext();
+ * <br>
+ * EntityManagerFactory emf = Persistence.createEntityManagerFactory(PUNIT_NAME);
+ * <br>
+ * oDataJPAContext.setEntityManagerFactory(emf);
+ * oDataJPAContext.setPersistenceUnitName(PUNIT_NAME);
+ * <br> return oDataJPAContext;</blockquote>
+ * }</blockquote>
+ * } </code>
+ * <p>
+ *
+ * @return an instance of type {@link org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext}
+ * @throws ODataJPARuntimeException
+ */
+ public abstract ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException;
+
+ /**
+ * @return an instance of type {@link ODataJPAContext}
+ * @throws ODataJPARuntimeException
+ */
+ public final ODataJPAContext getODataJPAContext() throws ODataJPARuntimeException {
+ if (oDataJPAContext == null) {
+ oDataJPAContext = ODataJPAFactory.createFactory().getODataJPAAccessFactory().createODataJPAContext();
+ }
+ if (oDataContext != null) {
+ oDataJPAContext.setODataContext(oDataContext);
+ }
+ return oDataJPAContext;
+
+ }
+
+ /**
+ * The method sets the context whether a detail error message should be thrown
+ * or a less detail error message should be thrown by the library.
+ * @param setDetailErrors takes
+ * <ul><li>true - to indicate that library should throw a detailed error message</li>
+ * <li>false - to indicate that library should not throw a detailed error message</li>
+ * </ul>
+ *
+ */
+ protected void setDetailErrors(final boolean setDetailErrors) {
+ this.setDetailErrors = setDetailErrors;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends ODataCallback> T getCallback(final Class<? extends ODataCallback> callbackInterface) {
+ if (setDetailErrors == true) {
+ if (callbackInterface.isAssignableFrom(ODataErrorCallback.class)) {
+ return (T) new ODataJPAErrorCallback();
+ }
+ }
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmBuilder.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmBuilder.java
new file mode 100644
index 0000000..110a1f1
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmBuilder.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
+
+/**
+ * JPAEdmBuilder interface provides methods for building elements of an Entity Data Model (EDM) from
+ * a Java Persistence Model.
+ *
+ *
+ *
+ */
+public interface JPAEdmBuilder {
+ /**
+ * The Method builds EDM Elements by transforming JPA MetaModel. The method
+ * processes EDM JPA Containers which could be accessed using the following
+ * views,
+ * <ul>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationSetView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmBaseView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexPropertyView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexTypeView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityContainerView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntitySetView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmKeyView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmModelView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmNavigationPropertyView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView}</li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmReferentialConstraintRoleView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmReferentialConstraintView} </li>
+ * <li> {@link org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView}</li>
+ * </ul>
+ *
+ * @throws ODataJPARuntimeException
+ **/
+ public void build() throws ODataJPAModelException, ODataJPARuntimeException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmMappingModelAccess.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmMappingModelAccess.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmMappingModelAccess.java
new file mode 100644
index 0000000..216db55
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAEdmMappingModelAccess.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import org.apache.olingo.odata2.processor.api.jpa.model.mapping.JPAEdmMappingModel;
+
+/**
+ * Interface provides methods to access JPA EDM mapping model.
+ *
+ *
+ * @see JPAEdmMappingModel
+ *
+ */
+public interface JPAEdmMappingModelAccess {
+
+ /**
+ * The method searches and loads the mapping model stored in <file>.xml
+ * file into the java object {@link org.apache.olingo.odata2.processor.api.jpa.model.mapping.JPAEdmMappingModel} . The
+ * name of the file is set into ODataJPAContext method.
+ *
+ * @see org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext#setJPAEdmMappingModel(String)
+ */
+ public void loadMappingModel();
+
+ /**
+ * The method returns if there exists a mapping model.
+ *
+ * @return true - if there exists a mapping model for the OData service else
+ * false
+ */
+ public boolean isMappingModelExists();
+
+ /**
+ * The method returns a JPA EDM mapping model Java object. The mapping model
+ * in XML files is un-marshaled into the Java object.
+ *
+ * @return an instance of type {@link org.apache.olingo.odata2.processor.api.jpa.model.mapping.JPAEdmMappingModel}
+ */
+ public JPAEdmMappingModel getJPAEdmMappingModel();
+
+ /**
+ * The method returns EDM Schema namespace for the persistence unit name
+ *
+ * @param persistenceUnitName
+ * is the Java persistence unit name
+ * @return EDM schema name space mapped to Java persistence unit name or
+ * null if no mapping is available
+ */
+ public String mapJPAPersistenceUnit(String persistenceUnitName);
+
+ /**
+ * The method returns EDM entity type name for the Java persistence entity
+ * type name
+ *
+ * @param jpaEntityTypeName
+ * is the Java persistence entity type name
+ * @return EDM entity type name mapped to Java persistence entity type name
+ * or null if no mapping is available
+ */
+ public String mapJPAEntityType(String jpaEntityTypeName);
+
+ /**
+ * The method returns EDM entity set name for the Java persistence entity
+ * type name
+ *
+ * @param jpaEntityTypeName
+ * is the Java persistence entity type name
+ * @return EDM entity set name mapped to Java persistence entity type name
+ * or null if no mapping is available
+ */
+ public String mapJPAEntitySet(String jpaEntityTypeName);
+
+ /**
+ * The method returns EDM property name for the Java persistence entity
+ * attribute name.
+ *
+ * @param jpaEntityTypeName
+ * is the Java persistence entity type name
+ * @param jpaAttributeName
+ * is the Java persistence attribute name
+ * @return EDM property name mapped to Java persistence attribute name or
+ * null if no mapping is available
+ */
+ public String mapJPAAttribute(String jpaEntityTypeName, String jpaAttributeName);
+
+ /**
+ * The method returns EDM navigation property name for the Java persistence
+ * entity relationship name.
+ *
+ * @param jpaEntityTypeName
+ * is the Java persistence entity type name
+ * @param jpaRelationshipName
+ * is the Java persistence relationship name
+ * @return EDM navigation property name mapped to Java persistence entity
+ * relationship name or null if no mapping is available
+ */
+ public String mapJPARelationship(String jpaEntityTypeName, String jpaRelationshipName);
+
+ /**
+ * The method returns EDM complex type name for the Java embeddable type
+ * name.
+ *
+ * @param jpaEmbeddableTypeName
+ * is the Java persistence embeddable type name
+ * @return EDM complex type name mapped to Java persistence entity
+ * relationship name or null if no mapping is available
+ */
+ public String mapJPAEmbeddableType(String jpaEmbeddableTypeName);
+
+ /**
+ * The method returns EDM property name for the Java persistence embeddable
+ * type's attribute name.
+ *
+ * @param jpaEmbeddableTypeName
+ * is the Java persistence
+ * @param jpaAttributeName
+ * is the Java persistence attribute name
+ * @return EDM property name mapped to Java persistence attribute name or
+ * null if no mapping is available
+ */
+ public String mapJPAEmbeddableTypeAttribute(String jpaEmbeddableTypeName, String jpaAttributeName);
+
+ /**
+ * The method returns whether the JPA Entity should be excluded from EDM
+ * model
+ *
+ * @param jpaEntityTypeName
+ * is the name of JPA Entity Type
+ * @return <b>true</b> - if JPA Entity should be excluded<br>
+ * <b>false</b> - if JPA Entity should be not be excluded
+ *
+ */
+ public boolean checkExclusionOfJPAEntityType(String jpaEntityTypeName);
+
+ /**
+ * The method returns whether the JPA Attribute should be excluded from EDM
+ * Entity Type
+ *
+ * @param jpaEntityTypeName
+ * is the name of JPA Entity Type
+ * @param jpaAttributeName
+ * is the name of JPA attribute
+ * @return <b>true</b> - if JPA attribute should be excluded<br>
+ * <b>false</b> - if JPA attribute should be not be excluded
+ *
+ */
+ public boolean checkExclusionOfJPAAttributeType(String jpaEntityTypeName, String jpaAttributeName);
+
+ /**
+ * The method returns whether the JPA Embeddable Type should be excluded
+ * from EDM model
+ *
+ * @param jpaEmbeddableTypeName
+ * is the name of JPA Embeddable Type
+ * @return <b>true</b> - if JPA Embeddable Type should be excluded<br>
+ * <b>false</b> - if JPA Embeddable Type should be not be excluded
+ *
+ */
+ public boolean checkExclusionOfJPAEmbeddableType(String jpaEmbeddableTypeName);
+
+ /**
+ * The method returns whether the JPA Embeddable Attribute Type should be
+ * excluded from EDM model
+ *
+ * @param jpaEmbeddableTypeName
+ * is the name of JPA Embeddable Attribute Type
+ * @param jpaAttributeName
+ * is the name of JPA Attribute name
+ * @return <b>true</b> - if JPA Embeddable Attribute Type should be excluded<br>
+ * <b>false</b> - if JPA Embeddable Attribute Type should be not be
+ * excluded
+ *
+ */
+ public boolean checkExclusionOfJPAEmbeddableAttributeType(String jpaEmbeddableTypeName, String jpaAttributeName);
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAFunction.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAFunction.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAFunction.java
new file mode 100644
index 0000000..648a09c
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAFunction.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+/**
+ * A container for JPA Functions. A JPA function can be
+ * <ol>
+ * <li>Property Access method</li>
+ * <li>Custom Operation (Annotated with EDM Annotation FunctionImport)</li>
+ * </ol>
+ *
+ *
+ *
+ */
+public class JPAFunction {
+
+ private Method function;
+ private Class<?>[] parameterTypes;
+ private Type returnType;
+ private Object[] args;
+
+ public JPAFunction(final Method function, final Class<?>[] parameterTypes, final Type returnType,
+ final Object[] args) {
+ this.function = function;
+ this.parameterTypes = parameterTypes;
+ this.returnType = returnType;
+ this.args = args;
+ }
+
+ /**
+ * The method returns the Java method.
+ *
+ * @return an instance of {@link java.lang.reflect.Method}
+ */
+ public Method getFunction() {
+ return function;
+ }
+
+ /**
+ * The method returns the parameter types for the Java method.
+ *
+ * @return an array of type {@link java.lang.Class}
+ */
+ public Class<?>[] getParameterTypes() {
+ return parameterTypes;
+ }
+
+ /**
+ * The method returns the return type for the Java method.
+ *
+ * @return an instance of {@link java.lang.reflect.Type}
+ */
+ public Type getReturnType() {
+ return returnType;
+ }
+
+ /**
+ * The method returns an array of arguments for invoking the Java method.
+ *
+ * @return an array of Objects
+ */
+ public Object[] getArguments() {
+ return args;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAJoinClause.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAJoinClause.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAJoinClause.java
new file mode 100644
index 0000000..f0a4c8d
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAJoinClause.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+/**
+ * A container for Java Persistence Join Clause that can be used for building
+ * JPQL statements. The container has two main elements <b>
+ * <ol>
+ * <li>Java Persistence Entity -</li> is the source entity participating in the
+ * join. <br>
+ * <li>Java Persistence Entity Relationship -</li> is the entity relationship of
+ * the source entity participating in the join.
+ * </ol>
+ * </b>
+ *
+ *
+ *
+ */
+public class JPAJoinClause {
+
+ /**
+ * Enumerated list of possible Joins in JPQL
+ * <ol>
+ * <li>LEFT - left outer join</li>
+ * <li>FETCH - enable fetching of an association as a side effect of the
+ * execution of a query</li>
+ * <li>INNER - inner join
+ * </ol>
+ *
+ *
+ *
+ */
+ public enum JOIN {
+ LEFT, FETCH, INNER
+ }
+
+ private String entityName;
+ private String entityAlias;
+ private String entityRelationShip;
+ private String entityRelationShipAlias;
+ private JOIN joinType;
+ private String joinCondition;
+
+ /**
+ * The method returns Java Persistence Entity participating in the join.
+ *
+ * @return an entity name
+ */
+ public String getEntityName() {
+ return entityName;
+ }
+
+ /**
+ * The method returns Java Persistence Entity alias name participating in
+ * the join.
+ *
+ * @return a entity alias name
+ */
+ public String getEntityAlias() {
+ return entityAlias;
+ }
+
+ /**
+ * The method returns Java Persistence Entity Relationship name
+ * participating in the join.
+ *
+ * @return entity alias relationship
+ */
+ public String getEntityRelationShip() {
+ return entityRelationShip;
+ }
+
+ /**
+ * The method returns Java Persistence Entity Relationship Alias name
+ * participating in the join.
+ *
+ * @return entity entity relationship alias
+ */
+ public String getEntityRelationShipAlias() {
+ return entityRelationShipAlias;
+ }
+
+ /**
+ * Constructor for creating elements of JPA Join Clause container.
+ *
+ * @param entityName
+ * is the name of the JPA entity participating in the join
+ * @param entityAlias
+ * is the alias for the JPA entity participating in the join
+ * @param entityRelationShip
+ * is the name of the JPA entity relationship participating in
+ * the join
+ * @param entityRelationShipAlias
+ * is the alias name of the JPA entity relationship participating
+ * in the join
+ * @param joinCondition
+ * is the condition on which the joins should occur
+ * @param joinType
+ * is the type of join {@link org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause.JOIN} to execute
+ */
+ public JPAJoinClause(final String entityName, final String entityAlias, final String entityRelationShip,
+ final String entityRelationShipAlias, final String joinCondition, final JOIN joinType) {
+
+ this.entityName = entityName;
+ this.entityAlias = entityAlias;
+ this.entityRelationShip = entityRelationShip;
+ this.entityRelationShipAlias = entityRelationShipAlias;
+ this.joinCondition = joinCondition;
+ this.joinType = joinType;
+ }
+
+ /**
+ * The method returns a join condition that can be used for building JPQL
+ * join statements.
+ *
+ * @return a join condition
+ */
+ public String getJoinCondition() {
+ return joinCondition;
+ }
+
+ /**
+ * The method returns the type of {@link org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause.JOIN} that
+ * can be used for building JPQL join statements.
+ *
+ * @return join type
+ */
+ public JOIN getJoinType() {
+ return joinType;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContext.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContext.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContext.java
new file mode 100644
index 0000000..fd44200
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContext.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
+import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory;
+import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
+
+/**
+ * The abstract class is a compilation of objects required for building specific
+ * instances of JPA Method Context. Extend this class to implement specific
+ * implementations of JPQL context types (Create,Update,Function). A JPA method
+ * Context is constructed from an OData request. Depending on OData
+ * CUD/FunctionImport operation performed on an Entity, a corresponding JPA
+ * method context object is built. The object thus built can be used for
+ * executing operations on JPA Entity/Custom processor objects. <br>
+ * A default implementation is provided by the library.
+ *
+ *
+ * @see org.apache.olingo.odata2.processor.api.jpa.access.JPAMethodContextView
+ * @see org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType
+ *
+ */
+
+public abstract class JPAMethodContext implements JPAMethodContextView {
+
+ protected Object enclosingObject;
+ protected ArrayList<JPAFunction> jpaFunction;
+
+ @Override
+ /**
+ * The method returns list of JPA functions that can be executed on the
+ * enclosing object.
+ *
+ * @return an instance of list of JPA Function
+ */
+ public Object getEnclosingObject() {
+ return enclosingObject;
+ }
+
+ @Override
+ /**
+ * The method returns list of JPA functions that can be executed on the
+ * enclosing object.
+ *
+ * @return an instance of list of JPA Function
+ */
+ public List<JPAFunction> getJPAFunctionList() {
+ return jpaFunction;
+ }
+
+ protected void setEnclosingObject(final Object enclosingObject) {
+ this.enclosingObject = enclosingObject;
+ }
+
+ protected void setJpaFunction(final List<JPAFunction> jpaFunctionList) {
+ jpaFunction = (ArrayList<JPAFunction>) jpaFunctionList;
+ }
+
+ /**
+ * the method instantiates an instance of type JPAMethodContextBuilder.
+ *
+ * @param contextType
+ * indicates the type of JPQLContextBuilder to instantiate.
+ * @param resultsView
+ * is the OData request view
+ * @return {@link org.apache.olingo.odata2.processor.api.jpa.access.JPAMethodContext.JPAMethodContextBuilder}
+ *
+ * @throws ODataJPARuntimeException
+ */
+ public final static JPAMethodContextBuilder
+ createBuilder(final JPQLContextType contextType, final Object resultsView) throws ODataJPARuntimeException {
+ return JPAMethodContextBuilder.create(contextType, resultsView);
+ }
+
+ /**
+ * The abstract class is extended by specific JPA Method Context Builder to
+ * build JPA Method Context types.
+ *
+ *
+ *
+ */
+ public static abstract class JPAMethodContextBuilder {
+
+ /**
+ * Implement this method to build JPAMethodContext
+ *
+ * @return an instance of type JPAMethodContext
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public abstract JPAMethodContext build() throws ODataJPAModelException, ODataJPARuntimeException;
+
+ protected JPAMethodContextBuilder() {}
+
+ private static JPAMethodContextBuilder create(final JPQLContextType contextType, final Object resultsView)
+ throws ODataJPARuntimeException {
+ JPAMethodContextBuilder contextBuilder =
+ ODataJPAFactory.createFactory().getJPQLBuilderFactory().getJPAMethodContextBuilder(contextType);
+
+ if (contextBuilder == null) {
+ throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.ERROR_JPQLCTXBLDR_CREATE, null);
+ }
+ contextBuilder.setResultsView(resultsView);
+ return contextBuilder;
+ }
+
+ protected abstract void setResultsView(Object resultsView);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContextView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContextView.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContextView.java
new file mode 100644
index 0000000..fb057a0
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAMethodContextView.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import java.util.List;
+
+/**
+ * The interface provides view on JPA Method Context. JPA Method context can be
+ * used to access custom operations or JPA Entity property access methods.
+ *
+ *
+ *
+ */
+public interface JPAMethodContextView {
+ /**
+ * The method returns an instance of Object on which the methods/custom
+ * operations can be executed.
+ *
+ * @return instance of enclosing object for the method
+ */
+ public Object getEnclosingObject();
+
+ /**
+ * The method returns list of JPA functions that can be executed on the
+ * enclosing object.
+ *
+ * @return an instance of list of JPA Function
+ */
+ public List<JPAFunction> getJPAFunctionList();
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAProcessor.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAProcessor.java
new file mode 100644
index 0000000..af9b77d
--- /dev/null
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/processor/api/jpa/access/JPAProcessor.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata2.processor.api.jpa.access;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.uri.info.DeleteUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntityCountUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntityLinkUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetCountUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetLinksUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetFunctionImportUriInfo;
+import org.apache.olingo.odata2.api.uri.info.PostUriInfo;
+import org.apache.olingo.odata2.api.uri.info.PutMergePatchUriInfo;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
+import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
+
+/**
+ * The interface provides methods for processing OData Requests for Create, Read, Update, Delete operations.
+ * Pass the OData request or parsed OData request (Map of properties) as request.
+ * A JPA entity is returned as a response.
+ *
+ */
+public interface JPAProcessor {
+ /**
+ * Processes OData request for querying an Entity Set. The method returns
+ * list of Objects of type representing JPA Entity Types.
+ *
+ * @param <T>
+ * Template parameter representing Java Persistence Entity Type.
+ * <p>
+ * <b>Note:-</b> Default parameter is Object.
+ * </p>
+ *
+ * @param requestView
+ * is an OData request for querying an entity set
+ * <p>
+ * @return list of objects representing JPA entity types
+ **/
+ public <T> List<T> process(GetEntitySetUriInfo requestView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for reading an Entity. The method returns an
+ * Object of type representing JPA Entity Type.
+ *
+ * @param <T>
+ * Template parameter representing Java Persistence Entity Type.
+ * <p>
+ * <b>Note:-</b> Default parameter is Object.
+ * </p>
+ *
+ * @param requestView
+ * OData request for reading an entity
+ *
+ * <p>
+ * @return object representing JPA entity type
+ **/
+ public <T> Object process(GetEntityUriInfo requestView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for fetching Entity count. The method returns JPA Entity count
+ *
+ * @param requestView
+ * OData request for counting an entity set
+ * @return long value representing count of JPA entity set
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+
+ public long process(GetEntitySetCountUriInfo requestView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for fetching Entity count. The method returns count of target entity.
+ * This is specific to situation where cardinality is 1:1
+ *
+ * @param resultsView
+ * OData request for counting target entity.
+ * @return long value representing count of JPA entity
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public long process(GetEntityCountUriInfo resultsView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for executing custom operations. The method
+ * returns a List of Object. The list contains one entry if the the custom
+ * operations return type has multiplicity of ONE.
+ *
+ * @param requestView
+ * OData request for executing function import
+ * @return result of executing function import
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public List<Object> process(GetFunctionImportUriInfo requestView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for executing $links OData command for N:1 relation.
+ * The method returns an Object of type representing OData entity.
+ *
+ * @param uriParserResultView
+ * OData request for Entity Link URI
+ * @return an object representing JPA entity
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public Object process(GetEntityLinkUriInfo uriParserResultView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for executing $links OData command for N:1 relation.
+ * The method returns an Object of type representing OData entity.
+ *
+ * @param uriParserResultView
+ * OData request for Entity Set Link URI
+ * @return a list of object representing JPA entities
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public <T> List<T> process(GetEntitySetLinksUriInfo uriParserResultView)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for creating Entity. The method returns an Object
+ * which is created. A Null reference implies object was not created.
+ *
+ * @param createView
+ * @param content
+ * @param requestContentType
+ * @return Created Object
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+
+ public <T> List<T> process(PostUriInfo createView, InputStream content,
+ String requestContentType) throws ODataJPAModelException,
+ ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for creating Entity. The method expects a parsed OData request which is a Map of
+ * properties.
+ * The method returns an Object that is created. A Null reference implies object was not created.
+ *
+ * @param createView
+ * @param content
+ * @return Created Object
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+
+ public <T> List<T> process(PostUriInfo createView, Map<String, Object> content) throws ODataJPAModelException,
+ ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for updating Entity. The method returns an Object
+ * which is updated. A Null reference implies object was not created.
+ *
+ * @param updateView
+ * @param content
+ * @param requestContentType
+ * @return Deleted Object
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public <T> Object process(PutMergePatchUriInfo updateView,
+ InputStream content, String requestContentType)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for updating Entity. The method returns an Object
+ * which is updated. A Null reference implies object was not created.
+ *
+ * @param updateView
+ * @param content
+ * @return Deleted Object
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public <T> Object process(PutMergePatchUriInfo updateView, Map<String, Object> content)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Processes OData request for deleting Entity. The method returns an Object
+ * which is deleted. A Null reference implies object was not created.
+ *
+ * @param deleteuriInfo
+ * @param contentType
+ * @return Deleted Object
+ *
+ * @throws ODataJPAModelException
+ * @throws ODataJPARuntimeException
+ */
+ public Object process(DeleteUriInfo deleteuriInfo, String contentType)
+ throws ODataJPAModelException, ODataJPARuntimeException;
+
+ /**
+ * Process OData request for creating Links. The OData request should contain
+ * $links OData command.
+ *
+ * @param uriParserResultView
+ * OData request for creating Links
+ * @param content
+ * @param requestContentType
+ * @param contentType
+ *
+ * @throws ODataJPARuntimeException
+ * @throws ODataJPAModelException
+ */
+ public void process(PostUriInfo uriParserResultView,
+ InputStream content, String requestContentType, String contentType)
+ throws ODataJPARuntimeException, ODataJPAModelException;
+
+ /**
+ * Process OData request for updating Links. The OData request should contain
+ * $links OData command.
+ *
+ * @param uriParserResultView
+ * OData request for updating Links
+ * @param content
+ * @param requestContentType
+ * @param contentType
+ *
+ * @throws ODataJPARuntimeException
+ * @throws ODataJPAModelException
+ */
+ public void process(PutMergePatchUriInfo uriParserResultView,
+ InputStream content, String requestContentType, String contentType)
+ throws ODataJPARuntimeException, ODataJPAModelException;
+}