[teiid-commits] teiid SVN: r2797 - in trunk: connectors/translator-delegate and 4 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Thu Dec 23 15:46:43 EST 2010
Author: shawkins
Date: 2010-12-23 15:46:42 -0500 (Thu, 23 Dec 2010)
New Revision: 2797
Added:
trunk/api/src/main/java/org/teiid/translator/DelegatingExecutionFactory.java
trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/BaseDelegatingExecutionFactory.java
Removed:
trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/DelegateExecutionFactory.java
trunk/connectors/translator-delegate/src/test/java/org/teiid/translator/delegate/
trunk/connectors/translator-delegate/target/
Modified:
trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
Log:
TEIID-1330 updating the delegation logic
Added: trunk/api/src/main/java/org/teiid/translator/DelegatingExecutionFactory.java
===================================================================
--- trunk/api/src/main/java/org/teiid/translator/DelegatingExecutionFactory.java (rev 0)
+++ trunk/api/src/main/java/org/teiid/translator/DelegatingExecutionFactory.java 2010-12-23 20:46:42 UTC (rev 2797)
@@ -0,0 +1,30 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.translator;
+
+public interface DelegatingExecutionFactory<F, C> {
+
+ String getDelegateName();
+
+ void setDelegate(ExecutionFactory<F, C> delegate);
+}
\ No newline at end of file
Property changes on: trunk/api/src/main/java/org/teiid/translator/DelegatingExecutionFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/BaseDelegatingExecutionFactory.java (from rev 2795, trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/DelegateExecutionFactory.java)
===================================================================
--- trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/BaseDelegatingExecutionFactory.java (rev 0)
+++ trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/BaseDelegatingExecutionFactory.java 2010-12-23 20:46:42 UTC (rev 2797)
@@ -0,0 +1,405 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.translator.delegate;
+
+import java.util.List;
+
+import org.teiid.language.Call;
+import org.teiid.language.Command;
+import org.teiid.language.LanguageFactory;
+import org.teiid.language.QueryExpression;
+import org.teiid.metadata.FunctionMethod;
+import org.teiid.metadata.MetadataFactory;
+import org.teiid.metadata.RuntimeMetadata;
+import org.teiid.translator.DelegatingExecutionFactory;
+import org.teiid.translator.Execution;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.ExecutionFactory;
+import org.teiid.translator.ProcedureExecution;
+import org.teiid.translator.ResultSetExecution;
+import org.teiid.translator.Translator;
+import org.teiid.translator.TranslatorException;
+import org.teiid.translator.TranslatorProperty;
+import org.teiid.translator.TypeFacility;
+import org.teiid.translator.UpdateExecution;
+
+/**
+ * Delegate translator. User can define a {@link ExecutionFactory} of their own and have this translator
+ * delegate all the calls to that class. This will help user to avoid packing their translator in the required
+ * jar packaging and lets the user intercept the calls for their needs. Please note that your 'vdb.xml' file contains
+ * the following xml fragment to configure this translator to delegate calls to custom translator.
+ * <pre>
+ * {@code
+ <translator type="delegate" name="my-translator" description="custom translator">
+ <property value="delegateName" name="name of the delegate instance"/>
+ </translator>
+ }
+ * </pre>
+ *
+ */
+ at Translator(name="delegate", description="A translator that acts as delegator to the another translator")
+public class BaseDelegatingExecutionFactory<F, C> extends ExecutionFactory<F, C> implements DelegatingExecutionFactory<F, C> {
+
+ private String delegateName;
+ private ExecutionFactory<F, C> delegate;
+
+ /**
+ * For testing only
+ */
+ ExecutionFactory<F, C> getDelegate() {
+ return this.delegate;
+ }
+
+ public void setDelegate(ExecutionFactory<F, C> delegate) {
+ this.delegate = delegate;
+ }
+
+ @TranslatorProperty(display="Delegate name", required = true)
+ public String getDelegateName() {
+ return this.delegateName;
+ }
+
+ public void setDelegateName(String delegateName) {
+ this.delegateName = delegateName;
+ }
+
+ @Override
+ public void start() throws TranslatorException {
+ this.delegate.start();
+ }
+
+ @Override
+ public boolean areLobsUsableAfterClose() {
+ return delegate.areLobsUsableAfterClose();
+ }
+ @Override
+ public void closeConnection(C connection, F factory) {
+ delegate.closeConnection(connection, factory);
+ }
+ @Override
+ public Execution createExecution(Command command,
+ ExecutionContext executionContext, RuntimeMetadata metadata,
+ C connection) throws TranslatorException {
+ return delegate.createExecution(command, executionContext, metadata,
+ connection);
+ }
+ @Override
+ public ProcedureExecution createProcedureExecution(Call command,
+ ExecutionContext executionContext, RuntimeMetadata metadata,
+ C connection) throws TranslatorException {
+ return delegate.createProcedureExecution(command, executionContext,
+ metadata, connection);
+ }
+ @Override
+ public ResultSetExecution createResultSetExecution(QueryExpression command,
+ ExecutionContext executionContext, RuntimeMetadata metadata,
+ C connection) throws TranslatorException {
+ return delegate.createResultSetExecution(command, executionContext,
+ metadata, connection);
+ }
+ @Override
+ public UpdateExecution createUpdateExecution(Command command,
+ ExecutionContext executionContext, RuntimeMetadata metadata,
+ C connection) throws TranslatorException {
+ return delegate.createUpdateExecution(command, executionContext,
+ metadata, connection);
+ }
+ @Override
+ public C getConnection(F factory) throws TranslatorException {
+ return delegate.getConnection(factory);
+ }
+ @Override
+ public NullOrder getDefaultNullOrder() {
+ return delegate.getDefaultNullOrder();
+ }
+ @Override
+ public LanguageFactory getLanguageFactory() {
+ return delegate.getLanguageFactory();
+ }
+ @Override
+ public int getMaxFromGroups() {
+ return delegate.getMaxFromGroups();
+ }
+ @Override
+ public int getMaxInCriteriaSize() {
+ return delegate.getMaxInCriteriaSize();
+ }
+ @Override
+ public void getMetadata(MetadataFactory metadataFactory, C conn)
+ throws TranslatorException {
+ delegate.getMetadata(metadataFactory, conn);
+ }
+ @Override
+ public List<FunctionMethod> getPushDownFunctions() {
+ return delegate.getPushDownFunctions();
+ }
+ @Override
+ public List<String> getSupportedFunctions() {
+ return delegate.getSupportedFunctions();
+ }
+ @Override
+ public TypeFacility getTypeFacility() {
+ return delegate.getTypeFacility();
+ }
+ @Override
+ public boolean isImmutable() {
+ return delegate.isImmutable();
+ }
+ @Override
+ public boolean isSourceRequired() {
+ return delegate.isSourceRequired();
+ }
+ @Override
+ public void setImmutable(boolean arg0) {
+ delegate.setImmutable(arg0);
+ }
+ @Override
+ public void setRequiresCriteria(boolean requiresCriteria) {
+ delegate.setRequiresCriteria(requiresCriteria);
+ }
+ @Override
+ public void setSourceRequired(boolean value) {
+ delegate.setSourceRequired(value);
+ }
+ @Override
+ public void setSupportedJoinCriteria(
+ SupportedJoinCriteria supportedJoinCriteria) {
+ delegate.setSupportedJoinCriteria(supportedJoinCriteria);
+ }
+ @Override
+ public void setSupportsFullOuterJoins(boolean supportsFullOuterJoins) {
+ delegate.setSupportsFullOuterJoins(supportsFullOuterJoins);
+ }
+ @Override
+ public void setSupportsInnerJoins(boolean supportsInnerJoins) {
+ delegate.setSupportsInnerJoins(supportsInnerJoins);
+ }
+ @Override
+ public void setSupportsOrderBy(boolean supportsOrderBy) {
+ delegate.setSupportsOrderBy(supportsOrderBy);
+ }
+ @Override
+ public void setSupportsOuterJoins(boolean supportsOuterJoins) {
+ delegate.setSupportsOuterJoins(supportsOuterJoins);
+ }
+ @Override
+ public void setSupportsSelectDistinct(boolean supportsSelectDistinct) {
+ delegate.setSupportsSelectDistinct(supportsSelectDistinct);
+ }
+ @Override
+ public boolean supportsAggregatesAvg() {
+ return delegate.supportsAggregatesAvg();
+ }
+ @Override
+ public boolean supportsAggregatesCount() {
+ return delegate.supportsAggregatesCount();
+ }
+ @Override
+ public boolean supportsAggregatesCountStar() {
+ return delegate.supportsAggregatesCountStar();
+ }
+ @Override
+ public boolean supportsAggregatesDistinct() {
+ return delegate.supportsAggregatesDistinct();
+ }
+ @Override
+ public boolean supportsAggregatesEnhancedNumeric() {
+ return delegate.supportsAggregatesEnhancedNumeric();
+ }
+ @Override
+ public boolean supportsAggregatesMax() {
+ return delegate.supportsAggregatesMax();
+ }
+ @Override
+ public boolean supportsAggregatesMin() {
+ return delegate.supportsAggregatesMin();
+ }
+ @Override
+ public boolean supportsAggregatesSum() {
+ return delegate.supportsAggregatesSum();
+ }
+ @Override
+ public boolean supportsAliasedTable() {
+ return delegate.supportsAliasedTable();
+ }
+ @Override
+ public boolean supportsBatchedUpdates() {
+ return delegate.supportsBatchedUpdates();
+ }
+ @Override
+ public boolean supportsBetweenCriteria() {
+ return delegate.supportsBetweenCriteria();
+ }
+ @Override
+ public boolean supportsBulkUpdate() {
+ return delegate.supportsBulkUpdate();
+ }
+ @Override
+ public boolean supportsCaseExpressions() {
+ return delegate.supportsCaseExpressions();
+ }
+ @Override
+ public boolean supportsCommonTableExpressions() {
+ return delegate.supportsCommonTableExpressions();
+ }
+ @Override
+ public boolean supportsCompareCriteriaEquals() {
+ return delegate.supportsCompareCriteriaEquals();
+ }
+ @Override
+ public boolean supportsCompareCriteriaOrdered() {
+ return delegate.supportsCompareCriteriaOrdered();
+ }
+ @Override
+ public boolean supportsCorrelatedSubqueries() {
+ return delegate.supportsCorrelatedSubqueries();
+ }
+ @Override
+ public boolean supportsExcept() {
+ return delegate.supportsExcept();
+ }
+ @Override
+ public boolean supportsExistsCriteria() {
+ return delegate.supportsExistsCriteria();
+ }
+ @Override
+ public boolean supportsFunctionsInGroupBy() {
+ return delegate.supportsFunctionsInGroupBy();
+ }
+ @Override
+ public boolean supportsGroupBy() {
+ return delegate.supportsGroupBy();
+ }
+ @Override
+ public boolean supportsHaving() {
+ return delegate.supportsHaving();
+ }
+ @Override
+ public boolean supportsInCriteria() {
+ return delegate.supportsInCriteria();
+ }
+ @Override
+ public boolean supportsInCriteriaSubquery() {
+ return delegate.supportsInCriteriaSubquery();
+ }
+ @Override
+ public boolean supportsInlineViews() {
+ return delegate.supportsInlineViews();
+ }
+ @Override
+ public boolean supportsInsertWithIterator() {
+ return delegate.supportsInsertWithIterator();
+ }
+ @Override
+ public boolean supportsInsertWithQueryExpression() {
+ return delegate.supportsInsertWithQueryExpression();
+ }
+ @Override
+ public boolean supportsIntersect() {
+ return delegate.supportsIntersect();
+ }
+ @Override
+ public boolean supportsIsNullCriteria() {
+ return delegate.supportsIsNullCriteria();
+ }
+ @Override
+ public boolean supportsLikeCriteria() {
+ return delegate.supportsLikeCriteria();
+ }
+ @Override
+ public boolean supportsLikeCriteriaEscapeCharacter() {
+ return delegate.supportsLikeCriteriaEscapeCharacter();
+ }
+ @Override
+ public boolean supportsNotCriteria() {
+ return delegate.supportsNotCriteria();
+ }
+ @Override
+ public boolean supportsOrCriteria() {
+ return delegate.supportsOrCriteria();
+ }
+ @Override
+ public boolean supportsOrderByNullOrdering() {
+ return delegate.supportsOrderByNullOrdering();
+ }
+ @Override
+ public boolean supportsOrderByUnrelated() {
+ return delegate.supportsOrderByUnrelated();
+ }
+ @Override
+ public boolean supportsQuantifiedCompareCriteriaAll() {
+ return delegate.supportsQuantifiedCompareCriteriaAll();
+ }
+ @Override
+ public boolean supportsQuantifiedCompareCriteriaSome() {
+ return delegate.supportsQuantifiedCompareCriteriaSome();
+ }
+ @Override
+ public boolean supportsRowLimit() {
+ return delegate.supportsRowLimit();
+ }
+ @Override
+ public boolean supportsRowOffset() {
+ return delegate.supportsRowOffset();
+ }
+ @Override
+ public boolean supportsScalarSubqueries() {
+ return delegate.supportsScalarSubqueries();
+ }
+ @Override
+ public boolean supportsSearchedCaseExpressions() {
+ return delegate.supportsSearchedCaseExpressions();
+ }
+ @Override
+ public boolean supportsSelectExpression() {
+ return delegate.supportsSelectExpression();
+ }
+ @Override
+ public boolean supportsSelfJoins() {
+ return delegate.supportsSelfJoins();
+ }
+ @Override
+ public boolean supportsSetQueryOrderBy() {
+ return delegate.supportsSetQueryOrderBy();
+ }
+ @Override
+ public boolean supportsUnions() {
+ return delegate.supportsUnions();
+ }
+ @Override
+ public String toString() {
+ return delegate.toString();
+ }
+ @Override
+ public boolean useAnsiJoin() {
+ return delegate.useAnsiJoin();
+ }
+ @Override
+ public boolean equals(Object obj) {
+ return delegate.equals(obj);
+ }
+ @Override
+ public int hashCode() {
+ return delegate.hashCode();
+ }
+}
Deleted: trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/DelegateExecutionFactory.java
===================================================================
--- trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/DelegateExecutionFactory.java 2010-12-23 20:05:36 UTC (rev 2796)
+++ trunk/connectors/translator-delegate/src/main/java/org/teiid/translator/delegate/DelegateExecutionFactory.java 2010-12-23 20:46:42 UTC (rev 2797)
@@ -1,399 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.translator.delegate;
-
-import java.util.List;
-
-import org.teiid.language.Call;
-import org.teiid.language.Command;
-import org.teiid.language.LanguageFactory;
-import org.teiid.language.QueryExpression;
-import org.teiid.metadata.MetadataFactory;
-import org.teiid.metadata.RuntimeMetadata;
-import org.teiid.translator.Execution;
-import org.teiid.translator.ExecutionContext;
-import org.teiid.translator.ExecutionFactory;
-import org.teiid.translator.ProcedureExecution;
-import org.teiid.translator.ResultSetExecution;
-import org.teiid.translator.Translator;
-import org.teiid.translator.TranslatorException;
-import org.teiid.translator.TranslatorProperty;
-import org.teiid.translator.TypeFacility;
-import org.teiid.translator.UpdateExecution;
-
-/**
- * Delegate translator. User can define a {@link ExecutionFactory} of their own and have this translator
- * delegate all the calls to that class. This will help user to avoid packing their translator in the required
- * jar packaging and lets the user intercept the calls for their needs. Please note that your 'vdb.xml' file contains
- * the following xml fragment to configure this translator to delegate calls to custom translator.
- * <pre>
- * {@code
- <translator type="delegate" name="my-translator" description="custom translator">
- <property value="delegateClassName" name="name of class that implements custom execution factory"/>
- </translator>
- }
- * </pre>
- *
- */
- at Translator(name="delegate", description="A translator that acts as delegator to the another translator")
-public class DelegateExecutionFactory<F, C> extends ExecutionFactory {
-
- private String delegateClassName;
- private ExecutionFactory delegate;
-
- @TranslatorProperty(display="Delegatee class name", required = true)
- public String getDelegateClassName() {
- return this.delegateClassName;
- }
-
- public void setDelegateClassName(String delegateName) {
- this.delegateClassName = delegateName;
- }
-
- /**
- * For testing only
- */
- ExecutionFactory getDelegatee() {
- return this.delegate;
- }
-
- @Override
- public void start() throws TranslatorException {
- this.delegate = getInstance(ExecutionFactory.class, this.delegateClassName,null, null);
- this.delegate.start();
- }
- @Override
- public boolean areLobsUsableAfterClose() {
- return delegate.areLobsUsableAfterClose();
- }
- @Override
- public void closeConnection(Object connection, Object factory) {
- delegate.closeConnection(connection, factory);
- }
- @Override
- public Execution createExecution(Command command,
- ExecutionContext executionContext, RuntimeMetadata metadata,
- Object connection) throws TranslatorException {
- return delegate.createExecution(command, executionContext, metadata,
- connection);
- }
- @Override
- public ProcedureExecution createProcedureExecution(Call command,
- ExecutionContext executionContext, RuntimeMetadata metadata,
- Object connection) throws TranslatorException {
- return delegate.createProcedureExecution(command, executionContext,
- metadata, connection);
- }
- @Override
- public ResultSetExecution createResultSetExecution(QueryExpression command,
- ExecutionContext executionContext, RuntimeMetadata metadata,
- Object connection) throws TranslatorException {
- return delegate.createResultSetExecution(command, executionContext,
- metadata, connection);
- }
- @Override
- public UpdateExecution createUpdateExecution(Command command,
- ExecutionContext executionContext, RuntimeMetadata metadata,
- Object connection) throws TranslatorException {
- return delegate.createUpdateExecution(command, executionContext,
- metadata, connection);
- }
- @Override
- public Object getConnection(Object factory) throws TranslatorException {
- return delegate.getConnection(factory);
- }
- @Override
- public NullOrder getDefaultNullOrder() {
- return delegate.getDefaultNullOrder();
- }
- @Override
- public LanguageFactory getLanguageFactory() {
- return delegate.getLanguageFactory();
- }
- @Override
- public int getMaxFromGroups() {
- return delegate.getMaxFromGroups();
- }
- @Override
- public int getMaxInCriteriaSize() {
- return delegate.getMaxInCriteriaSize();
- }
- @Override
- public void getMetadata(MetadataFactory metadataFactory, Object conn)
- throws TranslatorException {
- delegate.getMetadata(metadataFactory, conn);
- }
- @Override
- public List getPushDownFunctions() {
- return delegate.getPushDownFunctions();
- }
- @Override
- public List getSupportedFunctions() {
- return delegate.getSupportedFunctions();
- }
- @Override
- public TypeFacility getTypeFacility() {
- return delegate.getTypeFacility();
- }
- @Override
- public boolean isImmutable() {
- return delegate.isImmutable();
- }
- @Override
- public boolean isSourceRequired() {
- return delegate.isSourceRequired();
- }
- @Override
- public void setImmutable(boolean arg0) {
- delegate.setImmutable(arg0);
- }
- @Override
- public void setRequiresCriteria(boolean requiresCriteria) {
- delegate.setRequiresCriteria(requiresCriteria);
- }
- @Override
- public void setSourceRequired(boolean value) {
- delegate.setSourceRequired(value);
- }
- @Override
- public void setSupportedJoinCriteria(
- SupportedJoinCriteria supportedJoinCriteria) {
- delegate.setSupportedJoinCriteria(supportedJoinCriteria);
- }
- @Override
- public void setSupportsFullOuterJoins(boolean supportsFullOuterJoins) {
- delegate.setSupportsFullOuterJoins(supportsFullOuterJoins);
- }
- @Override
- public void setSupportsInnerJoins(boolean supportsInnerJoins) {
- delegate.setSupportsInnerJoins(supportsInnerJoins);
- }
- @Override
- public void setSupportsOrderBy(boolean supportsOrderBy) {
- delegate.setSupportsOrderBy(supportsOrderBy);
- }
- @Override
- public void setSupportsOuterJoins(boolean supportsOuterJoins) {
- delegate.setSupportsOuterJoins(supportsOuterJoins);
- }
- @Override
- public void setSupportsSelectDistinct(boolean supportsSelectDistinct) {
- delegate.setSupportsSelectDistinct(supportsSelectDistinct);
- }
- @Override
- public boolean supportsAggregatesAvg() {
- return delegate.supportsAggregatesAvg();
- }
- @Override
- public boolean supportsAggregatesCount() {
- return delegate.supportsAggregatesCount();
- }
- @Override
- public boolean supportsAggregatesCountStar() {
- return delegate.supportsAggregatesCountStar();
- }
- @Override
- public boolean supportsAggregatesDistinct() {
- return delegate.supportsAggregatesDistinct();
- }
- @Override
- public boolean supportsAggregatesEnhancedNumeric() {
- return delegate.supportsAggregatesEnhancedNumeric();
- }
- @Override
- public boolean supportsAggregatesMax() {
- return delegate.supportsAggregatesMax();
- }
- @Override
- public boolean supportsAggregatesMin() {
- return delegate.supportsAggregatesMin();
- }
- @Override
- public boolean supportsAggregatesSum() {
- return delegate.supportsAggregatesSum();
- }
- @Override
- public boolean supportsAliasedTable() {
- return delegate.supportsAliasedTable();
- }
- @Override
- public boolean supportsBatchedUpdates() {
- return delegate.supportsBatchedUpdates();
- }
- @Override
- public boolean supportsBetweenCriteria() {
- return delegate.supportsBetweenCriteria();
- }
- @Override
- public boolean supportsBulkUpdate() {
- return delegate.supportsBulkUpdate();
- }
- @Override
- public boolean supportsCaseExpressions() {
- return delegate.supportsCaseExpressions();
- }
- @Override
- public boolean supportsCommonTableExpressions() {
- return delegate.supportsCommonTableExpressions();
- }
- @Override
- public boolean supportsCompareCriteriaEquals() {
- return delegate.supportsCompareCriteriaEquals();
- }
- @Override
- public boolean supportsCompareCriteriaOrdered() {
- return delegate.supportsCompareCriteriaOrdered();
- }
- @Override
- public boolean supportsCorrelatedSubqueries() {
- return delegate.supportsCorrelatedSubqueries();
- }
- @Override
- public boolean supportsExcept() {
- return delegate.supportsExcept();
- }
- @Override
- public boolean supportsExistsCriteria() {
- return delegate.supportsExistsCriteria();
- }
- @Override
- public boolean supportsFunctionsInGroupBy() {
- return delegate.supportsFunctionsInGroupBy();
- }
- @Override
- public boolean supportsGroupBy() {
- return delegate.supportsGroupBy();
- }
- @Override
- public boolean supportsHaving() {
- return delegate.supportsHaving();
- }
- @Override
- public boolean supportsInCriteria() {
- return delegate.supportsInCriteria();
- }
- @Override
- public boolean supportsInCriteriaSubquery() {
- return delegate.supportsInCriteriaSubquery();
- }
- @Override
- public boolean supportsInlineViews() {
- return delegate.supportsInlineViews();
- }
- @Override
- public boolean supportsInsertWithIterator() {
- return delegate.supportsInsertWithIterator();
- }
- @Override
- public boolean supportsInsertWithQueryExpression() {
- return delegate.supportsInsertWithQueryExpression();
- }
- @Override
- public boolean supportsIntersect() {
- return delegate.supportsIntersect();
- }
- @Override
- public boolean supportsIsNullCriteria() {
- return delegate.supportsIsNullCriteria();
- }
- @Override
- public boolean supportsLikeCriteria() {
- return delegate.supportsLikeCriteria();
- }
- @Override
- public boolean supportsLikeCriteriaEscapeCharacter() {
- return delegate.supportsLikeCriteriaEscapeCharacter();
- }
- @Override
- public boolean supportsNotCriteria() {
- return delegate.supportsNotCriteria();
- }
- @Override
- public boolean supportsOrCriteria() {
- return delegate.supportsOrCriteria();
- }
- @Override
- public boolean supportsOrderByNullOrdering() {
- return delegate.supportsOrderByNullOrdering();
- }
- @Override
- public boolean supportsOrderByUnrelated() {
- return delegate.supportsOrderByUnrelated();
- }
- @Override
- public boolean supportsQuantifiedCompareCriteriaAll() {
- return delegate.supportsQuantifiedCompareCriteriaAll();
- }
- @Override
- public boolean supportsQuantifiedCompareCriteriaSome() {
- return delegate.supportsQuantifiedCompareCriteriaSome();
- }
- @Override
- public boolean supportsRowLimit() {
- return delegate.supportsRowLimit();
- }
- @Override
- public boolean supportsRowOffset() {
- return delegate.supportsRowOffset();
- }
- @Override
- public boolean supportsScalarSubqueries() {
- return delegate.supportsScalarSubqueries();
- }
- @Override
- public boolean supportsSearchedCaseExpressions() {
- return delegate.supportsSearchedCaseExpressions();
- }
- @Override
- public boolean supportsSelectExpression() {
- return delegate.supportsSelectExpression();
- }
- @Override
- public boolean supportsSelfJoins() {
- return delegate.supportsSelfJoins();
- }
- @Override
- public boolean supportsSetQueryOrderBy() {
- return delegate.supportsSetQueryOrderBy();
- }
- @Override
- public boolean supportsUnions() {
- return delegate.supportsUnions();
- }
- @Override
- public String toString() {
- return delegate.toString();
- }
- @Override
- public boolean useAnsiJoin() {
- return delegate.useAnsiJoin();
- }
- @Override
- public boolean equals(Object obj) {
- return delegate.equals(obj);
- }
- @Override
- public int hashCode() {
- return delegate.hashCode();
- }
-}
Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java 2010-12-23 20:05:36 UTC (rev 2796)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java 2010-12-23 20:46:42 UTC (rev 2797)
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -52,6 +53,7 @@
import org.teiid.metadata.index.IndexMetadataFactory;
import org.teiid.query.metadata.TransformationMetadata.Resource;
import org.teiid.runtime.RuntimePlugin;
+import org.teiid.translator.DelegatingExecutionFactory;
import org.teiid.translator.ExecutionFactory;
import org.teiid.translator.TranslatorException;
@@ -176,27 +178,41 @@
}
String name = model.getSourceTranslatorName(source);
- Translator translator = repo.getTranslatorMetaData(name);
- if (translator == null) {
- translator = this.translatorRepository.getTranslatorMetaData(name);
- }
- if (translator == null) {
- throw new DeploymentException(RuntimePlugin.Util.getString("translator_not_found", deployment.getName(), deployment.getVersion(), name)); //$NON-NLS-1$
- }
-
- ExecutionFactory<Object, Object> ef = map.get(translator);
- if ( ef == null) {
- ef = TranslatorUtil.buildExecutionFactory(translator);
- map.put(translator, ef);
- }
-
ConnectorManager cm = new ConnectorManager(name, model.getSourceConnectionJndiName(source));
+ ExecutionFactory<Object, Object> ef = getExecutionFactory(name, repo, deployment, map, new HashSet<String>());
cm.setExecutionFactory(ef);
cm.setModelName(model.getName());
cmr.addConnectorManager(source, cm);
}
}
}
+
+ private ExecutionFactory<Object, Object> getExecutionFactory(String name, TranslatorRepository repo, VDBMetaData deployment, IdentityHashMap<Translator, ExecutionFactory<Object, Object>> map, HashSet<String> building) throws DeploymentException {
+ if (!building.add(name)) {
+ throw new DeploymentException(RuntimePlugin.Util.getString("recursive_delegation", deployment.getName(), deployment.getVersion(), building)); //$NON-NLS-1$
+ }
+ Translator translator = repo.getTranslatorMetaData(name);
+ if (translator == null) {
+ translator = this.translatorRepository.getTranslatorMetaData(name);
+ }
+ if (translator == null) {
+ throw new DeploymentException(RuntimePlugin.Util.getString("translator_not_found", deployment.getName(), deployment.getVersion(), name)); //$NON-NLS-1$
+ }
+ ExecutionFactory<Object, Object> ef = map.get(translator);
+ if ( ef == null) {
+ ef = TranslatorUtil.buildExecutionFactory(translator);
+ if (ef instanceof DelegatingExecutionFactory) {
+ DelegatingExecutionFactory delegator = (DelegatingExecutionFactory)ef;
+ String delegateName = delegator.getDelegateName();
+ if (delegateName != null) {
+ ExecutionFactory<Object, Object> delegate = getExecutionFactory(delegateName, repo, deployment, map, building);
+ ((DelegatingExecutionFactory) ef).setDelegate(delegate);
+ }
+ }
+ map.put(translator, ef);
+ }
+ return ef;
+ }
private boolean validateSources(ConnectorManagerRepository cmr, VDBMetaData deployment) {
boolean valid = true;
Modified: trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
===================================================================
--- trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties 2010-12-23 20:05:36 UTC (rev 2796)
+++ trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties 2010-12-23 20:46:42 UTC (rev 2797)
@@ -67,6 +67,7 @@
failed_matadata_load=Failed to load metadata for VDB {0}.{1}
vdb_not_found=VDB {0}.{1} not found deployed.
translator_not_found=For {0}.{1} VDB, Translator "{2}" not found.
+recursive_delegation=For {0}.{1} VDB, recursive delegation {2} found.
datasource_not_found=For {0}.{1} VDB, Data Source "{2}" not found.
vdb_activated={0}.{1} status has been changed to active
vdb_inactivated={0}.{1} status has been changed to inactive. Check the required translators and data sources!
More information about the teiid-commits
mailing list