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 @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())));