Author: struberg
Date: Tue Jun 20 14:51:14 2017
New Revision: 1799349

URL: http://svn.apache.org/viewvc?rev=1799349&view=rev
Log:
MEECROWAVE-43 add a way to define the URL mapping via annotation

Rules are:

* If JAXWSAddressMapper use that.
* If @WsMapper use that
* else -> default rules

Added:
    
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java
   (with props)
Modified:
    
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/JAXWSCdiExtension.java
    
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveBundleMojo.java

Modified: 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/JAXWSCdiExtension.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/JAXWSCdiExtension.java?rev=1799349&r1=1799348&r2=1799349&view=diff
==============================================================================
--- 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/JAXWSCdiExtension.java
 (original)
+++ 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/JAXWSCdiExtension.java
 Tue Jun 20 14:51:14 2017
@@ -77,7 +77,12 @@ public class JAXWSCdiExtension implement
         final Bean<?> mapperBean = 
beanManager.resolve(beanManager.getBeans(JAXWSAddressMapper.class));
         final JAXWSAddressMapper mapper;
         if (mapperBean == null) {
-            mapper = type -> "/webservices/" + type.getSimpleName();
+            mapper = type -> {
+                WsMapping wsMapping = type.getAnnotation(WsMapping.class);
+                return wsMapping != null
+                    ? wsMapping.value()
+                    : "/webservices/" + type.getSimpleName();
+            };
         } else {
             mapper = 
JAXWSAddressMapper.class.cast(beanManager.getReference(mapperBean, 
JAXWSAddressMapper.class, beanManager.createCreationalContext(mapperBean)));
         }

Added: 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java?rev=1799349&view=auto
==============================================================================
--- 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java
 (added)
+++ 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java
 Tue Jun 20 14:51:14 2017
@@ -0,0 +1,38 @@
+/**
+ * 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.meecrowave.cxf;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation can be used in conjunction with &#064;WebService
+ * to define an endpoint path for the webservice.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface WsMapping
+{
+    /**
+     * @return the full endpoint path of the webservice
+     */
+    String value();
+}

Propchange: 
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/cxf/WsMapping.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveBundleMojo.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveBundleMojo.java?rev=1799349&r1=1799348&r2=1799349&view=diff
==============================================================================
--- 
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveBundleMojo.java
 (original)
+++ 
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveBundleMojo.java
 Tue Jun 20 14:51:14 2017
@@ -170,34 +170,9 @@ public class MeecrowaveBundleMojo extend
         } catch (final IOException e) {
             throw new MojoExecutionException(e.getMessage(), e);
         }
-        write(new File(distroFolder, "conf/log4j2.xml"), "<?xml 
version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                "<Configuration status=\"INFO\">\n" +
-                "  <Properties>\n" +
-                "    <Property name=\"name\">" + artifactId + "</Property>\n" +
-                "  </Properties>\n" +
-                "  <Appenders>\n" +
-                "    <Console name=\"Console\" target=\"SYSTEM_OUT\">\n" +
-                "      <PatternLayout 
pattern=\"[%d{HH:mm:ss.SSS}][%highlight{%-5level}][%15.15t][%30.30logger] 
%msg%n\"/>\n" +
-                "    </Console>" +
-                "    <RollingFile name=\"DailyLogFile\" 
fileName=\"logs/meecrowave.log\"\n" +
-                "                 
filePattern=\"logs/${name}-%d{yyyy-MM-dd}-%i.log.gz\">\n" +
-                "      <PatternLayout 
pattern=\"[%d{HH:mm:ss.SSS}][%-5level][%15.15t][%30.30logger] %msg%n\"/>\n" +
-                "      <Policies>\n" +
-                "        <TimeBasedTriggeringPolicy />\n" +
-                "        <SizeBasedTriggeringPolicy size=\"50 MB\"/>\n" +
-                "      </Policies>\n" +
-                "    </RollingFile>\n" +
-                "  </Appenders>\n" +
-                "  <Loggers>\n" +
-                "    <Root level=\"INFO\">\n" +
-                "      <!--<AppenderRef ref=\"Console\"/>-->\n" +
-                "      <AppenderRef ref=\"DailyLogFile\"/>\n" +
-                "    </Root>\n" +
-                "  </Loggers>\n" +
-                "</Configuration>\n\n");
-        write(new File(distroFolder, "conf/meecrowave.properties"), "# This 
file contains the meecrowave default configuration\n" +
-                "# More on 
http://openwebbeans.apache.org/meecrowave/meecrowave-core/cli.html\n\n"; +
-                "tomcat-access-log-pattern = %h %l %u %t \"%r\" %s %b 
\"%{Referer}i\" \"%{User-Agent}i\"");
+
+        copyProvidedFiles(distroFolder);
+
         write(new File(distroFolder, "logs/you_can_safely_delete.txt"), 
DELETE_TEXT);
         final Collection<String> includedArtifacts = 
