You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by le...@apache.org on 2015/09/08 06:25:18 UTC
svn commit: r1701724 [2/6] - in /oodt/branches/avro_rpc: ./
app/fmbrowser/src/main/java/org/apache/oodt/cas/filemgr/browser/model/
crawler/src/main/java/org/apache/oodt/cas/crawl/action/
crawler/src/main/java/org/apache/oodt/cas/crawl/comparator/ filem...
Added: oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java
URL: http://svn.apache.org/viewvc/oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java?rev=1701724&view=auto
==============================================================================
--- oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java (added)
+++ oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerClient.java Tue Sep 8 04:25:17 2015
@@ -0,0 +1,746 @@
+/*
+ * 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.oodt.cas.filemgr.system;
+
+import org.apache.avro.AvroRemoteException;
+import org.apache.avro.ipc.NettyTransceiver;
+import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.specific.SpecificRequestor;
+import org.apache.oodt.cas.filemgr.datatransfer.DataTransfer;
+import org.apache.oodt.cas.filemgr.structs.Element;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.FileTransferStatus;
+import org.apache.oodt.cas.filemgr.structs.ProductPage;
+import org.apache.oodt.cas.filemgr.structs.ProductType;
+import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.filemgr.structs.Query;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroFileManager;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroFileTransferStatus;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroProduct;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroElement;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroQueryResult;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroProductType;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroReference;
+import org.apache.oodt.cas.filemgr.structs.exceptions.RepositoryManagerException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.DataTransferException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.ValidationLayerException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.VersioningException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.ConnectionException;
+import org.apache.oodt.cas.filemgr.structs.query.ComplexQuery;
+import org.apache.oodt.cas.filemgr.structs.query.QueryResult;
+import org.apache.oodt.cas.filemgr.util.AvroTypeFactory;
+import org.apache.oodt.cas.filemgr.util.GenericFileManagerObjectFactory;
+import org.apache.oodt.cas.filemgr.versioning.Versioner;
+import org.apache.oodt.cas.metadata.Metadata;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author radu
+ *
+ * <p>Implementaion of FileManagerClient that uses apache avro-ipc API.</p>
+ */
+public class AvroFileManagerClient implements FileManagerClient {
+
+ private static Logger LOG = Logger.getLogger(AvroFileManagerClient.class
+ .getName());
+
+ /* Avro-Rpc client */
+ Transceiver client;
+
+ /* proxy for the server */
+ AvroFileManager proxy;
+
+ /* URL where the fileManager is */
+ private URL fileManagerUrl;
+
+ /*DataTransfer class for transferring products*/
+ private DataTransfer dataTransfer = null;
+
+ public AvroFileManagerClient(final URL url) throws ConnectionException {
+ this(url, true);
+ }
+
+ public AvroFileManagerClient(final URL url, boolean testConnection) throws ConnectionException {
+ //setup the and start the client
+ try {
+ this.fileManagerUrl = url;
+ InetSocketAddress inetSocketAddress = new InetSocketAddress(url.getHost(),this.fileManagerUrl.getPort());
+ this.client = new NettyTransceiver(inetSocketAddress);
+ proxy = (AvroFileManager) SpecificRequestor.getClient(AvroFileManager.class, client);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ LOG.log(Level.WARNING, "IOException when connecting to filemgr: ["
+ + this.fileManagerUrl + "]");
+ }
+
+ if (testConnection && !isAlive()) {
+ throw new ConnectionException("Exception connecting to filemgr: ["
+ + this.fileManagerUrl + "]");
+ }
+ }
+
+ @Override
+ public boolean refreshConfigAndPolicy() {
+ boolean success = false;
+
+ try {
+ success = proxy.refreshConfigAndPolicy();
+ } catch (AvroRemoteException e) {
+ LOG.log(Level.WARNING, "AvroRemoteException when connecting to filemgr: ["
+ + this.fileManagerUrl + "]");
+ success = false;
+ }
+
+ return success;
+ }
+
+ @Override
+ public boolean isAlive() {
+ boolean success;
+
+ try {
+ if(proxy != null)
+ success = proxy.isAlive();
+ else return false;
+ } catch (AvroRemoteException e) {
+ LOG.log(Level.WARNING, "AvroRemoteException when connecting to filemgr: ["
+ + this.fileManagerUrl + "]");
+ success = false;
+ }
+
+ return success;
+ }
+
+ @Override
+ public boolean transferringProduct(Product product) throws DataTransferException {
+ boolean success;
+
+ try {
+ success = proxy.transferringProduct(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ e.printStackTrace();
+ throw new DataTransferException(e.getMessage());
+ }
+
+ return success;
+ }
+
+ @Override
+ public boolean removeProductTransferStatus(Product product) throws DataTransferException {
+ boolean success;
+ try {
+ success = proxy.removeProductTransferStatus(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ return success;
+ }
+
+ @Override
+ public boolean isTransferComplete(Product product) throws DataTransferException {
+ boolean success;
+ try {
+ success = this.proxy.isTransferComplete(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ return success;
+ }
+
+ @Override
+ public boolean moveProduct(Product product, String newPath) throws DataTransferException {
+ boolean success;
+ try {
+ success = this.proxy.moveProduct(AvroTypeFactory.getAvroProduct(product), newPath);
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ return success;
+ }
+
+ @Override
+ public boolean modifyProduct(Product product) throws CatalogException {
+ boolean success;
+ try {
+ success = this.proxy.modifyProduct(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return success;
+ }
+
+ @Override
+ public boolean removeProduct(Product product) throws CatalogException {
+ boolean success;
+ try {
+ success = this.proxy.removeProduct(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return success;
+ }
+
+ @Override
+ public FileTransferStatus getCurrentFileTransfer() throws DataTransferException {
+ try {
+ return AvroTypeFactory.getFileTransferStatus(this.proxy.getCurrentFileTransfer());
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<FileTransferStatus> getCurrentFileTransfers() throws DataTransferException {
+ List<FileTransferStatus> fileTransferStatuses = new ArrayList<FileTransferStatus>();
+ try {
+ for (AvroFileTransferStatus afts : this.proxy.getCurrentFileTransfers()) {
+ fileTransferStatuses.add(AvroTypeFactory.getFileTransferStatus(afts));
+ }
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ return fileTransferStatuses;
+ }
+
+ @Override
+ public double getProductPctTransferred(Product product) throws DataTransferException {
+ try {
+ return this.proxy.getProductPctTransferred(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ }
+
+ @Override
+ public double getRefPctTransferred(Reference reference) throws DataTransferException {
+ try {
+ return this.proxy.getRefPctTransferred(AvroTypeFactory.getAvroReference(reference));
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductPage pagedQuery(Query query, ProductType type, int pageNum) throws CatalogException {
+ try {
+
+ return AvroTypeFactory.getProductPage(this.proxy.pagedQuery(
+ AvroTypeFactory.getAvroQuery(query),
+ AvroTypeFactory.getAvroProductType(type),
+ pageNum
+ ));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductPage getFirstPage(ProductType type) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProductPage(this.proxy.getFirstPage(AvroTypeFactory.getAvroProductType(type)));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductPage getLastPage(ProductType type) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProductPage(this.proxy.getLastPage(AvroTypeFactory.getAvroProductType(type)));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductPage getNextPage(ProductType type, ProductPage currPage) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProductPage(this.proxy.getNextPage(
+ AvroTypeFactory.getAvroProductType(type),
+ AvroTypeFactory.getAvroProductPage(currPage)
+ ));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductPage getPrevPage(ProductType type, ProductPage currPage) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProductPage(this.proxy.getPrevPage(
+ AvroTypeFactory.getAvroProductType(type),
+ AvroTypeFactory.getAvroProductPage(currPage)
+ ));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String addProductType(ProductType type) throws RepositoryManagerException {
+ try {
+ return this.proxy.addProductType(AvroTypeFactory.getAvroProductType(type));
+ } catch (AvroRemoteException e) {
+ throw new RepositoryManagerException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean hasProduct(String productName) throws CatalogException {
+ try {
+ return this.proxy.hasProduct(productName);
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public int getNumProducts(ProductType type) throws CatalogException {
+ try {
+ return this.proxy.getNumProducts(AvroTypeFactory.getAvroProductType(type));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<Product> getTopNProducts(int n) throws CatalogException {
+ List<Product> products = new ArrayList<Product>();
+ try {
+ for (AvroProduct p : this.proxy.getTopNProducts(n)) {
+ products.add(AvroTypeFactory.getProduct(p));
+ }
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return products;
+ }
+
+ @Override
+ public List<Product> getTopNProducts(int n, ProductType type) throws CatalogException {
+ List<Product> products = new ArrayList<Product>();
+ try {
+ for (AvroProduct p : this.proxy.getTopNProductsByProductType(n, AvroTypeFactory.getAvroProductType(type))) {
+ products.add(AvroTypeFactory.getProduct(p));
+ }
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return products;
+ }
+
+ @Override
+ public void setProductTransferStatus(Product product) throws CatalogException {
+ try {
+ this.proxy.setProductTransferStatus(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void addProductReferences(Product product) throws CatalogException {
+ try {
+ this.proxy.addProductReferences(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void addMetadata(Product product, Metadata metadata) throws CatalogException {
+ try {
+ this.proxy.addMetadata(AvroTypeFactory.getAvroProduct(product),
+ AvroTypeFactory.getAvroMetadata(metadata));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+
+ }
+
+ @Override
+ public boolean updateMetadata(Product product, Metadata met) throws CatalogException {
+ try {
+ return this.proxy.updateMetadata(
+ AvroTypeFactory.getAvroProduct(product),
+ AvroTypeFactory.getAvroMetadata(met)
+ );
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String catalogProduct(Product product) throws CatalogException {
+ try {
+ return this.proxy.catalogProduct(AvroTypeFactory.getAvroProduct(product));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public Metadata getMetadata(Product product) throws CatalogException {
+ try {
+ return AvroTypeFactory.getMetadata(this.proxy.getMetadata(AvroTypeFactory.getAvroProduct(product)));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public Metadata getReducedMetadata(Product product, List<?> elements) throws CatalogException {
+ try {
+ return AvroTypeFactory.getMetadata(
+ this.proxy.getReducedMetadata(AvroTypeFactory.getAvroProduct(product), (List<String>) elements));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean removeFile(String filePath) throws DataTransferException {
+ try {
+ return this.proxy.removeFile(filePath);
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ }
+
+ @Override
+ public byte[] retrieveFile(String filePath, int offset, int numBytes) throws DataTransferException {
+ try {
+ return this.proxy.retrieveFile(filePath, offset, numBytes).array();
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void transferFile(String filePath, byte[] fileData, int offset, int numBytes) throws DataTransferException {
+ try {
+ this.proxy.transferFile(filePath, ByteBuffer.wrap(fileData), offset, numBytes);
+ } catch (AvroRemoteException e) {
+ throw new DataTransferException(e.getMessage());
+ }
+
+ }
+
+ @Override
+ public List<Product> getProductsByProductType(ProductType type) throws CatalogException {
+ List<Product> products = new ArrayList<Product>();
+ try {
+ for (AvroProduct ap : this.proxy.getProductsByProductType(AvroTypeFactory.getAvroProductType(type))) {
+ products.add(AvroTypeFactory.getProduct(ap));
+ }
+ return products;
+
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+
+ }
+
+ @Override
+ public List<Element> getElementsByProductType(ProductType type) throws ValidationLayerException {
+ List<Element> products = new ArrayList<Element>();
+ try {
+ for (AvroElement ap : this.proxy.getElementsByProductType(AvroTypeFactory.getAvroProductType(type))) {
+ products.add(AvroTypeFactory.getElement(ap));
+ }
+ } catch (AvroRemoteException e) {
+ throw new ValidationLayerException(e.getMessage());
+ }
+ return products;
+ }
+
+ @Override
+ public Element getElementById(String elementId) throws ValidationLayerException {
+ try {
+ return AvroTypeFactory.getElement(this.proxy.getElementById(elementId));
+ } catch (AvroRemoteException e) {
+ throw new ValidationLayerException(e.getMessage());
+ }
+ }
+
+ @Override
+ public Element getElementByName(String elementName) throws ValidationLayerException {
+ try {
+ return AvroTypeFactory.getElement(this.proxy.getElementByName(elementName));
+ } catch (AvroRemoteException e) {
+ throw new ValidationLayerException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<QueryResult> complexQuery(ComplexQuery complexQuery) throws CatalogException {
+ List<QueryResult> queryResults = new ArrayList<QueryResult>();
+ try {
+ List<AvroQueryResult> avroQueryResults = this.proxy.complexQuery(AvroTypeFactory.getAvroComplexQuery(complexQuery));
+ for (AvroQueryResult aqr : avroQueryResults) {
+ queryResults.add(AvroTypeFactory.getQueryResult(aqr));
+ }
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return queryResults;
+ }
+
+ @Override
+ public List<Product> query(Query query, ProductType type) throws CatalogException {
+ List<Product> products = new ArrayList<Product>();
+ try {
+ for (AvroProduct ap : this.proxy.query(AvroTypeFactory.getAvroQuery(query), AvroTypeFactory.getAvroProductType(type))) {
+ products.add(AvroTypeFactory.getProduct(ap));
+ }
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return products;
+ }
+
+ @Override
+ public ProductType getProductTypeByName(String productTypeName) throws RepositoryManagerException {
+ try {
+ return AvroTypeFactory.getProductType(this.proxy.getProductTypeByName(productTypeName));
+ } catch (AvroRemoteException e) {
+ throw new RepositoryManagerException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ProductType getProductTypeById(String productTypeId) throws RepositoryManagerException {
+ try {
+ return AvroTypeFactory.getProductType(this.proxy.getProductTypeById(productTypeId));
+ } catch (AvroRemoteException e) {
+ throw new RepositoryManagerException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<ProductType> getProductTypes() throws RepositoryManagerException {
+ List<ProductType> productTypes = new ArrayList<ProductType>();
+ try {
+ for (AvroProductType apt : this.proxy.getProductTypes()) {
+ productTypes.add(AvroTypeFactory.getProductType(apt));
+ }
+ } catch (AvroRemoteException e) {
+ throw new RepositoryManagerException(e.getMessage());
+ }
+ return productTypes;
+ }
+
+ @Override
+ public List<Reference> getProductReferences(Product product) throws CatalogException {
+ List<Reference> references = new ArrayList<Reference>();
+ try {
+ for (AvroReference ar : this.proxy.getProductReferences(AvroTypeFactory.getAvroProduct(product))) {
+ references.add(AvroTypeFactory.getReference(ar));
+ }
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ return references;
+ }
+
+ @Override
+ public Product getProductById(String productId) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProduct(this.proxy.getProductById(productId));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public Product getProductByName(String productName) throws CatalogException {
+ try {
+ return AvroTypeFactory.getProduct(this.proxy.getProductByName(productName));
+ } catch (AvroRemoteException e) {
+ throw new CatalogException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String ingestProduct(Product product, Metadata metadata,
+ boolean clientTransfer) throws Exception {
+ try {
+ // ingest product
+ String productId = this.proxy.ingestProduct(
+ AvroTypeFactory.getAvroProduct(product),
+ AvroTypeFactory.getAvroMetadata(metadata),
+ clientTransfer);
+
+ if (clientTransfer) {
+ LOG.log(Level.FINEST,
+ "File Manager Client: clientTransfer enabled: "
+ + "transfering product ["
+ + product.getProductName() + "]");
+
+ // we need to transfer the product ourselves
+ // make sure we have the product ID
+ if (productId == null) {
+ throw new Exception("Request to ingest product: "
+ + product.getProductName()
+ + " but no product ID returned from File "
+ + "Manager ingest");
+ }
+
+ if (dataTransfer == null) {
+ throw new Exception("Request to ingest product: ["
+ + product.getProductName()
+ + "] using client transfer, but no "
+ + "dataTransferer specified!");
+ }
+
+ product.setProductId(productId);
+
+ if (!Boolean.getBoolean("org.apache.oodt.cas.filemgr.serverside.versioning")) {
+ // version the product
+ Versioner versioner = GenericFileManagerObjectFactory
+ .getVersionerFromClassName(product.getProductType()
+ .getVersioner());
+ versioner.createDataStoreReferences(product, metadata);
+
+ // add the newly versioned references to the data store
+ try {
+ addProductReferences(product);
+ } catch (CatalogException e) {
+ LOG
+ .log(
+ Level.SEVERE,
+ "ingestProduct: RepositoryManagerException "
+ + "when adding Product References for Product : "
+ + product.getProductName()
+ + " to RepositoryManager: Message: "
+ + e.getMessage());
+ throw e;
+ }
+ } else {
+ product.setProductReferences(getProductReferences(product));
+ }
+
+ // now transfer the product
+ try {
+ dataTransfer.transferProduct(product);
+ // now update the product's transfer status in the data
+ // store
+ product.setTransferStatus(Product.STATUS_RECEIVED);
+
+ try {
+ setProductTransferStatus(product);
+ } catch (CatalogException e) {
+ LOG
+ .log(
+ Level.SEVERE,
+ "ingestProduct: RepositoryManagerException "
+ + "when updating product transfer status for Product: "
+ + product.getProductName()
+ + " Message: " + e.getMessage());
+ throw e;
+ }
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE,
+ "ingestProduct: DataTransferException when transfering Product: "
+ + product.getProductName() + ": Message: "
+ + e.getMessage());
+ throw new DataTransferException(e);
+ }
+
+ }
+ return productId;
+
+ // error versioning file
+ } catch (VersioningException e) {
+ e.printStackTrace();
+ LOG.log(Level.SEVERE,
+ "ingestProduct: VersioningException when versioning Product: "
+ + product.getProductName() + " with Versioner "
+ + product.getProductType().getVersioner()
+ + ": Message: " + e.getMessage());
+ throw new VersioningException(e);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOG.log(Level.SEVERE, "Failed to ingest product [" + product
+ + "] : " + e.getMessage() + " -- rolling back ingest");
+ try {
+ AvroProduct avroProduct = AvroTypeFactory.getAvroProduct(product);
+ this.proxy.removeProduct(avroProduct);
+ } catch (Exception e1) {
+ LOG.log(Level.SEVERE, "Failed to rollback ingest of product ["
+ + product + "] : " + e.getMessage());
+ }
+ throw new Exception("Failed to ingest product [" + product + "] : "
+ + e.getMessage());
+ }
+
+ }
+
+ @Override
+ public Metadata getCatalogValues(Metadata metadata, ProductType productType) throws Exception {
+ return AvroTypeFactory.getMetadata(this.proxy.getCatalogValues(
+ AvroTypeFactory.getAvroMetadata(metadata),
+ AvroTypeFactory.getAvroProductType(productType)));
+ }
+
+ @Override
+ public Metadata getOrigValues(Metadata metadata, ProductType productType) throws Exception {
+ return AvroTypeFactory.getMetadata(this.proxy.getOrigValues(
+ AvroTypeFactory.getAvroMetadata(metadata),
+ AvroTypeFactory.getAvroProductType(productType)));
+ }
+
+ @Override
+ public Query getCatalogQuery(Query query, ProductType productType) throws Exception {
+ return AvroTypeFactory.getQuery(this.proxy.getCatalogQuery(
+ AvroTypeFactory.getAvroQuery(query),
+ AvroTypeFactory.getAvroProductType(productType)
+ ));
+ }
+
+ @Override
+ public URL getFileManagerUrl() {
+ return this.fileManagerUrl;
+ }
+
+ @Override
+ public void setFileManagerUrl(URL fileManagerUrl) {
+ this.fileManagerUrl = fileManagerUrl;
+
+ }
+
+ @Override
+ public DataTransfer getDataTransfer() {
+ return this.dataTransfer;
+ }
+
+ @Override
+ public void setDataTransfer(DataTransfer dataTransfer) {
+ this.dataTransfer = dataTransfer;
+ }
+
+}
Added: oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerServer.java
URL: http://svn.apache.org/viewvc/oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerServer.java?rev=1701724&view=auto
==============================================================================
--- oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerServer.java (added)
+++ oodt/branches/avro_rpc/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/AvroFileManagerServer.java Tue Sep 8 04:25:17 2015
@@ -0,0 +1,569 @@
+/*
+ * 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.oodt.cas.filemgr.system;
+
+import org.apache.avro.AvroRemoteException;
+import org.apache.avro.ipc.NettyServer;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.specific.SpecificResponder;
+import org.apache.oodt.cas.filemgr.catalog.Catalog;
+import org.apache.oodt.cas.filemgr.datatransfer.DataTransfer;
+
+import org.apache.oodt.cas.filemgr.structs.Element;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.FileTransferStatus;
+import org.apache.oodt.cas.filemgr.structs.ProductType;
+import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroFileManager;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroFileTransferStatus;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroProduct;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroElement;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroQueryResult;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroProductType;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroReference;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroProductPage;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroQuery;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroMetadata;
+import org.apache.oodt.cas.filemgr.structs.avrotypes.AvroComplexQuery;
+import org.apache.oodt.cas.filemgr.structs.exceptions.RepositoryManagerException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.DataTransferException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.ValidationLayerException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.VersioningException;
+import org.apache.oodt.cas.filemgr.structs.exceptions.QueryFormulationException;
+import org.apache.oodt.cas.filemgr.structs.query.QueryResult;
+import org.apache.oodt.cas.filemgr.util.AvroTypeFactory;
+import org.apache.oodt.cas.filemgr.util.GenericFileManagerObjectFactory;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+/**
+ * @author radu
+ *
+ * <p>Implementaion of FileManagerServer that uses apache avro-ipc API.</p>
+ */
+public class AvroFileManagerServer implements AvroFileManager, FileManagerServer {
+
+ /*port for server*/
+ protected int port = 1999;
+
+ private Server server;
+
+ /* file manager tools */
+ FileManager fileManager;
+
+ public AvroFileManagerServer(int port){
+ this.port = port;
+ }
+
+ @Override
+ public boolean startUp() throws Exception {
+ server = new NettyServer(new SpecificResponder(AvroFileManager.class,this),new InetSocketAddress(this.port));
+ server.start();
+ try {
+ this.fileManager = new FileManager();
+ this.loadConfiguration();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ public void loadConfiguration() throws IOException {
+ fileManager.loadConfiguration();
+
+ String transferFactory = null;
+
+ transferFactory = System.getProperty("filemgr.datatransfer.factory",
+ "org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory");
+
+ DataTransfer dataTransfer = GenericFileManagerObjectFactory
+ .getDataTransferServiceFromFactory(transferFactory);
+
+ dataTransfer
+ .setFileManagerUrl(new URL("http://localhost:" + port));
+
+ fileManager.setDataTransfer(dataTransfer);
+
+ }
+
+
+ @Override
+ public boolean shutdown() {
+ this.server.close();
+ return true;
+ }
+
+ @Override
+ public boolean isAlive() {
+ return true;
+ }
+
+ @Override
+ public void setCatalog(Catalog catalog) {
+ this.fileManager.setCatalog(catalog);
+
+ }
+
+ @Override
+ public boolean refreshConfigAndPolicy() throws AvroRemoteException {
+ return this.fileManager.refreshConfigAndPolicy();
+ }
+
+ @Override
+ public boolean transferringProduct(AvroProduct p) throws AvroRemoteException {
+ return this.fileManager.transferringProduct(AvroTypeFactory.getProduct(p));
+ }
+
+ @Override
+ public AvroFileTransferStatus getCurrentFileTransfer() throws AvroRemoteException {
+ return AvroTypeFactory.getAvroFileTransferStatus(this.fileManager.getCurrentFileTransfer());
+ }
+
+ @Override
+ public List<AvroFileTransferStatus> getCurrentFileTransfers() throws AvroRemoteException {
+ List<AvroFileTransferStatus> avroFileTransferStatuses = new ArrayList<AvroFileTransferStatus>();
+ for (FileTransferStatus fts : this.fileManager.getCurrentFileTransfers()){
+ avroFileTransferStatuses.add(AvroTypeFactory.getAvroFileTransferStatus(fts));
+ }
+ return avroFileTransferStatuses;
+ }
+
+ @Override
+ public double getProductPctTransferred(AvroProduct product) throws AvroRemoteException {
+ return this.fileManager.getProductPctTransferred(AvroTypeFactory.getProduct(product));
+ }
+
+ @Override
+ public double getRefPctTransferred(AvroReference reference) throws AvroRemoteException {
+ return this.fileManager.getRefPctTransferred(AvroTypeFactory.getReference(reference));
+ }
+
+ @Override
+ public boolean removeProductTransferStatus(AvroProduct product) throws AvroRemoteException {
+ return this.fileManager.removeProductTransferStatus(AvroTypeFactory.getProduct(product));
+ }
+
+ @Override
+ public boolean isTransferComplete(AvroProduct product) throws AvroRemoteException {
+ return this.fileManager.isTransferComplete(AvroTypeFactory.getProduct(product));
+ }
+
+ @Override
+ public AvroProductPage pagedQuery(AvroQuery query, AvroProductType type, int pageNum) throws AvroRemoteException{
+ try {
+ return AvroTypeFactory.getAvroProductPage(this.fileManager.pagedQuery(
+ AvroTypeFactory.getQuery(query),
+ AvroTypeFactory.getProductType(type),
+ pageNum
+ ));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroProductPage getFirstPage(AvroProductType type) throws AvroRemoteException {
+ return AvroTypeFactory.getAvroProductPage(
+ this.fileManager.getFirstPage(AvroTypeFactory.getProductType(type)));
+ }
+
+ @Override
+ public AvroProductPage getLastPage(AvroProductType type) throws AvroRemoteException {
+ return AvroTypeFactory.getAvroProductPage(
+ this.fileManager.getLastPage(AvroTypeFactory.getProductType(type)));
+ }
+
+ @Override
+ public AvroProductPage getNextPage(AvroProductType type, AvroProductPage currPage) throws AvroRemoteException {
+ return AvroTypeFactory.getAvroProductPage(
+ this.fileManager.getNextPage(
+ AvroTypeFactory.getProductType(type),
+ AvroTypeFactory.getProductPage(currPage)));
+ }
+
+ @Override
+ public AvroProductPage getPrevPage(AvroProductType type, AvroProductPage currPage) throws AvroRemoteException {
+ return AvroTypeFactory.getAvroProductPage(
+ this.fileManager.getPrevPage(
+ AvroTypeFactory.getProductType(type),
+ AvroTypeFactory.getProductPage(currPage)));
+ }
+
+ @Override
+ public boolean setProductTransferStatus(AvroProduct product) throws AvroRemoteException {
+ try {
+ return this.fileManager.setProductTransferStatus(AvroTypeFactory.getProduct(product));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e);
+ }
+ }
+
+ @Override
+ public int getNumProducts(AvroProductType type) throws AvroRemoteException {
+ try {
+ return this.fileManager.getNumProducts(AvroTypeFactory.getProductType(type));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e);
+ }
+ }
+
+ @Override
+ public List<AvroProduct> getTopNProductsByProductType(int n, AvroProductType type) throws AvroRemoteException {
+ List<AvroProduct> avroProducts = new ArrayList<AvroProduct>();
+ try {
+ for (Product p : this.fileManager.getTopNProductsByProductType(n, AvroTypeFactory.getProductType(type))){
+ avroProducts.add(AvroTypeFactory.getAvroProduct(p));
+ }
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ return avroProducts;
+ }
+
+ @Override
+ public List<AvroProduct> getTopNProducts(int n) throws AvroRemoteException {
+ List<AvroProduct> avroProducts = new ArrayList<AvroProduct>();
+ try {
+ for (Product p : this.fileManager.getTopNProducts(n)){
+ avroProducts.add(AvroTypeFactory.getAvroProduct(p));
+ }
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ return avroProducts;
+ }
+
+ @Override
+ public boolean hasProduct(String productName) throws AvroRemoteException {
+ try {
+ return this.fileManager.hasProduct(productName);
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroMetadata getMetadata(AvroProduct product) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroMetadata(this.fileManager.getMetadata(AvroTypeFactory.getProduct(product)));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroMetadata getReducedMetadata(AvroProduct product, List<String> elements) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroMetadata(this.fileManager.getReducedMetadata(AvroTypeFactory.getProduct(product), elements));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<AvroProductType> getProductTypes() throws AvroRemoteException {
+ List<AvroProductType> avroProductTypes = new ArrayList<AvroProductType>();
+ try {
+ for (ProductType pt : this.fileManager.getProductTypes()){
+ avroProductTypes.add(AvroTypeFactory.getAvroProductType(pt));
+ }
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ return avroProductTypes;
+ }
+
+ @Override
+ public List<AvroReference> getProductReferences(AvroProduct product) throws AvroRemoteException {
+ List<AvroReference> avroProductTypes = new ArrayList<AvroReference>();
+ try {
+ for (Reference r : this.fileManager.getProductReferences(AvroTypeFactory.getProduct(product))){
+ avroProductTypes.add(AvroTypeFactory.getAvroReference(r));
+ }
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ return avroProductTypes;
+ }
+
+ @Override
+ public AvroProduct getProductById(String productId) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroProduct(this.fileManager.getProductById(productId));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroProduct getProductByName(String productName) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroProduct(this.fileManager.getProductByName(productName));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<AvroProduct> getProductsByProductType(AvroProductType type) throws AvroRemoteException {
+ List<AvroProduct> avroProducts = new ArrayList<AvroProduct>();
+ try {
+ List<Product> products = this.fileManager.getProductsByProductType(AvroTypeFactory.getProductType(type));
+ if (products != null) {
+ for (Product p : products) {
+ avroProducts.add(AvroTypeFactory.getAvroProduct(p));
+ }
+ }
+ return avroProducts;
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<AvroElement> getElementsByProductType(AvroProductType type) throws AvroRemoteException {
+ List<AvroElement> avroElements = new ArrayList<AvroElement>();
+ try {
+ for (Element e : this.fileManager.getElementsByProductType(AvroTypeFactory.getProductType(type))) {
+ avroElements.add(AvroTypeFactory.getAvroElement(e));
+ }
+ return avroElements;
+ } catch (ValidationLayerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroElement getElementById(String elementId) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroElement(this.fileManager.getElementById(elementId));
+ } catch (ValidationLayerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroElement getElementByName(String elementName) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroElement(this.fileManager.getElementByName(elementName));
+ } catch (ValidationLayerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<AvroQueryResult> complexQuery(AvroComplexQuery avroComplexQuery) throws AvroRemoteException {
+ List<AvroQueryResult> avroQueryResults = new ArrayList<AvroQueryResult>();
+ try {
+ for (QueryResult qr : this.fileManager.complexQuery(AvroTypeFactory.getComplexQuery(avroComplexQuery))){
+ avroQueryResults.add(AvroTypeFactory.getAvroQueryResult(qr));
+ }
+ return avroQueryResults;
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public List<AvroProduct> query(AvroQuery avroQuery, AvroProductType avroProductType) throws AvroRemoteException {
+ List<AvroProduct> avroProducts = new ArrayList<AvroProduct>();
+ try {
+ for (Product p : this.fileManager.query(AvroTypeFactory.getQuery(avroQuery), AvroTypeFactory.getProductType(avroProductType))){
+ avroProducts.add(AvroTypeFactory.getAvroProduct(p));
+ }
+ return avroProducts;
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroProductType getProductTypeByName(String productTypeName) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroProductType(this.fileManager.getProductTypeByName(productTypeName));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroProductType getProductTypeById(String productTypeId) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroProductType(this.fileManager.getProductTypeById(productTypeId));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean updateMetadata(AvroProduct product, AvroMetadata met) throws AvroRemoteException {
+ try {
+ return this.fileManager.updateMetadata(AvroTypeFactory.getProduct(product), AvroTypeFactory.getMetadata(met));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String addProductType(AvroProductType type) throws AvroRemoteException {
+ try {
+ return this.fileManager.addProductType(AvroTypeFactory.getProductType(type));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String catalogProduct(AvroProduct product) throws AvroRemoteException {
+ try {
+ return this.fileManager.catalogProduct(AvroTypeFactory.getProduct(product));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean addMetadata(AvroProduct product, AvroMetadata met) throws AvroRemoteException {
+ try {
+ return this.fileManager.addMetadata(AvroTypeFactory.getProduct(product), AvroTypeFactory.getMetadata(met)) != null;
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean addProductReferences(AvroProduct product) throws AvroRemoteException {
+ try {
+ return this.fileManager.addProductReferences(AvroTypeFactory.getProduct(product));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public String ingestProduct(AvroProduct p, AvroMetadata m, boolean clientTransfer) throws AvroRemoteException {
+ try {
+ return this.fileManager.ingestProduct(AvroTypeFactory.getProduct(p), AvroTypeFactory.getMetadata(m), clientTransfer);
+ } catch (VersioningException e) {
+ throw new AvroRemoteException(e.getMessage());
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ } catch (DataTransferException e) {
+ throw new AvroRemoteException(e.getMessage());
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public ByteBuffer retrieveFile(String filePath, int offset, int numBytes) throws AvroRemoteException {
+ try {
+ return ByteBuffer.wrap(this.fileManager.retrieveFile(filePath, offset, numBytes));
+ } catch (DataTransferException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean transferFile(String filePath, ByteBuffer fileData, int offset, int numBytes) throws AvroRemoteException {
+ return this.fileManager.transferFile(filePath,fileData.array(),offset,numBytes);
+ }
+
+ @Override
+ public boolean moveProduct(AvroProduct p, String newPath) throws AvroRemoteException {
+ try {
+ return this.fileManager.moveProduct(AvroTypeFactory.getProduct(p), newPath);
+ } catch (DataTransferException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean removeFile(String filePath) throws AvroRemoteException {
+ try {
+ return this.fileManager.removeFile(filePath);
+ } catch (DataTransferException e) {
+ throw new AvroRemoteException(e.getMessage());
+ } catch (IOException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean modifyProduct(AvroProduct p) throws AvroRemoteException {
+ try {
+ return this.fileManager.modifyProduct(AvroTypeFactory.getProduct(p));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean removeProduct(AvroProduct p) throws AvroRemoteException {
+ try {
+ return this.fileManager.removeProduct(AvroTypeFactory.getProduct(p));
+ } catch (CatalogException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroMetadata getCatalogValues(AvroMetadata m, AvroProductType productType) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroMetadata(this.fileManager.getCatalogValues(
+ AvroTypeFactory.getMetadata(m), AvroTypeFactory.getProductType(productType)
+ ));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroMetadata getOrigValues(AvroMetadata m, AvroProductType productType) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroMetadata(this.fileManager.getOrigValues(
+ AvroTypeFactory.getMetadata(m),
+ AvroTypeFactory.getProductType(productType)
+ ));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+ @Override
+ public AvroQuery getCatalogQuery(AvroQuery query, AvroProductType productType) throws AvroRemoteException {
+ try {
+ return AvroTypeFactory.getAvroQuery(this.fileManager.getCatalogQuery(
+ AvroTypeFactory.getQuery(query),
+ AvroTypeFactory.getProductType(productType)
+ ));
+ } catch (RepositoryManagerException e) {
+ throw new AvroRemoteException(e.getMessage());
+ } catch (QueryFormulationException e) {
+ throw new AvroRemoteException(e.getMessage());
+ }
+ }
+
+}