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:11 UTC

[13/37] [OLINGO-82] Renamed the project folder name to odata2-jpa-processor

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/exception/ODataJPAMessageServiceDefault.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/exception/ODataJPAMessageServiceDefault.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/exception/ODataJPAMessageServiceDefault.java
deleted file mode 100644
index d7f3964..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/exception/ODataJPAMessageServiceDefault.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.exception;
-
-import java.util.Arrays;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingFormatArgumentException;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.apache.olingo.odata2.api.exception.MessageReference;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAMessageService;
-import org.apache.olingo.odata2.processor.core.jpa.ODataJPAContextImpl;
-
-public class ODataJPAMessageServiceDefault implements ODataJPAMessageService {
-
-  private static final String BUNDLE_NAME = "jpaprocessor_msg"; //$NON-NLS-1$
-  private static final Map<Locale, ODataJPAMessageService> LOCALE_2_MESSAGE_SERVICE =
-      new HashMap<Locale, ODataJPAMessageService>();
-  private static final ResourceBundle defaultResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
-  private final ResourceBundle resourceBundle;
-  private final Locale lanLocale;
-
-  @Override
-  public String getLocalizedMessage(final MessageReference context, final Throwable exception) {
-
-    Object[] contentAsArray = context.getContent().toArray(new Object[0]);
-
-    if (contentAsArray.length == 0 && exception != null) {
-      contentAsArray = new Object[2];
-      contentAsArray[0] = exception.getStackTrace()[1].getClassName();
-      contentAsArray[1] = exception.getMessage();
-    }
-    String value = null;
-    String key = context.getKey();
-
-    try {
-      value = getMessage(key);
-      StringBuilder builder = new StringBuilder();
-      Formatter f = null;
-      if (lanLocale == null) {
-        f = new Formatter();
-      } else {
-        f = new Formatter(builder, lanLocale);
-      }
-      f.format(value, contentAsArray);
-      f.close();
-      return builder.toString();
-
-    } catch (MissingResourceException e) {
-      return "Missing message for key '" + key + "'!";
-    } catch (MissingFormatArgumentException e) {
-      return "Missing replacement for place holder in value '" + value + "' for following arguments '"
-          + Arrays.toString(contentAsArray) + "'!";
-    }
-  }
-
-  private ODataJPAMessageServiceDefault(final ResourceBundle resourceBundle, final Locale locale) {
-    this.resourceBundle = resourceBundle;
-    lanLocale = locale;
-  }
-
-  public static ODataJPAMessageService getInstance(final Locale locale) {
-
-    Locale acceptedLocale = Locale.ENGLISH;
-    if ((ODataJPAContextImpl.getContextInThreadLocal() != null)
-        && (ODataJPAContextImpl.getContextInThreadLocal().getAcceptableLanguages() != null)) {
-
-      List<Locale> acceptedLanguages = ODataJPAContextImpl.getContextInThreadLocal().getAcceptableLanguages();
-
-      Iterator<Locale> itr = acceptedLanguages.iterator();
-
-      while (itr.hasNext()) {
-
-        Locale tempLocale = itr.next();
-        if (ResourceBundle.getBundle(BUNDLE_NAME, tempLocale).getLocale().equals(tempLocale)) {
-          acceptedLocale = tempLocale;
-          break;
-        }
-      }
-    }
-
-    ODataJPAMessageService messagesInstance = LOCALE_2_MESSAGE_SERVICE.get(acceptedLocale);
-    if (messagesInstance == null) {
-      ResourceBundle resourceBundle = ResourceBundle.getBundle(BUNDLE_NAME, acceptedLocale);
-
-      if (resourceBundle != null) {
-        messagesInstance = new ODataJPAMessageServiceDefault(resourceBundle, acceptedLocale);
-        LOCALE_2_MESSAGE_SERVICE.put(acceptedLocale, messagesInstance);
-      } else if (defaultResourceBundle != null) {
-        messagesInstance = new ODataJPAMessageServiceDefault(defaultResourceBundle, null);
-      }
-
-    }
-    return messagesInstance;
-  }
-
-  private String getMessage(final String key) {
-    return resourceBundle.getString(key);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/factory/ODataJPAFactoryImpl.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/factory/ODataJPAFactoryImpl.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/factory/ODataJPAFactoryImpl.java
deleted file mode 100644
index 2b14f9d..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/factory/ODataJPAFactoryImpl.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.factory;
-
-import java.util.Locale;
-
-import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
-import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
-import org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmMappingModelAccess;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAMethodContext.JPAMethodContextBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAProcessor;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAMessageService;
-import org.apache.olingo.odata2.processor.api.jpa.factory.JPAAccessFactory;
-import org.apache.olingo.odata2.processor.api.jpa.factory.JPQLBuilderFactory;
-import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAAccessFactory;
-import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContext.JPQLContextBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement.JPQLStatementBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmModelView;
-import org.apache.olingo.odata2.processor.core.jpa.ODataJPAContextImpl;
-import org.apache.olingo.odata2.processor.core.jpa.ODataJPAProcessorDefault;
-import org.apache.olingo.odata2.processor.core.jpa.access.data.JPAFunctionContext;
-import org.apache.olingo.odata2.processor.core.jpa.access.data.JPAProcessorImpl;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmMappingModelService;
-import org.apache.olingo.odata2.processor.core.jpa.edm.ODataJPAEdmProvider;
-import org.apache.olingo.odata2.processor.core.jpa.exception.ODataJPAMessageServiceDefault;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLJoinSelectContext;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLJoinSelectSingleContext;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLJoinSelectSingleStatementBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLJoinStatementBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLSelectContext;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLSelectSingleContext;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLSelectSingleStatementBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.jpql.JPQLSelectStatementBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.model.JPAEdmModel;
-
-public class ODataJPAFactoryImpl extends ODataJPAFactory {
-
-  @Override
-  public JPQLBuilderFactory getJPQLBuilderFactory() {
-    return JPQLBuilderFactoryImpl.create();
-  };
-
-  @Override
-  public JPAAccessFactory getJPAAccessFactory() {
-    return JPAAccessFactoryImpl.create();
-  };
-
-  @Override
-  public ODataJPAAccessFactory getODataJPAAccessFactory() {
-    return ODataJPAAccessFactoryImpl.create();
-  };
-
-  private static class JPQLBuilderFactoryImpl implements JPQLBuilderFactory {
-
-    private static JPQLBuilderFactoryImpl factory = null;
-
-    private JPQLBuilderFactoryImpl() {}
-
-    @Override
-    public JPQLStatementBuilder getStatementBuilder(final JPQLContextView context) {
-      JPQLStatementBuilder builder = null;
-      switch (context.getType()) {
-      case SELECT:
-      case SELECT_COUNT: // for $count, Same as select
-        builder = new JPQLSelectStatementBuilder(context);
-        break;
-      case SELECT_SINGLE:
-        builder = new JPQLSelectSingleStatementBuilder(context);
-        break;
-      case JOIN:
-      case JOIN_COUNT: // for $count, Same as join
-        builder = new JPQLJoinStatementBuilder(context);
-        break;
-      case JOIN_SINGLE:
-        builder = new JPQLJoinSelectSingleStatementBuilder(context);
-      default:
-        break;
-      }
-
-      return builder;
-    }
-
-    @Override
-    public JPQLContextBuilder getContextBuilder(final JPQLContextType contextType) {
-      JPQLContextBuilder contextBuilder = null;
-
-      switch (contextType) {
-      case SELECT:
-        JPQLSelectContext selectContext = new JPQLSelectContext(false);
-        contextBuilder = selectContext.new JPQLSelectContextBuilder();
-        break;
-      case SELECT_SINGLE:
-        JPQLSelectSingleContext singleSelectContext = new JPQLSelectSingleContext();
-        contextBuilder = singleSelectContext.new JPQLSelectSingleContextBuilder();
-        break;
-      case JOIN:
-        JPQLJoinSelectContext joinContext = new JPQLJoinSelectContext(false);
-        contextBuilder = joinContext.new JPQLJoinContextBuilder();
-        break;
-      case JOIN_SINGLE:
-        JPQLJoinSelectSingleContext joinSingleContext = new JPQLJoinSelectSingleContext();
-        contextBuilder = joinSingleContext.new JPQLJoinSelectSingleContextBuilder();
-        break;
-      case SELECT_COUNT:
-        JPQLSelectContext selectCountContext = new JPQLSelectContext(true);
-        contextBuilder = selectCountContext.new JPQLSelectContextBuilder();
-        break;
-      case JOIN_COUNT:
-        JPQLJoinSelectContext joinCountContext = new JPQLJoinSelectContext(true);
-        contextBuilder = joinCountContext.new JPQLJoinContextBuilder();
-      default:
-        break;
-      }
-
-      return contextBuilder;
-    }
-
-    private static JPQLBuilderFactory create() {
-      if (factory == null) {
-        return new JPQLBuilderFactoryImpl();
-      } else {
-        return factory;
-      }
-    }
-
-    @Override
-    public JPAMethodContextBuilder getJPAMethodContextBuilder(final JPQLContextType contextType) {
-
-      JPAMethodContextBuilder contextBuilder = null;
-      switch (contextType) {
-      case FUNCTION:
-        JPAFunctionContext methodConext = new JPAFunctionContext();
-        contextBuilder = methodConext.new JPAFunctionContextBuilder();
-
-        break;
-      default:
-        break;
-      }
-      return contextBuilder;
-    }
-
-  }
-
-  private static class ODataJPAAccessFactoryImpl implements ODataJPAAccessFactory {
-
-    private static ODataJPAAccessFactoryImpl factory = null;
-
-    private ODataJPAAccessFactoryImpl() {}
-
-    @Override
-    public ODataSingleProcessor createODataProcessor(final ODataJPAContext oDataJPAContext) {
-      return new ODataJPAProcessorDefault(oDataJPAContext);
-    }
-
-    @Override
-    public EdmProvider createJPAEdmProvider(final ODataJPAContext oDataJPAContext) {
-      return new ODataJPAEdmProvider(oDataJPAContext);
-    }
-
-    @Override
-    public ODataJPAContext createODataJPAContext() {
-      return new ODataJPAContextImpl();
-    }
-
-    private static ODataJPAAccessFactoryImpl create() {
-      if (factory == null) {
-        return new ODataJPAAccessFactoryImpl();
-      } else {
-        return factory;
-      }
-    }
-
-    @Override
-    public ODataJPAMessageService getODataJPAMessageService(final Locale locale) {
-      return ODataJPAMessageServiceDefault.getInstance(locale);
-    }
-
-  }
-
-  private static class JPAAccessFactoryImpl implements JPAAccessFactory {
-
-    private static JPAAccessFactoryImpl factory = null;
-
-    private JPAAccessFactoryImpl() {}
-
-    @Override
-    public JPAEdmModelView getJPAEdmModelView(final ODataJPAContext oDataJPAContext) {
-      JPAEdmModelView view = null;
-
-      view = new JPAEdmModel(oDataJPAContext);
-      return view;
-    }
-
-    @Override
-    public JPAProcessor getJPAProcessor(final ODataJPAContext oDataJPAContext) {
-      JPAProcessor jpaProcessor = new JPAProcessorImpl(oDataJPAContext);
-
-      return jpaProcessor;
-    }
-
-    private static JPAAccessFactoryImpl create() {
-      if (factory == null) {
-        return new JPAAccessFactoryImpl();
-      } else {
-        return factory;
-      }
-    }
-
-    @Override
-    public JPAEdmMappingModelAccess getJPAEdmMappingModelAccess(final ODataJPAContext oDataJPAContext) {
-      JPAEdmMappingModelAccess mappingModelAccess = new JPAEdmMappingModelService(oDataJPAContext);
-
-      return mappingModelAccess;
-    }
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectContext.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectContext.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectContext.java
deleted file mode 100644
index 6026464..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectContext.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.EdmEntityType;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmMapping;
-import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
-import org.apache.olingo.odata2.api.edm.provider.Mapping;
-import org.apache.olingo.odata2.api.exception.ODataException;
-import org.apache.olingo.odata2.api.uri.NavigationSegment;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause;
-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.jpql.JPQLContext;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLJoinContextView;
-import org.apache.olingo.odata2.processor.core.jpa.ODataExpressionParser;
-
-public class JPQLJoinSelectContext extends JPQLSelectContext implements JPQLJoinContextView {
-
-  private List<JPAJoinClause> jpaJoinClauses = null;
-
-  protected void setJPAOuterJoinClause(final List<JPAJoinClause> jpaOuterJoinClauses) {
-    jpaJoinClauses = jpaOuterJoinClauses;
-  }
-
-  public JPQLJoinSelectContext(final boolean isCountOnly) {
-    super(isCountOnly);
-  }
-
-  public class JPQLJoinContextBuilder extends JPQLSelectContextBuilder {
-
-    protected int relationShipAliasCounter = 0;
-
-    @Override
-    public JPQLContext build() throws ODataJPAModelException, ODataJPARuntimeException {
-      try {
-
-        if (JPQLJoinSelectContext.this.isCountOnly) {
-          setType(JPQLContextType.JOIN_COUNT);
-        } else {
-          setType(JPQLContextType.JOIN);
-        }
-
-        setJPAOuterJoinClause(generateJoinClauses());
-
-        if (!jpaJoinClauses.isEmpty()) {
-          JPAJoinClause joinClause = jpaJoinClauses.get(jpaJoinClauses.size() - 1);
-          setJPAEntityName(joinClause.getEntityName());
-          setJPAEntityAlias(joinClause.getEntityRelationShipAlias());
-        }
-
-        setOrderByCollection(generateOrderByFileds());
-
-        setSelectExpression(generateSelectExpression());
-
-        setWhereExpression(generateWhereExpression());
-
-      } catch (ODataException e) {
-        throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
-      }
-
-      return JPQLJoinSelectContext.this;
-    }
-
-    protected List<JPAJoinClause> generateJoinClauses() throws ODataJPARuntimeException, EdmException {
-
-      List<JPAJoinClause> jpaOuterJoinClauses = new ArrayList<JPAJoinClause>();
-      JPAJoinClause jpaOuterJoinClause = null;
-      String joinCondition = null;
-      String entityAlias = generateJPAEntityAlias();
-      joinCondition = ODataExpressionParser.parseKeyPredicates(entitySetView.getKeyPredicates(), entityAlias);
-
-      EdmEntityType entityType = entitySetView.getStartEntitySet().getEntityType();
-      Mapping mapping = (Mapping) entityType.getMapping();
-      String entityTypeName = null;
-      if (mapping != null) {
-        entityTypeName = mapping.getInternalName();
-      } else {
-        entityTypeName = entityType.getName();
-      }
-
-      jpaOuterJoinClause =
-          new JPAJoinClause(entityTypeName, entityAlias, null, null, joinCondition, JPAJoinClause.JOIN.INNER);
-
-      jpaOuterJoinClauses.add(jpaOuterJoinClause);
-
-      for (NavigationSegment navigationSegment : entitySetView.getNavigationSegments()) {
-
-        EdmNavigationProperty navigationProperty = navigationSegment.getNavigationProperty();
-
-        String relationShipAlias = generateRelationShipAlias();
-
-        joinCondition =
-            ODataExpressionParser.parseKeyPredicates(navigationSegment.getKeyPredicates(), relationShipAlias);
-
-        jpaOuterJoinClause =
-            new JPAJoinClause(getFromEntityName(navigationProperty), entityAlias,
-                getRelationShipName(navigationProperty), relationShipAlias, joinCondition, JPAJoinClause.JOIN.INNER);
-
-        jpaOuterJoinClauses.add(jpaOuterJoinClause);
-
-      }
-
-      return jpaOuterJoinClauses;
-    }
-
-    private String getFromEntityName(final EdmNavigationProperty navigationProperty) throws EdmException {
-
-      String fromRole = navigationProperty.getFromRole();
-
-      EdmEntityType toEntityType = navigationProperty.getRelationship().getEnd(fromRole).getEntityType();
-
-      EdmMapping mapping = toEntityType.getMapping();
-
-      String entityName = null;
-      if (mapping != null) {
-        entityName = mapping.getInternalName();
-      } else {
-        entityName = toEntityType.getName();
-      }
-
-      return entityName;
-
-    }
-
-    private String getRelationShipName(final EdmNavigationProperty navigationProperty) throws EdmException {
-
-      EdmMapping mapping = navigationProperty.getMapping();
-
-      String relationShipName = null;
-      if (mapping != null) {
-        relationShipName = mapping.getInternalName();
-      } else {
-        relationShipName = navigationProperty.getName();
-      }
-
-      return relationShipName;
-    }
-
-    private String generateRelationShipAlias() {
-      return new String("R" + ++relationShipAliasCounter);
-    }
-  }
-
-  @Override
-  public List<JPAJoinClause> getJPAJoinClauses() {
-    return jpaJoinClauses;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleContext.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleContext.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleContext.java
deleted file mode 100644
index c25eae9..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleContext.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.EdmEntityType;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmMapping;
-import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
-import org.apache.olingo.odata2.api.edm.provider.Mapping;
-import org.apache.olingo.odata2.api.uri.NavigationSegment;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause;
-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.jpql.JPQLContext;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLJoinSelectSingleContextView;
-import org.apache.olingo.odata2.processor.core.jpa.ODataExpressionParser;
-
-public class JPQLJoinSelectSingleContext extends JPQLSelectSingleContext implements JPQLJoinSelectSingleContextView {
-
-  private List<JPAJoinClause> jpaJoinClauses = null;
-
-  protected void setJPAJoinClause(final List<JPAJoinClause> jpaJoinClauses) {
-    this.jpaJoinClauses = jpaJoinClauses;
-  }
-
-  public class JPQLJoinSelectSingleContextBuilder extends JPQLSelectSingleContextBuilder {
-
-    protected int relationShipAliasCounter = 0;
-
-    @Override
-    public JPQLContext build() throws ODataJPAModelException, ODataJPARuntimeException {
-      try {
-        setType(JPQLContextType.JOIN_SINGLE);
-        setJPAJoinClause(generateJoinClauses());
-
-        if (!jpaJoinClauses.isEmpty()) {
-          JPAJoinClause joinClause = jpaJoinClauses.get(jpaJoinClauses.size() - 1);
-          setJPAEntityName(joinClause.getEntityName());
-          setJPAEntityAlias(joinClause.getEntityRelationShipAlias());
-        }
-
-        setKeyPredicates(entityView.getKeyPredicates());
-
-        setSelectExpression(generateSelectExpression());
-
-      } catch (EdmException e) {
-        throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL, e);
-      }
-
-      return JPQLJoinSelectSingleContext.this;
-    }
-
-    protected List<JPAJoinClause> generateJoinClauses() throws ODataJPARuntimeException, EdmException {
-
-      List<JPAJoinClause> jpaOuterJoinClauses = new ArrayList<JPAJoinClause>();
-      JPAJoinClause jpaOuterJoinClause = null;
-      String joinCondition = null;
-      String entityAlias = generateJPAEntityAlias();
-      joinCondition = ODataExpressionParser.parseKeyPredicates(entityView.getKeyPredicates(), entityAlias);
-
-      EdmEntityType entityType = entityView.getStartEntitySet().getEntityType();
-      Mapping mapping = (Mapping) entityType.getMapping();
-      String entityTypeName = null;
-      if (mapping != null) {
-        entityTypeName = mapping.getInternalName();
-      } else {
-        entityTypeName = entityType.getName();
-      }
-
-      jpaOuterJoinClause =
-          new JPAJoinClause(entityTypeName, entityAlias, null, null, joinCondition, JPAJoinClause.JOIN.INNER);
-
-      jpaOuterJoinClauses.add(jpaOuterJoinClause);
-
-      for (NavigationSegment navigationSegment : entityView.getNavigationSegments()) {
-
-        EdmNavigationProperty navigationProperty = navigationSegment.getNavigationProperty();
-
-        String relationShipAlias = generateRelationShipAlias();
-
-        joinCondition =
-            ODataExpressionParser.parseKeyPredicates(navigationSegment.getKeyPredicates(), relationShipAlias);
-
-        jpaOuterJoinClause =
-            new JPAJoinClause(getFromEntityName(navigationProperty), entityAlias,
-                getRelationShipName(navigationProperty), relationShipAlias, joinCondition, JPAJoinClause.JOIN.INNER);
-
-        jpaOuterJoinClauses.add(jpaOuterJoinClause);
-
-      }
-
-      return jpaOuterJoinClauses;
-    }
-
-    private String getFromEntityName(final EdmNavigationProperty navigationProperty) throws EdmException {
-
-      String fromRole = navigationProperty.getFromRole();
-
-      EdmEntityType fromEntityType = navigationProperty.getRelationship().getEnd(fromRole).getEntityType();
-
-      EdmMapping mapping = fromEntityType.getMapping();
-
-      String entityName = null;
-      if (mapping != null) {
-        entityName = mapping.getInternalName();
-      } else {
-        entityName = fromEntityType.getName();
-      }
-
-      return entityName;
-
-    }
-
-    private String getRelationShipName(final EdmNavigationProperty navigationProperty) throws EdmException {
-
-      EdmMapping mapping = navigationProperty.getMapping();
-
-      String relationShipName = null;
-      if (mapping != null) {
-        relationShipName = mapping.getInternalName();
-      } else {
-        relationShipName = navigationProperty.getName();
-      }
-
-      return relationShipName;
-    }
-
-    private String generateRelationShipAlias() {
-      return new String("R" + ++relationShipAliasCounter);
-    }
-  }
-
-  @Override
-  public List<JPAJoinClause> getJPAJoinClauses() {
-    return jpaJoinClauses;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleStatementBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleStatementBuilder.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleStatementBuilder.java
deleted file mode 100644
index fd06892..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinSelectSingleStatementBuilder.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.List;
-
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLJoinSelectSingleContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement.JPQLStatementBuilder;
-
-public class JPQLJoinSelectSingleStatementBuilder extends JPQLStatementBuilder {
-
-  JPQLStatement jpqlStatement;
-  private JPQLJoinSelectSingleContextView context;
-
-  public JPQLJoinSelectSingleStatementBuilder(final JPQLContextView context) {
-    this.context = (JPQLJoinSelectSingleContextView) context;
-  }
-
-  @Override
-  public JPQLStatement build() throws ODataJPARuntimeException {
-    jpqlStatement = createStatement(createJPQLQuery());
-    return jpqlStatement;
-
-  }
-
-  private String createJPQLQuery() throws ODataJPARuntimeException {
-
-    StringBuilder jpqlQuery = new StringBuilder();
-    StringBuilder joinWhereCondition = null;
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.SELECT).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(JPQLStatement.KEYWORD.FROM).append(JPQLStatement.DELIMITER.SPACE);
-
-    if (context.getJPAJoinClauses() != null && context.getJPAJoinClauses().size() > 0) {
-      List<JPAJoinClause> joinClauseList = context.getJPAJoinClauses();
-      JPAJoinClause joinClause = joinClauseList.get(0);
-      String joinCondition = joinClause.getJoinCondition();
-      joinWhereCondition = new StringBuilder();
-      if (joinCondition != null) {
-        joinWhereCondition.append(joinCondition);
-      }
-      String relationShipAlias = null;
-      joinClause = joinClauseList.get(1);
-      jpqlQuery.append(joinClause.getEntityName()).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(joinClause.getEntityAlias());
-
-      int i = 1;
-      int limit = joinClauseList.size();
-      relationShipAlias = joinClause.getEntityAlias();
-      while (i < limit) {
-        jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-        jpqlQuery.append(JPQLStatement.KEYWORD.JOIN).append(JPQLStatement.DELIMITER.SPACE);
-
-        joinClause = joinClauseList.get(i);
-        jpqlQuery.append(relationShipAlias).append(JPQLStatement.DELIMITER.PERIOD);
-        jpqlQuery.append(joinClause.getEntityRelationShip()).append(JPQLStatement.DELIMITER.SPACE);
-        jpqlQuery.append(joinClause.getEntityRelationShipAlias());
-
-        relationShipAlias = joinClause.getEntityRelationShipAlias();
-        i++;
-
-        joinCondition = joinClause.getJoinCondition();
-        if (joinCondition != null) {
-          joinWhereCondition.append(JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.AND
-              + JPQLStatement.DELIMITER.SPACE);
-
-          joinWhereCondition.append(joinCondition);
-        }
-
-      }
-    } else {
-      throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.JOIN_CLAUSE_EXPECTED, null);
-    }
-
-    if (joinWhereCondition.length() > 0) {
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.KEYWORD.WHERE).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(joinWhereCondition.toString());
-    }
-
-    return jpqlQuery.toString();
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinStatementBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinStatementBuilder.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinStatementBuilder.java
deleted file mode 100644
index 57d0e28..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLJoinStatementBuilder.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAJoinClause;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLJoinContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement.JPQLStatementBuilder;
-
-public class JPQLJoinStatementBuilder extends JPQLStatementBuilder {
-
-  JPQLStatement jpqlStatement;
-  private JPQLJoinContextView context;
-
-  public JPQLJoinStatementBuilder(final JPQLContextView context) {
-    this.context = (JPQLJoinContextView) context;
-  }
-
-  @Override
-  public JPQLStatement build() throws ODataJPARuntimeException {
-    jpqlStatement = createStatement(createJPQLQuery());
-    return jpqlStatement;
-
-  }
-
-  private String createJPQLQuery() throws ODataJPARuntimeException {
-
-    StringBuilder jpqlQuery = new StringBuilder();
-    StringBuilder joinWhereCondition = null;
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.SELECT).append(JPQLStatement.DELIMITER.SPACE);
-    if (context.getType().equals(JPQLContextType.JOIN_COUNT)) {// $COUNT
-      jpqlQuery.append(JPQLStatement.KEYWORD.COUNT).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.DELIMITER.PARENTHESIS_LEFT).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.DELIMITER.PARENTHESIS_RIGHT).append(JPQLStatement.DELIMITER.SPACE);
-    } else { // Normal
-      jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-    }
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.FROM).append(JPQLStatement.DELIMITER.SPACE);
-
-    if (context.getJPAJoinClauses() != null && context.getJPAJoinClauses().size() > 0) {
-      List<JPAJoinClause> joinClauseList = context.getJPAJoinClauses();
-      JPAJoinClause joinClause = joinClauseList.get(0);
-      String joinCondition = joinClause.getJoinCondition();
-      joinWhereCondition = new StringBuilder();
-      if (joinCondition != null) {
-        joinWhereCondition.append(joinCondition);
-      }
-      String relationShipAlias = null;
-      joinClause = joinClauseList.get(1);
-      jpqlQuery.append(joinClause.getEntityName()).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(joinClause.getEntityAlias());
-
-      int i = 1;
-      int limit = joinClauseList.size();
-      relationShipAlias = joinClause.getEntityAlias();
-      while (i < limit) {
-        jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-        jpqlQuery.append(JPQLStatement.KEYWORD.JOIN).append(JPQLStatement.DELIMITER.SPACE);
-
-        joinClause = joinClauseList.get(i);
-        jpqlQuery.append(relationShipAlias).append(JPQLStatement.DELIMITER.PERIOD);
-        jpqlQuery.append(joinClause.getEntityRelationShip()).append(JPQLStatement.DELIMITER.SPACE);
-        jpqlQuery.append(joinClause.getEntityRelationShipAlias());
-
-        relationShipAlias = joinClause.getEntityRelationShipAlias();
-        i++;
-
-        joinCondition = joinClause.getJoinCondition();
-        if (joinCondition != null) {
-          joinWhereCondition.append(JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.AND
-              + JPQLStatement.DELIMITER.SPACE);
-
-          joinWhereCondition.append(joinCondition);
-        }
-      }
-    } else {
-      throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.JOIN_CLAUSE_EXPECTED, null);
-    }
-    String whereExpression = context.getWhereExpression();
-    if (whereExpression != null || joinWhereCondition.length() > 0) {
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE).append(JPQLStatement.KEYWORD.WHERE).append(
-          JPQLStatement.DELIMITER.SPACE);
-      if (whereExpression != null) {
-        jpqlQuery.append(whereExpression);
-        if (joinWhereCondition != null) {
-          jpqlQuery.append(JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.AND + JPQLStatement.DELIMITER.SPACE);
-        }
-      }
-      if (joinWhereCondition != null) {
-        jpqlQuery.append(joinWhereCondition.toString());
-      }
-
-    }
-
-    if (context.getOrderByCollection() != null && context.getOrderByCollection().size() > 0) {
-
-      StringBuilder orderByBuilder = new StringBuilder();
-      Iterator<Entry<String, String>> orderItr = context.getOrderByCollection().entrySet().iterator();
-
-      int i = 0;
-
-      while (orderItr.hasNext()) {
-        if (i != 0) {
-          orderByBuilder.append(JPQLStatement.DELIMITER.SPACE).append(JPQLStatement.DELIMITER.COMMA).append(
-              JPQLStatement.DELIMITER.SPACE);
-        }
-        Entry<String, String> entry = orderItr.next();
-        orderByBuilder.append(entry.getKey()).append(JPQLStatement.DELIMITER.SPACE);
-        orderByBuilder.append(entry.getValue());
-        i++;
-      }
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE).append(JPQLStatement.KEYWORD.ORDERBY).append(
-          JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(orderByBuilder);
-    }
-
-    return jpqlQuery.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectContext.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectContext.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectContext.java
deleted file mode 100644
index ef588aa..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectContext.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.HashMap;
-
-import org.apache.olingo.odata2.api.edm.EdmEntityType;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmMapping;
-import org.apache.olingo.odata2.api.exception.ODataException;
-import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
-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.jpql.JPQLContext;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLSelectContextView;
-import org.apache.olingo.odata2.processor.core.jpa.ODataExpressionParser;
-
-public class JPQLSelectContext extends JPQLContext implements JPQLSelectContextView {
-
-  protected String selectExpression;
-  protected HashMap<String, String> orderByCollection;
-  protected String whereCondition;
-
-  protected boolean isCountOnly = false;// Support for $count
-
-  public JPQLSelectContext(final boolean isCountOnly) {
-    this.isCountOnly = isCountOnly;
-  }
-
-  protected final void setOrderByCollection(final HashMap<String, String> orderByCollection) {
-    this.orderByCollection = orderByCollection;
-  }
-
-  protected final void setWhereExpression(final String filterExpression) {
-    whereCondition = filterExpression;
-  }
-
-  protected final void setSelectExpression(final String selectExpression) {
-    this.selectExpression = selectExpression;
-  }
-
-  @Override
-  public String getSelectExpression() {
-    return selectExpression;
-  }
-
-  @Override
-  public HashMap<String, String> getOrderByCollection() {
-    return orderByCollection;
-  }
-
-  @Override
-  public String getWhereExpression() {
-    return whereCondition;
-  }
-
-  public class JPQLSelectContextBuilder extends
-      org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContext.JPQLContextBuilder {
-
-    protected GetEntitySetUriInfo entitySetView;
-
-    @Override
-    public JPQLContext build() throws ODataJPAModelException, ODataJPARuntimeException {
-      if (entitySetView != null) {
-
-        try {
-
-          if (isCountOnly) {
-            setType(JPQLContextType.SELECT_COUNT);
-          } else {
-            setType(JPQLContextType.SELECT);
-          }
-          EdmEntityType entityType = entitySetView.getTargetEntitySet().getEntityType();
-          EdmMapping mapping = entityType.getMapping();
-          if (mapping != null) {
-            setJPAEntityName(mapping.getInternalName());
-          } else {
-            setJPAEntityName(entityType.getName());
-          }
-
-          setJPAEntityAlias(generateJPAEntityAlias());
-
-          setOrderByCollection(generateOrderByFileds());
-
-          setSelectExpression(generateSelectExpression());
-
-          setWhereExpression(generateWhereExpression());
-        } catch (ODataException e) {
-          throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
-        }
-      }
-
-      return JPQLSelectContext.this;
-
-    }
-
-    @Override
-    protected void setResultsView(final Object resultsView) {
-      if (resultsView instanceof GetEntitySetUriInfo) {
-        entitySetView = (GetEntitySetUriInfo) resultsView;
-      }
-
-    }
-
-    /*
-     * Generate Select Clause
-     */
-    protected String generateSelectExpression() throws EdmException {
-      return getJPAEntityAlias();
-    }
-
-    /*
-     * Generate Order By Clause Fields
-     */
-    protected HashMap<String, String> generateOrderByFileds() throws ODataJPARuntimeException, EdmException {
-
-      if (entitySetView.getOrderBy() != null) {
-
-        return ODataExpressionParser.parseToJPAOrderByExpression(entitySetView.getOrderBy(), getJPAEntityAlias());
-
-      } else if (entitySetView.getTop() != null || entitySetView.getSkip() != null) {
-
-        return ODataExpressionParser.parseKeyPropertiesToJPAOrderByExpression(entitySetView.getTargetEntitySet()
-            .getEntityType().getKeyProperties(), getJPAEntityAlias());
-      } else {
-        return null;
-      }
-
-    }
-
-    /*
-     * Generate Where Clause Expression
-     */
-    protected String generateWhereExpression() throws ODataException {
-      if (entitySetView.getFilter() != null) {
-        return ODataExpressionParser.parseToJPAWhereExpression(entitySetView.getFilter(), getJPAEntityAlias());
-      }
-      return null;
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleContext.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleContext.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleContext.java
deleted file mode 100644
index 9d2884d..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleContext.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.EdmEntityType;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmMapping;
-import org.apache.olingo.odata2.api.uri.KeyPredicate;
-import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo;
-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.jpql.JPQLContext;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLSelectSingleContextView;
-
-public class JPQLSelectSingleContext extends JPQLContext implements JPQLSelectSingleContextView {
-
-  private String selectExpression;
-  private List<KeyPredicate> keyPredicates;
-
-  protected void setKeyPredicates(final List<KeyPredicate> keyPredicates) {
-    this.keyPredicates = keyPredicates;
-  }
-
-  @Override
-  public List<KeyPredicate> getKeyPredicates() {
-    return keyPredicates;
-  }
-
-  protected final void setSelectExpression(final String selectExpression) {
-    this.selectExpression = selectExpression;
-  }
-
-  @Override
-  public String getSelectExpression() {
-    return selectExpression;
-  }
-
-  public class JPQLSelectSingleContextBuilder extends
-      org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContext.JPQLContextBuilder {
-
-    protected GetEntityUriInfo entityView;
-
-    @Override
-    public JPQLContext build() throws ODataJPAModelException, ODataJPARuntimeException {
-      if (entityView != null) {
-
-        try {
-
-          setType(JPQLContextType.SELECT_SINGLE);
-
-          EdmEntityType entityType = entityView.getTargetEntitySet().getEntityType();
-          EdmMapping mapping = entityType.getMapping();
-          if (mapping != null) {
-            setJPAEntityName(mapping.getInternalName());
-          } else {
-            setJPAEntityName(entityType.getName());
-          }
-
-          setJPAEntityAlias(generateJPAEntityAlias());
-
-          setKeyPredicates(entityView.getKeyPredicates());
-
-          setSelectExpression(generateSelectExpression());
-
-        } catch (EdmException e) {
-          throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
-        }
-
-      }
-
-      return JPQLSelectSingleContext.this;
-
-    }
-
-    @Override
-    protected void setResultsView(final Object resultsView) {
-      if (resultsView instanceof GetEntityUriInfo) {
-        entityView = (GetEntityUriInfo) resultsView;
-      }
-
-    }
-
-    /*
-     * Generate Select Clause
-     */
-    protected String generateSelectExpression() throws EdmException {
-      return getJPAEntityAlias();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleStatementBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleStatementBuilder.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleStatementBuilder.java
deleted file mode 100644
index 06e2444..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectSingleStatementBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLSelectSingleContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement.JPQLStatementBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.ODataExpressionParser;
-
-public class JPQLSelectSingleStatementBuilder extends JPQLStatementBuilder {
-
-  JPQLStatement jpqlStatement;
-  private JPQLSelectSingleContextView context;
-
-  public JPQLSelectSingleStatementBuilder(final JPQLContextView context) {
-    this.context = (JPQLSelectSingleContextView) context;
-  }
-
-  @Override
-  public JPQLStatement build() throws ODataJPARuntimeException {
-    jpqlStatement = createStatement(createJPQLQuery());
-    return jpqlStatement;
-
-  }
-
-  private String createJPQLQuery() throws ODataJPARuntimeException {
-
-    StringBuilder jpqlQuery = new StringBuilder();
-    String tableAlias = context.getJPAEntityAlias();
-    String fromClause = context.getJPAEntityName() + JPQLStatement.DELIMITER.SPACE + tableAlias;
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.SELECT).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(JPQLStatement.KEYWORD.FROM).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(fromClause);
-
-    if (context.getKeyPredicates() != null && context.getKeyPredicates().size() > 0) {
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.KEYWORD.WHERE).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(ODataExpressionParser
-          .parseKeyPredicates(context.getKeyPredicates(), context.getJPAEntityAlias()));
-    }
-
-    return jpqlQuery.toString();
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectStatementBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectStatementBuilder.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectStatementBuilder.java
deleted file mode 100644
index 22059f1..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/jpql/JPQLSelectStatementBuilder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.jpql;
-
-import java.util.Iterator;
-import java.util.Map.Entry;
-
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextType;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLSelectContextView;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement;
-import org.apache.olingo.odata2.processor.api.jpa.jpql.JPQLStatement.JPQLStatementBuilder;
-
-public class JPQLSelectStatementBuilder extends JPQLStatementBuilder {
-
-  JPQLStatement jpqlStatement;
-  private JPQLSelectContextView context;
-
-  public JPQLSelectStatementBuilder(final JPQLContextView context) {
-    this.context = (JPQLSelectContextView) context;
-  }
-
-  @Override
-  public JPQLStatement build() throws ODataJPARuntimeException {
-    jpqlStatement = createStatement(createJPQLQuery());
-    return jpqlStatement;
-
-  }
-
-  private String createJPQLQuery() throws ODataJPARuntimeException {
-
-    StringBuilder jpqlQuery = new StringBuilder();
-    String tableAlias = context.getJPAEntityAlias();
-    String fromClause = context.getJPAEntityName() + JPQLStatement.DELIMITER.SPACE + tableAlias;
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.SELECT).append(JPQLStatement.DELIMITER.SPACE);
-    if (context.getType().equals(JPQLContextType.SELECT_COUNT)) { // $COUNT
-      jpqlQuery.append(JPQLStatement.KEYWORD.COUNT).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.DELIMITER.PARENTHESIS_LEFT).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.DELIMITER.PARENTHESIS_RIGHT).append(JPQLStatement.DELIMITER.SPACE);
-    } else {// Normal
-      jpqlQuery.append(context.getSelectExpression()).append(JPQLStatement.DELIMITER.SPACE);
-    }
-
-    jpqlQuery.append(JPQLStatement.KEYWORD.FROM).append(JPQLStatement.DELIMITER.SPACE);
-    jpqlQuery.append(fromClause);
-
-    if (context.getWhereExpression() != null) {
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.KEYWORD.WHERE).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(context.getWhereExpression());
-    }
-
-    if (context.getOrderByCollection() != null && context.getOrderByCollection().size() > 0) {
-
-      StringBuilder orderByBuilder = new StringBuilder();
-      Iterator<Entry<String, String>> orderItr = context.getOrderByCollection().entrySet().iterator();
-
-      int i = 0;
-
-      while (orderItr.hasNext()) {
-        if (i != 0) {
-          orderByBuilder.append(JPQLStatement.DELIMITER.SPACE).append(JPQLStatement.DELIMITER.COMMA).append(
-              JPQLStatement.DELIMITER.SPACE);
-        }
-        Entry<String, String> entry = orderItr.next();
-        orderByBuilder.append(entry.getKey()).append(JPQLStatement.DELIMITER.SPACE);
-        orderByBuilder.append(entry.getValue());
-        i++;
-      }
-      jpqlQuery.append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(JPQLStatement.KEYWORD.ORDERBY).append(JPQLStatement.DELIMITER.SPACE);
-      jpqlQuery.append(orderByBuilder);
-    }
-
-    return jpqlQuery.toString();
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociation.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociation.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociation.java
deleted file mode 100644
index aa10ef8..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociation.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.provider.Association;
-import org.apache.olingo.odata2.api.edm.provider.AssociationEnd;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-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.model.JPAEdmAssociationEndView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmReferentialConstraintView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmAssociation extends JPAEdmBaseViewImpl implements JPAEdmAssociationView {
-
-  private JPAEdmAssociationEndView associationEndView;
-
-  private Association currentAssociation;
-  private List<Association> consistentAssociatonList;
-  private HashMap<String, Association> associationMap;
-  private HashMap<String, JPAEdmAssociationEndView> associationEndMap;
-  private List<JPAEdmReferentialConstraintView> inconsistentRefConstraintViewList;
-  private int numberOfSimilarEndPoints;
-
-  public JPAEdmAssociation(final JPAEdmAssociationEndView associationEndview,
-      final JPAEdmEntityTypeView entityTypeView, final JPAEdmPropertyView propertyView, final int value) {
-    super(associationEndview);
-    associationEndView = associationEndview;
-    numberOfSimilarEndPoints = value;
-    init();
-  }
-
-  public JPAEdmAssociation(final JPAEdmSchemaView view) {
-    super(view);
-    init();
-  }
-
-  private void init() {
-    isConsistent = false;
-    consistentAssociatonList = new ArrayList<Association>();
-    inconsistentRefConstraintViewList = new LinkedList<JPAEdmReferentialConstraintView>();
-    associationMap = new HashMap<String, Association>();
-    associationEndMap = new HashMap<String, JPAEdmAssociationEndView>();
-  }
-
-  @Override
-  public JPAEdmBuilder getBuilder() {
-    if (builder == null) {
-      builder = new JPAEdmAssociationBuilder();
-    }
-    return builder;
-  }
-
-  @Override
-  public Association getEdmAssociation() {
-    return currentAssociation;
-  }
-
-  @Override
-  public List<Association> getConsistentEdmAssociationList() {
-    return consistentAssociatonList;
-  }
-
-  @Override
-  public Association searchAssociation(final JPAEdmAssociationEndView view) {
-    if (view != null) {
-      for (String key : associationMap.keySet()) {
-        Association association = associationMap.get(key);
-        if (association != null) {
-          if (view.compare(association.getEnd1(), association.getEnd2())) {
-            JPAEdmAssociationEndView associationEnd = associationEndMap.get(association.getName());
-            if (associationEnd.getJoinColumnName() != null && associationEnd.getJoinColumnReferenceColumnName() != null
-                && view.getJoinColumnName() != null && view.getJoinColumnReferenceColumnName() != null) {
-              if (view.getJoinColumnName().equals(associationEnd.getJoinColumnName())
-                  && view.getJoinColumnReferenceColumnName()
-                      .equals(associationEnd.getJoinColumnReferenceColumnName())) {
-                currentAssociation = association;
-                return association;
-              }
-
-            }
-            if (associationEnd.getMappedByName() != null) {
-              if (associationEnd.getMappedByName().equals(view.getOwningPropertyName())) {
-                currentAssociation = association;
-                return association;
-              }
-            }
-            if (associationEnd.getOwningPropertyName() != null) {
-              if (associationEnd.getOwningPropertyName().equals(view.getMappedByName())) {
-                currentAssociation = association;
-                return association;
-              }
-            }
-          }
-        }
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public void addJPAEdmAssociationView(final JPAEdmAssociationView associationView,
-      final JPAEdmAssociationEndView associationEndView) {
-    if (associationView != null) {
-      currentAssociation = associationView.getEdmAssociation();
-      associationMap.put(currentAssociation.getName(), currentAssociation);
-      associationEndMap.put(currentAssociation.getName(), associationEndView);
-      addJPAEdmRefConstraintView(associationView.getJPAEdmReferentialConstraintView());
-    }
-  }
-
-  @Override
-  public void addJPAEdmRefConstraintView(final JPAEdmReferentialConstraintView refView) {
-    if (refView != null && refView.isExists()) {
-      inconsistentRefConstraintViewList.add(refView);
-    }
-  }
-
-  @Override
-  public JPAEdmReferentialConstraintView getJPAEdmReferentialConstraintView() {
-    if (inconsistentRefConstraintViewList.isEmpty()) {
-      return null;
-    }
-    return inconsistentRefConstraintViewList.get(0);
-  }
-
-  private class JPAEdmAssociationBuilder implements JPAEdmBuilder {
-
-    @Override
-    public void build() throws ODataJPAModelException, ODataJPARuntimeException {
-
-      if (associationEndView != null && searchAssociation(associationEndView) == null) {
-        currentAssociation = new Association();
-        currentAssociation.setEnd1(associationEndView.getEdmAssociationEnd1());
-        currentAssociation.setEnd2(associationEndView.getEdmAssociationEnd2());
-
-        JPAEdmNameBuilder.build(JPAEdmAssociation.this, numberOfSimilarEndPoints);
-
-        associationMap.put(currentAssociation.getName(), currentAssociation);
-
-      } else if (!inconsistentRefConstraintViewList.isEmpty()) {
-        int inconsistentRefConstraintViewSize = inconsistentRefConstraintViewList.size();
-        int index = 0;
-        for (int i = 0; i < inconsistentRefConstraintViewSize; i++) {
-          JPAEdmReferentialConstraintView view = inconsistentRefConstraintViewList.get(index);
-
-          if (view.isExists() && !view.isConsistent()) {
-            view.getBuilder().build();
-          }
-          if (view.isConsistent()) {
-            Association newAssociation = new Association();
-            copyAssociation(newAssociation, associationMap.get(view.getEdmRelationShipName()));
-            newAssociation.setReferentialConstraint(view.getEdmReferentialConstraint());
-            consistentAssociatonList.add(newAssociation);
-            associationMap.put(view.getEdmRelationShipName(), newAssociation);
-            inconsistentRefConstraintViewList.remove(index);
-          } else {
-            associationMap.remove(view.getEdmRelationShipName());
-            index++;
-          }
-        }
-      }
-
-      if (associationMap.size() == consistentAssociatonList.size()) {
-        isConsistent = true;
-      } else {
-        for (String key : associationMap.keySet()) {
-          Association association = associationMap.get(key);
-          if (!consistentAssociatonList.contains(association)) {
-            consistentAssociatonList.add(association);
-          }
-        }
-        isConsistent = true;
-      }
-
-    }
-
-    private void copyAssociation(final Association copyToAssociation, final Association copyFromAssociation) {
-      copyToAssociation.setEnd1(copyFromAssociation.getEnd1());
-      copyToAssociation.setEnd2(copyFromAssociation.getEnd2());
-      copyToAssociation.setName(copyFromAssociation.getName());
-      copyToAssociation.setAnnotationAttributes(copyFromAssociation.getAnnotationAttributes());
-      copyToAssociation.setAnnotationElements(copyFromAssociation.getAnnotationElements());
-      copyToAssociation.setDocumentation(copyFromAssociation.getDocumentation());
-
-    }
-  }
-
-  @Override
-  public int getNumberOfAssociationsWithSimilarEndPoints(final JPAEdmAssociationEndView view) {
-    int count = 0;
-    AssociationEnd currentAssociationEnd1 = view.getEdmAssociationEnd1();
-    AssociationEnd currentAssociationEnd2 = view.getEdmAssociationEnd2();
-    AssociationEnd end1 = null;
-    AssociationEnd end2 = null;
-    for (String key : associationMap.keySet()) {
-      Association association = associationMap.get(key);
-      if (association != null) {
-        end1 = association.getEnd1();
-        end2 = association.getEnd2();
-        if ((end1.getType().equals(currentAssociationEnd1.getType()) && end2.getType().equals(
-            currentAssociationEnd2.getType()))
-            || (end1.getType().equals(currentAssociationEnd2.getType()) && end2.getType().equals(
-                currentAssociationEnd1.getType()))) {
-          count++;
-        }
-      }
-    }
-    return count;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationEnd.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationEnd.java
deleted file mode 100644
index 1b648ae..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationEnd.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.model;
-
-import java.lang.reflect.AnnotatedElement;
-
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.metamodel.Attribute.PersistentAttributeType;
-
-import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
-import org.apache.olingo.odata2.api.edm.provider.AssociationEnd;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationEndView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmAssociationEnd extends JPAEdmBaseViewImpl implements JPAEdmAssociationEndView {
-
-  private JPAEdmEntityTypeView entityTypeView = null;
-  private JPAEdmPropertyView propertyView = null;
-  private AssociationEnd currentAssociationEnd1 = null;
-  private AssociationEnd currentAssociationEnd2 = null;
-  private String columnName;
-  private String referencedColumnName;
-  private String mappedBy;
-  private String ownerPropertyName;
-
-  public JPAEdmAssociationEnd(final JPAEdmEntityTypeView entityTypeView, final JPAEdmPropertyView propertyView) {
-    super(entityTypeView);
-    this.entityTypeView = entityTypeView;
-    this.propertyView = propertyView;
-  }
-
-  @Override
-  public JPAEdmBuilder getBuilder() {
-    if (builder == null) {
-      builder = new JPAEdmAssociationEndBuilder();
-    }
-
-    return builder;
-  }
-
-  @Override
-  public AssociationEnd getEdmAssociationEnd1() {
-    return currentAssociationEnd1;
-  }
-
-  @Override
-  public AssociationEnd getEdmAssociationEnd2() {
-    return currentAssociationEnd2;
-  }
-
-  private class JPAEdmAssociationEndBuilder implements JPAEdmBuilder {
-
-    @Override
-    public void build() throws ODataJPAModelException {
-
-      JoinColumn joinColumn = null;
-
-      currentAssociationEnd1 = new AssociationEnd();
-      currentAssociationEnd2 = new AssociationEnd();
-
-      JPAEdmNameBuilder.build(JPAEdmAssociationEnd.this, entityTypeView, propertyView);
-
-      currentAssociationEnd1.setRole(currentAssociationEnd1.getType().getName());
-      currentAssociationEnd2.setRole(currentAssociationEnd2.getType().getName());
-
-      setEdmMultiplicity(propertyView.getJPAAttribute().getPersistentAttributeType());
-
-      AnnotatedElement annotatedElement = (AnnotatedElement) propertyView.getJPAAttribute().getJavaMember();
-      if (annotatedElement != null) {
-        joinColumn = annotatedElement.getAnnotation(JoinColumn.class);
-        if (joinColumn != null) {
-          columnName = joinColumn.name();
-          referencedColumnName = joinColumn.referencedColumnName();
-        }
-
-      }
-      ownerPropertyName = propertyView.getJPAAttribute().getName();
-
-    }
-
-    private void setEdmMultiplicity(final PersistentAttributeType type) {
-      AnnotatedElement annotatedElement = (AnnotatedElement) propertyView.getJPAAttribute().getJavaMember();
-      switch (type) {
-      case ONE_TO_MANY:
-        currentAssociationEnd1.setMultiplicity(EdmMultiplicity.ONE);
-        currentAssociationEnd2.setMultiplicity(EdmMultiplicity.MANY);
-        if (annotatedElement != null) {
-          OneToMany reln = annotatedElement.getAnnotation(OneToMany.class);
-          if (reln != null) {
-            mappedBy = reln.mappedBy();
-          }
-        }
-        break;
-      case MANY_TO_MANY:
-        currentAssociationEnd1.setMultiplicity(EdmMultiplicity.MANY);
-        currentAssociationEnd2.setMultiplicity(EdmMultiplicity.MANY);
-        if (annotatedElement != null) {
-          ManyToMany reln = annotatedElement.getAnnotation(ManyToMany.class);
-          if (reln != null) {
-            mappedBy = reln.mappedBy();
-          }
-        }
-        break;
-      case MANY_TO_ONE:
-        currentAssociationEnd1.setMultiplicity(EdmMultiplicity.MANY);
-        currentAssociationEnd2.setMultiplicity(EdmMultiplicity.ONE);
-        break;
-      case ONE_TO_ONE:
-        currentAssociationEnd1.setMultiplicity(EdmMultiplicity.ONE);
-        currentAssociationEnd2.setMultiplicity(EdmMultiplicity.ONE);
-        if (annotatedElement != null) {
-          OneToOne reln = annotatedElement.getAnnotation(OneToOne.class);
-          if (reln != null) {
-            mappedBy = reln.mappedBy();
-          }
-        }
-        break;
-      default:
-        break;
-      }
-    }
-  }
-
-  @Override
-  public boolean compare(final AssociationEnd end1, final AssociationEnd end2) {
-    if ((end1.getType().equals(currentAssociationEnd1.getType())
-        && end2.getType().equals(currentAssociationEnd2.getType())
-        && end1.getMultiplicity().equals(currentAssociationEnd1.getMultiplicity()) && end2.getMultiplicity().equals(
-        currentAssociationEnd2.getMultiplicity()))
-        || (end1.getType().equals(currentAssociationEnd2.getType())
-            && end2.getType().equals(currentAssociationEnd1.getType())
-            && end1.getMultiplicity().equals(currentAssociationEnd2.getMultiplicity()) && end2.getMultiplicity()
-            .equals(currentAssociationEnd1.getMultiplicity()))) {
-      return true;
-    }
-
-    return false;
-  }
-
-  @Override
-  public String getJoinColumnName() {
-    return columnName;
-  }
-
-  @Override
-  public String getJoinColumnReferenceColumnName() {
-    return referencedColumnName;
-  }
-
-  @Override
-  public String getMappedByName() {
-    return mappedBy;
-  }
-
-  @Override
-  public String getOwningPropertyName() {
-    return ownerPropertyName;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationSet.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationSet.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationSet.java
deleted file mode 100644
index 925a497..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmAssociationSet.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * 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.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.FullQualifiedName;
-import org.apache.olingo.odata2.api.edm.provider.Association;
-import org.apache.olingo.odata2.api.edm.provider.AssociationSet;
-import org.apache.olingo.odata2.api.edm.provider.AssociationSetEnd;
-import org.apache.olingo.odata2.api.edm.provider.EntitySet;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationSetView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntitySetView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmAssociationSet extends JPAEdmBaseViewImpl implements JPAEdmAssociationSetView {
-
-  private JPAEdmSchemaView schemaView;
-  private AssociationSet currentAssociationSet;
-  private List<AssociationSet> associationSetList;
-  private Association currentAssociation;
-
-  public JPAEdmAssociationSet(final JPAEdmSchemaView view) {
-    super(view);
-    schemaView = view;
-  }
-
-  @Override
-  public JPAEdmBuilder getBuilder() {
-    if (builder == null) {
-      builder = new JPAEdmAssociationSetBuilder();
-    }
-
-    return builder;
-  }
-
-  @Override
-  public List<AssociationSet> getConsistentEdmAssociationSetList() {
-    return associationSetList;
-  }
-
-  @Override
-  public AssociationSet getEdmAssociationSet() {
-    return currentAssociationSet;
-  }
-
-  @Override
-  public Association getEdmAssociation() {
-    return currentAssociation;
-  }
-
-  private class JPAEdmAssociationSetBuilder implements JPAEdmBuilder {
-
-    @Override
-    public void build() throws ODataJPAModelException {
-
-      if (associationSetList == null) {
-        associationSetList = new ArrayList<AssociationSet>();
-      }
-
-      JPAEdmAssociationView associationView = schemaView.getJPAEdmAssociationView();
-      JPAEdmEntitySetView entitySetView = schemaView.getJPAEdmEntityContainerView().getJPAEdmEntitySetView();
-
-      List<EntitySet> entitySetList = entitySetView.getConsistentEdmEntitySetList();
-      if (associationView.isConsistent()) {
-        for (Association association : associationView.getConsistentEdmAssociationList()) {
-
-          currentAssociation = association;
-
-          FullQualifiedName fQname =
-              new FullQualifiedName(schemaView.getEdmSchema().getNamespace(), association.getName());
-          currentAssociationSet = new AssociationSet();
-          currentAssociationSet.setAssociation(fQname);
-
-          int endCount = 0;
-          short endFlag = 0;
-          for (EntitySet entitySet : entitySetList) {
-            fQname = entitySet.getEntityType();
-            endFlag = 0;
-            if (fQname.equals(association.getEnd1().getType()) || ++endFlag > 1
-                || fQname.equals(association.getEnd2().getType())) {
-
-              AssociationSetEnd end = new AssociationSetEnd();
-              end.setEntitySet(entitySet.getName());
-              if (endFlag == 0) {
-                currentAssociationSet.setEnd1(end);
-                end.setRole(association.getEnd1().getRole());
-                endCount++;
-              } else {
-                endCount++;
-                currentAssociationSet.setEnd2(end);
-                end.setRole(association.getEnd2().getRole());
-              }
-
-              if (endCount == 2) {
-                break;
-              }
-            }
-          }
-          if (endCount == 2) {
-            JPAEdmNameBuilder.build(JPAEdmAssociationSet.this);
-            associationSetList.add(currentAssociationSet);
-          }
-
-        }
-
-      }
-    }
-  }
-}