project.getArtifacts().stream()
                 .filter(this::isIncluded)
@@ -291,6 +266,61 @@ public class MeecrowaveBundleMojo extend
         }
     }
 
+
+    /**
+     * Copy over all files from src/meecrowave/*
+     * TODO!
+     * The following files get added with default content if not found there:
+     * <ul>
+     *     <li>conf/log4j2.xml</li>
+     *     <li>conf/meecrowave.properties</li>
+     * </ul>
+     * @param distroFolder
+     */
+    private void copyProvidedFiles(File distroFolder)
+    {
+        writeLog4jConfig(distroFolder);
+        writeMeecrowaveProperties(distroFolder);
+
+    }
+
+    private void writeMeecrowaveProperties(File distroFolder)
+    {
+        write(new File(distroFolder, "conf/meecrowave.properties"), "# This 
file contains the meecrowave default configuration\n" +
+                "# More on 
http://openwebbeans.apache.org/meecrowave/meecrowave-core/cli.html\n\n"; +
+                "tomcat-access-log-pattern = %h %l %u %t \"%r\" %s %b 
\"%{Referer}i\" \"%{User-Agent}i\"");
+    }
+
+    private void writeLog4jConfig(File distroFolder)
+    {
+        write(new File(distroFolder, "conf/log4j2.xml"),
+            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<Configuration status=\"INFO\">\n" +
+                "  <Properties>\n" +
+                "    <Property name=\"name\">" + artifactId + "</Property>\n" +
+                "  </Properties>\n" +
+                "  <Appenders>\n" +
+                "    <Console name=\"Console\" target=\"SYSTEM_OUT\">\n" +
+                "      <PatternLayout 
pattern=\"[%d{HH:mm:ss.SSS}][%highlight{%-5level}][%15.15t][%30.30logger] 
%msg%n\"/>\n" +
+                "    </Console>" +
+                "    <RollingFile name=\"DailyLogFile\" 
fileName=\"logs/meecrowave.log\"\n" +
+                "                 
filePattern=\"logs/${name}-%d{yyyy-MM-dd}-%i.log.gz\">\n" +
+                "      <PatternLayout 
pattern=\"[%d{HH:mm:ss.SSS}][%-5level][%15.15t][%30.30logger] %msg%n\"/>\n" +
+                "      <Policies>\n" +
+                "        <TimeBasedTriggeringPolicy />\n" +
+                "        <SizeBasedTriggeringPolicy size=\"50 MB\"/>\n" +
+                "      </Policies>\n" +
+                "    </RollingFile>\n" +
+                "  </Appenders>\n" +
+                "  <Loggers>\n" +
+                "    <Root level=\"INFO\">\n" +
+                "      <!--<AppenderRef ref=\"Console\"/>-->\n" +
+                "      <AppenderRef ref=\"DailyLogFile\"/>\n" +
+                "    </Root>\n" +
+                "  </Loggers>\n" +
+                "</Configuration>\n\n");
+    }
+
     private void addLib(final File distroFolder, final File cc) {
         try {
             Files.copy(cc.toPath(), new File(distroFolder, "lib/" + 
cc.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
@@ -329,6 +359,7 @@ public class MeecrowaveBundleMojo extend
         }
     }
 
+
     private boolean isIncluded(final Artifact a) {
         return !((scopes == null && 
!(Artifact.SCOPE_COMPILE.equals(a.getScope()) || 
Artifact.SCOPE_RUNTIME.equals(a.getScope())))
                 || (scopes != null && !scopes.contains(a.getScope())));


Reply via email to