X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Frserv%2FTypedCode.java;h=f0ff9c5cc3bebff05dc09dd3dda87048375bb480;hb=82755753f41112e1cdd91b2994620ad074dfbf20;hp=6f1372f3e957aa0fe5900b072194a63a24348d43;hpb=5e0e574432dabcba1fb4a84a752b000b466999bd;p=aaf%2Fauthz.git diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/rserv/TypedCode.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/rserv/TypedCode.java index 6f1372f3..f0ff9c5c 100644 --- a/auth/auth-core/src/main/java/org/onap/aaf/auth/rserv/TypedCode.java +++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/rserv/TypedCode.java @@ -7,9 +7,9 @@ * Licensed 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. @@ -21,12 +21,11 @@ package org.onap.aaf.auth.rserv; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import javax.servlet.ServletException; + import org.onap.aaf.misc.env.Env; import org.onap.aaf.misc.env.TimeTaken; @@ -40,17 +39,17 @@ import org.onap.aaf.misc.env.Trans; * FYI: For those in the future wondering why I would create a specialized set of "Pair" for the data content: * 1) TypeCode is used in Route, and this code is used for every transaction... it needs to be blazingly fast * 2) The actual number of objects accessed is quite small and built at startup. Arrays are best - * 3) I needed a small, well defined tree where each level is a different Type. Using a "Pair" Generic definitions, + * 3) I needed a small, well defined tree where each level is a different Type. Using a "Pair" Generic definitions, * I created type-safety at each level, which you can't get from a TreeSet, etc. * 4) Chaining through the Network is simply object dereferencing, which is as fast as Java can go. * 5) The drawback is that in your code is that all the variables are named "x" and "y", which can be a bit hard to - * read both in code, and in the debugger. However, TypeSafety allows your IDE (Eclipse) to help you make the + * read both in code, and in the debugger. However, TypeSafety allows your IDE (Eclipse) to help you make the * choices. Also, make sure you have a good "toString()" method on each object so you can see what's happening * in the IDE Debugger. - * + * * Empirically, this method of obtaining routes proved to be much faster than the HashSet implementations available in otherwise * competent Open Source. - * + * * @author Jonathan * * @param @@ -61,10 +60,10 @@ public class TypedCode extends Content { public TypedCode() { types = new ArrayList<>(); } - + /** * Construct Typed Code based on ContentType parameters passed in - * + * * @param code * @param others * @return @@ -74,17 +73,17 @@ public class TypedCode extends Content { boolean first = true; for (String str : others) { if (first) { - first = false; + first = false; } else { sb.append(','); } sb.append(str); } parse(code, sb.toString()); - + return this; } - + @Override protected Pair, List>>> types(HttpCode code, String str) { Pair,List>>> type = null; @@ -92,25 +91,9 @@ public class TypedCode extends Content { // Want Q percentage is to be first in the array everytime. If not listed, 1.0 is default props.add(new Pair(Q,1f)); Pair, List>> cl = new Pair, List>>(code, props); -// // breakup "plus" stuff, i.e. application/xaml+xml -// int plus = str.indexOf('+'); -// if (plus<0) { type = new Pair,List>>>(str, cl); types.add(type); return type; -// } else { -// int prev = str.indexOf('/')+1; -// String first = str.substring(0,prev); -// String nstr; -// while (prev!=0) { -// nstr = first + (plus>-1?str.substring(prev,plus):str.substring(prev)); -// type = new Pair,List>>>(nstr, cl); -// types.add(type); -// prev = plus+1; -// plus = str.indexOf('+',prev); -// } -// return type; -// } } @Override @@ -127,7 +110,7 @@ public class TypedCode extends Content { } return type.y.y.add(new Pair(tag,"version".equals(tag)?new Version(value):value)); } - + public Pair, List>>> prep(TRANS trans, String compare){ Pair, List>>> c,rv=null; if (types.size()==1 && "".equals((c=types.get(0)).x)) { // if there are no checks for type, skip @@ -146,11 +129,9 @@ public class TypedCode extends Content { } if (accepted) { switch(acc.acceptable.size()) { - case 0: -// // TODO best Status Code? -// resp.setStatus(HttpStatus.NOT_ACCEPTABLE_406); + case 0: break; - case 1: + case 1: rv = acc.acceptable.get(0); break; default: // compare Q values to get Best Match @@ -164,9 +145,6 @@ public class TypedCode extends Content { } } if (bestT!=null) { - // When it is a GET, the matched type is what is returned, so set ContentType -// if (isGet)resp.setContentType(bestT.x); // set ContentType of Code -// rv = bestT.y.x; rv = bestT; } } @@ -177,14 +155,14 @@ public class TypedCode extends Content { } return rv; } - + /** * Print on String Builder content related to specific Code - * + * * This is for Reporting and Debugging purposes, so the content is not cached. - * + * * If code is "null", then all content is matched - * + * * @param code * @return */ @@ -211,7 +189,7 @@ public class TypedCode extends Content { } return sb; } - + public List> getContent(HttpCode code) { for (Pair, List>>> pair : types) { if (pair.y.x == code) { @@ -220,17 +198,17 @@ public class TypedCode extends Content { } return null; } - + public String toString() { return relatedTo(null,new StringBuilder()).toString(); } - + public void api(RouteReport tr) { // Need to build up a map, because Prop entries can be in several places. HashMap,StringBuilder> psb = new HashMap<>(); StringBuilder temp; tr.desc = null; - + // Read through Code/TypeCode trees for all accepted Typecodes for (Pair, List>>> tc : types) { // If new, then it's new Code set, create prefix content @@ -253,7 +231,7 @@ public class TypedCode extends Content { } } // Gather all ContentType possibilities for the same code together - + for (StringBuilder sb : psb.values()) { tr.contextTypes.add(sb.toString()); } @@ -265,5 +243,5 @@ public class TypedCode extends Content { } return null; } - + } \ No newline at end of file