You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/12/27 07:57:50 UTC

svn commit: r1553635 - in /tomee/tomee/trunk/container/openejb-core/src: main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java

Author: rmannibucau
Date: Fri Dec 27 06:57:50 2013
New Revision: 1553635

URL: http://svn.apache.org/r1553635
Log:
TOMEE-1100 logging the uri when it is not an absolute url in persistence unit resolver

Added:
    tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java?rev=1553635&r1=1553634&r2=1553635&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceUnitLinkResolver.java Fri Dec 27 06:57:50 2013
@@ -18,6 +18,8 @@ package org.apache.openejb.config;
 
 import org.apache.openejb.jee.jpa.unit.Persistence;
 import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
 import org.apache.openejb.util.UniqueDefaultLinkResolver;
 
@@ -31,6 +33,8 @@ import java.util.Iterator;
 
 // TODO: review if some more info shouldn't be propagated to module tree to make it faster
 public class PersistenceUnitLinkResolver extends UniqueDefaultLinkResolver<PersistenceUnit> {
+    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, PersistenceUnitLinkResolver.class);
+
     private final AppModule module;
 
     public PersistenceUnitLinkResolver(final AppModule appModule) {
@@ -107,14 +111,22 @@ public class PersistenceUnitLinkResolver
 
         final File appModuleFile = new File(module.getJarLocation());
 
-        final File moduleFile;
+        File moduleFile;
         try {
             moduleFile = URLs.toFile(moduleUri.toURL());
-        } catch (MalformedURLException e) {
+        } catch (final MalformedURLException e) {
             return null;
+        } catch (final IllegalArgumentException iae) {
+            final File f = new File(appModuleFile, moduleUri.getPath());
+            if (f.exists()) {
+                moduleFile = f;
+            } else {
+                LOGGER.warning("Illegal uri: " + moduleUri, iae);
+                return null;
+            }
         }
 
-        for (WebModule webModule : module.getWebModules()) {
+        for (final WebModule webModule : module.getWebModules()) {
             if (webModule.getJarLocation() != null && isParent(new File(webModule.getJarLocation()), moduleFile, appModuleFile)) {
                 return webModule;
             }

Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java?rev=1553635&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java Fri Dec 27 06:57:50 2013
@@ -0,0 +1,44 @@
+/*
+ * 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.openejb;
+
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.PersistenceUnitLinkResolver;
+import org.apache.openejb.jee.Application;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.loader.Files;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.URI;
+
+import static org.junit.Assert.assertNull;
+
+public class PersistenceUnitLinkResolverTest {
+    @Test
+    public void resolve() {
+        final AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "target/classes/foo", new Application(), false);
+
+        Files.mkdir(new File("target/classes/foo/bar"));
+
+        final PersistenceUnitLinkResolver resolver = new PersistenceUnitLinkResolver(appModule);
+        resolver.add(URI.create("file:/fake/1"), "foo", new PersistenceUnit());
+        resolver.add(URI.create("file:/fake/2"), "foo", new PersistenceUnit());
+
+        assertNull(resolver.resolveLink("foo", URI.create("bar"))); // can't resolve but doesn't fail
+    }
+}