[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