<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package org.apache.archiva.common;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>/*<a name="line.3"></a>
<span class="sourceLineNo">004</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.4"></a>
<span class="sourceLineNo">005</span> * or more contributor license agreements.  See the NOTICE file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * distributed with this work for additional information<a name="line.6"></a>
<span class="sourceLineNo">007</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.7"></a>
<span class="sourceLineNo">008</span> * to you under the Apache License, Version 2.0 (the<a name="line.8"></a>
<span class="sourceLineNo">009</span> * "License"); you may not use this file except in compliance<a name="line.9"></a>
<span class="sourceLineNo">010</span> * with the License.  You may obtain a copy of the License at<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> *   http://www.apache.org/licenses/LICENSE-2.0<a name="line.12"></a>
<span class="sourceLineNo">013</span> *<a name="line.13"></a>
<span class="sourceLineNo">014</span> * Unless required by applicable law or agreed to in writing,<a name="line.14"></a>
<span class="sourceLineNo">015</span> * software distributed under the License is distributed on an<a name="line.15"></a>
<span class="sourceLineNo">016</span> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.16"></a>
<span class="sourceLineNo">017</span> * KIND, either express or implied.  See the License for the<a name="line.17"></a>
<span class="sourceLineNo">018</span> * specific language governing permissions and limitations<a name="line.18"></a>
<span class="sourceLineNo">019</span> * under the License.<a name="line.19"></a>
<span class="sourceLineNo">020</span> */<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import java.util.function.Function;<a name="line.22"></a>
<span class="sourceLineNo">023</span><a name="line.23"></a>
<span class="sourceLineNo">024</span>/**<a name="line.24"></a>
<span class="sourceLineNo">025</span> * This is a class that can be used for the Try monad<a name="line.25"></a>
<span class="sourceLineNo">026</span> *<a name="line.26"></a>
<span class="sourceLineNo">027</span> * The Try monad is able to collect exceptions during processing<a name="line.27"></a>
<span class="sourceLineNo">028</span> * of a stream.<a name="line.28"></a>
<span class="sourceLineNo">029</span> *<a name="line.29"></a>
<span class="sourceLineNo">030</span> *<a name="line.30"></a>
<span class="sourceLineNo">031</span> *<a name="line.31"></a>
<span class="sourceLineNo">032</span> */<a name="line.32"></a>
<span class="sourceLineNo">033</span>public abstract class Try&lt;V&gt; {<a name="line.33"></a>
<span class="sourceLineNo">034</span><a name="line.34"></a>
<span class="sourceLineNo">035</span>    private Try() {<a name="line.35"></a>
<span class="sourceLineNo">036</span><a name="line.36"></a>
<span class="sourceLineNo">037</span>    }<a name="line.37"></a>
<span class="sourceLineNo">038</span><a name="line.38"></a>
<span class="sourceLineNo">039</span>    public abstract Boolean isSuccess();<a name="line.39"></a>
<span class="sourceLineNo">040</span><a name="line.40"></a>
<span class="sourceLineNo">041</span>    public abstract Boolean isFailure();<a name="line.41"></a>
<span class="sourceLineNo">042</span><a name="line.42"></a>
<span class="sourceLineNo">043</span>    public abstract void throwException();<a name="line.43"></a>
<span class="sourceLineNo">044</span><a name="line.44"></a>
<span class="sourceLineNo">045</span>    /**<a name="line.45"></a>
<span class="sourceLineNo">046</span>     * Returns the value if this is a success instance. Otherwise throws<a name="line.46"></a>
<span class="sourceLineNo">047</span>     * a runtime exception with the stored throwable as cause.<a name="line.47"></a>
<span class="sourceLineNo">048</span>     *<a name="line.48"></a>
<span class="sourceLineNo">049</span>     * @return The value<a name="line.49"></a>
<span class="sourceLineNo">050</span>     */<a name="line.50"></a>
<span class="sourceLineNo">051</span>    public abstract V get();<a name="line.51"></a>
<span class="sourceLineNo">052</span><a name="line.52"></a>
<span class="sourceLineNo">053</span>    /**<a name="line.53"></a>
<span class="sourceLineNo">054</span>     * Returns the throwable that is stored in the failure.<a name="line.54"></a>
<span class="sourceLineNo">055</span>     *<a name="line.55"></a>
<span class="sourceLineNo">056</span>     * @return The Throwable or null.<a name="line.56"></a>
<span class="sourceLineNo">057</span>     */<a name="line.57"></a>
<span class="sourceLineNo">058</span>    public abstract Throwable getError();<a name="line.58"></a>
<span class="sourceLineNo">059</span><a name="line.59"></a>
<span class="sourceLineNo">060</span><a name="line.60"></a>
<span class="sourceLineNo">061</span>    /**<a name="line.61"></a>
<span class="sourceLineNo">062</span>     * A mapping method for mapping the current instance to a new type.<a name="line.62"></a>
<span class="sourceLineNo">063</span>     *<a name="line.63"></a>
<span class="sourceLineNo">064</span>     * @param fn<a name="line.64"></a>
<span class="sourceLineNo">065</span>     * @param &lt;U&gt;<a name="line.65"></a>
<span class="sourceLineNo">066</span>     * @return<a name="line.66"></a>
<span class="sourceLineNo">067</span>     */<a name="line.67"></a>
<span class="sourceLineNo">068</span>    public &lt;U&gt; Try&lt;U&gt; map(Function&lt;? super V, U&gt; fn) {<a name="line.68"></a>
<span class="sourceLineNo">069</span>        try {<a name="line.69"></a>
<span class="sourceLineNo">070</span>            return Try.success(fn.apply(get()));<a name="line.70"></a>
<span class="sourceLineNo">071</span>        } catch (Throwable e) {<a name="line.71"></a>
<span class="sourceLineNo">072</span>            return Try.failure(e);<a name="line.72"></a>
<span class="sourceLineNo">073</span>        }<a name="line.73"></a>
<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
<span class="sourceLineNo">075</span><a name="line.75"></a>
<span class="sourceLineNo">076</span>    /**<a name="line.76"></a>
<span class="sourceLineNo">077</span>     * This is the bind method.<a name="line.77"></a>
<span class="sourceLineNo">078</span>     * If this instance is success the function will be applied. If any error occurs<a name="line.78"></a>
<span class="sourceLineNo">079</span>     * a failure instance will be returned.<a name="line.79"></a>
<span class="sourceLineNo">080</span>     * If this instance is failure a new failure will be returned.<a name="line.80"></a>
<span class="sourceLineNo">081</span>     *<a name="line.81"></a>
<span class="sourceLineNo">082</span>     * @param fn<a name="line.82"></a>
<span class="sourceLineNo">083</span>     * @param &lt;U&gt;<a name="line.83"></a>
<span class="sourceLineNo">084</span>     * @return<a name="line.84"></a>
<span class="sourceLineNo">085</span>     */<a name="line.85"></a>
<span class="sourceLineNo">086</span>    public &lt;U&gt; Try&lt;U&gt; flatMap(Function&lt;? super V, Try&lt;U&gt;&gt; fn) {<a name="line.86"></a>
<span class="sourceLineNo">087</span>        try {<a name="line.87"></a>
<span class="sourceLineNo">088</span>            return fn.apply(get());<a name="line.88"></a>
<span class="sourceLineNo">089</span>        } catch (Throwable t) {<a name="line.89"></a>
<span class="sourceLineNo">090</span>            return Try.failure(t);<a name="line.90"></a>
<span class="sourceLineNo">091</span>        }<a name="line.91"></a>
<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
<span class="sourceLineNo">093</span><a name="line.93"></a>
<span class="sourceLineNo">094</span>    public static &lt;V&gt; Try&lt;V&gt; failure(String message) {<a name="line.94"></a>
<span class="sourceLineNo">095</span><a name="line.95"></a>
<span class="sourceLineNo">096</span>        return new Failure&lt;&gt;(message);<a name="line.96"></a>
<span class="sourceLineNo">097</span><a name="line.97"></a>
<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
<span class="sourceLineNo">099</span><a name="line.99"></a>
<span class="sourceLineNo">100</span>    public static &lt;V&gt; Try&lt;V&gt; failure(String message, Throwable e) {<a name="line.100"></a>
<span class="sourceLineNo">101</span><a name="line.101"></a>
<span class="sourceLineNo">102</span>        return new Failure&lt;&gt;(message, e);<a name="line.102"></a>
<span class="sourceLineNo">103</span><a name="line.103"></a>
<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
<span class="sourceLineNo">105</span><a name="line.105"></a>
<span class="sourceLineNo">106</span>    /**<a name="line.106"></a>
<span class="sourceLineNo">107</span>     * If you need type coercion, you should call this method as<a name="line.107"></a>
<span class="sourceLineNo">108</span>     *  Try.&amp;lt;YOUR_TYPE&amp;gt;failure(e)<a name="line.108"></a>
<span class="sourceLineNo">109</span>     *<a name="line.109"></a>
<span class="sourceLineNo">110</span>     *<a name="line.110"></a>
<span class="sourceLineNo">111</span>     *<a name="line.111"></a>
<span class="sourceLineNo">112</span>     * @param e The exception that is thrown<a name="line.112"></a>
<span class="sourceLineNo">113</span>     * @param &lt;V&gt; The generic type this monad keeps<a name="line.113"></a>
<span class="sourceLineNo">114</span>     * @return A new Try instance that represents a failure.<a name="line.114"></a>
<span class="sourceLineNo">115</span>     */<a name="line.115"></a>
<span class="sourceLineNo">116</span>    public static &lt;V&gt; Try&lt;V&gt; failure(Throwable e) {<a name="line.116"></a>
<span class="sourceLineNo">117</span><a name="line.117"></a>
<span class="sourceLineNo">118</span>        return new Failure&lt;&gt;(e);<a name="line.118"></a>
<span class="sourceLineNo">119</span><a name="line.119"></a>
<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
<span class="sourceLineNo">121</span><a name="line.121"></a>
<span class="sourceLineNo">122</span><a name="line.122"></a>
<span class="sourceLineNo">123</span>    /**<a name="line.123"></a>
<span class="sourceLineNo">124</span>     * Returns a instance for the success case.<a name="line.124"></a>
<span class="sourceLineNo">125</span>     *<a name="line.125"></a>
<span class="sourceLineNo">126</span>     * @param value The value that should be stored.<a name="line.126"></a>
<span class="sourceLineNo">127</span>     * @param &lt;V&gt; The return type<a name="line.127"></a>
<span class="sourceLineNo">128</span>     * @return A new Try instance with the given value<a name="line.128"></a>
<span class="sourceLineNo">129</span>     */<a name="line.129"></a>
<span class="sourceLineNo">130</span>    public static &lt;V&gt; Try&lt;V&gt; success(V value) {<a name="line.130"></a>
<span class="sourceLineNo">131</span><a name="line.131"></a>
<span class="sourceLineNo">132</span>        return new Success&lt;&gt;(value);<a name="line.132"></a>
<span class="sourceLineNo">133</span><a name="line.133"></a>
<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
<span class="sourceLineNo">135</span><a name="line.135"></a>
<span class="sourceLineNo">136</span>    private static class Failure&lt;V&gt; extends Try&lt;V&gt; {<a name="line.136"></a>
<span class="sourceLineNo">137</span><a name="line.137"></a>
<span class="sourceLineNo">138</span>        private Throwable exception;<a name="line.138"></a>
<span class="sourceLineNo">139</span><a name="line.139"></a>
<span class="sourceLineNo">140</span>        public Failure(String message) {<a name="line.140"></a>
<span class="sourceLineNo">141</span><a name="line.141"></a>
<span class="sourceLineNo">142</span>            super();<a name="line.142"></a>
<span class="sourceLineNo">143</span><a name="line.143"></a>
<span class="sourceLineNo">144</span>            this.exception = new IllegalStateException(message);<a name="line.144"></a>
<span class="sourceLineNo">145</span><a name="line.145"></a>
<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
<span class="sourceLineNo">147</span><a name="line.147"></a>
<span class="sourceLineNo">148</span>        public Failure(String message, Throwable e) {<a name="line.148"></a>
<span class="sourceLineNo">149</span><a name="line.149"></a>
<span class="sourceLineNo">150</span>            super();<a name="line.150"></a>
<span class="sourceLineNo">151</span><a name="line.151"></a>
<span class="sourceLineNo">152</span>            this.exception = new IllegalStateException(message, e);<a name="line.152"></a>
<span class="sourceLineNo">153</span><a name="line.153"></a>
<span class="sourceLineNo">154</span>        }<a name="line.154"></a>
<span class="sourceLineNo">155</span><a name="line.155"></a>
<span class="sourceLineNo">156</span>        public Failure(Throwable e) {<a name="line.156"></a>
<span class="sourceLineNo">157</span><a name="line.157"></a>
<span class="sourceLineNo">158</span>            super();<a name="line.158"></a>
<span class="sourceLineNo">159</span><a name="line.159"></a>
<span class="sourceLineNo">160</span>            this.exception = new IllegalStateException(e);<a name="line.160"></a>
<span class="sourceLineNo">161</span><a name="line.161"></a>
<span class="sourceLineNo">162</span>        }<a name="line.162"></a>
<span class="sourceLineNo">163</span><a name="line.163"></a>
<span class="sourceLineNo">164</span>        @Override<a name="line.164"></a>
<span class="sourceLineNo">165</span><a name="line.165"></a>
<span class="sourceLineNo">166</span>        public Boolean isSuccess() {<a name="line.166"></a>
<span class="sourceLineNo">167</span><a name="line.167"></a>
<span class="sourceLineNo">168</span>            return false;<a name="line.168"></a>
<span class="sourceLineNo">169</span><a name="line.169"></a>
<span class="sourceLineNo">170</span>        }<a name="line.170"></a>
<span class="sourceLineNo">171</span><a name="line.171"></a>
<span class="sourceLineNo">172</span>        @Override<a name="line.172"></a>
<span class="sourceLineNo">173</span><a name="line.173"></a>
<span class="sourceLineNo">174</span>        public Boolean isFailure() {<a name="line.174"></a>
<span class="sourceLineNo">175</span><a name="line.175"></a>
<span class="sourceLineNo">176</span>            return true;<a name="line.176"></a>
<span class="sourceLineNo">177</span><a name="line.177"></a>
<span class="sourceLineNo">178</span>        }<a name="line.178"></a>
<span class="sourceLineNo">179</span><a name="line.179"></a>
<span class="sourceLineNo">180</span>        @Override<a name="line.180"></a>
<span class="sourceLineNo">181</span><a name="line.181"></a>
<span class="sourceLineNo">182</span>        public void throwException() {<a name="line.182"></a>
<span class="sourceLineNo">183</span><a name="line.183"></a>
<span class="sourceLineNo">184</span>            throw new RuntimeException(this.exception);<a name="line.184"></a>
<span class="sourceLineNo">185</span><a name="line.185"></a>
<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
<span class="sourceLineNo">187</span><a name="line.187"></a>
<span class="sourceLineNo">188</span>        @Override<a name="line.188"></a>
<span class="sourceLineNo">189</span>        public V get() {<a name="line.189"></a>
<span class="sourceLineNo">190</span>            throw new RuntimeException(this.exception);<a name="line.190"></a>
<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
<span class="sourceLineNo">192</span><a name="line.192"></a>
<span class="sourceLineNo">193</span>        @Override<a name="line.193"></a>
<span class="sourceLineNo">194</span>        public Throwable getError() {<a name="line.194"></a>
<span class="sourceLineNo">195</span>            return exception;<a name="line.195"></a>
<span class="sourceLineNo">196</span>        }<a name="line.196"></a>
<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
<span class="sourceLineNo">198</span><a name="line.198"></a>
<span class="sourceLineNo">199</span>    private static class Success&lt;V&gt; extends Try&lt;V&gt; {<a name="line.199"></a>
<span class="sourceLineNo">200</span><a name="line.200"></a>
<span class="sourceLineNo">201</span>        private V value;<a name="line.201"></a>
<span class="sourceLineNo">202</span><a name="line.202"></a>
<span class="sourceLineNo">203</span>        public Success(V value) {<a name="line.203"></a>
<span class="sourceLineNo">204</span><a name="line.204"></a>
<span class="sourceLineNo">205</span>            super();<a name="line.205"></a>
<span class="sourceLineNo">206</span><a name="line.206"></a>
<span class="sourceLineNo">207</span>            this.value = value;<a name="line.207"></a>
<span class="sourceLineNo">208</span><a name="line.208"></a>
<span class="sourceLineNo">209</span>        }<a name="line.209"></a>
<span class="sourceLineNo">210</span><a name="line.210"></a>
<span class="sourceLineNo">211</span>        @Override<a name="line.211"></a>
<span class="sourceLineNo">212</span><a name="line.212"></a>
<span class="sourceLineNo">213</span>        public Boolean isSuccess() {<a name="line.213"></a>
<span class="sourceLineNo">214</span><a name="line.214"></a>
<span class="sourceLineNo">215</span>            return true;<a name="line.215"></a>
<span class="sourceLineNo">216</span><a name="line.216"></a>
<span class="sourceLineNo">217</span>        }<a name="line.217"></a>
<span class="sourceLineNo">218</span><a name="line.218"></a>
<span class="sourceLineNo">219</span>        @Override<a name="line.219"></a>
<span class="sourceLineNo">220</span><a name="line.220"></a>
<span class="sourceLineNo">221</span>        public Boolean isFailure() {<a name="line.221"></a>
<span class="sourceLineNo">222</span><a name="line.222"></a>
<span class="sourceLineNo">223</span>            return false;<a name="line.223"></a>
<span class="sourceLineNo">224</span><a name="line.224"></a>
<span class="sourceLineNo">225</span>        }<a name="line.225"></a>
<span class="sourceLineNo">226</span><a name="line.226"></a>
<span class="sourceLineNo">227</span>        @Override<a name="line.227"></a>
<span class="sourceLineNo">228</span><a name="line.228"></a>
<span class="sourceLineNo">229</span>        public void throwException() {<a name="line.229"></a>
<span class="sourceLineNo">230</span><a name="line.230"></a>
<span class="sourceLineNo">231</span>            //log.error("Method throwException() called on a Success instance");<a name="line.231"></a>
<span class="sourceLineNo">232</span><a name="line.232"></a>
<span class="sourceLineNo">233</span>        }<a name="line.233"></a>
<span class="sourceLineNo">234</span><a name="line.234"></a>
<span class="sourceLineNo">235</span>        @Override<a name="line.235"></a>
<span class="sourceLineNo">236</span>        public V get() {<a name="line.236"></a>
<span class="sourceLineNo">237</span>            return value;<a name="line.237"></a>
<span class="sourceLineNo">238</span>        }<a name="line.238"></a>
<span class="sourceLineNo">239</span><a name="line.239"></a>
<span class="sourceLineNo">240</span>        @Override<a name="line.240"></a>
<span class="sourceLineNo">241</span>        public Throwable getError() {<a name="line.241"></a>
<span class="sourceLineNo">242</span>            return null;<a name="line.242"></a>
<span class="sourceLineNo">243</span>        }<a name="line.243"></a>
<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
<span class="sourceLineNo">245</span><a name="line.245"></a>
<span class="sourceLineNo">246</span>    // various method such as map an flatMap<a name="line.246"></a>
<span class="sourceLineNo">247</span><a name="line.247"></a>
<span class="sourceLineNo">248</span><a name="line.248"></a>
<span class="sourceLineNo">249</span>    @Override<a name="line.249"></a>
<span class="sourceLineNo">250</span>    public String toString() {<a name="line.250"></a>
<span class="sourceLineNo">251</span>        return isSuccess() ? "true: "+get() : "false: "+ getError().getMessage();<a name="line.251"></a>
<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
<span class="sourceLineNo">253</span>}<a name="line.253"></a>




























































</pre>
</div>
</body>
</html>