[jboss-cvs] JBossAS SVN: r98090 - in projects/jboss-mdr/trunk/src: main/java/org/jboss/metadata/spi/retrieval and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 21 12:06:12 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-12-21 12:06:11 -0500 (Mon, 21 Dec 2009)
New Revision: 98090

Added:
   projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/RetrievalUtils.java
Removed:
   projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/api/
Modified:
   projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java
   projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/cache/test/MetaDataUtilsCachedMetaDataTestCase.java
Log:
[JBMDR-63] Put the utils into the spi.retrieval package so we don't change the MDR2MDBridge contract

Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java	2009-12-21 16:31:30 UTC (rev 98089)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/MetaDataRetrievalToMetaDataBridge.java	2009-12-21 17:06:11 UTC (rev 98090)
@@ -214,7 +214,7 @@
     * 
     * @return the retrieval
     */
-   public MetaDataRetrieval getMetaDataRetrieval()
+   protected MetaDataRetrieval getMetaDataRetrieval()
    {
       return retrieval;
    }

Added: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/RetrievalUtils.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/RetrievalUtils.java	                        (rev 0)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/retrieval/RetrievalUtils.java	2009-12-21 17:06:11 UTC (rev 98090)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This 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 software 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 software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.metadata.spi.retrieval;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.plugins.context.CachingMetaDataContext;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.context.MetaDataContext;
+
+/**
+ * Utilities for MDR metadata
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class RetrievalUtils
+{
+   private final static Logger log = Logger.getLogger(RetrievalUtils.class);
+   
+   /**
+    * Takes a MetaData and reworks the internal MetaDataContext to be caching.
+    * If the metadata structure cannot be determined, a warning is logged, but no error is thrown.
+    * 
+    * @param metaData The meta data we want to cache
+    * @return a cached meta data, or the original parameter if adding caching was not possible
+    * @throws IllegalArgumentException if the metaData parameter is null
+    */
+   public static MetaData createCachedMetaData(MetaData metaData)
+   {
+      if (metaData == null)
+         throw new IllegalArgumentException("Null meta data");
+      
+      if (metaData.getClass() != MetaDataRetrievalToMetaDataBridge.class)
+      {
+         log.warn("MetaDataUtils.createCachedMetaData(): meta data is not a MetaDataRetrievalToMetaDataBridge, not adding caching");
+         return metaData;
+      }
+       
+      if (((MetaDataRetrievalToMetaDataBridge)metaData).getMetaDataRetrieval() instanceof MetaDataContext == false)
+      {
+         log.warn("MetaDataUtils.createCachedMetaData(): Could not determine structure of meta data, not adding caching");
+         return metaData;
+      }
+      
+      MetaDataContext ctx = (MetaDataContext)((MetaDataRetrievalToMetaDataBridge)metaData).getMetaDataRetrieval();
+      return new MetaDataRetrievalToMetaDataBridge(createCachedMetaDataContext(ctx));
+   }
+
+   /**
+    * Creates a cached meta data context for the passed in context. All the parent contexts
+    * will also be cached
+    * 
+    * @param ctx the meta data context we want to cache
+    * @param the cached meta data context
+    */
+   private static MetaDataContext createCachedMetaDataContext(MetaDataContext ctx)
+   {
+      MetaDataContext parent = ctx.getParent();
+      if (parent != null)
+      {
+         parent = createCachedMetaDataContext(parent);
+      }
+      return new CachingMetaDataContext(parent, ctx.getLocalRetrievals());
+   }
+}

Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/cache/test/MetaDataUtilsCachedMetaDataTestCase.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/cache/test/MetaDataUtilsCachedMetaDataTestCase.java	2009-12-21 16:31:30 UTC (rev 98089)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/context/cache/test/MetaDataUtilsCachedMetaDataTestCase.java	2009-12-21 17:06:11 UTC (rev 98090)
@@ -24,12 +24,12 @@
 import java.lang.annotation.Annotation;
 import java.util.List;
 
-import org.jboss.metadata.api.MetaDataUtils;
 import org.jboss.metadata.plugins.context.AbstractMetaDataContext;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.metadata.spi.context.MetaDataContext;
 import org.jboss.metadata.spi.retrieval.AnnotationItem;
 import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+import org.jboss.metadata.spi.retrieval.RetrievalUtils;
 import org.jboss.metadata.spi.retrieval.basic.BasicAnnotationItem;
 import org.jboss.metadata.spi.retrieval.basic.BasicAnnotationsItem;
 import org.jboss.test.metadata.context.AbstractMetaDataContextTest;
@@ -126,7 +126,7 @@
       assertTrue(getFirstChild().isRetrieved());
       assertTrue(getSecondChild().isRetrieved());
 
-      MetaData cached = MetaDataUtils.createCachedMetaData(metaData);
+      MetaData cached = RetrievalUtils.createCachedMetaData(metaData);
       anns = cached.getAnnotations();
       assertNotNull(anns);
       assertEquals(3, anns.length);
@@ -136,7 +136,7 @@
       assertTrue(getFirstChild().isRetrieved());
       assertTrue(getSecondChild().isRetrieved());
       
-      cached = MetaDataUtils.createCachedMetaData(metaData);
+      cached = RetrievalUtils.createCachedMetaData(metaData);
       assertFalse(getFirstParent().isRetrieved());
       assertFalse(getSecondParent().isRetrieved());
       assertFalse(getFirstChild().isRetrieved());




More information about the jboss-cvs-commits mailing list