Changeset 19475
- Timestamp:
- 05/27/07 12:33:53 (1 year ago)
- Files:
-
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/CachableUserIdentificationInfo.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/JBossUserIdentificationInfoCallbackHandler.java (modified) (3 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java (modified) (2 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/interfaces/NuxeoAuthenticationPlugin.java (modified) (4 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/service/AuthenticationChainDescriptor.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/service/AuthenticationPluginDescriptor.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/ChainSelect.java (modified) (4 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/SelectManyListboxComponent.java (modified) (5 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/SelectOneListboxComponent.java (modified) (7 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/model/EditableModel.java (modified) (3 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/model/ProtectedEditableModel.java (modified) (2 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/pagination/LazyResultsProvider.java (modified) (2 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/rest/FancyURLConfig.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/Functions.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/jsf/MetaActionSourceRule.java (modified) (5 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/BaseURL.java (modified) (5 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/DocumentLocator.java (modified) (2 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/DocumentsListsUtils.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/SeamComponentCallHelper.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/CachableUserIdentificationInfo.java
r19472 r19475 40 40 41 41 public CachableUserIdentificationInfo(String userName, String password) { 42 this.userInfo = new UserIdentificationInfo(userName, password);42 this.userInfo = new UserIdentificationInfo(userName, password); 43 43 alreadyAuthenticated = false; 44 44 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/JBossUserIdentificationInfoCallbackHandler.java
r19472 r19475 23 23 24 24 import javax.security.auth.callback.Callback; 25 import javax.security.auth.callback.NameCallback;26 import javax.security.auth.callback.PasswordCallback;27 25 import javax.security.auth.callback.UnsupportedCallbackException; 28 26 … … 35 33 UserIdentificationInfoCallbackHandler { 36 34 37 public JBossUserIdentificationInfoCallbackHandler( UserIdentificationInfo userIdent)38 {35 public JBossUserIdentificationInfoCallbackHandler( 36 UserIdentificationInfo userIdent) { 39 37 super(userIdent); 40 38 } 41 39 40 @Override 42 41 public void handle(Callback[] callbacks) throws IOException, 43 UnsupportedCallbackException {42 UnsupportedCallbackException { 44 43 45 44 for (Callback c : callbacks) { … … 47 46 ObjectCallback oc = (ObjectCallback) c; 48 47 oc.setCredential(userIdent); 49 } 50 else if (c instanceof SecurityAssociationCallback){ 48 } else if (c instanceof SecurityAssociationCallback) { 51 49 SecurityAssociationCallback sac = (SecurityAssociationCallback) c; 52 50 sac.setPrincipal(null); 53 51 sac.setCredential(userIdent); 54 } 55 else 52 } else { 56 53 super.handle(callbacks); 57 54 } 55 } 58 56 } 57 59 58 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java
r19472 r19475 61 61 protected static final String LOGIN_DOMAIN = "nuxeo-ecm"; 62 62 63 protected static final String START_PAGE_SAVE_KEY ="Nuxeo5_Start_Page"; 64 protected static final String DEFAULT_START_PAGE="nxstartup.faces"; 63 protected static final String START_PAGE_SAVE_KEY = "Nuxeo5_Start_Page"; 64 65 protected static final String DEFAULT_START_PAGE = "nxstartup.faces"; 65 66 66 67 private static final Log log = LogFactory.getLog(NuxeoAuthenticationFilter.class); … … 68 69 protected Boolean avoidReauthenticate = true; 69 70 70 protected PluggableAuthenticationService service =null;71 72 protected List<String> unAuthenticatedURLPrefix =null;71 protected PluggableAuthenticationService service = null; 72 73 protected List<String> unAuthenticatedURLPrefix = null; 73 74 74 75 public void destroy() { org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/interfaces/NuxeoAuthenticationPlugin.java
r19472 r19475 32 32 33 33 /** 34 * Handle the Login Prompt 34 * Handles the Login Prompt. 35 * 35 36 * @param httpRequest the request 36 * @param httpResponse the resp inse37 * @param httpResponse the response 37 38 * @return true if AuthFilter must stop execution (ie : login prompt generated a redirect), false otherwise 38 39 */ … … 40 41 41 42 /** 42 * Retrie user indetification information from the request43 * Retries user indentification information from the request. 43 44 * 44 45 * @param httpRequest … … 46 47 * @return UserIdentificationInfo 47 48 */ 48 UserIdentificationInfo handleRetrieveIdentity (HttpServletRequest httpRequest, HttpServletResponse httpResponse); 49 UserIdentificationInfo handleRetrieveIdentity( 50 HttpServletRequest httpRequest, HttpServletResponse httpResponse); 49 51 50 52 /** 51 * Define if the authentication plugin needs to do a login prompt 53 * Defines if the authentication plugin needs to do a login prompt. 54 * 52 55 * @return true if LoginPrompt is used 53 56 */ … … 56 59 57 60 /** 58 * Initialize the Plugin from parameters set in the XML descriptor 61 * Initializes the Plugin from parameters set in the XML descripto. 62 * r 59 63 * @param parameters 60 64 */ 61 void initPlugin(Map<String, String> parameters);65 void initPlugin(Map<String, String> parameters); 62 66 63 67 /** 64 * returns the list of prefix for unauthenticated URLs65 * Typically the URLs associated to login prompt68 * Returns the list of prefix for unauthenticated URLs, 69 * typically the URLs associated to login prompt. 66 70 * @return 67 71 */ org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/service/AuthenticationChainDescriptor.java
r19472 r19475 32 32 private static final long serialVersionUID = 276543987313289764L; 33 33 34 @XNodeList(value ="plugins/plugin", type=ArrayList.class, componentType=String.class)34 @XNodeList(value = "plugins/plugin", type = ArrayList.class, componentType = String.class) 35 35 private List<String> pluginsNames; 36 36 org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/service/AuthenticationPluginDescriptor.java
r19473 r19475 49 49 50 50 @XNodeMap(value = "parameters/parameter", key = "@name", type = HashMap.class, componentType = String.class) 51 publicMap<String, String> parameters = new HashMap<String, String>();51 Map<String, String> parameters = new HashMap<String, String>(); 52 52 53 53 public Class getClassName() { org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/ChainSelect.java
r18884 r19475 101 101 } 102 102 103 @Override 103 104 public boolean isRequired() { 104 105 return required; 105 106 } 106 107 108 @Override 107 109 public void setRequired(boolean required) { 108 110 this.required = required; … … 228 230 this.componentValue = selections; 229 231 if (!multiSelect) { 230 this.setSubmittedValue(value[0]);232 setSubmittedValue(value[0]); 231 233 } else { 232 this.setSubmittedValue(value);234 setSubmittedValue(value); 233 235 } 234 236 } else { 235 237 this.componentValue = new Selection[0]; 236 this.setSubmittedValue(null);238 setSubmittedValue(null); 237 239 } 238 240 } else { 239 241 String[] value = encodeValue(componentValue); 240 this.setSubmittedValue(value);242 setSubmittedValue(value); 241 243 } 242 244 log.debug("submitted value=" + format(getSubmittedValue())); … … 412 414 Map<String, Object> filter = new HashMap<String, Object>(); 413 415 filter.put("parent", parentValue); 414 if (!displayObsoleteEntries) {416 if (!displayObsoleteEntries) { 415 417 filter.put("obsolete", 0); 416 418 } … … 595 597 filter.put("id", id); 596 598 filter.put("parent", parentId); 597 if (!displayObsoleteEntries) {599 if (!displayObsoleteEntries) { 598 600 filter.put("obsolete", 0); 599 601 } 600 602 List<DirectorySelectItem> items = null; 601 603 if (directoryName != null) { 602 items = DirectoryHelper.instance() 603 .getSelectItems(directoryName, filter);604 items = DirectoryHelper.instance().getSelectItems( 605 directoryName, filter); 604 606 } else { 605 607 items = DirectoryHelper.instance().getSelectItems( 606 608 directoryValues, filter); 607 609 } 608 if (items == null || items.size() != 1) {610 if (items == null || items.size() != 1) { 609 611 throw new RuntimeException("item not found"); 610 612 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/SelectManyListboxComponent.java
r18884 r19475 70 70 71 71 public SelectManyListboxComponent() { 72 this.setRendererType("nxdirectory.selectManyListbox");72 setRendererType("nxdirectory.selectManyListbox"); 73 73 } 74 74 … … 159 159 @SuppressWarnings("unchecked") 160 160 public Boolean getBooleanProperty(String key, Boolean defaultValue) { 161 Map<String, Object> map = this.getAttributes();161 Map<String, Object> map = getAttributes(); 162 162 Boolean value = (Boolean) map.get(key); 163 163 if (value == null) { … … 169 169 @SuppressWarnings("unchecked") 170 170 public String getStringProperty(String key, String defaultValue) { 171 Map<String, Object> map = this.getAttributes();171 Map<String, Object> map = getAttributes(); 172 172 String value = (String) map.get(key); 173 173 if (value == null) { … … 188 188 189 189 options = new HashMap<String, SelectItem>(); 190 if (StringUtils.isEmpty(directoryName) && directoryValues == null) {190 if (StringUtils.isEmpty(directoryName) && directoryValues == null) { 191 191 return options; 192 //throw new RuntimeException("directoryName and directoryValues cannot be both null"); 192 // throw new RuntimeException("directoryName and directoryValues 193 // cannot be both null"); 193 194 } 194 195 … … 196 197 Map<String, Object> filter = new HashMap<String, Object>(); 197 198 filter.put("parent", getFilter()); 198 if (!displayObsoleteEntries) {199 if (!displayObsoleteEntries) { 199 200 filter.put("obsolete", 0); 200 201 } 201 202 202 if(!StringUtils.isEmpty(directoryName)) { 203 optionList = DirectoryHelper.instance().getSelectItems(directoryName, filter); 204 } else if(directoryValues != null){ 205 optionList = DirectoryHelper.instance().getSelectItems(directoryValues, filter); 203 if (!StringUtils.isEmpty(directoryName)) { 204 optionList = DirectoryHelper.instance().getSelectItems( 205 directoryName, filter); 206 } else if (directoryValues != null) { 207 optionList = DirectoryHelper.instance().getSelectItems( 208 directoryValues, filter); 206 209 } else { 207 210 optionList = new ArrayList<DirectorySelectItem>(); 208 211 } 209 212 210 for (DirectorySelectItem item: optionList) {213 for (DirectorySelectItem item : optionList) { 211 214 options.put((String) item.getValue(), item); 212 215 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/SelectOneListboxComponent.java
r18884 r19475 69 69 70 70 public SelectOneListboxComponent() { 71 this.setRendererType("nxdirectory.selectOneListbox");71 setRendererType("nxdirectory.selectOneListbox"); 72 72 } 73 73 … … 156 156 @SuppressWarnings("unchecked") 157 157 public Boolean getBooleanProperty(String key, Boolean defaultValue) { 158 Map<String, Object> map = this.getAttributes();158 Map<String, Object> map = getAttributes(); 159 159 Boolean value = (Boolean) map.get(key); 160 160 if (value == null) { … … 166 166 @SuppressWarnings("unchecked") 167 167 public String getStringProperty(String key, String defaultValue) { 168 Map<String, Object> map = this.getAttributes();168 Map<String, Object> map = getAttributes(); 169 169 String value = (String) map.get(key); 170 170 if (value == null) { … … 182 182 183 183 if (directoryName == null && directoryValues == null) { 184 throw new RuntimeException("directoryName and directoryValues cannot be both null"); 184 throw new RuntimeException( 185 "directoryName and directoryValues cannot be both null"); 185 186 } 186 187 … … 190 191 Map<String, Object> filter = new HashMap<String, Object>(); 191 192 filter.put("parent", getFilter()); 192 if (!displayObsoleteEntries) {193 if (!displayObsoleteEntries) { 193 194 filter.put("obsolete", 0); 194 195 } … … 196 197 optionList = DirectoryHelper.instance().getSelectItems( 197 198 directoryName, filter); 198 } else if (directoryValues != null){199 } else if (directoryValues != null) { 199 200 optionList = DirectoryHelper.instance().getSelectItems( 200 201 directoryValues, filter); … … 203 204 } 204 205 205 206 for(DirectorySelectItem item: optionList) { 206 for (DirectorySelectItem item : optionList) { 207 207 options.put((String) item.getValue(), item); 208 208 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/model/EditableModel.java
r19474 r19475 53 53 54 54 /** 55 * {@see DataModel#isRowAvailable()} 55 * {@see DataModel#isRowAvailable()}. 56 56 */ 57 57 boolean isRowAvailable(); … … 73 73 74 74 /** 75 * {@see DataModel#getRowCount()} 75 * {@see DataModel#getRowCount()}. 76 76 */ 77 77 int getRowCount(); 78 78 79 79 /** 80 * {@see DataModel#getRowData()} 80 * {@see DataModel#getRowData()}. 81 81 */ 82 82 Object getRowData(); … … 88 88 89 89 /** 90 * {@see DataModel#getRowIndex()} 90 * {@see DataModel#getRowIndex()}. 91 91 */ 92 92 int getRowIndex(); 93 93 94 94 /** 95 * {@see DataModel#setRowIndex(int)} 95 * {@see DataModel#setRowIndex(int)}. 96 96 */ 97 97 void setRowIndex(int rowIndex); org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/model/ProtectedEditableModel.java
r19474 r19475 31 31 32 32 /** 33 * {@see DataModel#getRowCount()} 33 * {@see DataModel#getRowCount()}. 34 34 */ 35 35 int getRowCount(); 36 36 37 37 /** 38 * {@see DataModel#getRowData()} 38 * {@see DataModel#getRowData()}. 39 39 */ 40 40 Object getRowData(); … … 46 46 47 47 /** 48 * {@see DataModel#getRowIndex()} 48 * {@see DataModel#getRowIndex()}. 49 49 */ 50 50 int getRowIndex(); 51 51 52 52 /** 53 * {@see EditableModel#isRowNew()} 53 * {@see EditableModel#isRowNew()}. 54 54 */ 55 55 boolean isRowNew(); org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/pagination/LazyResultsProvider.java
r19474 r19475 29 29 * 30 30 * @author <a href="mailto:dm@nuxeo.com">Dragos Mihalache</a> 31 *32 31 */ 33 32 public interface LazyResultsProvider extends Serializable { … … 36 35 * Constant specifying the number of elements in the result is unknown. 37 36 */ 38 static finalint UNKNOWN_SIZE = -1;37 int UNKNOWN_SIZE = -1; 39 38 40 39 /** 41 * Return the current page of results. 42 * 40 * Returns the current page of results. 43 41 * <p> 44 42 * This method is designed to be called from JSF. It therefore ensures 45 43 * cheapness of repeated calls, rather than data consistency. 46 * < /p>47 * <p>Calling code has to perform a setCurrentPage to resync the data</p>44 * <p> 45 * Calling code has to perform a setCurrentPage to resync the data. 48 46 * 49 47 * @return the current page org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/rest/FancyURLConfig.java
r19104 r19475 28 28 public final class FancyURLConfig { 29 29 30 // enables Zope Like URL parsing30 // enables Zope-like URL parsing 31 31 public static Boolean ENABLE_FANCY_URL_PARSING = true; 32 32 33 // rewrite all URLs to Zope Like URL33 // rewrite all URLs to Zope-Like URL 34 34 public static Boolean ENABLE_FANCY_URL_REDIRECT = true; 35 35 org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/Functions.java
r19474 r19475 46 46 } 47 47 48 public String indentString(Integer level, String text) {48 public String indentString(Integer level, String text) { 49 49 StringBuffer label = new StringBuffer(""); 50 50 for (int i = 0; i < level; i++) { org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/jsf/MetaActionSourceRule.java
r19474 r19475 36 36 import com.sun.facelets.tag.MetadataTarget; 37 37 import com.sun.facelets.tag.TagAttribute; 38 import com.sun.facelets.util.FacesAPI;39 38 40 39 /** … … 49 48 public static final Class[] ACTION_SIG = new Class[0]; 50 49 50 public static final MetaActionSourceRule Instance = new MetaActionSourceRule(); 51 51 52 private static final Log log = LogFactory.getLog(MetaActionSourceRule.class); 52 53 … … 59 60 } 60 61 62 @Override 61 63 public void applyMetadata(FaceletContext ctx, Object instance) { 62 64 ActionSource2 as = (ActionSource2) instance; … … 75 77 } 76 78 79 @Override 77 80 public void applyMetadata(FaceletContext ctx, Object instance) { 78 81 ActionSource as = (ActionSource) instance; … … 83 86 } 84 87 85 public static final MetaActionSourceRule Instance = new MetaActionSourceRule();86 87 88 public MetaActionSourceRule() { 88 89 super(); 89 90 } 90 91 92 @Override 91 93 public Metadata applyRule(String name, TagAttribute attribute, 92 94 MetadataTarget meta) { org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/BaseURL.java
r19474 r19475 35 35 } 36 36 37 38 public static String getServerURL() 39 { 37 public static String getServerURL() { 40 38 return getServerURL(null); 41 39 } … … 47 45 String baseURL; 48 46 final FacesContext facesContext = FacesContext.getCurrentInstance(); 49 if ((facesContext != null) || (request !=null)) {47 if ((facesContext != null) || (request != null)) { 50 48 51 49 StringBuffer sbaseURL = new StringBuffer(); 52 50 53 if (request ==null)51 if (request == null) { 54 52 request = (ServletRequest) facesContext.getExternalContext().getRequest(); 53 } 55 54 56 55 if ((request instanceof HttpServletRequest) … … 63 62 // Detect Nuxeo specific header for VH 64 63 String nuxeoVH = httpRequest.getHeader(VH_HEADER); 65 if ((nuxeoVH !=null) && (nuxeoVH.contains("http")))64 if ((nuxeoVH != null) && (nuxeoVH.contains("http"))) { 66 65 return nuxeoVH; 66 } 67 67 68 68 // Detect virtual hosting based in standard header … … 102 102 } else { 103 103 baseURL = "http://localhost:8080/"; 104 }104 } 105 105 return baseURL; 106 106 } … … 135 135 } 136 136 137 138 139 137 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/DocumentLocator.java
r19474 r19475 48 48 49 49 // Utility class. 50 private DocumentLocator() { }50 private DocumentLocator() { } 51 51 52 52 /** … … 58 58 public static String getDocumentUrl(RepositoryLocation serverLocation, 59 59 DocumentRef docRef) { 60 if (serverLocation ==null){60 if (serverLocation == null) { 61 61 String nullRepoName = null; 62 62 return getDocumentUrl(nullRepoName, docRef); org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/DocumentsListsUtils.java
r19474 r19475 40 40 41 41 // Utility class. 42 private DocumentsListsUtils() { }42 private DocumentsListsUtils() { } 43 43 44 44 /** org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/util/SeamComponentCallHelper.java
r17969 r19475 40 40 41 41 // This is an utility class. 42 private SeamComponentCallHelper() { }42 private SeamComponentCallHelper() { } 43 43 44 44 /**
